Provider reference
All 95 built-in descriptors, with the wire each rides, its authentication scheme, its pricing namespace and the endpoints it serves.
On this page
Every descriptor compiled into the binary, in alphabetical order. The name in the first column is
what you write as provider: on an upstream.
How to read the columns. Wire is the dialect the request is shaped by; it comes from the
descriptor, so you do not set dialect: unless you are enabling
cross-dialect translation. Auth decides which config fields
the upstream needs, and the parenthetical names the header or parameter where the scheme alone does
not tell you — see authentication schemes. Prices under is the
catalog namespace every price lookup for this provider begins with; (region) marks the two whose
keys are region-qualified, and oci carries the count of keys its descriptor can reach. Endpoints
lists the endpoint kinds the descriptor declares, spelled the way the endpoint vocabulary spells
them; anything else takes the passthrough path, forwarded and ledgered without a cost figure.
What the count is, and what stands behind it. TokenTriage ships 95 built-in provider descriptors: the set the binary compiles in. The verification standard is published beside that figure rather than folded into it. An end-to-end test drives a request through a descriptor against a mock shaped like that provider, asserting that the request is authenticated and forwarded, the response relayed byte for byte, usage extracted, and the price resolved under the right catalog prefix or left unpriced with a stated reason. The verification is against mocks, not against the providers’ live endpoints.
Byte-for-byte relay has one shipped exception, and it is worth knowing before you read the phrase
elsewhere in this section: a streamed chat request to an openai-dialect upstream has
stream_options.include_usage spliced into its outbound body, and the terminal usage frame that
comes back is removed from your copy if you did not ask for it. That is how a streamed row carries
provider-reported usage rather than an estimate. It applies to every upstream riding that driver,
and when a stream misbehaves
carries the switch that turns it off.
How far that reaches, and where it does not. The generator scores a provider-by-endpoint pair
rather than a provider, and it publishes the pairs no test touches. The matrix declares 186 such
cells: 99 carry a test asserting the ledger row’s own provider and endpoint stamps, 10 carry a
weaker endpoint-only stamp, and 77 are printed as declared (no e2e gate), which the generator
glosses as “Not a support claim, and printed rather than hidden.” So the Endpoints column is
what the descriptor declares. Ten descriptors have no gated cell: anthropic, azure_text, black_forest_labs, fal_ai, fireworks_ai_embeddings, openai_compatible, runwayml, scx_ai, text_completion_openai, vertex_ai_embedding.
PROVIDER_MATRIX.md §3 names the test behind every other cell, and
TestMatrixParity regenerates that file and diffs it, so it cannot drift from the shipped catalog
without a test going red.
| Provider | Wire | Auth | Prices under | Declared endpoints |
|---|---|---|---|---|
ai21 | openai | bearer | ai21/ | chat, models |
aiml | openai | bearer | aiml/ | chat, models, images |
anthropic | anthropic | header (x-api-key) | anthropic/ | chat, models |
anyscale | openai | bearer | anyscale/ | chat, models |
assemblyai | assemblyai | header (Authorization) | assemblyai/ | audio_transcription, files |
azure_ai | openai | header (api-key) | azure_ai/ | chat, embeddings |
azure_openai | openai | header (api-key) | azure/ | chat, embeddings, models |
azure_text | openai | header (api-key) | azure_text/ | completions |
baseten | openai | bearer | baseten/ | chat, models |
bedrock | bedrock | aws_sigv4 (service=bedrock) | bedrock/ | chat |
bedrock_converse | bedrock | aws_sigv4 (service=bedrock) | bedrock_converse/ | chat |
black_forest_labs | bfl | header (x-key) | black_forest_labs/ | images, images_edits |
cerebras | openai | bearer | cerebras/ | chat, models |
cloudflare | openai | bearer | cloudflare/ | chat, models |
cohere | openai | bearer | cohere/ | chat, models, embeddings |
crusoe | openai | bearer | crusoe/ | chat, models |
dashscope | openai | bearer | dashscope/ | chat, models |
databricks | openai | bearer | databricks/ | chat, models, embeddings |
deepgram | deepgram | header (Authorization: Token …) | deepgram/ | audio_transcription |
deepinfra | openai | bearer | deepinfra/ | chat, models |
deepseek | openai | bearer | deepseek/ | chat, models |
elevenlabs | elevenlabs | header (xi-api-key) | elevenlabs/ | audio_speech |
fal_ai | fal | header (Authorization: Key …) | fal_ai/ | images |
featherless_ai | openai | bearer | featherless_ai/ | chat, models |
fireworks_ai | openai | bearer | fireworks_ai/ | chat, models |
fireworks_ai_embeddings | openai | bearer | fireworks_ai-embedding-models/ | embeddings |
friendliai | openai | bearer | friendliai/ | chat, models |
gemini | gemini | header (x-goog-api-key) | gemini/ | chat |
github_copilot | openai | bearer | github_copilot/ | chat, models |
gmi | openai | bearer | gmi/ | chat, models |
gradient_ai | openai | bearer | gradient_ai/ | chat, models |
groq | openai | bearer | groq/ | chat, models |
heroku | openai | bearer | heroku/ | chat, models |
hyperbolic | openai | bearer | hyperbolic/ | chat, models |
inception | openai | bearer | inception/ | chat, models |
jina_ai | openai | bearer | jina_ai/ | rerank |
lambda_ai | openai | bearer | lambda_ai/ | chat, models |
lemonade | openai | none | declared free | chat, models |
libertai | openai | bearer | libertai/ | chat, models, embeddings |
llamacpp | openai | none | declared free | chat, models |
lmstudio | openai | none | declared free | chat, models |
local | openai | none | declared free | chat, models |
localai | openai | none | declared free | chat, models |
meta_llama | openai | bearer | meta_llama/ | chat, models |
minimax | openai | bearer | minimax/ | chat, models |
mistral | openai | bearer | mistral/ | chat, models, embeddings |
moonshot | openai | bearer | moonshot/ | chat, models |
morph | openai | bearer | morph/ | chat, models |
nebius | openai | bearer | nebius/ | chat, models, embeddings |
novita | openai | bearer | novita/ | chat, models, embeddings, rerank |
nscale | openai | bearer | nscale/ | chat, models |
nvidia_nim | openai | bearer | nvidia_nim/ | chat, models |
oci | openai | bearer | oci/ | chat |
ollama | openai | none | declared free | chat, models |
openai | openai | bearer | openai/ | chat, responses, embeddings, models, images, audio_speech, audio_transcription, moderations, images_edits, audio_translations, completions |
openai_compatible | openai | bearer | openai_compatible/ | chat, embeddings, models |
openrouter | openai | bearer | openrouter/ | chat, models |
ovhcloud | openai | bearer | ovhcloud/ | chat, models |
perplexity | openai | bearer | perplexity/ | chat, models, embeddings |
publicai | openai | bearer | publicai/ | chat, models |
recraft | openai | bearer | recraft/ | images |
replicate | replicate | bearer | replicate/ | chat |
runwayml | runway | bearer | runwayml/ | images, audio_speech |
sambanova | openai | bearer | sambanova/ | chat, models |
scaleway | openai | bearer | scaleway/ | chat, models, embeddings |
scx_ai | openai | bearer | scx-ai/ | chat, models |
snowflake | openai | snowflake_jwt | snowflake/ | chat |
soniox | soniox | bearer | soniox/ | audio_transcription, files |
stability | stability | bearer | stability/ | images, images_edits |
tencent | openai | bearer | tencent/ | chat, models |
text_completion_openai | openai | bearer | text-completion-openai/ | completions |
tgi | openai | none | declared free | chat, models |
together_ai | openai | bearer | together_ai/ | chat, models, embeddings |
v0 | openai | bearer | v0/ | chat, models |
vercel_ai_gateway | openai | bearer | vercel_ai_gateway/ | chat, models, embeddings |
vertex_ai | gemini | gcp_oauth (aud=https://aiplatform.googleapis.com/) | vertex_ai/ | chat |
vertex_ai_ai21 | openai | gcp_oauth (aud=https://aiplatform.googleapis.com/) | vertex_ai-ai21_models/ | chat |
vertex_ai_anthropic | anthropic_vertex | gcp_oauth (aud=https://aiplatform.googleapis.com/) | vertex_ai-anthropic_models/ | chat |
vertex_ai_deepseek | openai | gcp_oauth (aud=https://aiplatform.googleapis.com/) | vertex_ai-deepseek_models/ | chat |
vertex_ai_embedding | vertex_predict_embed | gcp_oauth (aud=https://aiplatform.googleapis.com/) | vertex_ai-embedding-models/ | embeddings |
vertex_ai_language | gemini | gcp_oauth (aud=https://aiplatform.googleapis.com/) | vertex_ai-language-models/ | chat |
vertex_ai_llama | openai | gcp_oauth (aud=https://aiplatform.googleapis.com/) | vertex_ai-llama_models/ | chat |
vertex_ai_minimax | openai | gcp_oauth (aud=https://aiplatform.googleapis.com/) | vertex_ai-minimax_models/ | chat |
vertex_ai_mistral | openai | gcp_oauth (aud=https://aiplatform.googleapis.com/) | vertex_ai-mistral_models/ | chat |
vertex_ai_moonshot | openai | gcp_oauth (aud=https://aiplatform.googleapis.com/) | vertex_ai-moonshot_models/ | chat |
vertex_ai_openai | openai | gcp_oauth (aud=https://aiplatform.googleapis.com/) | vertex_ai-openai_models/ | chat |
vertex_ai_qwen | openai | gcp_oauth (aud=https://aiplatform.googleapis.com/) | vertex_ai-qwen_models/ | chat |
vertex_ai_zai | openai | gcp_oauth (aud=https://aiplatform.googleapis.com/) | vertex_ai-zai_models/ | chat |
vllm | openai | none | declared free | chat, models |
volcengine | openai | bearer | volcengine/ | chat, models |
voyage | openai | bearer | voyage/ | embeddings, rerank |
wandb | openai | bearer | wandb/ | chat, models |
watsonx | openai | bearer | watsonx/ | chat, models |
xai | openai | bearer | xai/ | chat, models |
zai | openai | bearer | zai/ | chat, models |
Generated provider snapshot: 2026-10-06, source commit d2fd0b3f. Declared endpoints are not a claim of live provider verification.
Reading the shape of that table
78 of the 95 descriptors ride the openai driver. The other 17 use the other
14 dialect ids listed in wire dialects.
61 use bearer authentication, 13 present a Google service-account JWT, 10 set a named header, 8 inject nothing, 2 sign with AWS SigV4 and 1 presents a Snowflake keypair JWT. These sum to 95.
8 are declared-free, which is a pricing assertion rather than a lookup: local plus the seven
named self-hosted servers. Their rows carry an explicit $0 and a descriptor@ provenance stamp.
15 serve no chat: assemblyai, azure_text, black_forest_labs, deepgram, elevenlabs, fal_ai, fireworks_ai_embeddings, jina_ai, recraft, runwayml, soniox, stability, text_completion_openai, vertex_ai_embedding, voyage.
The Google family includes the vertex_ai_embedding descriptor alongside the chat descriptors
described on the Google page.
What this table is not
It is not a model list. Models come from your tiers and your traffic, and the price table is a
separate artefact: the vendored litellm@2026-07-14#179affb file carries 2,889 priced model keys
across 107 prefixes. That is a statistic about a price table, not a claim about what TokenTriage can
reach.
The descriptors above cover 85 of those 107 prefixes, and 22 are uncovered with the blocker behind
each one published on what isn’t covered. Covered is not served:
oci sits inside the 85 and reaches 19 of its 44 priced keys, and the generator prints the 25 it
cannot.
It is also not a capability matrix for features inside an endpoint. Tool calling, vision, structured output and reasoning vary by model rather than by provider, and a descriptor that under-claims them fails closed rather than promising something the model cannot do.