Skip to main content
GET /v1/models lists the model families we serve for your key. Send a model by its family alias, such as gpt-5.5 or gemini-3.5-flash. A dated snapshot of an alias works too. Any other name returns 400 model_not_carried before the request reaches your provider.

Every endpoint reaches every model

  • POST /v1/responses speaks OpenAI Responses.
  • POST /v1/chat/completions speaks OpenAI Chat Completions.
  • POST /v1/interactions speaks Google Interactions.
  • POST /v1/messages speaks Anthropic Messages.
  • POST /v1beta/models/{model}:generateContent speaks Google GenerateContent.
  • POST /model/{modelId}/converse speaks Amazon Bedrock Converse.
We translate the shape you send into the shape the provider wants. So you can ask a Claude model in the OpenAI shape, or a GPT model in the Anthropic shape. What comes back is the provider’s own body, in the shape of the endpoint you called.

Models that run the Flex Race

Only OpenAI and Gemini sell a flex tier we race, and only on some models.
  • OpenAI: gpt-5.6, gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, gpt-5.5, gpt-5.5-pro, gpt-5.4, gpt-5.4-mini, gpt-5.4-nano, gpt-5.4-pro, gpt-5.2, gpt-5.1, gpt-5, gpt-5-mini, gpt-5-nano, o3, o4-mini
  • Gemini: gemini-3.5-flash, gemini-3.1-pro-preview, gemini-3.1-flash-lite, gemini-3-flash-preview, gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite
A duration start_within on any other model returns 400 flex_model_not_capable. Claude is the exception. Anthropic publishes no flex tier, and Claude still races a cheaper tier of its own on managed keys, without streaming, inside a window of three to ten minutes. See Flex Racing with Claude models. Gemini has no auto tier, so send default for Gemini’s standard tier.

Asking the API

GET /v1/models returns the catalog for your key, and GET /v1/models/{id} returns one entry. Both are OpenAI-compatible, so the OpenAI SDK reads them with no changes.
Each entry is an OpenAI model object plus a flexinference block. flex_race says whether a duration runs the race on the model. tiers lists the tier names it serves for your key. providers lists the routes that run it, starting with its direct route. Every claude-* model reads false on flex_race and can still race, because a Claude race turns on your organization and your request, not on the model. capabilities answers the same questions for every route the model runs on, keyed by route name. Each entry covers the content parts it takes and the structured-output forms it accepts. It also says how the route handles a reasoning block. The answers differ by route on the same model. claude-opus-4-8 takes a JSON schema on anthropic and refuses one on bedrock. Read enforced_by first. flexinference means we check the entry before we call the provider, so an unsupported is a 400 from us. provider means we forward your request and the provider decides. It also decides whether it runs the model. Read those entries as what we pass on, not as a promise. pricing lists what each route’s provider charges for the model, in dollars per million tokens. input and output are always there, and cache_read and cache_write appear where the provider prices caching. We bill from the same numbers. A route with no entry has no published rate.

Open-source models

We run open-source families on Cloudflare Workers AI, inside the network at the edge. Their route is cloudflare, and they run at the standard tier, so send default. They do text, streaming, and function calling.
  • OpenAI: gpt-oss-120b, gpt-oss-20b
  • Meta: llama-3.3-70b, llama-3.1-8b, llama-4-scout-17b-16e-instruct, llama-3.1-70b-instruct-fp8-fast, llama-3.1-8b-instruct-fp8, llama-3.2-1b-instruct, llama-3.2-3b-instruct, llama-3.2-11b-vision-instruct, llama-guard-3-8b
  • Qwen: qwen3-30b, qwen2.5-coder-32b-instruct, qwq-32b
  • Mistral: mistral-small-3.1, mistral-7b-instruct-v0.1
  • Moonshot AI: kimi-k2.5, kimi-k2.6, kimi-k2.7-code
  • Z.ai: glm-4.7-flash, glm-5.2
  • Google: gemma-4-26b-a4b-it
  • DeepSeek: deepseek-r1-distill-qwen-32b
  • IBM: granite-4.0-h-micro
  • NVIDIA: nemotron-3-120b-a12b
  • AI Singapore: gemma-sea-lion-v4-27b-it
Three of them read images: llama-3.2-11b-vision-instruct, llama-4-scout-17b-16e-instruct, and gemma-4-26b-a4b-it. Send an image to any other family and the request fails by name rather than dropping it. We also run open-source families on DeepInfra. Their route is deepinfra, and like Workers AI they run at the standard tier, so send default. You can name an open-source model three ways, so code you already wrote keeps working. Our name, the provider’s model name, or the provider’s full id all reach the same model:
Case doesn’t matter. We answer with our name, so your logs and your bill show one name per model. Two families run on both. gemma-4-26b-a4b-it and llama-4-scout-17b-16e-instruct go to Workers AI unless you ask for DeepInfra:
That order tries DeepInfra first and falls back to Workers AI. Ask for ["cloudflare"] and you get the edge instead.

What passes through

Tool calling, structured outputs, vision, and reasoning pass through to the provider you chose. Use that provider’s own fields for them. Don’t send service_tier. We set the tier from start_within, so a request carrying its own returns 400 service_tier_not_allowed. A native field works only on the provider that owns it. Send top_k to a Claude model and it passes through. Send it to a GPT or Gemini model and you get 400 unsupported_parameter, never a quiet loss.