Doubao API access, OpenAI-compatible — without ep- endpoint IDs

Doubao is ByteDance's model family, normally reached via Volcengine Ark with provisioned endpoint IDs. Through DaoXE you skip that and call a catalog model ID with your one key.

Updated 2026-09-15

Natively, Volcengine Ark wants you to create an inference endpoint and call an ep-… ID. Through DaoXE, Doubao is behind the same OpenAI-compatible key as GPT, Claude and DeepSeek — you call a normal catalog ID from GET /v1/models, no Volcengine console. See the cheapest APIs guide for cost routing.

Call Doubao through DaoXE#

Use /v1/chat/completions with an exact Doubao ID from GET /v1/models. There's no endpoint provisioning step here: the catalog ID replaces the native ep-… identifier. Reasoning is governed by the non-standard thinking field (enabled/disabled/auto), the chain of thought lands in reasoning_content, and reasoning_effort scales how long the model thinks. Vision-capable variants take images via OpenAI-style content parts.

bash
# Doubao (Volcengine Ark) natively wants endpoint IDs like "ep-2024...".
# Through DaoXE you use the catalog model ID from GET /v1/models instead —
# no endpoint provisioning, no separate Volcengine console.
curl --fail-with-body --show-error --silent \
  https://daoxe.com/v1/chat/completions \
  -H "Authorization: Bearer ${DAOXE_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "YOUR_EXACT_MODEL_ID",
    "max_tokens": 64,
    "messages": [{"role": "user", "content": "Reply with OK."}]
  }'

How Doubao/Seed exposes reasoning#

Ark's chain of thought arrives as choices.message.reasoning_content — on thinking-summary models that's a summary of the thinking, with the raw trace riding alongside as an encrypted_content blob. In multi-turn tool loops you pass the encrypted blob (highest priority) or the summary back; on versions from doubao-seed-1.8 the kept reasoning_content feeds back into reasoning at the model's discretion, and tokens for content the model never sees aren't billed. Between regular turns the CoT is not stitched into context — only tool-call rounds preserve it. The thinking field (enabled/disabled/auto) and the seven-level reasoning_effort ladder both control it, with per-model defaults and remapping rules — which of these non-standard fields a given relay path forwards is exactly the kind of thing to verify — one test call before you commit a client.

Doubao-specific notes#

  • No ep- IDs here. Don't paste a Volcengine ep-… string; use the catalog model ID from GET /v1/models instead.
  • The thinking field has three states. enabled forces the chain of thought, disabled suppresses it, auto lets the model decide — it's a non-standard field, so send it via your SDK's extra-body. On current doubao-seed reasoning IDs the vendor documents enabled as the default state.
  • What you get back is a summary, not the raw trace. On thinking-summary models the vendor returns a reasoning_content summary plus an encrypted_content blob of the raw thinking. Multi-turn history rules are version-split: pre-251228 versions should strip reasoning_content; doubao-seed-1.8 and later keep it and the model decides whether it feeds back into reasoning. In tool loops, pass encrypted_content (highest priority) or the summary back — dropping both degrades the next answer.
  • Effort levels and the output budget. reasoning_effort runs none→max, but each model maps out-of-range values differently (a Seed-2.1-tier default of high maps max→high; a Seed-2.0-tier default of medium maps low/medium→high). And max_tokens caps the answer only — use max_completion_tokens when thinking must share the budget. Exact IDs always come from GET /v1/models.

What it costs#

One balance, one top-up rate

Top-up runs at a flat 1 RMB = $1 of credit on every payment method, and each model then bills at its own USD rate — live per-model rates are on the live pricing page. That rate is the same on Alipay, WeChat Pay, USDT, bank card (Visa · Mastercard), Apple Pay and Google Pay — one balance, shared by every model in the catalog, with no plan to choose and no monthly minimum. Rates are account-scoped and do change, so confirm with one small top-up rather than trusting a number in a guide.

Verify you actually get the model#

Prove the endpoint works before blaming the client — if this fails, no setting will fix it:

bash
export DAOXE_API_KEY="your_api_key"

# List the exact model IDs your account can call
curl --fail-with-body --show-error --silent \
  https://daoxe.com/v1/models \
  -H "Authorization: Bearer ${DAOXE_API_KEY}"

Confirm connectivity, then diff a fixed prompt against the official Volcengine/Ark API at temperature 0 to confirm the model class:

Verify us — don't trust us

Point the open benchmark at DaoXE and at the official API and compare at temperature 0. Then learn to detect model swapping so a cheaper endpoint can't quietly swap you to a smaller model.

Frequently asked questions#

Do I need a Volcengine account or an ep- endpoint?

No — through DaoXE, Doubao is behind your single key with a normal catalog ID; there's no endpoint-provisioning step.

How do I turn thinking on or off?

Send the non-standard thinking field: enabled forces the chain of thought, disabled suppresses it, auto lets the model decide. Current doubao-seed reasoning IDs document enabled as the default.

Why is the reasoning a summary instead of the raw trace?

On thinking-summary models Ark returns a reasoning_content summary plus the raw thinking as encrypted_content. Pass the encrypted blob (or the summary) back in tool loops — dropping both degrades the next answer.

How much does Doubao cost here?

Per model, account-scoped — see live pricing. Top-up is a flat 1 RMB = $1 of credit on every payment method.

Try DaoXE — and benchmark it yourself

One key for GPT, Claude, Gemini, DeepSeek and more. Point the open benchmark at us and compare — don't take our word for it.