Skip to main content
All text models are served through the OpenAI-compatible Chat Completions endpoint (except the Responses-only models): switch models by changing model, with no per-vendor URLs or keys. This page lists every model ID, what it supports and how it is billed, grouped by vendor.

Entry points

Chat Completions

POST /v1/chat/completions. The default entry; every model on this page is called here, except the Responses-only models.

Responses

POST /v1/responses. Every text model except deepseek-v3.1-terminus can be called here, which is what clients such as Codex use; GPT Pro / Codex / o3-pro models accept only this entry.

Claude Messages

POST /v1/messages. Native envelope kept for apps already built on the Anthropic SDK; every text model except the GPT-5.6 / GPT-6 / GPT-6.1 series and the Responses-only models can be called here.

Gemini native

POST /v1beta/models/{model}:generateContent. Native envelope kept for existing Gemini clients.
New integrations should use Chat Completions. The native entries exist for compatibility with existing clients and expose no extra capability except web search. All entries authenticate with a WaveAPI key (Chat / Responses via Authorization: Bearer, Messages via x-api-key or Authorization: Bearer, Gemini native via x-goog-api-key, Authorization: Bearer or the key query parameter); an ecosystem login token is not a model key — see Authentication.

Billing rules

Per-model rates are in price_config on GET /v1/models and in the console’s Model Market. What a specific call cost is the usage.cost field on the response. These rules apply to every text model. Model-specific differences are in the vendor tables and the model notes below them.
  • Where rates come from: 10% off the official list price or equal to it, never above; Batch, Flex and Priority prices are not used. For the actual numbers, read price_config from GET /v1/models.
  • Total input includes cache: prompt_tokens is total input; reported cache-hit / cache-write tokens are billed at their cache rates, the rest at the ordinary input rate. Cache tokens are part of the total, never an amount added on top.
  • Reasoning is inside output: completion_tokens already includes completion_tokens_details.reasoning_tokens; reasoning is billed once at the output rate.
  • Two-rate models: models billed as input + output have no cache rate; any cache statistics in the response are charged at the ordinary input rate, and explicit cache_control is ignored, with all input billed at the input rate.
  • Long-context tiers: a tiered model picks its tier from total input (cache included); once the threshold is reached the whole request — input, cache and output — moves to the higher rate, not just the excess. Thresholds and how the exact boundary value is treated are stated per vendor.
  • Time-of-day pricing: DeepSeek V4 is priced by the UTC slot at request start; see the DeepSeek section.
  • Web search: billed per search actually run, at price_config.web_search_per_1k (USD per 1,000 searches), added to the token cost before the quota conversion. On /v1/responses only search actions (action.type: "search") count; opening a page and finding in page do not. On /v1/messages the count is usage.server_tool_use.web_search_requests. Entries and models are in the table below.
  • Quota conversion: the line items are summed and converted to an integer quota at 500,000 quota = 1 USD; a request with positive usage that rounds below 1 quota is charged 1, then the account group multiplier is applied and the result truncated. usage.cost in the response is that integer quota, not dollars.
On /v1/responses, a web search tool sent to a model not in the table is ignored: no search runs and no search fee is charged (gpt-5-pro, gpt-5.2-pro, gpt-5.4-pro, gpt-5.3-codex and o3-pro do not support tool calling and return 400). A tool_choice that forces web search returns 400. On /v1/messages, a web search tool sent to a model not in the table returns 400. The Chat endpoint offers no web search. All rates are in USD per 1 million tokens:
The final charge is the text ledger entry in the console billing records. The states mean:
A missing final usage, a dropped connection or a response without a cost field does not make the call free. Check the existing usage record in the console before resubmitting; never retry automatically on that basis.

Caching

Caching is graded per model by which cache rates that model has configured. Cache reads and writes replace the matching ordinary input charge at their own rate; they are not added on top.

Automatic vs explicit caching

Automatic caching is decided upstream and needs no parameters from you: hit tokens appear in usage.prompt_tokens_details.cached_tokens and bill at that model’s cache-read rate. Hits are never guaranteed, so cost estimates should not assume one. Explicit caching marks a reusable prefix with cache_control. It is allowed per model: Unsupported requests return 400 and are not billed.
On first integration, send a small request and check that the cache line items in your console usage record look as expected before scaling up.

Writing a Claude explicit cache request

On the OpenAI-compatible endpoint, content must be an array of content blocks. A string content cannot carry cache_control; the marker is ignored and the whole prefix bills as ordinary input.
The native Messages endpoint takes the same shape with the prefix in the system array. ttl defaults to 5 minutes; for the 1-hour tier send "cache_control": {"type": "ephemeral", "ttl": "1h"} together with the anthropic-beta: extended-cache-ttl-2025-04-11 header — the gateway forwards that header upstream as-is.

Hit conditions and reading usage

  • Prefix length — usually at least ~1,024 tokens; shorter prefixes create no cache.
  • Byte-identical prefix — any difference in text, spaces, newlines or content-block order misses.
  • Reuse within the TTL — 5 minutes or 1 hour, counted from the most recent hit.
In Chat responses the hit count is usage.prompt_tokens_details.cached_tokens. Native Messages reports cache_read_input_tokens and cache_creation_input_tokens instead, and its input_tokens excludes both — total input is the sum of the three (whereas Chat’s prompt_tokens already includes them). Written tokens bill at the cache-write rate, which is higher than ordinary input, so explicit caching suits prefixes that are stable and reused within the TTL.

Not supported

The following return 400 and are not billed:
  • Vendor built-in tools — any entry in tools whose type is not function or custom (hosted execution, file search, and similar). Client-executed function tools are not in this group and work normally; for web search see Billing rules.
  • web_search_options.
  • service_tier set to anything other than standard / default.
  • cachedContent (Gemini native) — see the allow-list above.
Each model serves only the protocols it supports (Chat / Responses / Claude Messages / Gemini native). Sending a request to a protocol a model does not serve, or sending tools, tool_choice or response_format to a model that does not support them, also returns 400. Which models each entry serves is under Entry points; what each model supports is in the catalog below.

Model catalog

How to read the tables: every model supports non-streaming and streaming text output, so those are not given a column. In the JSON / Tools column the left mark is JSON Schema structured output and the right one is function calling — the platform returns the function name and arguments; your application runs the tool. ✓ means supported, — means not supported. The Billing column names which dimensions a model is billed on; for rates see Catalog API. A model with a long-context tier picks its tier from total input (cache included) and switches the whole request once the threshold is reached; the thresholds are in the model notes under each table. Model notes also carry each model’s input and output limits and any model-specific restrictions; a limit is the maximum the endpoint accepts, and input and output cannot both be maxed out at once.

OpenAI

Model notes
  • gpt-6.1-sol — 272K long-context tier; has a separate cache-write rate; max input 922K, max output 128K; function calling works only through /v1/responses, and sending tools on Chat returns 400; reasoning_effort accepts "low", "medium", "high" and "xhigh", not "none" or "minimal"
  • gpt-6-sol — 272K long-context tier; has a separate cache-write rate; max input 922K, max output 128K; function calling requires reasoning_effort: "none"; when reasoning_effort is not none, temperature, top_p and logprobs are not supported
  • gpt-6-luna — 272K long-context tier; has a separate cache-write rate; max input 922K, max output 128K; function calling requires reasoning_effort: "none"; when reasoning_effort is not none, temperature, top_p and logprobs are not supported
  • gpt-6-astra — 272K long-context tier; has a separate cache-write rate; max input 922K, max output 12.8K; function calling works only through /v1/responses; use reasoning_effort: "low"; "none" is unsupported, and temperature, top_p and logprobs are not supported
  • gpt-5.6-luna — 272K long-context tier; has a separate cache-write rate; max input 922K, max output 128K; supports automatic cache hits
  • gpt-5.6-terra — 272K long-context tier; has a separate cache-write rate; max input 922K, max output 12.8K
  • gpt-5.6-sol — 272K long-context tier; has a separate cache-write rate; max input 922K, max output 12.8K
  • gpt-5.5 — 272K long-context tier; max input 1M, max output 12.8K; no separate cache-write rate
  • gpt-5.4 — 272K long-context tier; max input 1M, max output 12.8K; no separate cache-write rate
  • gpt-5.4-pro — 272K long-context tier; /v1/responses only
  • gpt-5.4-mini — supports automatic cache hits
  • gpt-5.4-nano — supports automatic cache hits
  • gpt-5.3-codex — /v1/responses only
  • gpt-5.2 — supports automatic cache hits
  • gpt-5.2-pro — /v1/responses only
  • gpt-5.1 — supports automatic cache hits
  • gpt-5 — supports automatic cache hits
  • gpt-5-mini — supports automatic cache hits
  • gpt-5-nano — supports automatic cache hits
  • gpt-5-pro — /v1/responses only
  • gpt-4.1 — supports automatic cache hits
  • gpt-4.1-mini — supports automatic cache hits
  • gpt-4.1-nano — supports automatic cache hits
  • o3-pro — /v1/responses only
  • o4-mini — supports automatic cache hits
  • o3-mini — supports automatic cache hits
  • o1 — supports automatic cache hits
GPT-5 and later use max_completion_tokens to cap output and reasoning_effort to pick a reasoning tier (GPT-6 Astra supports "low" only). max_tokens is rejected. gpt-5-pro, gpt-5.2-pro, gpt-5.4-pro, gpt-5.3-codex and o3-pro are served only on the Responses API and return 400 on Chat. The 272K tier is judged on total input: exactly 272,000 stays on the base rate, anything above moves the whole request (cache and output included) to the long-context rate. GPT-5.6 cache writes cost 1.25× the tier’s input rate and replace the ordinary input charge rather than adding to it; GPT-5.4 / 5.5 have no separate cache-write rate.

Anthropic

Model notes
  • claude-fable-5-1 — cache writes are priced at two TTLs, 5-minute and 1-hour; max input 1M, max output 128K; JSON Schema structured output is not supported; tool_choice accepts only "auto"; "required" and named functions return 400
  • claude-fable-5 — cache writes are priced at two TTLs, 5-minute and 1-hour; max input 1M, max output 128K; JSON Schema structured output is not supported; tool_choice accepts only "auto"
  • claude-opus-5-5 — cache writes are priced at two TTLs, 5-minute and 1-hour; JSON Schema and json_object are not supported; use tool_choice: "auto"; any and tool are not supported; thinking is always on and cannot be disabled
  • claude-sonnet-5-5 — cache writes are priced at two TTLs, 5-minute and 1-hour; max input 1M, max output 128K; JSON Schema and json_object are not supported; use tool_choice: "auto"; any and tool are not supported; temperature, top_p and top_k accept only their defaults, and other values return 400; adaptive thinking is on by default
  • claude-haiku-5-5 — 100K long-context tier; cache writes are priced at two TTLs, 5-minute and 1-hour; max input 1M, max output 128K; JSON Schema and json_object are not supported; web search is not supported; temperature, top_p and top_k accept only their defaults, and other values return 400; adaptive thinking is on by default
  • claude-opus-5 — cache writes are priced at two TTLs, 5-minute and 1-hour; max input 128K, max output 16K; JSON Schema and json_object are not supported
  • claude-sonnet-5 — cache writes are priced at two TTLs, 5-minute and 1-hour; max input 1M, max output 128K; JSON Schema and json_object are not supported
  • claude-opus-4-8 — cache writes are priced at two TTLs, 5-minute and 1-hour
  • claude-opus-4-7 — cache writes are priced at two TTLs, 5-minute and 1-hour
  • claude-opus-4-6 — cache writes are priced at two TTLs, 5-minute and 1-hour
  • claude-sonnet-4-6 — cache writes are priced at two TTLs, 5-minute and 1-hour
  • claude-sonnet-4-5 — cache writes are priced at two TTLs, 5-minute and 1-hour
  • claude-haiku-4-5 — cache writes are priced at two TTLs, 5-minute and 1-hour
Use max_tokens on the Chat endpoint to cap output; the GPT-only reasoning_effort and max_completion_tokens do not apply to Claude models. Every Claude model except claude-opus-4-5 carries three cache rates (read / 5-minute write / 1-hour write) and allows explicit cache_control — see Caching for the request shape. The seven Claude 5 / Claude 5.5 / Fable models do not support structured output: response_format with json_schema or json_object returns 400. claude-haiku-5-5 has a 100K long-context tier: once total input (cache reads and writes included) exceeds 100,000, input, cache and output for the whole request are billed at the higher rates. On the Fable models, claude-opus-5-5 and claude-sonnet-5-5, tool_choice accepts only "auto"; "required" or a named function returns 400. claude-opus-4-5 bills input and output only; it ignores cache_control and bills all input at the input rate. Apps built on the Anthropic SDK can use the native Messages endpoint with every Claude model.

Google Gemini

Model notes
  • gemini-4-argon — max input 1M, max output 65K; the Gemini native endpoint is available; JSON Schema structured output is not supported; requests with tools must stream (stream: true); non-streaming requests return an error
  • gemini-3.8-flash — max input 1M, max output 65K; the Gemini native endpoint is available
  • gemini-3.7-flash — max input 1M, max output 65K; the Gemini native endpoint is available
  • gemini-3.6-flash — max input 1M, max output 65K; the Gemini native endpoint is available
  • gemini-3.5-flash — the Gemini native endpoint is available
  • gemini-3.1-pro-preview — 200K long-context tier; the Gemini native endpoint is available
  • gemini-3-flash-preview — the Gemini native endpoint is available
  • gemini-2.5-pro — 200K long-context tier; the Gemini native endpoint is available
  • gemini-2.5-flash-lite — the Gemini native endpoint is available
Besides the OpenAI-compatible endpoint, these models can also be called on the Gemini native endpoint: gemini-2.5-flash-lite, gemini-2.5-pro, gemini-3-flash-preview, gemini-3.1-pro-preview, gemini-3.5-flash, gemini-3.6-flash, gemini-3.7-flash, gemini-3.8-flash, gemini-4-argon (gemini-3.5-flash-lite is not available on the native endpoint). The native entry is POST /v1beta/models/{model}:generateContent (streaming: :streamGenerateContent?alt=sse), see Gemini native API. Native responses report usage in usageMetadata without usage.cost; candidatesTokenCount and thoughtsTokenCount are reported separately and billed output is their sum. The Pro models (gemini-2.5-pro / gemini-3.1-pro-preview) have a 200K long-context tier that switches the whole request above 200,000 total input. 3.6 / 3.7 / 3.8 Flash and gemini-4-argon have an implicit cache-read rate whose hits are decided upstream; the other models bill two rates. The whole Gemini line supports automatic caching only: cache_control has no effect, and cachedContent on the native endpoint returns 400, as do built-in tools, web_search_options and any service_tier other than standard / default.

DeepSeek

Model notes
  • deepseek-v4.1-flash — max input 1M, max output 384K; supports automatic cache hits; time-of-day pricing, see the table at the end of this section
  • deepseek-v4-pro — max input 1M, max output 393K; supports automatic cache hits; time-of-day pricing, see the table at the end of this section
  • deepseek-v4-flash — max input 128K, max output 16K; supports automatic cache hits; time-of-day pricing, see the table at the end of this section
  • deepseek-v3.2-exp — no strict JSON Schema; separate model from deepseek-v3.2 (2025-09-29 experimental build)
  • deepseek-v3.1-terminus — no strict JSON Schema; no longer listed on DeepSeek’s main API
The V4 line (Pro / Flash / 4.1 Flash) is priced by the UTC time slot at request start (Beijing time = UTC+8). The rate is fixed when the request begins and is used for both the response cost and the final settlement, even if the response crosses a slot boundary. Pass thinking: {"type": "disabled"} to turn thinking off. V4 cache-hit rates replace the matching input charge; there is no separate cache write. V3.x / R1 bill two rates; deepseek-v3.2-exp and deepseek-v3.1-terminus offer no strict JSON Schema — use deepseek-v3.2 or deepseek-r1-0528 when you need schema guarantees. Beijing time is UTC+8. The per-slot input / output / cache-read rates for each model are in price_config.text_schedule on GET /v1/models — that is the complete table and the basis for settlement.

Qwen (Alibaba Cloud)

Model notes
  • qwen3.8-max — has a separate cache-write rate; max input 983K, max output 131K; supports automatic cache hits; use tool_choice: "auto"
  • qwen3.8-max-0902 — has a separate cache-write rate; max input 983K, max output 131K; supports automatic cache hits; use tool_choice: "auto"
  • qwen3.8-2.4t-a95b — has a separate cache-write rate; supports automatic cache hits; use tool_choice: "auto"
  • qwen3.8-27b — has a separate cache-write rate; supports automatic cache hits; use tool_choice: "auto"
  • qwen3.8-flash — has a separate cache-write rate; supports automatic cache hits; use tool_choice: "auto"
  • qwen3.7-plus — 256K long-context tier
  • qwen3.7-flash — 32K long-context tier; has a separate cache-write rate; supports automatic cache hits
  • qwen3.6-plus — 256K long-context tier
  • qwen3.6-flash — 256K long-context tier
Whether an automatic cache hit occurs is decided upstream; when a prefix is marked with cache_control, writes are billed at the cache-write rate and hits at the cache-read rate. Plus / Flash have a 256K tier (32K for qwen3.7-flash) switched on total input for the whole request. Reasoning tokens come out of the output budget and cannot be turned off.

Kimi (Moonshot)

Model notes
  • kimi-k3 — max input 1M, max output 105K; supports automatic cache hits; use tool_choice: "auto"; give function calls an output budget of 512 or more
Kimi K3 supports automatic caching. Use tool_choice: "auto", and give function calls enough output budget — 512 or more. K2.x bill input and output only.

Grok (xAI)

Model notes
  • grok-4.7 — 200K long-context tier; supports automatic cache hits
  • grok-4.6 — 200K long-context tier; max input 500K, max output 12.8K; supports automatic cache hits; function calling works only through /v1/responses; max_tokens is not a hard cap; reasoning can push completion_tokens past it
  • grok-4.5 — 200K long-context tier; tool calling is not supported
  • grok-4.3 — 200K long-context tier
  • grok-4.20-0309-reasoning — 200K long-context tier
  • grok-4.20-0309-non-reasoning — 200K long-context tier
  • grok-build-0.1 — 200K long-context tier
The whole Grok line has a 200K tier: once total input (cache included) reaches 200,000, input, cache read and output for the entire request move to the higher rate — not just the excess. Grok 4.6 supports automatic caching. The whole line does not support tool calling — sending tools returns 400. max_tokens is not a hard cap on reasoning models: completion_tokens includes reasoning tokens and can exceed it, so budget with key quotas.

GLM (Z.ai)

Model notes
  • glm-5.3 — supports automatic cache hits
Models billed as input + output ignore cache_control and bill all input at the input rate.

MiniMax

Input and output are the only two rates; cache_control is ignored and all input is billed at the input rate.

Others

Model notes
  • mimo-v2.5-pro — Xiaomi MiMo
  • step-3.7-flash — StepFun Step
Input and output are the only two rates; cache_control is ignored and all input is billed at the input rate.

Catalog API

Live availability, price configuration and capability flags come from the catalog API:
Single model: GET /v1/models/{model}. The price_config it returns is where this page’s tables come from: input / output are the base rates, cache_read / cache_write / cache_write_1h show how far caching is opened up for that model, input_tier_threshold with the *_above_price fields is the long-context tier, and cache_billing: "input_output" means input and output are the only two rates. The catalog returns every text model currently live. A model that does not appear in the response cannot be called.