Pricing
Every model costs exactly what the model's maker charges for it, in US dollars. You pay from your API balance, which is counted in API credits: 1,000 API credits = $1. The API balance is its own balance, separate from the credits of the Doitong apps. There are no plans, minimums or per-model fees: a call costs its price, debited from the API balance when the request is accepted.
In Russia (doitong.ru, api.doitong.ru, or ?currency=rub) prices are also shown in roubles: the USD price × the
USD/RUB rate × 1.3.
Units
Each model has one billing unit, shown on its page and in GET https://api.doitong.ru/v1/models/{model_id}:
| Unit | Quantity |
|---|---|
second |
Seconds of output video or audio (duration) |
image |
Images generated (num_images) |
megapixel |
Width × height of the output, in megapixels (1 MP = 1024 × 1024 pixels) |
video |
One generated video |
request |
One call |
1000_characters |
Characters of input text, per 1000 |
step |
Training steps |
Price = quantity × API credits per unit, rounded up to a whole API credit ($0.001), never less than 1. Very cheap
units can have a fractional price per unit (0.4 API credits per second); only the total of a call is rounded.
Some models charge a different rate depending on the input: video with sound costs more than without, 4K costs more than 1K, and so on. These rules are listed on each model page. A parameter you leave out counts as its default value, so the price you see for an input is the price you pay.
Exact, measured, estimated and usage prices
Every price has a mode:
exact: the price is computed from your input (seconds, images, megapixels, characters, steps, or one flat price per video or call).measured: the price follows the files you send: the length of an input video or audio, the size of an input image, the frame rate or frame count of a video. Upscalers, lip sync, video-to-video, transcription and audio tools are priced this way. Before the run the API reads the file's length, resolution and frame rate (the quote does the same), so the quote is exactly what the run charges. The model page says what you pay for ("Price per second of your input video") and its calculator takes your file's numbers. A file that cannot be read is refused withunmeasurable_inputand nothing is charged.estimate: the model's own cost depends on something the input cannot tell in advance (tokens, compute time). Such a model charges a fixed estimated price per run (per output image when it has an image count), set from the average cost of real runs of that model. You still know the price before you run: the quote is what you pay.metered: the model is charged by actual usage, which only the run itself knows: the tokens a language or vision model reads and writes, the seconds of speech a voice model generates, or the model's processing time. See Charged by usage below.
Model pages say "Price per run", "Price per second of your input video" (and similar), "Estimated price per run" or
"Charged by usage"; GET https://api.doitong.ru/v1/models?mode=measured, ?mode=estimate and ?mode=metered list them.
Charged by usage
A metered model has a usage price ("$0.01 per 1000 tokens", "$0.002 per second of generated audio", "$0.00111 per
second of processing time") and a maximum per run: the most the run can cost, from what your request says
(max_tokens, the length of your text, the resolution, the number of outputs) and the model's published limits. It
never depends on the content of a file behind a URL. For a model billed by processing time or by the length of a voice
session, the maximum is the longest a request may run (15 minutes for images, 30 for audio, 60 for video), so it is far
above a typical run. An input whose maximum would be above the model's per-run limit (a very long text) is refused
with 422 invalid_input:
- The quote returns that maximum as
credits(withholdandtypical, a usual run). When the run starts, the maximum is debited from the API balance, and it is what the balance and your key budget must cover. - When the run succeeds, the request is settled to the usage the model reports for it: usage × the usage price,
rounded up to a whole API credit. The rest of the maximum is refunded automatically, once, as a
refundrow of your API balance. - A run never costs more than its maximum, even if its usage would. A failed or canceled run is refunded in full, as always.
Most runs cost far less than the maximum; the model page shows "Up to $X per run" for the builder's input and the
typical run ("from" in the catalog). For the few models billed by processing time, the usage is the model's processing time (marked
approximate).
{
"object": "quote",
"credits": 621,
"usd": "0.621",
"mode": "metered",
"label": "Charged by usage",
"hold": { "credits": 621, "usd": "0.621" },
"typical": { "credits": 10, "usd": "0.01" },
"settlement": "usage",
"display": "$0.01 / 1000 tokens",
"breakdown": "up to 62.035 × 1000 tokens × $0.01"
}
After the run, the request's cost shows what was held and what the usage came to:
{
"cost": { "credits": 621, "usd": "0.621", "charged": 621, "refunded": 611, "mode": "metered", "held": 621,
"typical": 10, "settled": { "status": "settled", "credits": 10, "usd": "0.01", "quantity": 1,
"unit": "1000_tokens", "unit_usd": "0.01", "source": "billed_usage", "approximate": false } }
}
charged − refunded is what the run cost. settled.status is pending for the moment between the result and the
settlement, and no_usage in the rare case the model reported no usage at all (then the maximum stands as the price).
Quote before you run
POST https://api.doitong.ru/v1/quote/{model_id} takes exactly the body you would send to run and returns the price of that
input: the exact price, except for a model charged by usage, where it is the most the run can cost. It
needs no key and costs nothing:
curl -X POST "https://api.doitong.ru/v1/quote/flux/schnell" \
-H "Content-Type: application/json" \
-d '{"prompt": "A lighthouse at dusk", "num_images": 2}'
{
"object": "quote",
"model": "flux/schnell",
"credits": 6,
"usd": "0.006",
"unit": "megapixel",
"quantity": 2,
"unit_credits": 3,
"mode": "exact",
"label": "Price per run",
"display": "$0.003 / megapixel",
"breakdown": "2 MP (2 images) × 3 API credits",
"input": { "prompt": "A lighthouse at dusk", "num_images": 2 },
"warnings": []
}
With a key, the quote also returns balance_credits and balance_usd (your API balance), affordable and
key_budget_remaining. Add ?currency=rub for a rub amount.
Price objects
Every price in the API has the same shape:
- models:
price: { "credits": 112, "usd": "0.112", "unit": "second", "display": "$0.112 / second", "credits_display": "112 API credits / second", "from_credits": 560, "from_usd": "0.56", "mode": "exact" }— plusrub,rub_displayandfrom_rubin Russia or with?currency=rub; - requests:
cost: { "credits": 560, "usd": "0.56", "charged": 560, "refunded": 0 }(API credits; a metered request addsmode,held,typicalandsettled, see Charged by usage); - account:
GET https://api.doitong.ru/v1/accountreturnscredits(the API balance),balance: { "credits", "usd" }andstorage(file storage price, usage and monthly estimate).
Refunds
- An invalid request (any
4xxbefore the run starts) is never charged. - A request that ends
failed(includingtimeout) is refunded in full to the API balance, automatically. - A request you cancel before it starts is refunded in full. Once the model is generating, a cancel is only a request: if the model finishes, the result is delivered and charged.
- A
meteredrequest that succeeds gets back the part of its maximum it did not use.
The request object shows all of it: cost.credits, cost.charged and cost.refunded.
File storage
Output files are kept on our storage. You choose, in the account or per run (?storage=):
| Kept | Price | |
|---|---|---|
Forever (permanent, default) |
Until you delete them | 100 API credits ($0.10) per GB per month |
7 days (temporary) |
7 days | Free |
Permanent storage is charged once a day from the API balance: GB kept × the monthly price ÷ days in the month, as
ledger rows of kind storage. Fractions of an API credit are carried to the next day, so a month adds up to exactly
GB × 100 API credits (1 GB = 1024³ bytes; 10 GB kept for a month cost
1,000 API credits). The balance never goes below zero: when it cannot pay, that day is not charged,
you get an email, and you have 30 days to top up before the kept files become temporary and are
deleted 7 days later. Details: Files.
Current prices
| Model | Id | Price | From |
|---|---|---|---|
| FLUX.1 [dev] | flux/dev |
$0.025 / megapixel | $0.025 (25 API credits) |
| FLUX.1 [schnell] | flux/schnell |
$0.003 / megapixel | $0.003 (3 API credits) |
| FLUX.2 [dev] | flux-2 |
$0.012 / megapixel | $0.012 (12 API credits) |
| FLUX.2 [pro] | flux-2-pro |
$0.015 / megapixel of output image | $0.015 (15 API credits) |
| GPT Image 2.5 Text to Image | openai/gpt-image-2.5/flare/text-to-image |
from $0.008 / image | $0.008 (8 API credits) |
| Ideogram V4.5 | ideogram/v4.5 |
from $0.03 / image | $0.03 (30 API credits) |
| Nano Banana 2 | nano-banana-2 |
from $0.06 / image | $0.06 (60 API credits) |
| Nano Banana Pro | nano-banana-pro |
from $0.15 / image | $0.15 (150 API credits) |
| Qwen Image 3 Text to Image | alibaba/qwen-image-3/text-to-image |
from $0.04 / image | $0.04 (40 API credits) |
| Recraft V4.1 Text to Image | recraft/v4.1/text-to-image |
$0.035 / image | $0.035 (35 API credits) |
| Seedream 5.0 Pro Text to Image | bytedance/seedream/v5/pro/text-to-image |
from $0.068 | $0.068 (68 API credits) |
| FLUX.1 Kontext [pro] | flux-pro/kontext |
$0.04 / image | $0.04 (40 API credits) |
| Nano Banana 2 Edit | nano-banana-2/edit |
from $0.06 / image | $0.06 (60 API credits) |
| Nano Banana Pro Edit | nano-banana-pro/edit |
from $0.15 / image | $0.15 (150 API credits) |
| Qwen Image 3 Edit | alibaba/qwen-image-3/edit |
from $0.04 / image | $0.04 (40 API credits) |
| FLUX 3 Max Text to Video | blackforestlabs/flux-3-max/text-to-video |
from $0.0425 / second of output video | $0.043 (43 API credits) |
| Grok Imagine Video 1.5 Text to Video | xai/grok-imagine-video/v1.5/text-to-video |
from $0.08 / second | $0.48 (480 API credits) |
| Kling 3.0 Pro Text to Video | kling-video/v3/pro/text-to-video |
from $0.112 / second | $0.56 (560 API credits) |
| LTX 2.5 Pro Text to Video | lightricks/ltx-2.5/text-to-video/pro |
from $0.12 / second | $0.72 (720 API credits) |
| MiniMax H3 Text to Video | minimax/h3/text-to-video |
from $0.05 / second | $0.25 (250 API credits) |
| Seedance 2.0 Fast Text to Video | bytedance/seedance-2.0/fast/text-to-video |
from $0.113 / second | $0.452 (452 API credits) |
| Seedance 2.0 Text to Video | bytedance/seedance-2.0/text-to-video |
from $0.141 / second | $0.564 (564 API credits) |
| Veo 3.1 | veo3.1 |
from $0.20 / second | $1.60 (1,600 API credits) |
| Veo 3.1 Fast | veo3.1/fast |
from $0.10 / second | $0.80 (800 API credits) |
| Wan 3.0 Text to Video | alibaba/wan-3.0/text-to-video |
from $0.05 / second | $0.25 (250 API credits) |
| FLUX 3 Max Image to Video | blackforestlabs/flux-3-max/image-to-video |
from $0.0425 / second of output video | $0.043 (43 API credits) |
| Grok Imagine Video 1.5 Image to Video | xai/grok-imagine-video/v1.5/image-to-video |
from $0.082 / second | $0.492 (492 API credits) |
| Kling 3.0 Pro Image to Video | kling-video/v3/pro/image-to-video |
from $0.112 / second | $0.56 (560 API credits) |
| LTX 2.5 Pro Image to Video | lightricks/ltx-2.5/image-to-video/pro |
from $0.12 / second | $0.72 (720 API credits) |
| MiniMax H3 Image to Video | minimax/h3/image-to-video |
from $0.05 / second | $0.25 (250 API credits) |
| Seedance 2.0 Fast Image to Video | bytedance/seedance-2.0/fast/image-to-video |
from $0.113 / second | $0.452 (452 API credits) |
| Seedance 2.0 Image to Video | bytedance/seedance-2.0/image-to-video |
from $0.141 / second | $0.564 (564 API credits) |
| Veo 3.1 Fast Image to Video | veo3.1/fast/image-to-video |
from $0.10 / second | $0.80 (800 API credits) |
| Veo 3.1 Image to Video | veo3.1/image-to-video |
from $0.20 / second | $1.60 (1,600 API credits) |
| Wan 3.0 Image to Video | alibaba/wan-3.0/image-to-video |
from $0.05 / second | $0.25 (250 API credits) |
| Seedance 2.0 Fast Reference to Video | bytedance/seedance-2.0/fast/reference-to-video |
from $0.113 / second | $0.452 (452 API credits) |
| Seedance 2.0 Reference to Video | bytedance/seedance-2.0/reference-to-video |
from $0.141 / second | $0.564 (564 API credits) |
| Kling AI Avatar 2.0 Pro | kling-video/ai-avatar/v2/pro |
$0.115 / second of input audio | $0.115 (115 API credits) |
| Sync Lipsync 3 | sync-lipsync/v3 |
$8.00 / minute of output video | $8.00 (8,000 API credits) |
| VEED Fabric 1.0 | veed/fabric-1.0 |
from $0.08 / second of input audio | $0.08 (80 API credits) |
| Topaz Image Upscale | topaz/upscale/image/precision |
$0.08 / 24 megapixels of output image | $0.08 (80 API credits) |
| Topaz Video Upscale | topaz/upscale/video/precision |
from $0.00667 / second of input video | $0.10 (100 API credits) |
| Bria RMBG 2.0 | bria/background/remove |
from $0.018 | $0.018 (18 API credits) |
| Eleven v4 Text to Speech | elevenlabs/tts/eleven-v4 |
$0.08 / 1000 characters | $0.08 (80 API credits) |
| MiniMax Speech 2.8 HD | minimax/speech-2.8-hd |
$0.10 / 1000 characters | $0.10 (100 API credits) |
| MiniMax Music 3 | minimax/music-3 |
$0.002 / second | $0.12 (120 API credits) |
| MMAudio V2 | mmaudio-v2 |
$0.001 / second | $0.008 (8 API credits) |
These are the featured models. All 1,496 models and their prices are in the model catalog and in GET /models (no key needed).
Top up
Add money to the API balance at https://doitong.ru/developers/dashboard#balance. When the balance is too low, a run answers
402 insufficient_credits with a top_up_url. Each API key can also be capped with its own budget in API credits
(see Authentication).