use-case
Doubao billing: online, Fast, batch, and cache
Direct answerOnline inference serves interactive work, Fast is a model- and channel-dependent low-latency tier, and batch is a separate upstream service. Concurrent online requests do not receive batch discounts. Reconcile length, audio, cache, and the applicable group as well.
Updated · Reviewed
Beginner: choose a model and then a service
Pro, Turbo, Lite, and Mini are model variants. Online, Fast, and batch are services or billing scenarios, not model names. This comparison explains selection; it does not promise every scenario for every model, region, or channel.
| Scenario | Suitable work | Pricing and access prerequisite |
|---|---|---|
| Online inference | Chat, support, interactive agents | Ordinary online service using the model's online pricing |
| Low-latency Fast | More latency-sensitive interaction | Model and channel support for the low-latency tier, with separate prices |
| Batch inference | Delay-tolerant translation, summaries, labeling, offline evaluation | Dedicated upstream batch service; accept longer waits for batch-oriented cost and throughput |
Batch is not a uniform discount on every line item. Check input, output, cache hits, and audio separately. Consult the official sources for upstream prices and capabilities, and the model marketplace for gateway models, endpoints, and current selling prices. This guide deliberately does not maintain a duplicate selling-price table.
Batch does not mean many simultaneous online requests
Concurrent calls to /v1/chat/completions, asyncio, Promise.all, stream: false, or several tasks in one prompt do not turn online requests into upstream batch inference. Client-side asynchrony and response streaming are independent of the service's billing scenario.
The official Volcengine SDK example uses the dedicated client.batch.chat.completions.create method. This is a direct Ark example, not a gateway SDK method. It also does not establish that batch always requires file uploads or guarantees completion within a fixed time.
The current Doubao adaptation includes batch price branches but does not add public batch submission, lookup, or download endpoints. Only a trusted server-side job flow can establish batch identity. Client batch: true, headers, or service_tier: "batch" cannot claim the discount. Consult the endpoint matrix rather than guessing a batch route. Media workflows in the async task guide are not Doubao text batch inference either.
How Fast is selected
The current billing adaptation checks service_tier: "fast" in the effective upstream request after channel filtering and parameter overrides, then freezes the scenario in the request's billing snapshot. A client parameter removed by the channel does not trigger the Fast branch. Field support does not establish model availability, and successful forwarding does not guarantee a fixed latency.
A Turbo model name does not automatically select Fast. Do not apply one model's Fast text-price increase to another model or to audio. Verify unlisted scenarios and items against official information and channel capabilities instead of extrapolating.
Input, audio, and cache without double charging
This breakdown applies when the respective categories are priced separately and upstream usage provides the necessary details. Total input may already include both audio and cache; raw counts must not simply be added together.
| Item | Reconciliation rule |
|---|---|
| Ordinary input | Remove cache, audio, and other categories priced separately from total input |
| Cached text | Total cache hits minus cached audio |
| Uncached audio input | Total audio input minus cached audio |
| Cached audio input | The intersection of audio and cache, counted only here |
| Output | Use response output usage, independently of input |
| Cache storage | Retained tokens multiplied by billable hours, separate from reads and writes |
Example: 10000 total input tokens include 2000 cache hits and 1000 audio tokens, of which 200 are cached audio. With no other separately priced categories, ordinary input is 7200, cached text 1800, uncached audio 800, and cached audio 200. The total remains 10000. Missing audio-cache details do not justify inventing the intersection.
token cost = sum(disjoint category tokens * scenario price) / 1000000
storage cost = retained tokens * billable hours * storage price / 1000000
Retaining 100000 tokens for two hours represents 200000 token-hours, not a one-time write of 100000 tokens. Storage requires actual metering; missing storage data must not become a one-hour charge inferred from cache hits. These formulas explain usage units, not the final gateway charge, which also depends on the effective scheme, currency, and applicable group.
Length bands use the complete input
The current Mini form uses len for complete input length. Its 32k and 128k boundaries mean 32000 and 128000 tokens: equality belongs to the preceding band, and a larger input enters the next band. The third displayed band is 128k–256k, not a band starting above 256k or a promise to support requests beyond the model's context limit. Pricing conditions are not request-length validators; check the exact version's input and output limits.
An input of 40000 tokens with 30000 cached tokens still selects the 32k–128k prices, not the lowest band based on the remaining 10000. The band selects rates for the whole request; it is not progressive pricing that splits the first 32000 tokens from the rest. Do not apply one Mini version's bands to the entire Doubao family.
Administrators: fill, save, and read back
With administrator access, open model pricing settings, select the exact model name, and choose per-token pricing. For adapted models, the scenario-pricing form separates online, Fast, and batch items. Mini also has input-length bands. Sharing the Doubao brand does not make every field applicable.
- Confirm the exact version and displayed currency. Ordinary prices are per million tokens; storage is per million token-hours.
- Existing base prices populate only existing items, not every scenario. Fill the remaining fields or load reference prices into the draft, then verify official prices. References are not live-synced; their baseline uses 1 USD = 7 CNY, not a current exchange-rate quote or a guarantee that gateway selling prices equal upstream CNY prices.
- Blank means unconfigured; enter
0explicitly for free items. Review every band and save. Editing or loading references alone does not change live pricing. - Reopen the same model and verify all scenario values, currency, and bands. The form persists one multi-tier billing rule; the multi-tier per-token label does not mean two bills are added together.
- If a custom expression cannot be represented losslessly, keep reviewing it in the expression editor instead of overwriting it to obtain form fields. If the new fields are absent entirely, check the deployed form version and exact model-name match before investigating stale browser assets.
Public prices and group-specific schemes require separate checks; changing public prices does not necessarily replace every group's scheme. The administrator action to apply one model's prices to multiple models only copies configuration. It is unrelated to batch inference, and configuring a batch rate does not enable upstream service or create jobs.
Fine-tuning is not ordinary inference
Full fine-tuning and LoRA are training charges. Inference with a fine-tuned model or endpoint has separate text and audio pricing. Do not append training rates to each base-model call or replace base-model prices with post-fine-tuning rates. This inference adaptation does not provide training-task APIs or automatic training settlement.
Expert: reconcile requests against their price snapshots
Validate online and supported Fast calls on a small scale against matched tiers, usage, and final consumption logs. Validate batch branches offline or through an explicitly integrated trusted batch flow, not by forging client fields. The following is a suggested business ledger, not a promise that every response contains these fields:
request_id, original_model, upstream_model, endpoint, group,
effective_service_tier, matched_tier, full_input_tokens,
text_input_tokens, text_cached_tokens, audio_input_tokens,
audio_cached_tokens, output_tokens, cache_storage_token_hours,
pricing_version, currency, final_charge
Pre-consumption may use estimates; reconcile completed work using actual usage and its frozen pricing rules, not today's rates. See billing, usage, and cost reconciliation for refunds, retries, and the wider cost ledger.
Use cases
- Choose an inference service and estimate cost
- Configure Doubao scenario prices and reconcile consumption logs
FAQ
Do many concurrent requests qualify for batch prices?
No. Ordinary Chat requests remain online calls when sent concurrently, from async code, or without streaming. Batch pricing requires the upstream batch service and a trusted server-side job identity.
Is Turbo the same as Fast?
No. Turbo identifies a model variant; Fast identifies a service tier. Selecting Turbo does not enable Fast, and Pro, Lite, and Mini do not necessarily share its Fast capabilities or prices.
Why can a cache-heavy request still use a higher length band?
The band uses the complete input length, including cached context. Cache hits reduce the tokens charged at the ordinary input rate, not the total used to select the band.
Is cached audio charged again as ordinary audio and cached text?
With separate audio-cache pricing and the required upstream usage breakdown, those tokens belong only to the cached-audio category. They must not also be charged as ordinary audio, cached text, or ordinary input.
Does loading reference prices immediately change billing?
No. It updates an editing draft. Verify currency, scenarios, and required fields, then save. Blank means unconfigured; an explicit 0 means free.
Does a cache-storage price automatically charge one hour?
No. Storage requires retained tokens and billable duration. Neither cache hits nor cache writes alone establish token-hours, and missing duration must not be replaced with an assumed hour.
Related guides
Official sources
- Volcengine Ark Batch Inference Official
- Volcengine Python SDK — Batch Chat Completions Official
- Doubao Seed 2.1 Pro — Official Model and Pricing Official
- Doubao Seed 2.1 Turbo — Official Model and Pricing Official
- Doubao Seed 2.0 Lite — Official Model and Pricing Official
- Doubao Seed 2.0 Mini — Official Model and Pricing Official
兔子API