@mastra/core
Version:
1,574 lines (1,572 loc) • 367 kB
JavaScript
import { NetlifyGateway } from './chunk-KBCM2L2S.js';
import { ModelsDevGateway, createOpenRouter } from './chunk-YJB7RPO7.js';
import { MastraModelGateway, createAnthropic, MASTRA_USER_AGENT, GATEWAY_AUTH_HEADER } from './chunk-DRULWNQ6.js';
import { MastraError } from './chunk-M7RBQNFP.js';
import fs from 'fs';
import { createRequire } from 'module';
import os from 'os';
import path from 'path';
// src/llm/model/gateways/gateway-helpers.ts
function getGatewayId(gateway) {
return gateway.getId?.() ?? gateway.id;
}
function shouldEnableGateway(gateway) {
return gateway.shouldEnable?.() ?? true;
}
function findGatewayForModel(gatewayId, gateways) {
const prefixedGateway = gateways.find((g) => {
const id = getGatewayId(g);
return id !== "models.dev" && (id === gatewayId || gatewayId.startsWith(`${id}/`));
});
if (prefixedGateway) {
return prefixedGateway;
}
const claimingGateway = gateways.find((g) => getGatewayId(g) !== "models.dev" && g.handlesModel?.(gatewayId) === true);
if (claimingGateway) {
return claimingGateway;
}
const modelsDevGateway = gateways.find((g) => getGatewayId(g) === "models.dev");
if (modelsDevGateway) {
return modelsDevGateway;
}
throw new MastraError({
id: "MODEL_ROUTER_NO_GATEWAY_FOUND",
category: "USER",
domain: "MODEL_ROUTER",
text: `No Mastra model router gateway found for model id ${gatewayId}`
});
}
// src/llm/model/provider-registry.json
var provider_registry_default = {
providers: {
requesty: {
url: "https://router.requesty.ai/v1",
apiKeyEnvVar: "REQUESTY_API_KEY",
apiKeyHeader: "Authorization",
name: "Requesty",
models: [
"anthropic/claude-3-7-sonnet",
"anthropic/claude-haiku-4-5",
"anthropic/claude-opus-4",
"anthropic/claude-opus-4-1",
"anthropic/claude-opus-4-5",
"anthropic/claude-opus-4-6",
"anthropic/claude-sonnet-4",
"anthropic/claude-sonnet-4-5",
"anthropic/claude-sonnet-4-6",
"google/gemini-2.5-flash",
"google/gemini-2.5-pro",
"google/gemini-3-flash-preview",
"google/gemini-3-pro-preview",
"openai/gpt-4.1",
"openai/gpt-4.1-mini",
"openai/gpt-4o-mini",
"openai/gpt-5",
"openai/gpt-5-chat",
"openai/gpt-5-codex",
"openai/gpt-5-image",
"openai/gpt-5-mini",
"openai/gpt-5-nano",
"openai/gpt-5-pro",
"openai/gpt-5.1",
"openai/gpt-5.1-chat",
"openai/gpt-5.1-codex",
"openai/gpt-5.1-codex-max",
"openai/gpt-5.1-codex-mini",
"openai/gpt-5.2",
"openai/gpt-5.2-chat",
"openai/gpt-5.2-codex",
"openai/gpt-5.2-pro",
"openai/gpt-5.3-codex",
"openai/gpt-5.4",
"openai/gpt-5.4-pro",
"openai/o4-mini",
"xai/grok-4",
"xai/grok-4-fast"
],
docUrl: "https://requesty.ai/solution/llm-routing/models",
gateway: "models.dev"
},
"qiniu-ai": {
url: "https://api.qnaigc.com/v1",
apiKeyEnvVar: "QINIU_API_KEY",
apiKeyHeader: "Authorization",
name: "Qiniu",
models: [
"MiniMax-M1",
"claude-3.5-haiku",
"claude-3.5-sonnet",
"claude-3.7-sonnet",
"claude-4.0-opus",
"claude-4.0-sonnet",
"claude-4.1-opus",
"claude-4.5-haiku",
"claude-4.5-opus",
"claude-4.5-sonnet",
"deepseek-r1",
"deepseek-r1-0528",
"deepseek-v3",
"deepseek-v3-0324",
"deepseek-v3.1",
"deepseek/deepseek-math-v2",
"deepseek/deepseek-v3.1-terminus",
"deepseek/deepseek-v3.1-terminus-thinking",
"deepseek/deepseek-v3.2-251201",
"deepseek/deepseek-v3.2-exp",
"deepseek/deepseek-v3.2-exp-thinking",
"doubao-1.5-pro-32k",
"doubao-1.5-thinking-pro",
"doubao-1.5-vision-pro",
"doubao-seed-1.6",
"doubao-seed-1.6-flash",
"doubao-seed-1.6-thinking",
"doubao-seed-2.0-code",
"doubao-seed-2.0-lite",
"doubao-seed-2.0-mini",
"doubao-seed-2.0-pro",
"gemini-2.0-flash",
"gemini-2.0-flash-lite",
"gemini-2.5-flash",
"gemini-2.5-flash-image",
"gemini-2.5-flash-lite",
"gemini-2.5-pro",
"gemini-3.0-flash-preview",
"gemini-3.0-pro-image-preview",
"gemini-3.0-pro-preview",
"glm-4.5",
"glm-4.5-air",
"gpt-oss-120b",
"gpt-oss-20b",
"kimi-k2",
"kling-v2-6",
"meituan/longcat-flash-chat",
"meituan/longcat-flash-lite",
"mimo-v2-flash",
"minimax/minimax-m2",
"minimax/minimax-m2.1",
"minimax/minimax-m2.5",
"minimax/minimax-m2.5-highspeed",
"moonshotai/kimi-k2-0905",
"moonshotai/kimi-k2-thinking",
"moonshotai/kimi-k2.5",
"openai/gpt-5",
"openai/gpt-5.2",
"qwen-max-2025-01-25",
"qwen-turbo",
"qwen-vl-max-2025-01-25",
"qwen2.5-vl-72b-instruct",
"qwen2.5-vl-7b-instruct",
"qwen3-235b-a22b",
"qwen3-235b-a22b-instruct-2507",
"qwen3-235b-a22b-thinking-2507",
"qwen3-30b-a3b",
"qwen3-30b-a3b-instruct-2507",
"qwen3-30b-a3b-thinking-2507",
"qwen3-32b",
"qwen3-coder-480b-a35b-instruct",
"qwen3-max",
"qwen3-max-preview",
"qwen3-next-80b-a3b-instruct",
"qwen3-next-80b-a3b-thinking",
"qwen3-vl-30b-a3b-thinking",
"qwen3.5-397b-a17b",
"stepfun-ai/gelab-zero-4b-preview",
"stepfun/step-3.5-flash",
"x-ai/grok-4-fast",
"x-ai/grok-4-fast-non-reasoning",
"x-ai/grok-4-fast-reasoning",
"x-ai/grok-4.1-fast",
"x-ai/grok-4.1-fast-non-reasoning",
"x-ai/grok-4.1-fast-reasoning",
"x-ai/grok-code-fast-1",
"xiaomi/mimo-v2-flash",
"z-ai/autoglm-phone-9b",
"z-ai/glm-4.6",
"z-ai/glm-4.7",
"z-ai/glm-5"
],
docUrl: "https://developer.qiniu.com/aitokenapi",
gateway: "models.dev"
},
"alibaba-cn": {
url: "https://dashscope.aliyuncs.com/compatible-mode/v1",
apiKeyEnvVar: "DASHSCOPE_API_KEY",
apiKeyHeader: "Authorization",
name: "Alibaba (China)",
models: [
"MiniMax-M2.5",
"MiniMax/MiniMax-M2.7",
"deepseek-r1",
"deepseek-r1-0528",
"deepseek-r1-distill-llama-70b",
"deepseek-r1-distill-llama-8b",
"deepseek-r1-distill-qwen-1-5b",
"deepseek-r1-distill-qwen-14b",
"deepseek-r1-distill-qwen-32b",
"deepseek-r1-distill-qwen-7b",
"deepseek-v3",
"deepseek-v3-1",
"deepseek-v3-2-exp",
"deepseek-v4-flash",
"deepseek-v4-pro",
"glm-5",
"glm-5.1",
"glm-5.2",
"kimi-k2-thinking",
"kimi-k2.5",
"kimi-k2.6",
"kimi/kimi-k2.5",
"moonshot-kimi-k2-instruct",
"qvq-max",
"qwen-deep-research",
"qwen-doc-turbo",
"qwen-flash",
"qwen-long",
"qwen-math-plus",
"qwen-math-turbo",
"qwen-max",
"qwen-mt-plus",
"qwen-mt-turbo",
"qwen-omni-turbo",
"qwen-omni-turbo-realtime",
"qwen-plus",
"qwen-plus-character",
"qwen-turbo",
"qwen-vl-max",
"qwen-vl-ocr",
"qwen-vl-plus",
"qwen2-5-14b-instruct",
"qwen2-5-32b-instruct",
"qwen2-5-72b-instruct",
"qwen2-5-7b-instruct",
"qwen2-5-coder-32b-instruct",
"qwen2-5-coder-7b-instruct",
"qwen2-5-math-72b-instruct",
"qwen2-5-math-7b-instruct",
"qwen2-5-omni-7b",
"qwen2-5-vl-72b-instruct",
"qwen2-5-vl-7b-instruct",
"qwen3-14b",
"qwen3-235b-a22b",
"qwen3-32b",
"qwen3-8b",
"qwen3-asr-flash",
"qwen3-coder-30b-a3b-instruct",
"qwen3-coder-480b-a35b-instruct",
"qwen3-coder-flash",
"qwen3-coder-plus",
"qwen3-max",
"qwen3-next-80b-a3b-instruct",
"qwen3-next-80b-a3b-thinking",
"qwen3-omni-flash",
"qwen3-omni-flash-realtime",
"qwen3-vl-235b-a22b",
"qwen3-vl-30b-a3b",
"qwen3-vl-plus",
"qwen3.5-397b-a17b",
"qwen3.5-flash",
"qwen3.5-plus",
"qwen3.6-flash",
"qwen3.6-max-preview",
"qwen3.6-plus",
"qwen3.7-max",
"qwen3.7-plus",
"qwq-32b",
"qwq-plus",
"siliconflow/deepseek-r1-0528",
"siliconflow/deepseek-v3-0324",
"siliconflow/deepseek-v3.1-terminus",
"siliconflow/deepseek-v3.2",
"tongyi-intent-detect-v3"
],
docUrl: "https://www.alibabacloud.com/help/en/model-studio/models",
gateway: "models.dev"
},
"regolo-ai": {
url: "https://api.regolo.ai/v1",
apiKeyEnvVar: "REGOLO_API_KEY",
apiKeyHeader: "Authorization",
name: "Regolo AI",
models: [
"gpt-oss-120b",
"gpt-oss-20b",
"llama-3.1-8b-instruct",
"llama-3.3-70b-instruct",
"minimax-m2.5",
"mistral-small-4-119b",
"mistral-small3.2",
"qwen-image",
"qwen3-coder-next",
"qwen3-embedding-8b",
"qwen3-reranker-4b",
"qwen3.5-122b",
"qwen3.5-9b"
],
docUrl: "https://docs.regolo.ai/",
gateway: "models.dev"
},
stackit: {
url: "https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1",
apiKeyEnvVar: "STACKIT_API_KEY",
apiKeyHeader: "Authorization",
name: "STACKIT",
models: [
"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8",
"Qwen/Qwen3-VL-Embedding-8B",
"Qwen/Qwen3.6-27B",
"cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic",
"google/gemma-3-27b-it",
"intfloat/e5-mistral-7b-instruct",
"openai/gpt-oss-120b",
"openai/gpt-oss-20b"
],
docUrl: "https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models",
gateway: "models.dev"
},
vercel: {
apiKeyEnvVar: "AI_GATEWAY_API_KEY",
name: "Vercel AI Gateway",
models: [
"alibaba/qwen-3-14b",
"alibaba/qwen-3-235b",
"alibaba/qwen-3-30b",
"alibaba/qwen-3-32b",
"alibaba/qwen-3.6-max-preview",
"alibaba/qwen3-235b-a22b-thinking",
"alibaba/qwen3-coder",
"alibaba/qwen3-coder-30b-a3b",
"alibaba/qwen3-coder-next",
"alibaba/qwen3-coder-plus",
"alibaba/qwen3-embedding-0.6b",
"alibaba/qwen3-embedding-4b",
"alibaba/qwen3-embedding-8b",
"alibaba/qwen3-max",
"alibaba/qwen3-max-preview",
"alibaba/qwen3-max-thinking",
"alibaba/qwen3-next-80b-a3b-instruct",
"alibaba/qwen3-next-80b-a3b-thinking",
"alibaba/qwen3-vl-235b-a22b-instruct",
"alibaba/qwen3-vl-instruct",
"alibaba/qwen3-vl-thinking",
"alibaba/qwen3.5-flash",
"alibaba/qwen3.5-plus",
"alibaba/qwen3.6-27b",
"alibaba/qwen3.6-plus",
"alibaba/qwen3.7-max",
"alibaba/qwen3.7-plus",
"alibaba/wan-v2.5-t2v-preview",
"alibaba/wan-v2.6-i2v",
"alibaba/wan-v2.6-i2v-flash",
"alibaba/wan-v2.6-r2v",
"alibaba/wan-v2.6-r2v-flash",
"alibaba/wan-v2.6-t2v",
"alibaba/wan-v2.7-r2v",
"alibaba/wan-v2.7-t2v",
"amazon/nova-2-lite",
"amazon/nova-lite",
"amazon/nova-micro",
"amazon/nova-pro",
"amazon/titan-embed-text-v2",
"anthropic/claude-3-haiku",
"anthropic/claude-3.5-haiku",
"anthropic/claude-fable-5",
"anthropic/claude-haiku-4.5",
"anthropic/claude-opus-4",
"anthropic/claude-opus-4.5",
"anthropic/claude-opus-4.6",
"anthropic/claude-opus-4.7",
"anthropic/claude-opus-4.8",
"anthropic/claude-sonnet-4",
"anthropic/claude-sonnet-4.5",
"anthropic/claude-sonnet-4.6",
"anthropic/claude-sonnet-5",
"arcee-ai/trinity-large-preview",
"arcee-ai/trinity-large-thinking",
"arcee-ai/trinity-mini",
"bfl/flux-2-flex",
"bfl/flux-2-klein-4b",
"bfl/flux-2-klein-9b",
"bfl/flux-2-max",
"bfl/flux-2-pro",
"bfl/flux-kontext-max",
"bfl/flux-kontext-pro",
"bfl/flux-pro-1.0-fill",
"bfl/flux-pro-1.1",
"bfl/flux-pro-1.1-ultra",
"bytedance/seed-1.6",
"bytedance/seed-1.8",
"bytedance/seedance-2.0",
"bytedance/seedance-2.0-fast",
"bytedance/seedance-v1.0-pro",
"bytedance/seedance-v1.0-pro-fast",
"bytedance/seedance-v1.5-pro",
"bytedance/seedream-4.0",
"bytedance/seedream-4.5",
"bytedance/seedream-5.0-lite",
"cohere/command-a",
"cohere/embed-v4.0",
"cohere/rerank-v3.5",
"cohere/rerank-v4-fast",
"cohere/rerank-v4-pro",
"deepseek/deepseek-r1",
"deepseek/deepseek-v3",
"deepseek/deepseek-v3.1",
"deepseek/deepseek-v3.1-terminus",
"deepseek/deepseek-v3.2",
"deepseek/deepseek-v3.2-thinking",
"deepseek/deepseek-v4-flash",
"deepseek/deepseek-v4-pro",
"google/gemini-2.5-flash",
"google/gemini-2.5-flash-image",
"google/gemini-2.5-flash-lite",
"google/gemini-2.5-pro",
"google/gemini-3-flash",
"google/gemini-3-pro-image",
"google/gemini-3-pro-preview",
"google/gemini-3.1-flash-image",
"google/gemini-3.1-flash-image-preview",
"google/gemini-3.1-flash-lite",
"google/gemini-3.1-flash-lite-image",
"google/gemini-3.1-flash-lite-preview",
"google/gemini-3.1-pro-preview",
"google/gemini-3.5-flash",
"google/gemini-embedding-001",
"google/gemini-embedding-2",
"google/gemma-4-26b-a4b-it",
"google/gemma-4-31b-it",
"google/imagen-4.0-fast-generate-001",
"google/imagen-4.0-generate-001",
"google/imagen-4.0-ultra-generate-001",
"google/text-embedding-005",
"google/text-multilingual-embedding-002",
"google/veo-3.0-fast-generate-001",
"google/veo-3.0-generate-001",
"google/veo-3.1-fast-generate-001",
"google/veo-3.1-generate-001",
"inception/mercury-2",
"inception/mercury-coder-small",
"interfaze/interfaze-beta",
"klingai/kling-v2.5-turbo-i2v",
"klingai/kling-v2.5-turbo-t2v",
"klingai/kling-v2.6-i2v",
"klingai/kling-v2.6-motion-control",
"klingai/kling-v2.6-t2v",
"klingai/kling-v3.0-i2v",
"klingai/kling-v3.0-motion-control",
"klingai/kling-v3.0-t2v",
"kwaipilot/kat-coder-pro-v1",
"kwaipilot/kat-coder-pro-v2",
"meituan/longcat-flash-chat",
"meituan/longcat-flash-thinking-2601",
"meta/llama-3.1-70b",
"meta/llama-3.1-8b",
"meta/llama-3.2-11b",
"meta/llama-3.2-1b",
"meta/llama-3.2-3b",
"meta/llama-3.2-90b",
"meta/llama-3.3-70b",
"meta/llama-4-maverick",
"meta/llama-4-scout",
"minimax/minimax-m2",
"minimax/minimax-m2.1",
"minimax/minimax-m2.1-lightning",
"minimax/minimax-m2.5",
"minimax/minimax-m2.5-highspeed",
"minimax/minimax-m2.7",
"minimax/minimax-m2.7-highspeed",
"minimax/minimax-m3",
"mistral/codestral",
"mistral/codestral-embed",
"mistral/devstral-2",
"mistral/devstral-small",
"mistral/devstral-small-2",
"mistral/magistral-medium",
"mistral/magistral-small",
"mistral/ministral-14b",
"mistral/ministral-3b",
"mistral/ministral-8b",
"mistral/mistral-embed",
"mistral/mistral-large-3",
"mistral/mistral-medium",
"mistral/mistral-medium-3.5",
"mistral/mistral-nemo",
"mistral/mistral-small",
"mistral/pixtral-12b",
"mistral/pixtral-large",
"moonshotai/kimi-k2",
"moonshotai/kimi-k2-thinking",
"moonshotai/kimi-k2.5",
"moonshotai/kimi-k2.6",
"moonshotai/kimi-k2.7-code",
"moonshotai/kimi-k2.7-code-highspeed",
"morph/morph-v3-fast",
"morph/morph-v3-large",
"nvidia/nemotron-3-nano-30b-a3b",
"nvidia/nemotron-3-super-120b-a12b",
"nvidia/nemotron-3-ultra-550b-a55b",
"nvidia/nemotron-nano-12b-v2-vl",
"nvidia/nemotron-nano-9b-v2",
"openai/gpt-3.5-turbo",
"openai/gpt-3.5-turbo-instruct",
"openai/gpt-4-turbo",
"openai/gpt-4.1",
"openai/gpt-4.1-mini",
"openai/gpt-4.1-nano",
"openai/gpt-4o",
"openai/gpt-4o-mini",
"openai/gpt-4o-mini-search-preview",
"openai/gpt-4o-mini-transcribe",
"openai/gpt-4o-transcribe",
"openai/gpt-5",
"openai/gpt-5-chat",
"openai/gpt-5-codex",
"openai/gpt-5-mini",
"openai/gpt-5-nano",
"openai/gpt-5-pro",
"openai/gpt-5.1-codex",
"openai/gpt-5.1-codex-max",
"openai/gpt-5.1-codex-mini",
"openai/gpt-5.1-instant",
"openai/gpt-5.1-thinking",
"openai/gpt-5.2",
"openai/gpt-5.2-chat",
"openai/gpt-5.2-codex",
"openai/gpt-5.2-pro",
"openai/gpt-5.3-chat",
"openai/gpt-5.3-codex",
"openai/gpt-5.4",
"openai/gpt-5.4-mini",
"openai/gpt-5.4-nano",
"openai/gpt-5.4-pro",
"openai/gpt-5.5",
"openai/gpt-5.5-pro",
"openai/gpt-image-1",
"openai/gpt-image-1-mini",
"openai/gpt-image-1.5",
"openai/gpt-image-2",
"openai/gpt-oss-120b",
"openai/gpt-oss-20b",
"openai/gpt-oss-safeguard-20b",
"openai/gpt-realtime-1.5",
"openai/gpt-realtime-2",
"openai/gpt-realtime-mini",
"openai/o1",
"openai/o3",
"openai/o3-deep-research",
"openai/o3-mini",
"openai/o3-pro",
"openai/o4-mini",
"openai/text-embedding-3-large",
"openai/text-embedding-3-small",
"openai/text-embedding-ada-002",
"openai/tts-1",
"openai/tts-1-hd",
"openai/whisper-1",
"perplexity/sonar",
"perplexity/sonar-pro",
"perplexity/sonar-reasoning-pro",
"prodia/flux-fast-schnell",
"quiverai/arrow-1.1",
"recraft/recraft-v2",
"recraft/recraft-v3",
"recraft/recraft-v4",
"recraft/recraft-v4-pro",
"recraft/recraft-v4.1",
"recraft/recraft-v4.1-pro",
"recraft/recraft-v4.1-utility",
"recraft/recraft-v4.1-utility-pro",
"sakana/fugu-ultra",
"stepfun/step-3.5-flash",
"stepfun/step-3.7-flash",
"voyage/rerank-2.5",
"voyage/rerank-2.5-lite",
"voyage/voyage-3-large",
"voyage/voyage-3.5",
"voyage/voyage-3.5-lite",
"voyage/voyage-4",
"voyage/voyage-4-large",
"voyage/voyage-4-lite",
"voyage/voyage-code-2",
"voyage/voyage-code-3",
"voyage/voyage-finance-2",
"voyage/voyage-law-2",
"xai/grok-4.1-fast-non-reasoning",
"xai/grok-4.1-fast-reasoning",
"xai/grok-4.20-multi-agent",
"xai/grok-4.20-multi-agent-beta",
"xai/grok-4.20-non-reasoning",
"xai/grok-4.20-non-reasoning-beta",
"xai/grok-4.20-reasoning",
"xai/grok-4.20-reasoning-beta",
"xai/grok-4.3",
"xai/grok-build-0.1",
"xai/grok-imagine-image",
"xai/grok-imagine-video",
"xai/grok-imagine-video-1.5",
"xai/grok-imagine-video-1.5-preview",
"xai/grok-stt",
"xai/grok-tts",
"xai/grok-voice-think-fast-1.0",
"xiaomi/mimo-v2-flash",
"xiaomi/mimo-v2-pro",
"xiaomi/mimo-v2.5",
"xiaomi/mimo-v2.5-pro",
"zai/glm-4.5",
"zai/glm-4.5-air",
"zai/glm-4.5v",
"zai/glm-4.6",
"zai/glm-4.6v",
"zai/glm-4.6v-flash",
"zai/glm-4.7",
"zai/glm-4.7-flash",
"zai/glm-4.7-flashx",
"zai/glm-5",
"zai/glm-5-turbo",
"zai/glm-5.1",
"zai/glm-5.2",
"zai/glm-5.2-fast",
"zai/glm-5v-turbo"
],
docUrl: "https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway",
gateway: "models.dev"
},
submodel: {
url: "https://llm.submodel.ai/v1",
apiKeyEnvVar: "SUBMODEL_INSTAGEN_ACCESS_KEY",
apiKeyHeader: "Authorization",
name: "submodel",
models: [
"Qwen/Qwen3-235B-A22B-Instruct-2507",
"Qwen/Qwen3-235B-A22B-Thinking-2507",
"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8",
"deepseek-ai/DeepSeek-R1-0528",
"deepseek-ai/DeepSeek-V3-0324",
"deepseek-ai/DeepSeek-V3.1",
"openai/gpt-oss-120b",
"zai-org/GLM-4.5-Air",
"zai-org/GLM-4.5-FP8"
],
docUrl: "https://submodel.gitbook.io",
gateway: "models.dev"
},
huggingface: {
url: "https://router.huggingface.co/v1",
apiKeyEnvVar: "HF_TOKEN",
apiKeyHeader: "Authorization",
name: "Hugging Face",
models: [
"MiniMaxAI/MiniMax-M2",
"MiniMaxAI/MiniMax-M2.1",
"MiniMaxAI/MiniMax-M2.5",
"MiniMaxAI/MiniMax-M2.7",
"MiniMaxAI/MiniMax-M3",
"Qwen/Qwen3-235B-A22B",
"Qwen/Qwen3-235B-A22B-Thinking-2507",
"Qwen/Qwen3-32B",
"Qwen/Qwen3-Coder-30B-A3B-Instruct",
"Qwen/Qwen3-Coder-480B-A35B-Instruct",
"Qwen/Qwen3-Coder-Next",
"Qwen/Qwen3-Embedding-4B",
"Qwen/Qwen3-Embedding-8B",
"Qwen/Qwen3-Next-80B-A3B-Instruct",
"Qwen/Qwen3-Next-80B-A3B-Thinking",
"Qwen/Qwen3.5-122B-A10B",
"Qwen/Qwen3.5-27B",
"Qwen/Qwen3.5-35B-A3B",
"Qwen/Qwen3.5-397B-A17B",
"Qwen/Qwen3.5-9B",
"Qwen/Qwen3.6-27B",
"Qwen/Qwen3.6-35B-A3B",
"XiaomiMiMo/MiMo-V2-Flash",
"XiaomiMiMo/MiMo-V2.5-Pro",
"deepseek-ai/DeepSeek-R1",
"deepseek-ai/DeepSeek-R1-0528",
"deepseek-ai/DeepSeek-V3.2",
"deepseek-ai/DeepSeek-V4-Flash",
"deepseek-ai/DeepSeek-V4-Pro",
"google/gemma-4-26B-A4B-it",
"google/gemma-4-31B-it",
"meta-llama/Llama-3.3-70B-Instruct",
"moonshotai/Kimi-K2-Instruct",
"moonshotai/Kimi-K2-Instruct-0905",
"moonshotai/Kimi-K2-Thinking",
"moonshotai/Kimi-K2.5",
"moonshotai/Kimi-K2.6",
"moonshotai/Kimi-K2.7-Code",
"openai/gpt-oss-120b",
"openai/gpt-oss-20b",
"stepfun-ai/Step-3.5-Flash",
"stepfun-ai/Step-3.7-Flash",
"zai-org/GLM-4.5",
"zai-org/GLM-4.5-Air",
"zai-org/GLM-4.5V",
"zai-org/GLM-4.6",
"zai-org/GLM-4.7",
"zai-org/GLM-4.7-Flash",
"zai-org/GLM-5",
"zai-org/GLM-5.1",
"zai-org/GLM-5.2"
],
docUrl: "https://huggingface.co/docs/inference-providers",
gateway: "models.dev"
},
"minimax-coding-plan": {
url: "https://api.minimax.io/anthropic/v1",
apiKeyEnvVar: "MINIMAX_API_KEY",
apiKeyHeader: "Authorization",
name: "MiniMax Token Plan (minimax.io)",
models: [
"MiniMax-M2",
"MiniMax-M2.1",
"MiniMax-M2.5",
"MiniMax-M2.5-highspeed",
"MiniMax-M2.7",
"MiniMax-M2.7-highspeed",
"MiniMax-M3"
],
docUrl: "https://platform.minimax.io/docs/token-plan/intro",
gateway: "models.dev",
npm: "@ai-sdk/anthropic"
},
"novita-ai": {
url: "https://api.novita.ai/openai",
apiKeyEnvVar: "NOVITA_API_KEY",
apiKeyHeader: "Authorization",
name: "NovitaAI",
models: [
"baichuan/baichuan-m2-32b",
"baidu/ernie-4.5-21B-a3b",
"baidu/ernie-4.5-21B-a3b-thinking",
"baidu/ernie-4.5-300b-a47b-paddle",
"baidu/ernie-4.5-vl-28b-a3b",
"baidu/ernie-4.5-vl-28b-a3b-thinking",
"baidu/ernie-4.5-vl-424b-a47b",
"deepseek/deepseek-ocr",
"deepseek/deepseek-ocr-2",
"deepseek/deepseek-prover-v2-671b",
"deepseek/deepseek-r1-0528",
"deepseek/deepseek-r1-0528-qwen3-8b",
"deepseek/deepseek-r1-distill-llama-70b",
"deepseek/deepseek-r1-distill-qwen-14b",
"deepseek/deepseek-r1-distill-qwen-32b",
"deepseek/deepseek-r1-turbo",
"deepseek/deepseek-v3-0324",
"deepseek/deepseek-v3-turbo",
"deepseek/deepseek-v3.1",
"deepseek/deepseek-v3.1-terminus",
"deepseek/deepseek-v3.2",
"deepseek/deepseek-v3.2-exp",
"deepseek/deepseek-v4-flash",
"deepseek/deepseek-v4-pro",
"google/gemma-3-12b-it",
"google/gemma-3-27b-it",
"google/gemma-4-26b-a4b-it",
"google/gemma-4-31b-it",
"gryphe/mythomax-l2-13b",
"inclusionai/ling-2.6-1t",
"inclusionai/ling-2.6-flash",
"inclusionai/ring-2.6-1t",
"kwaipilot/kat-coder-pro",
"meta-llama/llama-3-70b-instruct",
"meta-llama/llama-3-8b-instruct",
"meta-llama/llama-3.1-8b-instruct",
"meta-llama/llama-3.2-3b-instruct",
"meta-llama/llama-3.3-70b-instruct",
"meta-llama/llama-4-maverick-17b-128e-instruct-fp8",
"meta-llama/llama-4-scout-17b-16e-instruct",
"microsoft/wizardlm-2-8x22b",
"minimax/minimax-m2",
"minimax/minimax-m2.1",
"minimax/minimax-m2.5",
"minimax/minimax-m2.5-highspeed",
"minimax/minimax-m2.7",
"minimax/minimax-m2.7-highspeed",
"minimaxai/minimax-m1-80k",
"mistralai/mistral-nemo",
"moonshotai/kimi-k2-0905",
"moonshotai/kimi-k2-instruct",
"moonshotai/kimi-k2-thinking",
"moonshotai/kimi-k2.5",
"moonshotai/kimi-k2.6",
"nousresearch/hermes-2-pro-llama-3-8b",
"openai/gpt-oss-120b",
"openai/gpt-oss-20b",
"paddlepaddle/paddleocr-vl",
"qwen/qwen-2.5-72b-instruct",
"qwen/qwen-mt-plus",
"qwen/qwen2.5-7b-instruct",
"qwen/qwen2.5-vl-72b-instruct",
"qwen/qwen3-235b-a22b-fp8",
"qwen/qwen3-235b-a22b-instruct-2507",
"qwen/qwen3-235b-a22b-thinking-2507",
"qwen/qwen3-30b-a3b-fp8",
"qwen/qwen3-32b-fp8",
"qwen/qwen3-4b-fp8",
"qwen/qwen3-8b-fp8",
"qwen/qwen3-coder-30b-a3b-instruct",
"qwen/qwen3-coder-480b-a35b-instruct",
"qwen/qwen3-coder-next",
"qwen/qwen3-max",
"qwen/qwen3-next-80b-a3b-instruct",
"qwen/qwen3-next-80b-a3b-thinking",
"qwen/qwen3-omni-30b-a3b-instruct",
"qwen/qwen3-omni-30b-a3b-thinking",
"qwen/qwen3-vl-235b-a22b-instruct",
"qwen/qwen3-vl-235b-a22b-thinking",
"qwen/qwen3-vl-30b-a3b-instruct",
"qwen/qwen3-vl-30b-a3b-thinking",
"qwen/qwen3-vl-8b-instruct",
"qwen/qwen3.5-122b-a10b",
"qwen/qwen3.5-27b",
"qwen/qwen3.5-35b-a3b",
"qwen/qwen3.5-397b-a17b",
"qwen/qwen3.7-max",
"sao10K/L3-8B-stheno-v3.2",
"sao10K/l3-70b-euryale-v2.1",
"sao10K/l3-8b-lunaris",
"sao10K/l31-70b-euryale-v2.2",
"xiaomimimo/mimo-v2-flash",
"xiaomimimo/mimo-v2-pro",
"xiaomimimo/mimo-v2.5-pro",
"zai-org/autoglm-phone-9b-multilingual",
"zai-org/glm-4.5",
"zai-org/glm-4.5-air",
"zai-org/glm-4.5v",
"zai-org/glm-4.6",
"zai-org/glm-4.6v",
"zai-org/glm-4.7",
"zai-org/glm-4.7-flash",
"zai-org/glm-5",
"zai-org/glm-5.1",
"zai-org/glm-5.2"
],
docUrl: "https://novita.ai/docs/guides/introduction",
gateway: "models.dev"
},
xai: {
apiKeyEnvVar: "XAI_API_KEY",
name: "xAI",
models: [
"grok-4.20-0309-non-reasoning",
"grok-4.20-0309-reasoning",
"grok-4.20-multi-agent-0309",
"grok-4.3",
"grok-build-0.1",
"grok-imagine-image",
"grok-imagine-image-quality",
"grok-imagine-video"
],
docUrl: "https://docs.x.ai/docs/models",
gateway: "models.dev",
npm: "@ai-sdk/xai"
},
"privatemode-ai": {
url: "http://localhost:8080/v1",
apiKeyEnvVar: "PRIVATEMODE_API_KEY",
apiKeyHeader: "Authorization",
name: "Privatemode AI",
models: ["gemma-3-27b", "gpt-oss-120b", "qwen3-coder-30b-a3b", "qwen3-embedding-4b", "whisper-large-v3"],
docUrl: "https://docs.privatemode.ai/api/overview",
gateway: "models.dev"
},
drun: {
url: "https://chat.d.run/v1",
apiKeyEnvVar: "DRUN_API_KEY",
apiKeyHeader: "Authorization",
name: "D.Run (China)",
models: ["public/deepseek-r1", "public/deepseek-v3", "public/minimax-m25"],
docUrl: "https://www.d.run",
gateway: "models.dev"
},
"alibaba-token-plan-cn": {
url: "https://token-plan.cn-beijing.maas.aliyuncs.com/compatible-mode/v1",
apiKeyEnvVar: "ALIBABA_TOKEN_PLAN_API_KEY",
apiKeyHeader: "Authorization",
name: "Alibaba Token Plan (China)",
models: [
"MiniMax-M2.5",
"deepseek-v3.2",
"deepseek-v4-flash",
"deepseek-v4-pro",
"glm-5",
"glm-5.1",
"glm-5.2",
"kimi-k2.5",
"kimi-k2.6",
"kimi-k2.7-code",
"qwen-image-2.0",
"qwen-image-2.0-pro",
"qwen3.6-flash",
"qwen3.6-plus",
"qwen3.7-max",
"qwen3.7-plus",
"wan2.7-image",
"wan2.7-image-pro"
],
docUrl: "https://www.alibabacloud.com/help/zh/model-studio/token-plan-overview",
gateway: "models.dev"
},
moonshotai: {
url: "https://api.moonshot.ai/anthropic/v1",
apiKeyEnvVar: "MOONSHOT_API_KEY",
apiKeyHeader: "Authorization",
name: "Moonshot AI",
models: [
"kimi-k2-0711-preview",
"kimi-k2-0905-preview",
"kimi-k2-thinking",
"kimi-k2-thinking-turbo",
"kimi-k2-turbo-preview",
"kimi-k2.5",
"kimi-k2.6",
"kimi-k2.7-code",
"kimi-k2.7-code-highspeed"
],
docUrl: "https://platform.moonshot.ai/docs/api/chat",
gateway: "models.dev",
npm: "@ai-sdk/anthropic"
},
"fireworks-ai": {
url: "https://api.fireworks.ai/inference/v1/",
apiKeyEnvVar: "FIREWORKS_API_KEY",
apiKeyHeader: "Authorization",
name: "Fireworks AI",
models: [
"accounts/fireworks/models/deepseek-v4-flash",
"accounts/fireworks/models/deepseek-v4-pro",
"accounts/fireworks/models/glm-5p1",
"accounts/fireworks/models/glm-5p2",
"accounts/fireworks/models/gpt-oss-120b",
"accounts/fireworks/models/gpt-oss-20b",
"accounts/fireworks/models/kimi-k2p6",
"accounts/fireworks/models/kimi-k2p7-code",
"accounts/fireworks/models/minimax-m2p7",
"accounts/fireworks/models/minimax-m3",
"accounts/fireworks/models/qwen3p7-plus",
"accounts/fireworks/routers/glm-5p1-fast",
"accounts/fireworks/routers/glm-5p2-fast",
"accounts/fireworks/routers/kimi-k2p6-fast",
"accounts/fireworks/routers/kimi-k2p6-turbo",
"accounts/fireworks/routers/kimi-k2p7-code-fast"
],
docUrl: "https://fireworks.ai/docs/",
gateway: "models.dev"
},
vultr: {
url: "https://api.vultrinference.com/v1",
apiKeyEnvVar: "VULTR_API_KEY",
apiKeyHeader: "Authorization",
name: "Vultr",
models: [
"MiniMaxAI/MiniMax-M2.7",
"Qwen/Qwen3.5-397B-A17B",
"Qwen/Qwen3.6-27B",
"XiaomiMiMo/MiMo-V2.5-Pro",
"deepseek-ai/DeepSeek-V4-Flash",
"moonshotai/Kimi-K2.6",
"nvidia/DeepSeek-V3.2-NVFP4",
"nvidia/Nemotron-3-Nano-Omni-30B-A3B-Reasoning-BF16",
"nvidia/Nemotron-Cascade-2-30B-A3B",
"zai-org/GLM-5.2-FP8"
],
docUrl: "https://api.vultrinference.com/",
gateway: "models.dev"
},
"302ai": {
url: "https://api.302.ai/v1",
apiKeyEnvVar: "302AI_API_KEY",
apiKeyHeader: "Authorization",
name: "302.AI",
models: [
"MiniMax-M1",
"MiniMax-M2",
"MiniMax-M2.1",
"MiniMax-M2.7",
"MiniMax-M2.7-highspeed",
"chatgpt-4o-latest",
"claude-3-5-haiku-20241022",
"claude-3-5-haiku-latest",
"claude-haiku-4-5",
"claude-haiku-4-5-20251001",
"claude-opus-4-1-20250805",
"claude-opus-4-1-20250805-thinking",
"claude-opus-4-20250514",
"claude-opus-4-5",
"claude-opus-4-5-20251101",
"claude-opus-4-5-20251101-thinking",
"claude-opus-4-6",
"claude-opus-4-6-thinking",
"claude-opus-4-7",
"claude-sonnet-4-20250514",
"claude-sonnet-4-5",
"claude-sonnet-4-5-20250929",
"claude-sonnet-4-5-20250929-thinking",
"claude-sonnet-4-6",
"claude-sonnet-4-6-thinking",
"deepseek-chat",
"deepseek-reasoner",
"deepseek-v3.2",
"deepseek-v3.2-thinking",
"doubao-seed-1-6-thinking-250715",
"doubao-seed-1-6-vision-250815",
"doubao-seed-1-8-251215",
"doubao-seed-code-preview-251028",
"gemini-2.0-flash-lite",
"gemini-2.5-flash",
"gemini-2.5-flash-image",
"gemini-2.5-flash-lite-preview-09-2025",
"gemini-2.5-flash-nothink",
"gemini-2.5-flash-preview-09-2025",
"gemini-2.5-pro",
"gemini-3-flash-preview",
"gemini-3-pro-image-preview",
"gemini-3-pro-preview",
"gemini-3.1-flash-image-preview",
"glm-4.5",
"glm-4.5-air",
"glm-4.5-airx",
"glm-4.5-x",
"glm-4.5v",
"glm-4.6",
"glm-4.6v",
"glm-4.7",
"glm-4.7-flashx",
"glm-5",
"glm-5-turbo",
"glm-5.1",
"glm-5v-turbo",
"glm-for-coding",
"gpt-4.1",
"gpt-4.1-mini",
"gpt-4.1-nano",
"gpt-4o",
"gpt-5",
"gpt-5-mini",
"gpt-5-pro",
"gpt-5-thinking",
"gpt-5.1",
"gpt-5.1-chat-latest",
"gpt-5.2",
"gpt-5.2-chat-latest",
"gpt-5.4",
"gpt-5.4-mini",
"gpt-5.4-mini-2026-03-17",
"gpt-5.4-nano",
"gpt-5.4-nano-2026-03-17",
"gpt-5.4-pro",
"grok-4-1-fast-non-reasoning",
"grok-4-1-fast-reasoning",
"grok-4-fast-non-reasoning",
"grok-4-fast-reasoning",
"grok-4.1",
"grok-4.20-beta-0309-non-reasoning",
"grok-4.20-beta-0309-reasoning",
"grok-4.20-multi-agent-beta-0309",
"kimi-k2-0905-preview",
"kimi-k2-thinking",
"kimi-k2-thinking-turbo",
"ministral-14b-2512",
"mistral-large-2512",
"qwen-flash",
"qwen-max-latest",
"qwen-plus",
"qwen3-235b-a22b",
"qwen3-235b-a22b-instruct-2507",
"qwen3-30b-a3b",
"qwen3-coder-480b-a35b-instruct",
"qwen3-max-2025-09-23"
],
docUrl: "https://doc.302.ai",
gateway: "models.dev"
},
trustedrouter: {
url: "https://api.trustedrouter.com/v1",
apiKeyEnvVar: "TRUSTEDROUTER_API_KEY",
apiKeyHeader: "Authorization",
name: "TrustedRouter",
models: ["auto", "cheap", "e2e", "fast", "synth", "synth-code", "zdr"],
docUrl: "https://trustedrouter.com/docs",
gateway: "models.dev"
},
zhipuai: {
url: "https://open.bigmodel.cn/api/paas/v4",
apiKeyEnvVar: "ZHIPU_API_KEY",
apiKeyHeader: "Authorization",
name: "Zhipu AI",
models: [
"glm-4.5",
"glm-4.5-air",
"glm-4.5-flash",
"glm-4.5v",
"glm-4.6",
"glm-4.6v",
"glm-4.7",
"glm-4.7-flash",
"glm-4.7-flashx",
"glm-5",
"glm-5.1",
"glm-5.2",
"glm-5v-turbo"
],
docUrl: "https://docs.z.ai/guides/overview/pricing",
gateway: "models.dev"
},
cortecs: {
url: "https://api.cortecs.ai/v1",
apiKeyEnvVar: "CORTECS_API_KEY",
apiKeyHeader: "Authorization",
name: "Cortecs",
models: [
"claude-4-5-sonnet",
"claude-4-6-sonnet",
"claude-haiku-4-5",
"claude-opus4-5",
"claude-opus4-6",
"claude-opus4-7",
"claude-opus4-8",
"claude-sonnet-4",
"codestral-2508",
"deepseek-r1-0528",
"deepseek-v3-0324",
"deepseek-v3.2",
"deepseek-v4-flash",
"deepseek-v4-pro",
"devstral-2512",
"gemini-2.5-pro",
"glm-4.5",
"glm-4.5-air",
"glm-4.7",
"glm-4.7-flash",
"glm-5",
"glm-5-turbo",
"glm-5.1",
"glm-5.2",
"glm-5v-turbo",
"gpt-4.1",
"gpt-5.4",
"gpt-oss-120b",
"hermes-4-70b",
"intellect-3",
"kimi-k2-instruct",
"kimi-k2-thinking",
"kimi-k2.5",
"kimi-k2.6",
"kimi-k2.7-code",
"llama-3.1-405b-instruct",
"llama-3.3-70b-instruct",
"llama-4-maverick",
"minimax-m2",
"minimax-m2.1",
"minimax-m2.5",
"minimax-m2.7",
"minimax-m3",
"mistral-large-2512",
"mixtral-8x7B-instruct-v0.1",
"nemotron-3-super-120b-a12b",
"nova-pro-v1",
"qwen-2.5-72b-instruct",
"qwen3-235b-a22b-instruct-2507",
"qwen3-32b",
"qwen3-coder-30b-a3b-instruct",
"qwen3-coder-480b-a35b-instruct",
"qwen3-coder-next",
"qwen3-next-80b-a3b-thinking",
"qwen3.5-122b-a10b",
"qwen3.5-397b-a17b"
],
docUrl: "https://api.cortecs.ai/v1/models",
gateway: "models.dev"
},
nebius: {
url: "https://api.tokenfactory.nebius.com/v1",
apiKeyEnvVar: "NEBIUS_API_KEY",
apiKeyHeader: "Authorization",
name: "Nebius Token Factory",
models: [
"MiniMaxAI/MiniMax-M2.5",
"NousResearch/Hermes-4-405B",
"NousResearch/Hermes-4-70B",
"Qwen/Qwen2.5-VL-72B-Instruct",
"Qwen/Qwen3-235B-A22B-Instruct-2507",
"Qwen/Qwen3-30B-A3B-Instruct-2507",
"Qwen/Qwen3-32B",
"Qwen/Qwen3-Embedding-8B",
"Qwen/Qwen3-Next-80B-A3B-Thinking",
"Qwen/Qwen3.5-397B-A17B",
"deepseek-ai/DeepSeek-V4-Pro",
"google/gemma-3-27b-it",
"meta-llama/Llama-3.3-70B-Instruct",
"nvidia/Llama-3_1-Nemotron-Ultra-253B-v1",
"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B",
"nvidia/Nemotron-3-Nano-Omni",
"nvidia/nemotron-3-super-120b-a12b",
"openai/gpt-oss-120b",
"zai-org/GLM-5.2"
],
docUrl: "https://docs.tokenfactory.nebius.com/",
gateway: "models.dev"
},
auriko: {
url: "https://api.auriko.ai/v1",
apiKeyEnvVar: "AURIKO_API_KEY",
apiKeyHeader: "Authorization",
name: "Auriko",
models: [
"claude-opus-4-6",
"claude-opus-4-7",
"claude-sonnet-4-6",
"deepseek-v4-flash",
"deepseek-v4-pro",
"gemini-2.5-flash",
"gemini-2.5-pro",
"gemini-3.1-pro-preview",
"glm-5.1",
"grok-4.3",
"kimi-k2.5",
"kimi-k2.6",
"minimax-m2-7",
"minimax-m2-7-highspeed",
"qwen-3.6-plus"
],
docUrl: "https://docs.auriko.ai",
gateway: "models.dev"
},
"stepfun-ai": {
url: "https://api.stepfun.ai/step_plan/v1",
apiKeyEnvVar: "STEPFUN_API_KEY",
apiKeyHeader: "Authorization",
name: "StepFun AI",
models: [
"step-1-32k",
"step-2-16k",
"step-3.5-flash",
"step-3.5-flash-2603",
"step-3.7-flash",
"step-tts-2",
"stepaudio-2.5-asr",
"stepaudio-2.5-tts"
],
docUrl: "https://platform.stepfun.ai/docs/en/step-plan/integrations/open-code",
gateway: "models.dev"
},
vivgrid: {
url: "https://api.vivgrid.com/v1",
apiKeyEnvVar: "VIVGRID_API_KEY",
apiKeyHeader: "Authorization",
name: "Vivgrid",
models: [
"deepseek-v3.2",
"deepseek-v4-pro",
"gemini-3.1-flash-lite-preview",
"gemini-3.1-pro-preview",
"glm-5.2",
"gpt-5-mini",
"gpt-5.1-codex",
"gpt-5.1-codex-max",
"gpt-5.2-codex",
"gpt-5.3-codex",
"gpt-5.4",
"gpt-5.4-mini",
"gpt-5.4-nano",
"gpt-5.5"
],
docUrl: "https://docs.vivgrid.com/models",
gateway: "models.dev",
npm: "@ai-sdk/openai",
modelOverrides: {
"deepseek-v4-pro": {
npm: "@ai-sdk/openai-compatible"
},
"gpt-5.4-nano": {
npm: "@ai-sdk/openai-compatible"
},
"gpt-5.4": {
npm: "@ai-sdk/openai-compatible"
},
"gpt-5.4-mini": {
npm: "@ai-sdk/openai-compatible"
},
"gemini-3.1-pro-preview": {
npm: "@ai-sdk/openai-compatible"
},
"gpt-5-mini": {
npm: "@ai-sdk/openai-compatible"
},
"deepseek-v3.2": {
npm: "@ai-sdk/openai-compatible"
},
"gemini-3.1-flash-lite-preview": {
npm: "@ai-sdk/openai-compatible"
},
"gpt-5.5": {
npm: "@ai-sdk/openai-compatible"
}
}
},
tinfoil: {
url: "https://inference.tinfoil.sh/v1",
apiKeyEnvVar: "TINFOIL_API_KEY",
apiKeyHeader: "Authorization",
name: "Tinfoil",
models: [
"gemma4-31b",
"glm-5-2",
"gpt-oss-120b",
"gpt-oss-safeguard-120b",
"kimi-k2-6",
"llama3-3-70b",
"nomic-embed-text"
],
docUrl: "https://docs.tinfoil.sh",
gateway: "models.dev"
},
mistral: {
url: "https://api.mistral.ai/v1",
apiKeyEnvVar: "MISTRAL_API_KEY",
name: "Mistral",
models: [
"codestral-latest",
"magistral-medium-latest",
"magistral-small",
"ministral-3b-latest",
"ministral-8b-latest",
"mistral-embed",
"mistral-large-2411",
"mistral-large-2512",
"mistral-large-latest",
"mistral-medium-2505",
"mistral-medium-2508",
"mistral-medium-2604",
"mistral-medium-latest",
"mistral-nemo",
"mistral-small-2506",
"mistral-small-2603",
"mistral-small-latest",
"open-mistral-7b",
"open-mixtral-8x22b",
"open-mixtral-8x7b",
"pixtral-12b",
"pixtral-large-latest"
],
docUrl: "https://docs.mistral.ai/getting-started/models/",
gateway: "models.dev",
npm: "@ai-sdk/mistral"
},
"cloudflare-workers-ai": {
url: "https://api.cloudflare.com/client/v4/accounts/${CLOUDFLARE_ACCOUNT_ID}/ai/v1",
apiKeyEnvVar: "CLOUDFLARE_API_KEY",
apiKeyHeader: "Authorization",
name: "Cloudflare Workers AI",
models: [
"@cf/aisingapore/gemma-sea-lion-v4-27b-it",
"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b",
"@cf/google/gemma-4-26b-a4b-it",
"@cf/ibm-granite/granite-4.0-h-micro",
"@cf/meta/llama-3.1-8b-instruct-fp8",
"@cf/meta/llama-3.2-11b-vision-instruct",
"@cf/meta/llama-3.2-1b-instruct",
"@cf/meta/llama-3.2-3b-instruct",
"@cf/meta/llama-3.3-70b-instruct-fp8-fast",
"@cf/meta/llama-4-scout-17b-16e-instruct",
"@cf/meta/llama-guard-3-8b",
"@cf/mistralai/mistral-small-3.1-24b-instruct",
"@cf/moonshotai/kimi-k2.6",
"@cf/moonshotai/kimi-k2.7-code",
"@cf/nvidia/nemotron-3-120b-a12b",
"@cf/openai/gpt-oss-120b",
"@cf/openai/gpt-oss-20b",
"@cf/qwen/qwen2.5-coder-32b-instruct",
"@cf/qwen/qwen3-30b-a3b-fp8",
"@cf/qwen/qwq-32b",
"@cf/zai-org/glm-4.7-flash",
"@cf/zai-org/glm-5.2"
],
docUrl: "https://developers.cloudflare.com/workers-ai/models/",
gateway: "models.dev"
},
bailing: {
url: "https://api.tbox.cn/api/llm/v1/chat/completions",
apiKeyEnvVar: "BAILING_API_TOKEN",
apiKeyHeader: "Authorization",
name: "Bailing",
models: ["Ling-1T", "Ring-1T"],
docUrl: "https://alipaytbox.yuque.com/sxs0ba/ling/intro",
gateway: "models.dev"
},
anyapi: {
url: "https://api.anyapi.ai/v1",
apiKeyEnvVar: "ANYAPI_API_KEY",
apiKeyHeader: "Authorization",
name: "AnyAPI",
models: [
"anthropic/claude-haiku-4-5",
"anthropic/claude-opus-4-6",
"anthropic/claude-opus-4-7",
"anthropic/claude-sonnet-4-5",
"anthropic/claude-sonnet-4-6",
"cohere/command-r-plus-08-2024",
"deepseek/deepseek-chat",
"deepseek/deepseek-r1",
"deepseek/deepseek-v4-flash",
"deepseek/deepseek-v4-pro",
"google/gemini-2.5-flash",
"google/gemini-2.5-flash-lite",
"google/gemini-2.5-pro",
"google/gemini-3-flash-preview",
"google/gemini-3-pro-preview",
"mistralai/mistral-large-2512",
"openai/gpt-4.1",
"openai/gpt-4.1-mini",
"openai/gpt-5",
"openai/gpt-5-mini",
"openai/gpt-5.1",
"openai/gpt-5.2",
"openai/gpt-5.4",
"openai/o3",
"openai/o3-mini",
"openai/o4-mini",
"perplexity/sonar-pro",
"perplexity/sonar-reasoning-pro",
"xai/grok-4.3"
],
docUrl: "https://docs.anyapi.ai",
gateway: "models.dev"
},
google: {
apiKeyEnvVar: ["GOOGLE_API_KEY", "GOOGLE_GENERATIVE_AI_API_KEY"],
name: "Google",
models: [
"gemini-2.5-flash",
"gemini-2.5-flash-image",
"gemini-2.5-flash-lite",
"gemini-2.5-flash-preview-tts",
"gemini-2.5-pro",
"gemini-2.5-pro-preview-tts",
"gemini-3-flash-preview",
"gemini-3-pro-image-preview",
"gemini-3.1-flash-image-preview",
"gemini-3.1-flash-lite",
"gemini-3.1-pro-preview",
"gemini-3.1-pro-preview-customtools",
"gemini-3.5-flash",
"gemini-embedding-001",
"gemini-flash-latest",
"gemini-flash-lite-latest",
"gemma-4-26b-a4b-it",
"gemma-4-31b-it"
],
docUrl: "https://ai.google.dev/gemini-api/docs/models",
gateway: "models.dev",
npm: "@ai-sdk/google"
},
"opencode-go": {
url: "https://opencode.ai/zen/go/v1",
apiKeyEnvVar: "OPENCODE_API_KEY",
apiKeyHeader: "Authorization",
name: "OpenCode Go",
models: [
"deepseek-v4-flash",
"deepseek-v4-pro",
"glm-5.1",
"glm-5.2",
"kimi-k2.6",
"kimi-k2.7-code",
"mimo-v2.5",
"mimo-v2.5-pro",
"minimax-m2.7",
"minimax-m3",
"qwen3.6-plus",
"qwen3.7-max",
"qwen3.7-plus"
],
docUrl: "https://opencode.ai/docs/zen",
gateway: "models.dev",
modelOverrides: {
"qwen3.7-plus": {
npm: "@ai-sdk/anthropic"
},
"qwen3.7-max": {
npm: "@ai-sdk/anthropic"
},
"minimax-m3": {
npm: "@ai-sdk/anthropic"
},
"minimax-m2.7": {
npm: "@ai-sdk/anthropic"
},
"qwen3.6-plus": {
npm: "@ai-sdk/anthropic"
}
}
},
digitalocean: {
url: "https://inference.do-ai.run/v1",
apiKeyEnvVar: "DIGITALOCEAN_ACCESS_TOKEN",
apiKeyHeader: "Authorization",
name: "DigitalOcean",
models: [
"alibaba-qwen3-32b",
"all-mini-lm-l6-v2",
"anthropic-claude-4.1-opus",
"anthropic-claude-4.5-haiku",
"anthropic-claude-4.5-sonnet",
"anthropic-claude-4.6-sonnet",
"anthropic-claude-fable-5",
"anthropic-claude-haiku-4.5",
"anthropic-claude-opus-4",
"anthropic-claude-opus-4.5",
"anthropic-claude-opus-4.6",
"anthropic-claude-opus-4.7",
"anthropic-claude-opus-4.8",
"anthropic-claude-sonnet-4",
"arcee-trinity-large-thinking",
"bge-m3",
"bge-reranker-v2-m3",
"deepseek-3.2",
"deepseek-4-flash",
"deepseek-r1-distill-llama-70b",
"deepseek-v3",
"deepseek-v4-pro",
"e5-large-v2",
"fal-ai/elevenlabs/tts/multilingual-v2",
"fal-ai/fast-sdxl",
"fal-ai/flux/schnell",
"fal-ai/stable-audio-25/text-to-audio",
"gemma-4-31B-it",
"glm-5",
"glm-5.1",
"glm-5.2",
"gte-large-en-v1.5",
"kimi-k2.5",
"kimi-k2.6",
"llama-4-maverick",
"llama3-8b-instruct",
"llama3.3-70b-instruct",
"minimax-m2.5",
"ministral-3-8b-instruct-2512",
"mistral-3-14B",
"mistral-7b-instruct-v0.3",
"multi-qa-mpnet-base-dot-v1",
"nemotron-3-nano-30b",
"nemotron-3-nano-omni",
"nemotron-3-ultra-550b",
"nemotron-nano-12b-v2-vl",
"nvidia-nemotron-3-super-120b",
"openai-gpt-4.1",
"openai-gpt-4o",
"openai-gpt-4o-mini",
"openai-gpt-5",
"openai-gpt-5-mini",
"openai-gpt-5-nano",
"openai-gpt-5.1-codex-max",
"openai-gpt-5.2",
"openai-gpt-5.2-pro",
"openai-gpt-5.3-codex",
"openai-gpt-5.4",
"openai-gpt-5.4-mini",
"openai-gpt-5.4-nano",
"openai-gpt-5.4-pro",
"openai-gpt-5.5",
"openai-gpt-image-1",
"openai-gpt-image-1.5",
"openai-g