Your own keys
- From Dulus
- Nothing
- You pay
- Your provider, directly, on your own account
- Works with
- Anthropic, OpenAI, Google Gemini, DeepSeek, Moonshot Kimi, Qwen, Z.ai GLM, Amazon Bedrock and more
Fuel
Dulus-hosted models are paid in Fuel, and 1 Fuel = 1 $DULUS. Every unit is traceable, from the deposit that created it to the response header that spent it.
$DULUS is a utility and community token used to pay for Fuel on Dulus. Nothing on this site is financial advice.
Dulus Fuel
Receipt
control.dulus.ai/v1
The proof chain
“Leave artifacts, not promises” is part of the doctrine Dulus is built on. So here is the whole path a unit of Fuel takes: six steps, each one leaving something you can check.
Send $DULUS to an address that is only yours.
Open the Fuel view in the desktop app, or type /fuel (or /deposit) in the CLI. Both show your personal Solana deposit address and its QR code. There is no wallet to connect and nothing to sign: you just send $DULUS to it.
Desktop app
Your Fuel deposit address
Solana · no wallet connect · no signature
Send $DULUS to this address. It is credited as Fuel once the transfer confirms on Solana. This address is unique to your account.
7xKq…Vh3e
CLI
dulus › /fuel
252,500 fuel
Reload wallet (solana), send $DULUS here:
7xKq…Vh3e
Your deposit is credited as Fuel after confirmation on Solana.
Credited exactly once. Never below zero.
When your transfer lands, the Fuel ledger credits your account. The Solana transaction is the entry’s idempotency key, so a deposit can’t be counted twice: not by a retry, not by a notification that arrives again.
grant $DULUS deposit
+250,000.000000
key solana:4tNq…8Hc2:0
balance 250,000.000000
grant 1% deposit bonus
+2,500.000000
key reward:4tNq…8Hc2:0
balance 252,500.000000
Shown once. Stored as a hash.
Create a key in the desktop app’s API Keys view. You see dulus_sk_live_… exactly once. Dulus keeps only its SHA-256 hash, so even a copy of the database holds nothing that can call the API.
Copy your key now. It is shown once and can’t be retrieved again.
dulus_sk_live_Xq7mP2aK•••••••••••••••••••••••••••••••••••
sha256 9c41f0d2…e27b5a11
An atomic hold, before anything runs.
Each call to POST /v1/chat/completions first reserves an upper bound: enough Fuel for its input plus the most output it is allowed to produce. The hold is atomic, so two calls racing for the end of your balance can’t both get it.
402, and the model never runs.Idempotency-Key or X-Request-ID returns 409.Authorization: Bearer dulus_sk_live_Xq7mP2aK…
Idempotency-Key: 5f0c2a9e…7c13
Content-Type: application/json
{"model": "dulus-b-27b",
Idempotency-Key was already used
If it fails, you pay nothing.
Only now does the model run. If the call fails, the hold is released in full and the error comes back to you as a 502 or 503, with nothing charged. A failed call is refunded completely.
Billed on what was used. Cached tokens free.
When the answer arrives, the call settles on its actual input, output and reasoning tokens, at the model’s rate. Cached tokens cost nothing. The rest of the hold goes back to your balance immediately, and the response tells you the exact charge in its X-Dulus-Fuel-Charged header.
$ curl -si \
https://control.dulus.ai/v1/
-H "Authorization: Bearer dulus_sk_live_…" \
-d '{"model":"dulus-b-27b",
HTTP/1.1 200 OK
content-type: application/json
X-Dulus-Fuel-Charged: the exact charge
Rates
Every hosted model bills per token at a multiple of the same base rate: 1× for the light models, up to 4× for the biggest. The free-tier models run at 0×.
X-Dulus-Fuel-Charged.Every id here works with the OpenAI-compatible API at control.dulus.ai/v1. List them live:
| Model | Rate | Role |
|---|---|---|
dulus-a-9b | 1× | Fast and cheap |
dulus-mistral-7b | 1× | Light |
dulus-mistral-nemo | 1× | Light |
dulus-gpt-oss-20b | 1× | Light |
dulus-b-27b | 2× | Balanced |
dulus-mistral-small-24b | 2× | Mid-size |
dulus-qwen-32b | 2× | Mid-size |
dulus-coder-30b | 2× | Coder |
dulus-llama-70b | 3× | Large |
dulus-vl-72b | 3× | Vision |
dulus-gpt-oss-120b | 3× | Large |
dulus-x-397b | 4× | The big one |
| Holder free tier40 messages per 24 h, up to 2,048 output tokens each | ||
dulus-free-9b | 0× | Free for holders |
dulus-free-7b | 0× | Free for holders |
dulus-free-20b | 0× | Free for holders |
Holder free tier
Keep at least 1,000,000 $DULUS as Fuel in your Dulus balance and you get 40 free messages every 24 hours on the free models. The balance is held, never spent.
dulus-free-9b, dulus-free-7b and dulus-free-20b, up to 2,048 output tokens each.The token
$DULUS is what Fuel is made of. You need it only for what Dulus hosts; your own keys and local models never touch it.
Mint address
9R8rrjXxcfQPmLTCLhmVpjr2uesjjkcgkinE6Lwdpump
Check the mint before you swap. A token with a similar name is not $DULUS.
Live chart
A live chart from DexScreener, loaded only when you ask for it.
Or open it on DexScreenerThe chart is served by DexScreener. This page sends no request to dexscreener.com until you press Load live chart.
$DULUS is a utility and community token used to pay for Fuel on Dulus. Nothing on this site is financial advice.
Fuel or your own keys
Dulus runs on whichever model you choose. With your own keys or a local model, Dulus charges nothing. Fuel is only for what Dulus itself runs: the hosted models, the API and the AI inside Dulus OS.
dulus-* models, the API at control.dulus.ai and the AI in Dulus OSMix them in one project and switch with /model any time.
Questions
The questions a careful engineer asks before putting a key in production.
No. The Dulus app is free, and with your own keys or a local model you never need Fuel. You need it only for the Dulus-hosted models, the API and the AI in Dulus OS.
You pay nothing. The hold is released in full and you get the error back: a 502 or 503 when the model call itself failed. A failed call is refunded completely.
No. A call settles on its input, output and reasoning tokens. Cached tokens are free.
Your Fuel balance couldn’t cover the hold for that call, so the model never ran and nothing was charged. Deposit more $DULUS, or ask for less output: a smaller max_tokens makes a smaller hold. The free-tier models also answer 402 while your balance is under 1,000,000 Fuel.
That Idempotency-Key (or X-Request-ID) was already used. Dulus won’t run, or charge, the same request twice.
No. Your balance and your deposit address are shown only to you, signed in to the Dulus app: the Fuel view on the desktop, or /fuel in the CLI. A key spends Fuel; it can’t look at it.
60 requests a minute per account by default, and any key can carry its own limit. Past it you get 429, the same code the free tier returns after your 40th message in 24 hours. A request can hold up to 512 messages.
On dulus.online, where plans are sold through Dodo Payments. Their prices and contents live there, not on this site.
No. $DULUS is a utility and community token used to pay for Fuel on Dulus. Nothing on this site is financial advice, and Dulus makes no promise about its price.
Mint a key in the desktop app and call the hosted models from anything that speaks the OpenAI API. Or bring your own keys and pay Dulus nothing at all.
Plans live on dulus.online