{"version":3,"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/openai-error.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/openai-language-model-capabilities.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/chat/convert-to-openai-chat-messages.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/chat/get-response-metadata.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/chat/map-openai-finish-reason.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/chat/openai-chat-api.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/chat/openai-chat-options.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/chat/openai-chat-prepare-tools.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/chat/openai-chat-language-model.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/completion/convert-to-openai-completion-prompt.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/completion/get-response-metadata.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/completion/map-openai-finish-reason.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/completion/openai-completion-api.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/completion/openai-completion-options.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/completion/openai-completion-language-model.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-options.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-api.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-model.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/image/openai-image-api.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/image/openai-image-options.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/image/openai-image-model.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-api.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-options.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-model.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/speech/openai-speech-options.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/speech/openai-speech-model.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/tool/local-shell.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/responses/convert-to-openai-responses-input.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/responses/map-openai-responses-finish-reason.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/responses/openai-responses-api.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/responses/openai-responses-options.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/tool/code-interpreter.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/tool/file-search.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/tool/web-search.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/tool/web-search-preview.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/tool/image-generation.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/responses/openai-responses-prepare-tools.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/openai/2.0.106/666ea70fde499d28a41440bc59781213062b627dbe2e5c8eb838e3c2ca1d70a2/node_modules/@ai-sdk/openai/src/responses/openai-responses-language-model.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/azure/2.0.108/b619578b5433f96e73335d3c59b38f31d90988cae8d0d17a40a0e35a5de905d1/node_modules/@ai-sdk/azure/src/azure-openai-tools.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/azure/2.0.108/b619578b5433f96e73335d3c59b38f31d90988cae8d0d17a40a0e35a5de905d1/node_modules/@ai-sdk/azure/src/version.ts","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@ai-sdk/azure/2.0.108/b619578b5433f96e73335d3c59b38f31d90988cae8d0d17a40a0e35a5de905d1/node_modules/@ai-sdk/azure/src/azure-openai-provider.ts","../src/llm/model/openai-websocket-fetch.ts","../src/llm/model/gateways/azure.ts","../src/llm/model/gateways/mastra.ts","../src/llm/model/gateways/index.ts","../src/llm/model/provider-registry.json","../src/llm/model/provider-registry.ts"],"names":["z","createJsonErrorResponseHandler","convertToBase64","UnsupportedFunctionalityError","lazyValidator","zodSchema","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","generateId","createEventSourceResponseHandler","InvalidResponseDataError","toolCall","isParsableJson","InvalidPromptError","getResponseMetadata","mapOpenAIFinishReason","TooManyEmbeddingValuesForCallError","convertBase64ToUint8Array","mediaTypeToExtension","postFormDataToApi","createBinaryResponseHandler","lazySchema","createProviderDefinedToolFactoryWithOutputSchema","_a","_b","_c","validateTypes","APICallError","loadApiKey","withUserAgentSuffix","loadSetting","path","WebSocket","providerOptions","MastraModelGateway","InMemoryServerCache","MastraError","MASTRA_USER_AGENT","MASTRA_GATEWAY_STREAM_TRANSPORT","createAnthropic","GATEWAY_AUTH_HEADER","createOpenRouter","os","fs","require","createRequire","ModelsDevGateway","NetlifyGateway","isDev","MastraGateway"],"mappings":"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","file":"chunk-DURT53SS.cjs","sourcesContent":["import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const openaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n\n // The additional information below is handled loosely to support\n // OpenAI-compatible providers that have slightly different error\n // responses:\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type OpenAIErrorData = z.infer;\n\nexport const openaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: openaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","export type OpenAILanguageModelCapabilities = {\n isReasoningModel: boolean;\n systemMessageMode: 'remove' | 'system' | 'developer';\n supportsFlexProcessing: boolean;\n supportsPriorityProcessing: boolean;\n\n /**\n * Allow temperature, topP, logProbs when reasoningEffort is none.\n */\n supportsNonReasoningParameters: boolean;\n};\n\nexport function getOpenAILanguageModelCapabilities(\n modelId: string,\n): OpenAILanguageModelCapabilities {\n const supportsFlexProcessing =\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini') ||\n (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'));\n\n const supportsPriorityProcessing =\n modelId.startsWith('gpt-4') ||\n (modelId.startsWith('gpt-5') &&\n !modelId.startsWith('gpt-5-nano') &&\n !modelId.startsWith('gpt-5-chat') &&\n !modelId.startsWith('gpt-5.4-nano')) ||\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini');\n\n const isReasoningModel = !(\n modelId.startsWith('gpt-3') ||\n modelId.startsWith('gpt-4') ||\n modelId.startsWith('chatgpt-4o') ||\n modelId.startsWith('gpt-5-chat')\n );\n\n // https://platform.openai.com/docs/guides/latest-model#gpt-5-1-parameter-compatibility\n // GPT-5.1, GPT-5.2, and GPT-5.4 support temperature, topP, logProbs when reasoningEffort is none\n const supportsNonReasoningParameters =\n modelId.startsWith('gpt-5.1') ||\n modelId.startsWith('gpt-5.2') ||\n modelId.startsWith('gpt-5.3') ||\n modelId.startsWith('gpt-5.4');\n\n const systemMessageMode = isReasoningModel ? 'developer' : 'system';\n\n return {\n supportsFlexProcessing,\n supportsPriorityProcessing,\n isReasoningModel,\n systemMessageMode,\n supportsNonReasoningParameters,\n };\n}\n","import {\n type LanguageModelV2CallWarning,\n type LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport type { OpenAIChatPrompt } from './openai-chat-prompt';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\n\nexport function convertToOpenAIChatMessages({\n prompt,\n systemMessageMode = 'system',\n}: {\n prompt: LanguageModelV2Prompt;\n systemMessageMode?: 'system' | 'developer' | 'remove';\n}): {\n messages: OpenAIChatPrompt;\n warnings: Array;\n} {\n const messages: OpenAIChatPrompt = [];\n const warnings: Array = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n switch (systemMessageMode) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n case 'developer': {\n messages.push({ role: 'developer', content });\n break;\n }\n case 'remove': {\n warnings.push({\n type: 'other',\n message: 'system messages are removed for this model',\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = systemMessageMode;\n throw new Error(\n `Unsupported system message mode: ${_exhaustiveCheck}`,\n );\n }\n }\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({ role: 'user', content: content[0].text });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map((part, index) => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'image_url',\n image_url: {\n url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n\n // OpenAI specific extension: image detail\n detail: part.providerOptions?.openai?.imageDetail,\n },\n };\n } else if (part.mediaType.startsWith('audio/')) {\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality: 'audio file parts with URLs',\n });\n }\n\n switch (part.mediaType) {\n case 'audio/wav': {\n return {\n type: 'input_audio',\n input_audio: {\n data: convertToBase64(part.data),\n format: 'wav',\n },\n };\n }\n case 'audio/mp3':\n case 'audio/mpeg': {\n return {\n type: 'input_audio',\n input_audio: {\n data: convertToBase64(part.data),\n format: 'mp3',\n },\n };\n }\n\n default: {\n throw new UnsupportedFunctionalityError({\n functionality: `audio content parts with media type ${part.mediaType}`,\n });\n }\n }\n } else if (part.mediaType === 'application/pdf') {\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality: 'PDF file parts with URLs',\n });\n }\n\n return {\n type: 'file',\n file:\n typeof part.data === 'string' &&\n part.data.startsWith('file-')\n ? { file_id: part.data }\n : {\n filename: part.filename ?? `part-${index}.pdf`,\n file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n },\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { messages, warnings };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created ? new Date(created * 1000) : undefined,\n };\n}\n","import type { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'function_call':\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import type { JSONSchema7 } from '@ai-sdk/provider';\nimport {\n type InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { openaiErrorDataSchema } from '../openai-error';\n\nexport interface OpenAIChatFunctionTool {\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: JSONSchema7;\n strict?: boolean;\n };\n}\n\nexport type OpenAIChatToolChoice =\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'function'; function: { name: string } };\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiChatResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant').nullish(),\n content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string().nullish(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n annotations: z\n .array(\n z.object({\n type: z.literal('url_citation'),\n url_citation: z.object({\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n logprobs: z\n .object({\n content: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n accepted_prediction_tokens: z.number().nullish(),\n rejected_prediction_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n ),\n);\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiChatChunkSchema = lazyValidator(() =>\n zodSchema(\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z\n .object({\n role: z.enum(['assistant']).nullish(),\n content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n index: z.number(),\n id: z.string().nullish(),\n type: z.literal('function').nullish(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n annotations: z\n .array(\n z.object({\n type: z.literal('url_citation'),\n url_citation: z.object({\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n }),\n )\n .nullish(),\n })\n .nullish(),\n logprobs: z\n .object({\n content: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullish(),\n index: z.number(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n accepted_prediction_tokens: z.number().nullish(),\n rejected_prediction_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n openaiErrorDataSchema,\n ]),\n ),\n);\n\nexport type OpenAIChatResponse = InferValidator<\n typeof openaiChatResponseSchema\n>;\n\nexport type OpenAIChatChunk = InferValidator;\n","import {\n type InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAIChatModelId =\n | 'o1'\n | 'o1-2024-12-17'\n | 'o3-mini'\n | 'o3-mini-2025-01-31'\n | 'o3'\n | 'o3-2025-04-16'\n | 'gpt-4.1'\n | 'gpt-4.1-2025-04-14'\n | 'gpt-4.1-mini'\n | 'gpt-4.1-mini-2025-04-14'\n | 'gpt-4.1-nano'\n | 'gpt-4.1-nano-2025-04-14'\n | 'gpt-4o'\n | 'gpt-4o-2024-05-13'\n | 'gpt-4o-2024-08-06'\n | 'gpt-4o-2024-11-20'\n | 'gpt-4o-mini'\n | 'gpt-4o-mini-2024-07-18'\n | 'gpt-4-turbo'\n | 'gpt-4-turbo-2024-04-09'\n | 'gpt-4'\n | 'gpt-4-0613'\n | 'gpt-4.5-preview'\n | 'gpt-4.5-preview-2025-02-27'\n | 'gpt-3.5-turbo-0125'\n | 'gpt-3.5-turbo'\n | 'gpt-3.5-turbo-1106'\n | 'chatgpt-4o-latest'\n | 'gpt-5'\n | 'gpt-5-2025-08-07'\n | 'gpt-5-mini'\n | 'gpt-5-mini-2025-08-07'\n | 'gpt-5-nano'\n | 'gpt-5-nano-2025-08-07'\n | 'gpt-5-chat-latest'\n | 'gpt-5.1'\n | 'gpt-5.1-chat-latest'\n | 'gpt-5.2'\n | 'gpt-5.2-chat-latest'\n | 'gpt-5.2-pro'\n | 'gpt-5.2-pro-2025-12-11'\n | 'gpt-5.3-chat-latest'\n | 'gpt-5.4'\n | 'gpt-5.4-2026-03-05'\n | 'gpt-5.4-mini'\n | 'gpt-5.4-mini-2026-03-17'\n | 'gpt-5.4-nano'\n | 'gpt-5.4-nano-2026-03-17'\n | 'gpt-5.4-pro'\n | 'gpt-5.4-pro-2026-03-05'\n | (string & {});\n\nexport const openaiChatLanguageModelOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\n * Modify the likelihood of specified tokens appearing in the completion.\n *\n * Accepts a JSON object that maps tokens (specified by their token ID in\n * the GPT tokenizer) to an associated bias value from -100 to 100.\n */\n logitBias: z.record(z.coerce.number(), z.number()).optional(),\n\n /**\n * Return the log probabilities of the tokens.\n *\n * Setting to true will return the log probabilities of the tokens that\n * were generated.\n *\n * Setting to a number will return the log probabilities of the top n\n * tokens that were generated.\n */\n logprobs: z.union([z.boolean(), z.number()]).optional(),\n\n /**\n * Whether to enable parallel function calling during tool use. Default to true.\n */\n parallelToolCalls: z.boolean().optional(),\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI to\n * monitor and detect abuse.\n */\n user: z.string().optional(),\n\n /**\n * Reasoning effort for reasoning models. Defaults to `medium`.\n */\n reasoningEffort: z\n .enum(['none', 'minimal', 'low', 'medium', 'high', 'xhigh'])\n .optional(),\n\n /**\n * Maximum number of completion tokens to generate. Useful for reasoning models.\n */\n maxCompletionTokens: z.number().optional(),\n\n /**\n * Whether to enable persistence in responses API.\n */\n store: z.boolean().optional(),\n\n /**\n * Metadata to associate with the request.\n */\n metadata: z.record(z.string().max(64), z.string().max(512)).optional(),\n\n /**\n * Parameters for prediction mode.\n */\n prediction: z.record(z.string(), z.any()).optional(),\n\n /**\n * Whether to use structured outputs.\n *\n * @default true\n */\n structuredOutputs: z.boolean().optional(),\n\n /**\n * Service tier for the request.\n * - 'auto': Default service tier. The request will be processed with the service tier configured in the\n * Project settings. Unless otherwise configured, the Project will use 'default'.\n * - 'flex': 50% cheaper processing at the cost of increased latency. Only available for o3 and o4-mini models.\n * - 'priority': Higher-speed processing with predictably low latency at premium cost. Available for Enterprise customers.\n * - 'default': The request will be processed with the standard pricing and performance for the selected model.\n *\n * @default 'auto'\n */\n serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).optional(),\n\n /**\n * Whether to use strict JSON schema validation.\n *\n * @default false\n */\n strictJsonSchema: z.boolean().optional(),\n\n /**\n * Controls the verbosity of the model's responses.\n * Lower values will result in more concise responses, while higher values will result in more verbose responses.\n */\n textVerbosity: z.enum(['low', 'medium', 'high']).optional(),\n\n /**\n * A cache key for prompt caching. Allows manual control over prompt caching behavior.\n * Useful for improving cache hit rates and working around automatic caching issues.\n */\n promptCacheKey: z.string().optional(),\n\n /**\n * The retention policy for the prompt cache.\n * - 'in_memory': Default. Standard prompt caching behavior.\n * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n * Currently only available for 5.1 series models.\n *\n * @default 'in_memory'\n */\n promptCacheRetention: z.enum(['in_memory', '24h']).optional(),\n\n /**\n * A stable identifier used to help detect users of your application\n * that may be violating OpenAI's usage policies. The IDs should be a\n * string that uniquely identifies each user. We recommend hashing their\n * username or email address, in order to avoid sending us any identifying\n * information.\n */\n safetyIdentifier: z.string().optional(),\n }),\n ),\n);\n\nexport type OpenAIChatLanguageModelOptions = InferValidator<\n typeof openaiChatLanguageModelOptions\n>;\n","import {\n type LanguageModelV2CallOptions,\n type LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport type {\n OpenAIChatToolChoice,\n OpenAIChatFunctionTool,\n} from './openai-chat-api';\n\nexport function prepareChatTools({\n tools,\n toolChoice,\n structuredOutputs,\n strictJsonSchema,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n structuredOutputs: boolean;\n strictJsonSchema: boolean;\n}): {\n tools?: OpenAIChatFunctionTool[];\n toolChoice?: OpenAIChatToolChoice;\n toolWarnings: Array;\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const openaiTools: OpenAIChatFunctionTool[] = [];\n\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n openaiTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n strict: structuredOutputs ? strictJsonSchema : undefined,\n },\n });\n break;\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n case 'required':\n return { tools: openaiTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: openaiTools,\n toolChoice: {\n type: 'function',\n function: {\n name: toolChoice.toolName,\n },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n type LanguageModelV2,\n type LanguageModelV2CallOptions,\n type LanguageModelV2CallWarning,\n type LanguageModelV2Content,\n type LanguageModelV2FinishReason,\n type LanguageModelV2StreamPart,\n type LanguageModelV2Usage,\n type SharedV2ProviderMetadata,\n InvalidResponseDataError,\n} from '@ai-sdk/provider';\nimport {\n type FetchFunction,\n type ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { getOpenAILanguageModelCapabilities } from '../openai-language-model-capabilities';\nimport { convertToOpenAIChatMessages } from './convert-to-openai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n type OpenAIChatChunk,\n openaiChatChunkSchema,\n openaiChatResponseSchema,\n} from './openai-chat-api';\nimport {\n type OpenAIChatModelId,\n openaiChatLanguageModelOptions,\n} from './openai-chat-options';\nimport { prepareChatTools } from './openai-chat-prepare-tools';\n\ntype OpenAIChatConfig = {\n provider: string;\n headers: () => Record;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class OpenAIChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAIChatModelId;\n\n readonly supportedUrls = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private readonly config: OpenAIChatConfig;\n\n constructor(modelId: OpenAIChatModelId, config: OpenAIChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n tools,\n toolChoice,\n providerOptions,\n }: LanguageModelV2CallOptions) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // Parse provider options\n const openaiOptions =\n (await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiChatLanguageModelOptions,\n })) ?? {};\n\n const structuredOutputs = openaiOptions.structuredOutputs ?? true;\n const modelCapabilities = getOpenAILanguageModelCapabilities(this.modelId);\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (\n responseFormat?.type === 'json' &&\n responseFormat.schema != null &&\n !structuredOutputs\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details:\n 'JSON response format schema is only supported with structuredOutputs',\n });\n }\n\n const { messages, warnings: messageWarnings } = convertToOpenAIChatMessages(\n {\n prompt,\n systemMessageMode: modelCapabilities.systemMessageMode,\n },\n );\n\n warnings.push(...messageWarnings);\n\n const strictJsonSchema = openaiOptions.strictJsonSchema ?? false;\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n logit_bias: openaiOptions.logitBias,\n logprobs:\n openaiOptions.logprobs === true ||\n typeof openaiOptions.logprobs === 'number'\n ? true\n : undefined,\n top_logprobs:\n typeof openaiOptions.logprobs === 'number'\n ? openaiOptions.logprobs\n : typeof openaiOptions.logprobs === 'boolean'\n ? openaiOptions.logprobs\n ? 0\n : undefined\n : undefined,\n user: openaiOptions.user,\n parallel_tool_calls: openaiOptions.parallelToolCalls,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n response_format:\n responseFormat?.type === 'json'\n ? structuredOutputs && responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n schema: responseFormat.schema,\n strict: strictJsonSchema,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n },\n }\n : { type: 'json_object' }\n : undefined,\n stop: stopSequences,\n seed,\n verbosity: openaiOptions.textVerbosity,\n\n // openai specific settings:\n // TODO AI SDK 6: remove, we auto-map maxOutputTokens now\n max_completion_tokens: openaiOptions.maxCompletionTokens,\n store: openaiOptions.store,\n metadata: openaiOptions.metadata,\n prediction: openaiOptions.prediction,\n reasoning_effort: openaiOptions.reasoningEffort,\n service_tier: openaiOptions.serviceTier,\n prompt_cache_key: openaiOptions.promptCacheKey,\n prompt_cache_retention: openaiOptions.promptCacheRetention,\n safety_identifier: openaiOptions.safetyIdentifier,\n\n // messages:\n messages,\n };\n\n // remove unsupported settings for reasoning models\n // see https://platform.openai.com/docs/guides/reasoning#limitations\n if (modelCapabilities.isReasoningModel) {\n // when reasoning effort is none, gpt-5.1 models allow temperature, topP, logprobs\n // https://platform.openai.com/docs/guides/latest-model#gpt-5-1-parameter-compatibility\n if (\n openaiOptions.reasoningEffort !== 'none' ||\n !modelCapabilities.supportsNonReasoningParameters\n ) {\n if (baseArgs.temperature != null) {\n baseArgs.temperature = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details: 'temperature is not supported for reasoning models',\n });\n }\n if (baseArgs.top_p != null) {\n baseArgs.top_p = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topP',\n details: 'topP is not supported for reasoning models',\n });\n }\n if (baseArgs.logprobs != null) {\n baseArgs.logprobs = undefined;\n warnings.push({\n type: 'other',\n message: 'logprobs is not supported for reasoning models',\n });\n }\n }\n\n if (baseArgs.frequency_penalty != null) {\n baseArgs.frequency_penalty = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n details: 'frequencyPenalty is not supported for reasoning models',\n });\n }\n if (baseArgs.presence_penalty != null) {\n baseArgs.presence_penalty = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n details: 'presencePenalty is not supported for reasoning models',\n });\n }\n if (baseArgs.logit_bias != null) {\n baseArgs.logit_bias = undefined;\n warnings.push({\n type: 'other',\n message: 'logitBias is not supported for reasoning models',\n });\n }\n\n if (baseArgs.top_logprobs != null) {\n baseArgs.top_logprobs = undefined;\n warnings.push({\n type: 'other',\n message: 'topLogprobs is not supported for reasoning models',\n });\n }\n\n // reasoning models use max_completion_tokens instead of max_tokens:\n if (baseArgs.max_tokens != null) {\n if (baseArgs.max_completion_tokens == null) {\n baseArgs.max_completion_tokens = baseArgs.max_tokens;\n }\n baseArgs.max_tokens = undefined;\n }\n } else if (\n this.modelId.startsWith('gpt-4o-search-preview') ||\n this.modelId.startsWith('gpt-4o-mini-search-preview')\n ) {\n if (baseArgs.temperature != null) {\n baseArgs.temperature = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details:\n 'temperature is not supported for the search preview models and has been removed.',\n });\n }\n }\n\n // Validate flex processing support\n if (\n openaiOptions.serviceTier === 'flex' &&\n !modelCapabilities.supportsFlexProcessing\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'flex processing is only available for o3, o4-mini, and gpt-5 models',\n });\n baseArgs.service_tier = undefined;\n }\n\n // Validate priority processing support\n if (\n openaiOptions.serviceTier === 'priority' &&\n !modelCapabilities.supportsPriorityProcessing\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported',\n });\n baseArgs.service_tier = undefined;\n }\n\n const {\n tools: openaiTools,\n toolChoice: openaiToolChoice,\n toolWarnings,\n } = prepareChatTools({\n tools,\n toolChoice,\n structuredOutputs,\n strictJsonSchema,\n });\n\n return {\n args: {\n ...baseArgs,\n tools: openaiTools,\n tool_choice: openaiToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters[0],\n ): Promise>> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array = [];\n\n // text content:\n const text = choice.message.content;\n if (text != null && text.length > 0) {\n content.push({ type: 'text', text });\n }\n\n // tool calls:\n for (const toolCall of choice.message.tool_calls ?? []) {\n content.push({\n type: 'tool-call' as const,\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments!,\n });\n }\n\n // annotations/citations:\n for (const annotation of choice.message.annotations ?? []) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: generateId(),\n url: annotation.url_citation.url,\n title: annotation.url_citation.title,\n });\n }\n\n // provider metadata:\n const completionTokenDetails = response.usage?.completion_tokens_details;\n const promptTokenDetails = response.usage?.prompt_tokens_details;\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n if (completionTokenDetails?.accepted_prediction_tokens != null) {\n providerMetadata.openai.acceptedPredictionTokens =\n completionTokenDetails?.accepted_prediction_tokens;\n }\n if (completionTokenDetails?.rejected_prediction_tokens != null) {\n providerMetadata.openai.rejectedPredictionTokens =\n completionTokenDetails?.rejected_prediction_tokens;\n }\n if (choice.logprobs?.content != null) {\n providerMetadata.openai.logprobs = choice.logprobs.content;\n }\n\n return {\n content,\n finishReason: mapOpenAIFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage?.prompt_tokens ?? undefined,\n outputTokens: response.usage?.completion_tokens ?? undefined,\n totalTokens: response.usage?.total_tokens ?? undefined,\n reasoningTokens: completionTokenDetails?.reasoning_tokens ?? undefined,\n cachedInputTokens: promptTokenDetails?.cached_tokens ?? undefined,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n providerMetadata,\n };\n }\n\n async doStream(\n options: Parameters[0],\n ): Promise>> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n stream_options: {\n include_usage: true,\n },\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: {\n name: string;\n arguments: string;\n };\n hasFinished: boolean;\n }> = [];\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let metadataExtracted = false;\n let isActiveText = false;\n\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n // extract and emit response metadata once. Usually it comes in the first chunk.\n // Azure may prepend a chunk with a `\"prompt_filter_results\"` key which does not contain other metadata,\n // https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/content-filter-annotations?tabs=powershell\n if (!metadataExtracted) {\n const metadata = getResponseMetadata(value);\n if (Object.values(metadata).some(Boolean)) {\n metadataExtracted = true;\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n }\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens ?? undefined;\n usage.outputTokens = value.usage.completion_tokens ?? undefined;\n usage.totalTokens = value.usage.total_tokens ?? undefined;\n usage.reasoningTokens =\n value.usage.completion_tokens_details?.reasoning_tokens ??\n undefined;\n usage.cachedInputTokens =\n value.usage.prompt_tokens_details?.cached_tokens ?? undefined;\n\n if (\n value.usage.completion_tokens_details\n ?.accepted_prediction_tokens != null\n ) {\n providerMetadata.openai.acceptedPredictionTokens =\n value.usage.completion_tokens_details?.accepted_prediction_tokens;\n }\n if (\n value.usage.completion_tokens_details\n ?.rejected_prediction_tokens != null\n ) {\n providerMetadata.openai.rejectedPredictionTokens =\n value.usage.completion_tokens_details?.rejected_prediction_tokens;\n }\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenAIFinishReason(choice.finish_reason);\n }\n\n if (choice?.logprobs?.content != null) {\n providerMetadata.openai.logprobs = choice.logprobs.content;\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n if (delta.content != null) {\n if (!isActiveText) {\n controller.enqueue({ type: 'text-start', id: '0' });\n isActiveText = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: delta.content,\n });\n }\n\n if (delta.tool_calls != null) {\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index;\n\n // Tool call start. OpenAI returns all information except the arguments in the first chunk.\n if (toolCalls[index] == null) {\n if (\n toolCallDelta.type != null &&\n toolCallDelta.type !== 'function'\n ) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`,\n });\n }\n\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`,\n });\n }\n\n if (toolCallDelta.function?.name == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`,\n });\n }\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCallDelta.id,\n toolName: toolCallDelta.function.name,\n });\n\n toolCalls[index] = {\n id: toolCallDelta.id,\n type: 'function',\n function: {\n name: toolCallDelta.function.name,\n arguments: toolCallDelta.function.arguments ?? '',\n },\n hasFinished: false,\n };\n\n const toolCall = toolCalls[index];\n\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null\n ) {\n // send delta if the argument text has already started:\n if (toolCall.function.arguments.length > 0) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.id,\n delta: toolCall.function.arguments,\n });\n }\n\n // check if tool call is complete\n // (some providers send the full tool call in one chunk):\n if (isParsableJson(toolCall.function.arguments)) {\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n\n continue;\n }\n\n // existing tool call, merge if not finished\n const toolCall = toolCalls[index];\n\n if (toolCall.hasFinished) {\n continue;\n }\n\n if (toolCallDelta.function?.arguments != null) {\n toolCall.function!.arguments +=\n toolCallDelta.function?.arguments ?? '';\n }\n\n // send delta\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.id,\n delta: toolCallDelta.function.arguments ?? '',\n });\n\n // check if tool call is complete\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null &&\n isParsableJson(toolCall.function.arguments)\n ) {\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n }\n\n // annotations/citations:\n if (delta.annotations != null) {\n for (const annotation of delta.annotations) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: generateId(),\n url: annotation.url_citation.url,\n title: annotation.url_citation.title,\n });\n }\n }\n },\n\n flush(controller) {\n if (isActiveText) {\n controller.enqueue({ type: 'text-end', id: '0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n ...(providerMetadata != null ? { providerMetadata } : {}),\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n","import {\n type LanguageModelV2Prompt,\n InvalidPromptError,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function convertToOpenAICompletionPrompt({\n prompt,\n user = 'user',\n assistant = 'assistant',\n}: {\n prompt: LanguageModelV2Prompt;\n user?: string;\n assistant?: string;\n}): {\n prompt: string;\n stopSequences?: string[];\n} {\n // transform to a chat message format:\n let text = '';\n\n // if first message is a system message, add it to the text:\n if (prompt[0].role === 'system') {\n text += `${prompt[0].content}\\n\\n`;\n prompt = prompt.slice(1);\n }\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n throw new InvalidPromptError({\n message: 'Unexpected system message in prompt: ${content}',\n prompt,\n });\n }\n\n case 'user': {\n const userMessage = content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n }\n })\n .filter(Boolean)\n .join('');\n\n text += `${user}:\\n${userMessage}\\n\\n`;\n break;\n }\n\n case 'assistant': {\n const assistantMessage = content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n case 'tool-call': {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool-call messages',\n });\n }\n }\n })\n .join('');\n\n text += `${assistant}:\\n${assistantMessage}\\n\\n`;\n break;\n }\n\n case 'tool': {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool messages',\n });\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n // Assistant message prefix:\n text += `${assistant}:\\n`;\n\n return {\n prompt: text,\n stopSequences: [`\\n${user}:`],\n };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created != null ? new Date(created * 1000) : undefined,\n };\n}\n","import type { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'function_call':\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import { z } from 'zod/v4';\nimport { openaiErrorDataSchema } from '../openai-error';\nimport {\n type InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiCompletionResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n text: z.string(),\n finish_reason: z.string(),\n logprobs: z\n .object({\n tokens: z.array(z.string()),\n token_logprobs: z.array(z.number()),\n top_logprobs: z.array(z.record(z.string(), z.number())).nullish(),\n })\n .nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullish(),\n }),\n ),\n);\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiCompletionChunkSchema = lazyValidator(() =>\n zodSchema(\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n text: z.string(),\n finish_reason: z.string().nullish(),\n index: z.number(),\n logprobs: z\n .object({\n tokens: z.array(z.string()),\n token_logprobs: z.array(z.number()),\n top_logprobs: z\n .array(z.record(z.string(), z.number()))\n .nullish(),\n })\n .nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullish(),\n }),\n openaiErrorDataSchema,\n ]),\n ),\n);\n\nexport type OpenAICompletionChunk = InferValidator<\n typeof openaiCompletionChunkSchema\n>;\n\nexport type OpenAICompletionResponse = InferValidator<\n typeof openaiCompletionResponseSchema\n>;\n","import {\n type InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAICompletionModelId = 'gpt-3.5-turbo-instruct' | (string & {});\n\nexport const openaiCompletionProviderOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\nEcho back the prompt in addition to the completion.\n */\n echo: z.boolean().optional(),\n\n /**\nModify the likelihood of specified tokens appearing in the completion.\n\nAccepts a JSON object that maps tokens (specified by their token ID in\nthe GPT tokenizer) to an associated bias value from -100 to 100. You\ncan use this tokenizer tool to convert text to token IDs. Mathematically,\nthe bias is added to the logits generated by the model prior to sampling.\nThe exact effect will vary per model, but values between -1 and 1 should\ndecrease or increase likelihood of selection; values like -100 or 100\nshould result in a ban or exclusive selection of the relevant token.\n\nAs an example, you can pass {\"50256\": -100} to prevent the <|endoftext|>\ntoken from being generated.\n */\n logitBias: z.record(z.string(), z.number()).optional(),\n\n /**\nThe suffix that comes after a completion of inserted text.\n */\n suffix: z.string().optional(),\n\n /**\nA unique identifier representing your end-user, which can help OpenAI to\nmonitor and detect abuse. Learn more.\n */\n user: z.string().optional(),\n\n /**\nReturn the log probabilities of the tokens. Including logprobs will increase\nthe response size and can slow down response times. However, it can\nbe useful to better understand how the model is behaving.\nSetting to true will return the log probabilities of the tokens that\nwere generated.\nSetting to a number will return the log probabilities of the top n\ntokens that were generated.\n */\n logprobs: z.union([z.boolean(), z.number()]).optional(),\n }),\n ),\n);\n\nexport type OpenAICompletionProviderOptions = InferValidator<\n typeof openaiCompletionProviderOptions\n>;\n","import type {\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n type FetchFunction,\n type ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { convertToOpenAICompletionPrompt } from './convert-to-openai-completion-prompt';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n type OpenAICompletionChunk,\n openaiCompletionChunkSchema,\n openaiCompletionResponseSchema,\n} from './openai-completion-api';\nimport {\n type OpenAICompletionModelId,\n openaiCompletionProviderOptions,\n} from './openai-completion-options';\n\ntype OpenAICompletionConfig = {\n provider: string;\n headers: () => Record;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class OpenAICompletionLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAICompletionModelId;\n\n private readonly config: OpenAICompletionConfig;\n\n private get providerOptionsName(): string {\n return this.config.provider.split('.')[0].trim();\n }\n\n constructor(\n modelId: OpenAICompletionModelId,\n config: OpenAICompletionConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls: Record = {\n // No URLs are supported for completion models.\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences: userStopSequences,\n responseFormat,\n tools,\n toolChoice,\n seed,\n providerOptions,\n }: Parameters[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // Parse provider options\n const openaiOptions = {\n ...(await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiCompletionProviderOptions,\n })),\n ...(await parseProviderOptions({\n provider: this.providerOptionsName,\n providerOptions,\n schema: openaiCompletionProviderOptions,\n })),\n };\n\n if (topK != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n }\n\n if (tools?.length) {\n warnings.push({ type: 'unsupported-setting', setting: 'tools' });\n }\n\n if (toolChoice != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'toolChoice' });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const { prompt: completionPrompt, stopSequences } =\n convertToOpenAICompletionPrompt({ prompt });\n\n const stop = [...(stopSequences ?? []), ...(userStopSequences ?? [])];\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n echo: openaiOptions.echo,\n logit_bias: openaiOptions.logitBias,\n logprobs:\n openaiOptions?.logprobs === true\n ? 0\n : openaiOptions?.logprobs === false\n ? undefined\n : openaiOptions?.logprobs,\n suffix: openaiOptions.suffix,\n user: openaiOptions.user,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n seed,\n\n // prompt:\n prompt: completionPrompt,\n\n // stop sequences:\n stop: stop.length > 0 ? stop : undefined,\n },\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters[0],\n ): Promise>> {\n const { args, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiCompletionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n\n if (choice.logprobs != null) {\n providerMetadata.openai.logprobs = choice.logprobs;\n }\n\n return {\n content: [{ type: 'text', text: choice.text }],\n usage: {\n inputTokens: response.usage?.prompt_tokens,\n outputTokens: response.usage?.completion_tokens,\n totalTokens: response.usage?.total_tokens,\n },\n finishReason: mapOpenAIFinishReason(choice.finish_reason),\n request: { body: args },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata,\n warnings,\n };\n }\n\n async doStream(\n options: Parameters[0],\n ): Promise>> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n\n stream_options: {\n include_usage: true,\n },\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiCompletionChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let isFirstChunk = true;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n if (isFirstChunk) {\n isFirstChunk = false;\n\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n\n controller.enqueue({ type: 'text-start', id: '0' });\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens = value.usage.total_tokens;\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenAIFinishReason(choice.finish_reason);\n }\n\n if (choice?.logprobs != null) {\n providerMetadata.openai.logprobs = choice.logprobs;\n }\n\n if (choice?.text != null && choice.text.length > 0) {\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: choice.text,\n });\n }\n },\n\n flush(controller) {\n if (!isFirstChunk) {\n controller.enqueue({ type: 'text-end', id: '0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n providerMetadata,\n usage,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n","import {\n type InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIEmbeddingModelId =\n | 'text-embedding-3-small'\n | 'text-embedding-3-large'\n | 'text-embedding-ada-002'\n | (string & {});\n\nexport const openaiEmbeddingProviderOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\nThe number of dimensions the resulting output embeddings should have.\nOnly supported in text-embedding-3 and later models.\n */\n dimensions: z.number().optional(),\n\n /**\nA unique identifier representing your end-user, which can help OpenAI to\nmonitor and detect abuse. Learn more.\n*/\n user: z.string().optional(),\n }),\n ),\n);\n\nexport type OpenAIEmbeddingProviderOptions = InferValidator<\n typeof openaiEmbeddingProviderOptions\n>;\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiTextEmbeddingResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n data: z.array(z.object({ embedding: z.array(z.number()) })),\n usage: z.object({ prompt_tokens: z.number() }).nullish(),\n }),\n ),\n);\n","import {\n type EmbeddingModelV2,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport type { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport {\n type OpenAIEmbeddingModelId,\n openaiEmbeddingProviderOptions,\n} from './openai-embedding-options';\nimport { openaiTextEmbeddingResponseSchema } from './openai-embedding-api';\n\nexport class OpenAIEmbeddingModel implements EmbeddingModelV2 {\n readonly specificationVersion = 'v2';\n readonly modelId: OpenAIEmbeddingModelId;\n readonly maxEmbeddingsPerCall = 2048;\n readonly supportsParallelCalls = true;\n\n private readonly config: OpenAIConfig;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(modelId: OpenAIEmbeddingModelId, config: OpenAIConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters['doEmbed']>[0]): Promise<\n Awaited['doEmbed']>>\n > {\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n // Parse provider options\n const openaiOptions =\n (await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiEmbeddingProviderOptions,\n })) ?? {};\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/embeddings',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n input: values,\n encoding_format: 'float',\n dimensions: openaiOptions.dimensions,\n user: openaiOptions.user,\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiTextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: response.data.map(item => item.embedding),\n usage: response.usage\n ? { tokens: response.usage.prompt_tokens }\n : undefined,\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// minimal version of the schema, focused on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiImageResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n created: z.number().nullish(),\n data: z.array(\n z.object({\n b64_json: z.string(),\n revised_prompt: z.string().nullish(),\n }),\n ),\n background: z.string().nullish(),\n output_format: z.string().nullish(),\n size: z.string().nullish(),\n quality: z.string().nullish(),\n usage: z\n .object({\n input_tokens: z.number().nullish(),\n output_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n input_tokens_details: z\n .object({\n image_tokens: z.number().nullish(),\n text_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n ),\n);\n","import {\n type InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIImageModelId =\n | 'dall-e-3'\n | 'dall-e-2'\n | 'gpt-image-1'\n | 'gpt-image-1-mini'\n | 'gpt-image-1.5'\n | 'gpt-image-2'\n | (string & {});\n\n// https://platform.openai.com/docs/guides/images\nexport const modelMaxImagesPerCall: Record = {\n 'dall-e-3': 1,\n 'dall-e-2': 10,\n 'gpt-image-1': 10,\n 'gpt-image-1-mini': 10,\n 'gpt-image-1.5': 10,\n 'gpt-image-2': 10,\n};\n\nexport const hasDefaultResponseFormat = new Set([\n 'gpt-image-1',\n 'gpt-image-1-mini',\n 'gpt-image-1.5',\n 'gpt-image-2',\n]);\n\nconst baseImageModelOptionsObject = z.object({\n /**\n * Quality of the generated image(s).\n *\n * Valid values: `standard`, `hd`, `low`, `medium`, `high`, `auto`.\n */\n quality: z\n .enum(['standard', 'hd', 'low', 'medium', 'high', 'auto'])\n .optional(),\n\n /**\n * Background behavior for the generated image(s).\n *\n * If `transparent`, the output format must support transparency\n * (i.e. `png` or `webp`).\n */\n background: z.enum(['transparent', 'opaque', 'auto']).optional(),\n\n /**\n * Format in which the generated image(s) are returned.\n */\n outputFormat: z.enum(['png', 'jpeg', 'webp']).optional(),\n\n /**\n * Compression level (0-100) for the generated image(s). Applies to the\n * `jpeg` and `webp` output formats.\n */\n outputCompression: z.number().int().min(0).max(100).optional(),\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI\n * to monitor and detect abuse.\n */\n user: z.string().optional(),\n});\n\nexport const openaiImageModelOptions = lazyValidator(() =>\n zodSchema(baseImageModelOptionsObject),\n);\n\nexport type OpenAIImageModelOptions = InferValidator<\n typeof openaiImageModelOptions\n>;\n\nexport const openaiImageModelGenerationOptions = lazyValidator(() =>\n zodSchema(\n baseImageModelOptionsObject.extend({\n /**\n * Style of the generated image. `vivid` produces hyper-real and\n * dramatic images; `natural` produces more subdued, less hyper-real\n * looking images.\n */\n style: z.enum(['vivid', 'natural']).optional(),\n\n /**\n * Content moderation level for the generated image(s). `low` applies\n * less restrictive filtering.\n */\n moderation: z.enum(['auto', 'low']).optional(),\n }),\n ),\n);\n\nexport type OpenAIImageModelGenerationOptions = InferValidator<\n typeof openaiImageModelGenerationOptions\n>;\n","import type { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport type { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { openaiImageResponseSchema } from './openai-image-api';\nimport {\n type OpenAIImageModelId,\n hasDefaultResponseFormat,\n modelMaxImagesPerCall,\n openaiImageModelGenerationOptions,\n} from './openai-image-options';\n\ninterface OpenAIImageModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class OpenAIImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n\n get maxImagesPerCall(): number {\n return modelMaxImagesPerCall[this.modelId] ?? 1;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAIImageModelId,\n private readonly config: OpenAIImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters[0]): Promise<\n Awaited>\n > {\n const warnings: Array = [];\n\n if (aspectRatio != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'aspectRatio',\n details:\n 'This model does not support aspect ratio. Use `size` instead.',\n });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n const openaiOptions =\n (await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiImageModelGenerationOptions,\n })) ?? {};\n\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.config.url({\n path: '/images/generations',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n prompt,\n n,\n size,\n quality: openaiOptions.quality,\n style: openaiOptions.style,\n background: openaiOptions.background,\n moderation: openaiOptions.moderation,\n output_format: openaiOptions.outputFormat,\n output_compression: openaiOptions.outputCompression,\n user: openaiOptions.user,\n ...(!hasDefaultResponseFormat.has(this.modelId)\n ? { response_format: 'b64_json' }\n : {}),\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images: response.data.map(item => item.b64_json),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n openai: {\n images: response.data.map((item, index) => ({\n ...(item.revised_prompt\n ? { revisedPrompt: item.revised_prompt }\n : {}),\n ...(response.created != null ? { created: response.created } : {}),\n ...(response.size != null ? { size: response.size } : {}),\n ...(response.quality != null ? { quality: response.quality } : {}),\n ...(response.background != null\n ? { background: response.background }\n : {}),\n ...(response.output_format != null\n ? { outputFormat: response.output_format }\n : {}),\n ...distributeTokenDetails(\n response.usage,\n index,\n response.data.length,\n ),\n })),\n },\n },\n };\n }\n}\n\n/**\n * Distributes token usage details evenly across images, with the remainder\n * assigned to the last image so that summing across all entries gives the\n * exact total.\n */\nfunction distributeTokenDetails(\n usage:\n | {\n input_tokens?: number | null;\n output_tokens?: number | null;\n total_tokens?: number | null;\n input_tokens_details?: {\n image_tokens?: number | null;\n text_tokens?: number | null;\n } | null;\n }\n | null\n | undefined,\n index: number,\n total: number,\n): {\n imageTokens?: number;\n textTokens?: number;\n inputTokens?: number;\n outputTokens?: number;\n} {\n if (usage == null) {\n return {};\n }\n\n const result: {\n imageTokens?: number;\n textTokens?: number;\n inputTokens?: number;\n outputTokens?: number;\n } = {};\n\n const details = usage.input_tokens_details;\n\n if (details?.image_tokens != null) {\n const base = Math.floor(details.image_tokens / total);\n const remainder = details.image_tokens - base * (total - 1);\n result.imageTokens = index === total - 1 ? remainder : base;\n }\n\n if (details?.text_tokens != null) {\n const base = Math.floor(details.text_tokens / total);\n const remainder = details.text_tokens - base * (total - 1);\n result.textTokens = index === total - 1 ? remainder : base;\n }\n\n if (usage.input_tokens != null) {\n const base = Math.floor(usage.input_tokens / total);\n const remainder = usage.input_tokens - base * (total - 1);\n result.inputTokens = index === total - 1 ? remainder : base;\n }\n\n if (usage.output_tokens != null) {\n const base = Math.floor(usage.output_tokens / total);\n const remainder = usage.output_tokens - base * (total - 1);\n result.outputTokens = index === total - 1 ? remainder : base;\n }\n\n return result;\n}\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const openaiTranscriptionResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n text: z.string(),\n language: z.string().nullish(),\n duration: z.number().nullish(),\n words: z\n .array(\n z.object({\n word: z.string(),\n start: z.number(),\n end: z.number(),\n }),\n )\n .nullish(),\n segments: z\n .array(\n z.object({\n id: z.number(),\n seek: z.number(),\n start: z.number(),\n end: z.number(),\n text: z.string(),\n tokens: z.array(z.number()),\n temperature: z.number(),\n avg_logprob: z.number(),\n compression_ratio: z.number(),\n no_speech_prob: z.number(),\n }),\n )\n .nullish(),\n }),\n ),\n);\n","import {\n type InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAITranscriptionModelId =\n | 'whisper-1'\n | 'gpt-4o-mini-transcribe'\n | 'gpt-4o-transcribe'\n | (string & {});\n\n// https://platform.openai.com/docs/api-reference/audio/createTranscription\nexport const openAITranscriptionProviderOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\n * Additional information to include in the transcription response.\n */\n\n include: z.array(z.string()).optional(),\n\n /**\n * The language of the input audio in ISO-639-1 format.\n */\n language: z.string().optional(),\n\n /**\n * An optional text to guide the model's style or continue a previous audio segment.\n */\n prompt: z.string().optional(),\n\n /**\n * The sampling temperature, between 0 and 1.\n * @default 0\n */\n temperature: z.number().min(0).max(1).default(0).optional(),\n\n /**\n * The timestamp granularities to populate for this transcription.\n * @default ['segment']\n */\n timestampGranularities: z\n .array(z.enum(['word', 'segment']))\n .default(['segment'])\n .optional(),\n }),\n ),\n);\n\nexport type OpenAITranscriptionProviderOptions = InferValidator<\n typeof openAITranscriptionProviderOptions\n>;\n","import type {\n TranscriptionModelV2,\n TranscriptionModelV2CallOptions,\n TranscriptionModelV2CallWarning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n mediaTypeToExtension,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport type { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { openaiTranscriptionResponseSchema } from './openai-transcription-api';\nimport {\n type OpenAITranscriptionModelId,\n type OpenAITranscriptionProviderOptions,\n openAITranscriptionProviderOptions,\n} from './openai-transcription-options';\n\nexport type OpenAITranscriptionCallOptions = Omit<\n TranscriptionModelV2CallOptions,\n 'providerOptions'\n> & {\n providerOptions?: {\n openai?: OpenAITranscriptionProviderOptions;\n };\n};\n\ninterface OpenAITranscriptionModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// https://platform.openai.com/docs/guides/speech-to-text#supported-languages\nconst languageMap = {\n afrikaans: 'af',\n arabic: 'ar',\n armenian: 'hy',\n azerbaijani: 'az',\n belarusian: 'be',\n bosnian: 'bs',\n bulgarian: 'bg',\n catalan: 'ca',\n chinese: 'zh',\n croatian: 'hr',\n czech: 'cs',\n danish: 'da',\n dutch: 'nl',\n english: 'en',\n estonian: 'et',\n finnish: 'fi',\n french: 'fr',\n galician: 'gl',\n german: 'de',\n greek: 'el',\n hebrew: 'he',\n hindi: 'hi',\n hungarian: 'hu',\n icelandic: 'is',\n indonesian: 'id',\n italian: 'it',\n japanese: 'ja',\n kannada: 'kn',\n kazakh: 'kk',\n korean: 'ko',\n latvian: 'lv',\n lithuanian: 'lt',\n macedonian: 'mk',\n malay: 'ms',\n marathi: 'mr',\n maori: 'mi',\n nepali: 'ne',\n norwegian: 'no',\n persian: 'fa',\n polish: 'pl',\n portuguese: 'pt',\n romanian: 'ro',\n russian: 'ru',\n serbian: 'sr',\n slovak: 'sk',\n slovenian: 'sl',\n spanish: 'es',\n swahili: 'sw',\n swedish: 'sv',\n tagalog: 'tl',\n tamil: 'ta',\n thai: 'th',\n turkish: 'tr',\n ukrainian: 'uk',\n urdu: 'ur',\n vietnamese: 'vi',\n welsh: 'cy',\n};\n\nexport class OpenAITranscriptionModel implements TranscriptionModelV2 {\n readonly specificationVersion = 'v2';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAITranscriptionModelId,\n private readonly config: OpenAITranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n audio,\n mediaType,\n providerOptions,\n }: OpenAITranscriptionCallOptions) {\n const warnings: TranscriptionModelV2CallWarning[] = [];\n\n // Parse provider options\n const openAIOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openAITranscriptionProviderOptions,\n });\n\n // Create form data with base fields\n const formData = new FormData();\n const blob =\n audio instanceof Uint8Array\n ? new Blob([audio])\n : new Blob([convertBase64ToUint8Array(audio)]);\n\n formData.append('model', this.modelId);\n const fileExtension = mediaTypeToExtension(mediaType);\n formData.append(\n 'file',\n new File([blob], 'audio', { type: mediaType }),\n `audio.${fileExtension}`,\n );\n\n // Add provider-specific options\n if (openAIOptions) {\n const transcriptionModelOptions = {\n include: openAIOptions.include,\n language: openAIOptions.language,\n prompt: openAIOptions.prompt,\n // https://platform.openai.com/docs/api-reference/audio/createTranscription#audio_createtranscription-response_format\n // prefer verbose_json to get segments for models that support it\n response_format: [\n 'gpt-4o-transcribe',\n 'gpt-4o-mini-transcribe',\n ].includes(this.modelId)\n ? 'json'\n : 'verbose_json',\n temperature: openAIOptions.temperature,\n timestamp_granularities: openAIOptions.timestampGranularities,\n };\n\n for (const [key, value] of Object.entries(transcriptionModelOptions)) {\n if (value != null) {\n if (Array.isArray(value)) {\n for (const item of value) {\n formData.append(`${key}[]`, String(item));\n }\n } else {\n formData.append(key, String(value));\n }\n }\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: OpenAITranscriptionCallOptions,\n ): Promise>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postFormDataToApi({\n url: this.config.url({\n path: '/audio/transcriptions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const language =\n response.language != null && response.language in languageMap\n ? languageMap[response.language as keyof typeof languageMap]\n : undefined;\n\n return {\n text: response.text,\n segments:\n response.segments?.map(segment => ({\n text: segment.text,\n startSecond: segment.start,\n endSecond: segment.end,\n })) ??\n response.words?.map(word => ({\n text: word.word,\n startSecond: word.start,\n endSecond: word.end,\n })) ??\n [],\n language,\n durationInSeconds: response.duration ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","import {\n type InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAISpeechModelId =\n | 'tts-1'\n | 'tts-1-hd'\n | 'gpt-4o-mini-tts'\n | (string & {});\n\n// https://platform.openai.com/docs/api-reference/audio/createSpeech\nexport const openaiSpeechProviderOptionsSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n instructions: z.string().nullish(),\n speed: z.number().min(0.25).max(4.0).default(1.0).nullish(),\n }),\n ),\n);\n\nexport type OpenAISpeechCallOptions = InferValidator<\n typeof openaiSpeechProviderOptionsSchema\n>;\n","import type { SpeechModelV2, SpeechModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport type { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport type { OpenAISpeechAPITypes } from './openai-speech-api';\nimport {\n type OpenAISpeechModelId,\n openaiSpeechProviderOptionsSchema,\n} from './openai-speech-options';\n\ninterface OpenAISpeechModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class OpenAISpeechModel implements SpeechModelV2 {\n readonly specificationVersion = 'v2';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAISpeechModelId,\n private readonly config: OpenAISpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice = 'alloy',\n outputFormat = 'mp3',\n speed,\n instructions,\n language,\n providerOptions,\n }: Parameters[0]) {\n const warnings: SpeechModelV2CallWarning[] = [];\n\n // Parse provider options\n const openAIOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiSpeechProviderOptionsSchema,\n });\n\n // Create request body\n const requestBody: Record = {\n model: this.modelId,\n input: text,\n voice,\n response_format: 'mp3',\n speed,\n instructions,\n };\n\n if (outputFormat) {\n if (['mp3', 'opus', 'aac', 'flac', 'wav', 'pcm'].includes(outputFormat)) {\n requestBody.response_format = outputFormat;\n } else {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'outputFormat',\n details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`,\n });\n }\n }\n\n // Add provider-specific options\n if (openAIOptions) {\n const speechModelOptions: OpenAISpeechAPITypes = {};\n\n for (const key in speechModelOptions) {\n const value = speechModelOptions[key as keyof OpenAISpeechAPITypes];\n if (value !== undefined) {\n requestBody[key] = value;\n }\n }\n }\n\n if (language) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'language',\n details: `OpenAI speech models do not support language selection. Language parameter \"${language}\" was ignored.`,\n });\n }\n\n return {\n requestBody,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters[0],\n ): Promise>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, warnings } = await this.getArgs(options);\n\n const {\n value: audio,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/audio/speech',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: requestBody,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const localShellInputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z.object({\n type: z.literal('exec'),\n command: z.array(z.string()),\n timeoutMs: z.number().optional(),\n user: z.string().optional(),\n workingDirectory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n }),\n ),\n);\n\nexport const localShellOutputSchema = lazySchema(() =>\n zodSchema(z.object({ output: z.string() })),\n);\n\nexport const localShell = createProviderDefinedToolFactoryWithOutputSchema<\n {\n /**\n * Execute a shell command on the server.\n */\n action: {\n type: 'exec';\n\n /**\n * The command to run.\n */\n command: string[];\n\n /**\n * Optional timeout in milliseconds for the command.\n */\n timeoutMs?: number;\n\n /**\n * Optional user to run the command as.\n */\n user?: string;\n\n /**\n * Optional working directory to run the command in.\n */\n workingDirectory?: string;\n\n /**\n * Environment variables to set for the command.\n */\n env?: Record;\n };\n },\n {\n /**\n * The output of local shell tool call.\n */\n output: string;\n },\n {}\n>({\n id: 'openai.local_shell',\n name: 'local_shell',\n inputSchema: localShellInputSchema,\n outputSchema: localShellOutputSchema,\n});\n","import {\n type LanguageModelV2CallWarning,\n type LanguageModelV2Prompt,\n type LanguageModelV2ToolCallPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n parseProviderOptions,\n validateTypes,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n localShellInputSchema,\n localShellOutputSchema,\n} from '../tool/local-shell';\nimport { webSearchOutputSchema } from '../tool/web-search';\nimport type {\n OpenAIResponsesFunctionCallOutput,\n OpenAIResponsesInput,\n OpenAIResponsesReasoning,\n} from './openai-responses-api';\n\n/**\n * Check if a string is a file ID based on the given prefixes\n * Returns false if prefixes is undefined (disables file ID detection)\n */\nfunction isFileId(data: string, prefixes?: readonly string[]): boolean {\n if (!prefixes) return false;\n return prefixes.some(prefix => data.startsWith(prefix));\n}\n\nexport async function convertToOpenAIResponsesInput({\n prompt,\n systemMessageMode,\n fileIdPrefixes,\n store,\n hasLocalShellTool = false,\n}: {\n prompt: LanguageModelV2Prompt;\n systemMessageMode: 'system' | 'developer' | 'remove';\n fileIdPrefixes?: readonly string[];\n store: boolean;\n hasLocalShellTool?: boolean;\n}): Promise<{\n input: OpenAIResponsesInput;\n warnings: Array;\n}> {\n let input: OpenAIResponsesInput = [];\n const warnings: Array = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n switch (systemMessageMode) {\n case 'system': {\n input.push({ role: 'system', content });\n break;\n }\n case 'developer': {\n input.push({ role: 'developer', content });\n break;\n }\n case 'remove': {\n warnings.push({\n type: 'other',\n message: 'system messages are removed for this model',\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = systemMessageMode;\n throw new Error(\n `Unsupported system message mode: ${_exhaustiveCheck}`,\n );\n }\n }\n break;\n }\n\n case 'user': {\n input.push({\n role: 'user',\n content: content.map((part, index) => {\n switch (part.type) {\n case 'text': {\n return { type: 'input_text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'input_image',\n ...(part.data instanceof URL\n ? { image_url: part.data.toString() }\n : typeof part.data === 'string' &&\n isFileId(part.data, fileIdPrefixes)\n ? { file_id: part.data }\n : {\n image_url: `data:${mediaType};base64,${convertToBase64(part.data)}`,\n }),\n detail: part.providerOptions?.openai?.imageDetail,\n };\n } else if (part.mediaType === 'application/pdf') {\n if (part.data instanceof URL) {\n return {\n type: 'input_file',\n file_url: part.data.toString(),\n };\n }\n return {\n type: 'input_file',\n ...(typeof part.data === 'string' &&\n isFileId(part.data, fileIdPrefixes)\n ? { file_id: part.data }\n : {\n filename: part.filename ?? `part-${index}.pdf`,\n file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n }),\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n const reasoningMessages: Record = {};\n const toolCallParts: Record = {};\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n const id = part.providerOptions?.openai?.itemId as\n | string\n | undefined;\n const phase = part.providerOptions?.openai?.phase as\n | 'commentary'\n | 'final_answer'\n | null\n | undefined;\n\n // item references reduce the payload size\n if (store && id != null) {\n input.push({ type: 'item_reference', id });\n break;\n }\n\n input.push({\n role: 'assistant',\n content: [{ type: 'output_text', text: part.text }],\n id,\n ...(phase != null && { phase }),\n });\n\n break;\n }\n case 'tool-call': {\n toolCallParts[part.toolCallId] = part;\n\n if (part.providerExecuted) {\n break;\n }\n\n const id = part.providerOptions?.openai?.itemId as\n | string\n | undefined;\n\n // item references reduce the payload size\n if (store && id != null) {\n input.push({ type: 'item_reference', id });\n break;\n }\n\n if (hasLocalShellTool && part.toolName === 'local_shell') {\n const parsedInput = await validateTypes({\n value: part.input,\n schema: localShellInputSchema,\n });\n input.push({\n type: 'local_shell_call',\n call_id: part.toolCallId,\n id: id!,\n action: {\n type: 'exec',\n command: parsedInput.action.command,\n timeout_ms: parsedInput.action.timeoutMs,\n user: parsedInput.action.user,\n working_directory: parsedInput.action.workingDirectory,\n env: parsedInput.action.env,\n },\n });\n\n break;\n }\n\n input.push({\n type: 'function_call',\n call_id: part.toolCallId,\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n id,\n });\n break;\n }\n\n // assistant tool result parts are from provider-executed tools:\n case 'tool-result': {\n if (store) {\n // use item references to refer to tool results from built-in tools\n input.push({ type: 'item_reference', id: part.toolCallId });\n } else {\n warnings.push({\n type: 'other',\n message: `Results for OpenAI tool ${part.toolName} are not sent to the API when store is false`,\n });\n }\n\n break;\n }\n\n case 'reasoning': {\n const providerOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions: part.providerOptions,\n schema: openaiResponsesReasoningProviderOptionsSchema,\n });\n\n const reasoningId = providerOptions?.itemId;\n\n if (reasoningId != null) {\n const reasoningMessage = reasoningMessages[reasoningId];\n\n if (store) {\n // use item references to refer to reasoning (single reference)\n // when the first part is encountered\n if (reasoningMessage === undefined) {\n input.push({ type: 'item_reference', id: reasoningId });\n\n // store unused reasoning message to mark id as used\n reasoningMessages[reasoningId] = {\n type: 'reasoning',\n id: reasoningId,\n summary: [],\n };\n }\n } else {\n const summaryParts: Array<{\n type: 'summary_text';\n text: string;\n }> = [];\n\n if (part.text.length > 0) {\n summaryParts.push({\n type: 'summary_text',\n text: part.text,\n });\n } else if (reasoningMessage !== undefined) {\n warnings.push({\n type: 'other',\n message: `Cannot append empty reasoning part to existing reasoning sequence. Skipping reasoning part: ${JSON.stringify(part)}.`,\n });\n }\n\n if (reasoningMessage === undefined) {\n reasoningMessages[reasoningId] = {\n type: 'reasoning',\n id: reasoningId,\n encrypted_content:\n providerOptions?.reasoningEncryptedContent,\n summary: summaryParts,\n };\n input.push(reasoningMessages[reasoningId]);\n } else {\n reasoningMessage.summary.push(...summaryParts);\n\n // updated encrypted content to enable setting it in the last summary part:\n if (providerOptions?.reasoningEncryptedContent != null) {\n reasoningMessage.encrypted_content =\n providerOptions.reasoningEncryptedContent;\n }\n }\n }\n } else {\n warnings.push({\n type: 'other',\n message: `Non-OpenAI reasoning parts are not supported. Skipping reasoning part: ${JSON.stringify(part)}.`,\n });\n }\n break;\n }\n }\n }\n\n break;\n }\n\n case 'tool': {\n for (const part of content) {\n const output = part.output;\n\n if (\n hasLocalShellTool &&\n part.toolName === 'local_shell' &&\n output.type === 'json'\n ) {\n const parsedOutput = await validateTypes({\n value: output.value,\n schema: localShellOutputSchema,\n });\n\n input.push({\n type: 'local_shell_call_output',\n call_id: part.toolCallId,\n output: parsedOutput.output,\n });\n break;\n }\n\n let contentValue: OpenAIResponsesFunctionCallOutput['output'];\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n case 'content':\n contentValue = output.value.map(item => {\n switch (item.type) {\n case 'text': {\n return { type: 'input_text' as const, text: item.text };\n }\n case 'media': {\n return item.mediaType.startsWith('image/')\n ? {\n type: 'input_image' as const,\n image_url: `data:${item.mediaType};base64,${item.data}`,\n }\n : {\n type: 'input_file' as const,\n filename: 'data',\n file_data: `data:${item.mediaType};base64,${item.data}`,\n };\n }\n }\n });\n break;\n }\n\n input.push({\n type: 'function_call_output',\n call_id: part.toolCallId,\n output: contentValue,\n });\n }\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n // when store is false, remove reasoning parts without encrypted content\n if (\n !store &&\n input.some(\n item =>\n 'type' in item &&\n item.type === 'reasoning' &&\n item.encrypted_content == null,\n )\n ) {\n warnings.push({\n type: 'other',\n message:\n 'Reasoning parts without encrypted content are not supported when store is false. Skipping reasoning parts.',\n });\n input = input.filter(\n item =>\n !('type' in item) ||\n item.type !== 'reasoning' ||\n item.encrypted_content != null,\n );\n }\n\n return { input, warnings };\n}\n\nconst openaiResponsesReasoningProviderOptionsSchema = z.object({\n itemId: z.string().nullish(),\n reasoningEncryptedContent: z.string().nullish(),\n});\n\nexport type OpenAIResponsesReasoningProviderOptions = z.infer<\n typeof openaiResponsesReasoningProviderOptionsSchema\n>;\n","import type { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIResponseFinishReason({\n finishReason,\n hasFunctionCall,\n}: {\n finishReason: string | null | undefined;\n // flag that checks if there have been client-side tool calls (not executed by openai)\n hasFunctionCall: boolean;\n}): LanguageModelV2FinishReason {\n switch (finishReason) {\n case undefined:\n case null:\n return hasFunctionCall ? 'tool-calls' : 'stop';\n case 'max_output_tokens':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n default:\n return hasFunctionCall ? 'tool-calls' : 'unknown';\n }\n}\n","import type { JSONSchema7 } from '@ai-sdk/provider';\nimport {\n type InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIResponsesInput = Array;\n\nexport type OpenAIResponsesInputItem =\n | OpenAIResponsesSystemMessage\n | OpenAIResponsesUserMessage\n | OpenAIResponsesAssistantMessage\n | OpenAIResponsesFunctionCall\n | OpenAIResponsesFunctionCallOutput\n | OpenAIResponsesComputerCall\n | OpenAIResponsesLocalShellCall\n | OpenAIResponsesLocalShellCallOutput\n | OpenAIResponsesReasoning\n | OpenAIResponsesItemReference;\n\nexport type OpenAIResponsesIncludeValue =\n | 'web_search_call.action.sources'\n | 'code_interpreter_call.outputs'\n | 'computer_call_output.output.image_url'\n | 'file_search_call.results'\n | 'message.input_image.image_url'\n | 'message.output_text.logprobs'\n | 'reasoning.encrypted_content';\n\nexport type OpenAIResponsesIncludeOptions =\n | Array\n | undefined\n | null;\n\nexport type OpenAIResponsesSystemMessage = {\n role: 'system' | 'developer';\n content: string;\n};\n\nexport type OpenAIResponsesUserMessage = {\n role: 'user';\n content: Array<\n | { type: 'input_text'; text: string }\n | { type: 'input_image'; image_url: string }\n | { type: 'input_image'; file_id: string }\n | { type: 'input_file'; file_url: string }\n | { type: 'input_file'; filename: string; file_data: string }\n | { type: 'input_file'; file_id: string }\n >;\n};\n\nexport type OpenAIResponsesAssistantMessage = {\n role: 'assistant';\n content: Array<{ type: 'output_text'; text: string }>;\n id?: string;\n phase?: 'commentary' | 'final_answer' | null;\n};\n\nexport type OpenAIResponsesFunctionCall = {\n type: 'function_call';\n call_id: string;\n name: string;\n arguments: string;\n id?: string;\n};\n\nexport type OpenAIResponsesFunctionCallOutput = {\n type: 'function_call_output';\n call_id: string;\n output:\n | string\n | Array<\n | { type: 'input_text'; text: string }\n | { type: 'input_image'; image_url: string }\n | { type: 'input_file'; filename: string; file_data: string }\n >;\n};\n\nexport type OpenAIResponsesComputerCall = {\n type: 'computer_call';\n id: string;\n status?: string;\n};\n\nexport type OpenAIResponsesLocalShellCall = {\n type: 'local_shell_call';\n id: string;\n call_id: string;\n action: {\n type: 'exec';\n command: string[];\n timeout_ms?: number;\n user?: string;\n working_directory?: string;\n env?: Record;\n };\n};\n\nexport type OpenAIResponsesLocalShellCallOutput = {\n type: 'local_shell_call_output';\n call_id: string;\n output: string;\n};\n\nexport type OpenAIResponsesItemReference = {\n type: 'item_reference';\n id: string;\n};\n\n/**\n * A filter used to compare a specified attribute key to a given value using a defined comparison operation.\n */\nexport type OpenAIResponsesFileSearchToolComparisonFilter = {\n /**\n * The key to compare against the value.\n */\n key: string;\n\n /**\n * Specifies the comparison operator: eq, ne, gt, gte, lt, lte, in, nin.\n */\n type: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'nin';\n\n /**\n * The value to compare against the attribute key; supports string, number, boolean, or array of string types.\n */\n value: string | number | boolean | string[];\n};\n\n/**\n * Combine multiple filters using and or or.\n */\nexport type OpenAIResponsesFileSearchToolCompoundFilter = {\n /**\n * Type of operation: and or or.\n */\n type: 'and' | 'or';\n\n /**\n * Array of filters to combine. Items can be ComparisonFilter or CompoundFilter.\n */\n filters: Array<\n | OpenAIResponsesFileSearchToolComparisonFilter\n | OpenAIResponsesFileSearchToolCompoundFilter\n >;\n};\n\nexport type OpenAIResponsesTool =\n | {\n type: 'function';\n name: string;\n description: string | undefined;\n parameters: JSONSchema7;\n strict: boolean | undefined;\n }\n | {\n type: 'web_search';\n external_web_access: boolean | undefined;\n filters: { allowed_domains: string[] | undefined } | undefined;\n search_context_size: 'low' | 'medium' | 'high' | undefined;\n user_location:\n | {\n type: 'approximate';\n city?: string;\n country?: string;\n region?: string;\n timezone?: string;\n }\n | undefined;\n }\n | {\n type: 'web_search_preview';\n search_context_size: 'low' | 'medium' | 'high' | undefined;\n user_location:\n | {\n type: 'approximate';\n city?: string;\n country?: string;\n region?: string;\n timezone?: string;\n }\n | undefined;\n }\n | {\n type: 'code_interpreter';\n container: string | { type: 'auto'; file_ids: string[] | undefined };\n }\n | {\n type: 'file_search';\n vector_store_ids: string[];\n max_num_results: number | undefined;\n ranking_options:\n | { ranker?: string; score_threshold?: number }\n | undefined;\n filters:\n | OpenAIResponsesFileSearchToolComparisonFilter\n | OpenAIResponsesFileSearchToolCompoundFilter\n | undefined;\n }\n | {\n type: 'image_generation';\n background: 'auto' | 'opaque' | 'transparent' | undefined;\n input_fidelity: 'low' | 'high' | undefined;\n input_image_mask:\n | {\n file_id: string | undefined;\n image_url: string | undefined;\n }\n | undefined;\n model: string | undefined;\n moderation: 'auto' | undefined;\n output_compression: number | undefined;\n output_format: 'png' | 'jpeg' | 'webp' | undefined;\n quality: 'auto' | 'low' | 'medium' | 'high' | undefined;\n size: 'auto' | '1024x1024' | '1024x1536' | '1536x1024' | undefined;\n }\n | {\n type: 'local_shell';\n };\n\nexport type OpenAIResponsesReasoning = {\n type: 'reasoning';\n id: string;\n encrypted_content?: string | null;\n summary: Array<{\n type: 'summary_text';\n text: string;\n }>;\n};\n\nexport const openaiResponsesChunkSchema = lazyValidator(() =>\n zodSchema(\n z.union([\n z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n delta: z.string(),\n logprobs: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n }),\n z.object({\n type: z.enum(['response.completed', 'response.incomplete']),\n response: z.object({\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: z.object({\n input_tokens: z.number(),\n input_tokens_details: z\n .object({ cached_tokens: z.number().nullish() })\n .nullish(),\n output_tokens: z.number(),\n output_tokens_details: z\n .object({ reasoning_tokens: z.number().nullish() })\n .nullish(),\n }),\n service_tier: z.string().nullish(),\n }),\n }),\n z.object({\n type: z.literal('response.created'),\n response: z.object({\n id: z.string(),\n created_at: z.number(),\n model: z.string(),\n service_tier: z.string().nullish(),\n }),\n }),\n z.object({\n type: z.literal('response.output_item.added'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n phase: z.enum(['commentary', 'final_answer']).nullish(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n }),\n z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n id: z.string(),\n container_id: z.string(),\n code: z.string().nullable(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n status: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('response.output_item.done'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n phase: z.enum(['commentary', 'final_answer']).nullish(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n status: z.literal('completed'),\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n id: z.string(),\n code: z.string().nullable(),\n container_id: z.string(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n result: z.string(),\n }),\n z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n action: z\n .discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().nullish(),\n sources: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('url'), url: z.string() }),\n z.object({ type: z.literal('api'), name: z.string() }),\n ]),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('open_page'),\n url: z.string().nullish(),\n }),\n z.object({\n type: z.literal('find_in_page'),\n url: z.string().nullish(),\n pattern: z.string().nullish(),\n }),\n ])\n .nullish(),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(z.string(), z.unknown()),\n file_id: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('local_shell_call'),\n id: z.string(),\n call_id: z.string(),\n action: z.object({\n type: z.literal('exec'),\n command: z.array(z.string()),\n timeout_ms: z.number().optional(),\n user: z.string().optional(),\n working_directory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.literal('completed'),\n }),\n ]),\n }),\n z.object({\n type: z.literal('response.function_call_arguments.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.image_generation_call.partial_image'),\n item_id: z.string(),\n output_index: z.number(),\n partial_image_b64: z.string(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call_code.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call_code.done'),\n item_id: z.string(),\n output_index: z.number(),\n code: z.string(),\n }),\n z.object({\n type: z.literal('response.output_text.annotation.added'),\n annotation: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n z.object({\n type: z.literal('file_citation'),\n file_id: z.string(),\n filename: z.string().nullish(),\n index: z.number().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n quote: z.string().nullish(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.added'),\n item_id: z.string(),\n summary_index: z.number(),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.delta'),\n item_id: z.string(),\n summary_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.done'),\n item_id: z.string(),\n summary_index: z.number(),\n }),\n z.object({\n type: z.literal('error'),\n sequence_number: z.number(),\n error: z.object({\n type: z.string(),\n code: z.string(),\n message: z.string(),\n param: z.string().nullish(),\n }),\n }),\n z\n .object({ type: z.string() })\n .loose()\n .transform(value => ({\n type: 'unknown_chunk' as const,\n message: value.type,\n })), // fallback for unknown chunks\n ]),\n ),\n);\n\nexport type OpenAIResponsesChunk = InferValidator<\n typeof openaiResponsesChunkSchema\n>;\n\nexport type OpenAIResponsesLogprobs = NonNullable<\n (OpenAIResponsesChunk & {\n type: 'response.output_text.delta';\n })['logprobs']\n> | null;\n\nexport type OpenAIResponsesWebSearchAction = NonNullable<\n ((OpenAIResponsesChunk & {\n type: 'response.output_item.done';\n })['item'] & {\n type: 'web_search_call';\n })['action']\n>;\n\nexport const openaiResponsesResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n id: z.string().optional(),\n created_at: z.number().optional(),\n error: z\n .object({\n message: z.string(),\n type: z.string(),\n param: z.string().nullish(),\n code: z.string(),\n })\n .nullish(),\n model: z.string().optional(),\n output: z\n .array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n role: z.literal('assistant'),\n id: z.string(),\n phase: z.enum(['commentary', 'final_answer']).nullish(),\n content: z.array(\n z.object({\n type: z.literal('output_text'),\n text: z.string(),\n logprobs: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n annotations: z.array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n z.object({\n type: z.literal('file_citation'),\n file_id: z.string(),\n filename: z.string().nullish(),\n index: z.number().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n quote: z.string().nullish(),\n }),\n z.object({\n type: z.literal('container_file_citation'),\n container_id: z.string(),\n file_id: z.string(),\n filename: z.string().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n index: z.number().nullish(),\n }),\n z.object({\n type: z.literal('file_path'),\n file_id: z.string(),\n index: z.number().nullish(),\n }),\n ]),\n ),\n }),\n ),\n }),\n z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n action: z\n .discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().nullish(),\n sources: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('url'), url: z.string() }),\n z.object({\n type: z.literal('api'),\n name: z.string(),\n }),\n ]),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('open_page'),\n url: z.string().nullish(),\n }),\n z.object({\n type: z.literal('find_in_page'),\n url: z.string().nullish(),\n pattern: z.string().nullish(),\n }),\n ])\n .nullish(),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(\n z.string(),\n z.union([z.string(), z.number(), z.boolean()]),\n ),\n file_id: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n id: z.string(),\n code: z.string().nullable(),\n container_id: z.string(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n result: z.string(),\n }),\n z.object({\n type: z.literal('local_shell_call'),\n id: z.string(),\n call_id: z.string(),\n action: z.object({\n type: z.literal('exec'),\n command: z.array(z.string()),\n timeout_ms: z.number().optional(),\n user: z.string().optional(),\n working_directory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n }),\n z.object({\n type: z.literal('function_call'),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n id: z.string(),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.string().optional(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n summary: z.array(\n z.object({\n type: z.literal('summary_text'),\n text: z.string(),\n }),\n ),\n }),\n ]),\n )\n .optional(),\n service_tier: z.string().nullish(),\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: z\n .object({\n input_tokens: z.number(),\n input_tokens_details: z\n .object({ cached_tokens: z.number().nullish() })\n .nullish(),\n output_tokens: z.number(),\n output_tokens_details: z\n .object({ reasoning_tokens: z.number().nullish() })\n .nullish(),\n })\n .optional(),\n }),\n ),\n);\n","import {\n type InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * `top_logprobs` request body argument can be set to an integer between\n * 0 and 20 specifying the number of most likely tokens to return at each\n * token position, each with an associated log probability.\n *\n * @see https://platform.openai.com/docs/api-reference/responses/create#responses_create-top_logprobs\n */\nexport const TOP_LOGPROBS_MAX = 20;\n\nexport const openaiResponsesReasoningModelIds = [\n 'o1',\n 'o1-2024-12-17',\n 'o3',\n 'o3-2025-04-16',\n 'o3-deep-research',\n 'o3-deep-research-2025-06-26',\n 'o3-mini',\n 'o3-mini-2025-01-31',\n 'o4-mini',\n 'o4-mini-2025-04-16',\n 'o4-mini-deep-research',\n 'o4-mini-deep-research-2025-06-26',\n 'codex-mini-latest',\n 'computer-use-preview',\n 'gpt-5',\n 'gpt-5-2025-08-07',\n 'gpt-5-codex',\n 'gpt-5-mini',\n 'gpt-5-mini-2025-08-07',\n 'gpt-5-nano',\n 'gpt-5-nano-2025-08-07',\n 'gpt-5-pro',\n 'gpt-5-pro-2025-10-06',\n 'gpt-5.1',\n 'gpt-5.1-chat-latest',\n 'gpt-5.1-codex-mini',\n 'gpt-5.1-codex',\n 'gpt-5.1-codex-max',\n 'gpt-5.2',\n 'gpt-5.2-chat-latest',\n 'gpt-5.2-pro',\n 'gpt-5.2-codex',\n 'gpt-5.3-chat-latest',\n 'gpt-5.3-codex',\n 'gpt-5.4',\n 'gpt-5.4-2026-03-05',\n 'gpt-5.4-mini',\n 'gpt-5.4-mini-2026-03-17',\n 'gpt-5.4-nano',\n 'gpt-5.4-nano-2026-03-17',\n 'gpt-5.4-pro',\n 'gpt-5.4-pro-2026-03-05',\n] as const;\n\nexport const openaiResponsesModelIds = [\n 'gpt-4.1',\n 'gpt-4.1-2025-04-14',\n 'gpt-4.1-mini',\n 'gpt-4.1-mini-2025-04-14',\n 'gpt-4.1-nano',\n 'gpt-4.1-nano-2025-04-14',\n 'gpt-4o',\n 'gpt-4o-2024-05-13',\n 'gpt-4o-2024-08-06',\n 'gpt-4o-2024-11-20',\n 'gpt-4o-audio-preview',\n 'gpt-4o-audio-preview-2024-10-01',\n 'gpt-4o-audio-preview-2024-12-17',\n 'gpt-4o-search-preview',\n 'gpt-4o-search-preview-2025-03-11',\n 'gpt-4o-mini-search-preview',\n 'gpt-4o-mini-search-preview-2025-03-11',\n 'gpt-4o-mini',\n 'gpt-4o-mini-2024-07-18',\n 'gpt-4-turbo',\n 'gpt-4-turbo-2024-04-09',\n 'gpt-4-turbo-preview',\n 'gpt-4-0125-preview',\n 'gpt-4-1106-preview',\n 'gpt-4',\n 'gpt-4-0613',\n 'gpt-4.5-preview',\n 'gpt-4.5-preview-2025-02-27',\n 'gpt-3.5-turbo-0125',\n 'gpt-3.5-turbo',\n 'gpt-3.5-turbo-1106',\n 'chatgpt-4o-latest',\n 'gpt-5-chat-latest',\n ...openaiResponsesReasoningModelIds,\n] as const;\n\nexport type OpenAIResponsesModelId =\n | 'chatgpt-4o-latest'\n | 'gpt-3.5-turbo-0125'\n | 'gpt-3.5-turbo-1106'\n | 'gpt-3.5-turbo'\n | 'gpt-4-0613'\n | 'gpt-4-turbo-2024-04-09'\n | 'gpt-4-turbo'\n | 'gpt-4.1-2025-04-14'\n | 'gpt-4.1-mini-2025-04-14'\n | 'gpt-4.1-mini'\n | 'gpt-4.1-nano-2025-04-14'\n | 'gpt-4.1-nano'\n | 'gpt-4.1'\n | 'gpt-4'\n | 'gpt-4o-2024-05-13'\n | 'gpt-4o-2024-08-06'\n | 'gpt-4o-2024-11-20'\n | 'gpt-4o-mini-2024-07-18'\n | 'gpt-4o-mini'\n | 'gpt-4o'\n | 'gpt-5.1'\n | 'gpt-5.1-chat-latest'\n | 'gpt-5.1-codex-mini'\n | 'gpt-5.1-codex'\n | 'gpt-5.1-codex-max'\n | 'gpt-5.2'\n | 'gpt-5.2-chat-latest'\n | 'gpt-5.2-pro'\n | 'gpt-5.2-codex'\n | 'gpt-5.3-chat-latest'\n | 'gpt-5.3-codex'\n | 'gpt-5.4'\n | 'gpt-5.4-2026-03-05'\n | 'gpt-5.4-mini'\n | 'gpt-5.4-mini-2026-03-17'\n | 'gpt-5.4-nano'\n | 'gpt-5.4-nano-2026-03-17'\n | 'gpt-5.4-pro'\n | 'gpt-5.4-pro-2026-03-05'\n | 'gpt-5-2025-08-07'\n | 'gpt-5-chat-latest'\n | 'gpt-5-codex'\n | 'gpt-5-mini-2025-08-07'\n | 'gpt-5-mini'\n | 'gpt-5-nano-2025-08-07'\n | 'gpt-5-nano'\n | 'gpt-5-pro-2025-10-06'\n | 'gpt-5-pro'\n | 'gpt-5'\n | 'o1-2024-12-17'\n | 'o1'\n | 'o3-2025-04-16'\n | 'o3-mini-2025-01-31'\n | 'o3-mini'\n | 'o3'\n | (string & {});\n\n// TODO AI SDK 6: use optional here instead of nullish\nexport const openaiResponsesProviderOptionsSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n conversation: z.string().nullish(),\n include: z\n .array(\n z.enum([\n 'reasoning.encrypted_content', // handled internally by default, only needed for unknown reasoning models\n 'file_search_call.results',\n 'message.output_text.logprobs',\n ]),\n )\n .nullish(),\n instructions: z.string().nullish(),\n\n /**\n * Return the log probabilities of the tokens.\n *\n * Setting to true will return the log probabilities of the tokens that\n * were generated.\n *\n * Setting to a number will return the log probabilities of the top n\n * tokens that were generated.\n *\n * @see https://platform.openai.com/docs/api-reference/responses/create\n * @see https://cookbook.openai.com/examples/using_logprobs\n */\n logprobs: z\n .union([z.boolean(), z.number().min(1).max(TOP_LOGPROBS_MAX)])\n .optional(),\n\n /**\n * The maximum number of total calls to built-in tools that can be processed in a response.\n * This maximum number applies across all built-in tool calls, not per individual tool.\n * Any further attempts to call a tool by the model will be ignored.\n */\n maxToolCalls: z.number().nullish(),\n\n metadata: z.any().nullish(),\n parallelToolCalls: z.boolean().nullish(),\n previousResponseId: z.string().nullish(),\n promptCacheKey: z.string().nullish(),\n\n /**\n * The retention policy for the prompt cache.\n * - 'in_memory': Default. Standard prompt caching behavior.\n * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n * Currently only available for 5.1 series models.\n *\n * @default 'in_memory'\n */\n promptCacheRetention: z.enum(['in_memory', '24h']).nullish(),\n\n /**\n * Reasoning effort for reasoning models. Defaults to `medium`. If you use\n * `providerOptions` to set the `reasoningEffort` option, this model setting will be ignored.\n * Valid values: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh'\n *\n * The 'none' type for `reasoningEffort` is only available for OpenAI's GPT-5.1\n * models. Also, the 'xhigh' type for `reasoningEffort` is only available for\n * OpenAI's GPT-5.1-Codex-Max model. Setting `reasoningEffort` to 'none' or 'xhigh' with unsupported models will result in\n * an error.\n */\n reasoningEffort: z.string().nullish(),\n reasoningSummary: z.string().nullish(),\n safetyIdentifier: z.string().nullish(),\n serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).nullish(),\n store: z.boolean().nullish(),\n strictJsonSchema: z.boolean().nullish(),\n textVerbosity: z.enum(['low', 'medium', 'high']).nullish(),\n truncation: z.enum(['auto', 'disabled']).nullish(),\n user: z.string().nullish(),\n }),\n ),\n);\n\nexport type OpenAIResponsesProviderOptions = InferValidator<\n typeof openaiResponsesProviderOptionsSchema\n>;\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const codeInterpreterInputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n code: z.string().nullish(),\n containerId: z.string(),\n }),\n ),\n);\n\nexport const codeInterpreterOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullish(),\n }),\n ),\n);\n\nexport const codeInterpreterArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n container: z\n .union([\n z.string(),\n z.object({\n fileIds: z.array(z.string()).optional(),\n }),\n ])\n .optional(),\n }),\n ),\n);\n\ntype CodeInterpreterArgs = {\n /**\n * The code interpreter container.\n * Can be a container ID\n * or an object that specifies uploaded file IDs to make available to your code.\n */\n container?: string | { fileIds?: string[] };\n};\n\nexport const codeInterpreterToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema<\n {\n /**\n * The code to run, or null if not available.\n */\n code?: string | null;\n\n /**\n * The ID of the container used to run the code.\n */\n containerId: string;\n },\n {\n /**\n * The outputs generated by the code interpreter, such as logs or images.\n * Can be null if no outputs are available.\n */\n outputs?: Array<\n | {\n type: 'logs';\n\n /**\n * The logs output from the code interpreter.\n */\n logs: string;\n }\n | {\n type: 'image';\n\n /**\n * The URL of the image output from the code interpreter.\n */\n url: string;\n }\n > | null;\n },\n CodeInterpreterArgs\n >({\n id: 'openai.code_interpreter',\n name: 'code_interpreter',\n inputSchema: codeInterpreterInputSchema,\n outputSchema: codeInterpreterOutputSchema,\n });\n\nexport const codeInterpreter = (\n args: CodeInterpreterArgs = {}, // default\n) => {\n return codeInterpreterToolFactory(args);\n};\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type {\n OpenAIResponsesFileSearchToolComparisonFilter,\n OpenAIResponsesFileSearchToolCompoundFilter,\n} from '../responses/openai-responses-api';\n\nconst comparisonFilterSchema = z.object({\n key: z.string(),\n type: z.enum(['eq', 'ne', 'gt', 'gte', 'lt', 'lte', 'in', 'nin']),\n value: z.union([z.string(), z.number(), z.boolean(), z.array(z.string())]),\n});\n\nconst compoundFilterSchema: z.ZodType = z.object({\n type: z.enum(['and', 'or']),\n filters: z.array(\n z.union([comparisonFilterSchema, z.lazy(() => compoundFilterSchema)]),\n ),\n});\n\nexport const fileSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n vectorStoreIds: z.array(z.string()),\n maxNumResults: z.number().optional(),\n ranking: z\n .object({\n ranker: z.string().optional(),\n scoreThreshold: z.number().optional(),\n })\n .optional(),\n filters: z\n .union([comparisonFilterSchema, compoundFilterSchema])\n .optional(),\n }),\n ),\n);\n\nexport const fileSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(z.string(), z.unknown()),\n fileId: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullable(),\n }),\n ),\n);\n\nexport const fileSearch = createProviderDefinedToolFactoryWithOutputSchema<\n {},\n {\n /**\n * The search query to execute.\n */\n queries: string[];\n\n /**\n * The results of the file search tool call.\n */\n results:\n | null\n | {\n /**\n * Set of 16 key-value pairs that can be attached to an object.\n * This can be useful for storing additional information about the object\n * in a structured format, and querying for objects via API or the dashboard.\n * Keys are strings with a maximum length of 64 characters.\n * Values are strings with a maximum length of 512 characters, booleans, or numbers.\n */\n attributes: Record;\n\n /**\n * The unique ID of the file.\n */\n fileId: string;\n\n /**\n * The name of the file.\n */\n filename: string;\n\n /**\n * The relevance score of the file - a value between 0 and 1.\n */\n score: number;\n\n /**\n * The text that was retrieved from the file.\n */\n text: string;\n }[];\n },\n {\n /**\n * List of vector store IDs to search through.\n */\n vectorStoreIds: string[];\n\n /**\n * Maximum number of search results to return. Defaults to 10.\n */\n maxNumResults?: number;\n\n /**\n * Ranking options for the search.\n */\n ranking?: {\n /**\n * The ranker to use for the file search.\n */\n ranker?: string;\n\n /**\n * The score threshold for the file search, a number between 0 and 1.\n * Numbers closer to 1 will attempt to return only the most relevant results,\n * but may return fewer results.\n */\n scoreThreshold?: number;\n };\n\n /**\n * A filter to apply.\n */\n filters?:\n | OpenAIResponsesFileSearchToolComparisonFilter\n | OpenAIResponsesFileSearchToolCompoundFilter;\n }\n>({\n id: 'openai.file_search',\n name: 'file_search',\n inputSchema: z.object({}),\n outputSchema: fileSearchOutputSchema,\n});\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n externalWebAccess: z.boolean().optional(),\n filters: z\n .object({ allowedDomains: z.array(z.string()).optional() })\n .optional(),\n searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n userLocation: z\n .object({\n type: z.literal('approximate'),\n country: z.string().optional(),\n city: z.string().optional(),\n region: z.string().optional(),\n timezone: z.string().optional(),\n })\n .optional(),\n }),\n ),\n);\n\nconst webSearchInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const webSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z\n .discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().optional(),\n }),\n z.object({\n type: z.literal('openPage'),\n url: z.string().nullish(),\n }),\n z.object({\n type: z.literal('findInPage'),\n url: z.string().nullish(),\n pattern: z.string().nullish(),\n }),\n ])\n .optional(),\n sources: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('url'), url: z.string() }),\n z.object({ type: z.literal('api'), name: z.string() }),\n ]),\n )\n .optional(),\n }),\n ),\n);\n\nexport const webSearchToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema<\n {\n // Web search doesn't take input parameters - it's controlled by the prompt\n },\n {\n /**\n * An object describing the specific action taken in this web search call.\n * Includes details on how the model used the web (search, open_page, findInPage).\n */\n action?:\n | {\n /**\n * Action type \"search\" - Performs a web search query.\n */\n type: 'search';\n\n /**\n * The search query.\n */\n query?: string;\n }\n | {\n /**\n * Action type \"openPage\" - Opens a specific URL from search results.\n */\n type: 'openPage';\n\n /**\n * The URL opened by the model.\n */\n url?: string | null;\n }\n | {\n /**\n * Action type \"findInPage\": Searches for a pattern within a loaded page.\n */\n type: 'findInPage';\n\n /**\n * The URL of the page searched for the pattern.\n */\n url?: string | null;\n\n /**\n * The pattern or text to search for within the page.\n */\n pattern?: string | null;\n };\n\n /**\n * Optional sources cited by the model for the web search call.\n */\n sources?: Array<\n { type: 'url'; url: string } | { type: 'api'; name: string }\n >;\n },\n {\n /**\n * Whether to use external web access for fetching live content.\n * - true: Fetch live web content (default)\n * - false: Use cached/indexed results\n */\n externalWebAccess?: boolean;\n\n /**\n * Filters for the search.\n */\n filters?: {\n /**\n * Allowed domains for the search.\n * If not provided, all domains are allowed.\n * Subdomains of the provided domains are allowed as well.\n */\n allowedDomains?: string[];\n };\n\n /**\n * Search context size to use for the web search.\n * - high: Most comprehensive context, highest cost, slower response\n * - medium: Balanced context, cost, and latency (default)\n * - low: Least context, lowest cost, fastest response\n */\n searchContextSize?: 'low' | 'medium' | 'high';\n\n /**\n * User location information to provide geographically relevant search results.\n */\n userLocation?: {\n /**\n * Type of location (always 'approximate')\n */\n type: 'approximate';\n /**\n * Two-letter ISO country code (e.g., 'US', 'GB')\n */\n country?: string;\n /**\n * City name (free text, e.g., 'Minneapolis')\n */\n city?: string;\n /**\n * Region name (free text, e.g., 'Minnesota')\n */\n region?: string;\n /**\n * IANA timezone (e.g., 'America/Chicago')\n */\n timezone?: string;\n };\n }\n >({\n id: 'openai.web_search',\n name: 'web_search',\n inputSchema: webSearchInputSchema,\n outputSchema: webSearchOutputSchema,\n });\n\nexport const webSearch = (\n args: Parameters[0] = {}, // default\n) => webSearchToolFactory(args);\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchPreviewArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n userLocation: z\n .object({\n type: z.literal('approximate'),\n country: z.string().optional(),\n city: z.string().optional(),\n region: z.string().optional(),\n timezone: z.string().optional(),\n })\n .optional(),\n }),\n ),\n);\n\nexport const webSearchPreviewInputSchema = lazySchema(() =>\n zodSchema(z.object({})),\n);\n\nconst webSearchPreviewOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z\n .discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().optional(),\n }),\n z.object({\n type: z.literal('openPage'),\n url: z.string().nullish(),\n }),\n z.object({\n type: z.literal('findInPage'),\n url: z.string().nullish(),\n pattern: z.string().nullish(),\n }),\n ])\n .optional(),\n }),\n ),\n);\n\nexport const webSearchPreview =\n createProviderDefinedToolFactoryWithOutputSchema<\n {\n // Web search preview doesn't take input parameters - it's controlled by the prompt\n },\n {\n /**\n * An object describing the specific action taken in this web search call.\n * Includes details on how the model used the web (search, open_page, findInPage).\n */\n action?:\n | {\n /**\n * Action type \"search\" - Performs a web search query.\n */\n type: 'search';\n\n /**\n * The search query.\n */\n query?: string;\n }\n | {\n /**\n * Action type \"openPage\" - Opens a specific URL from search results.\n */\n type: 'openPage';\n\n /**\n * The URL opened by the model.\n */\n url?: string | null;\n }\n | {\n /**\n * Action type \"findInPage\": Searches for a pattern within a loaded page.\n */\n type: 'findInPage';\n\n /**\n * The URL of the page searched for the pattern.\n */\n url?: string | null;\n /**\n * The pattern or text to search for within the page.\n */\n pattern?: string | null;\n };\n },\n {\n /**\n * Search context size to use for the web search.\n * - high: Most comprehensive context, highest cost, slower response\n * - medium: Balanced context, cost, and latency (default)\n * - low: Least context, lowest cost, fastest response\n */\n searchContextSize?: 'low' | 'medium' | 'high';\n\n /**\n * User location information to provide geographically relevant search results.\n */\n userLocation?: {\n /**\n * Type of location (always 'approximate')\n */\n type: 'approximate';\n /**\n * Two-letter ISO country code (e.g., 'US', 'GB')\n */\n country?: string;\n /**\n * City name (free text, e.g., 'Minneapolis')\n */\n city?: string;\n /**\n * Region name (free text, e.g., 'Minnesota')\n */\n region?: string;\n /**\n * IANA timezone (e.g., 'America/Chicago')\n */\n timezone?: string;\n };\n }\n >({\n id: 'openai.web_search_preview',\n name: 'web_search_preview',\n inputSchema: webSearchPreviewInputSchema,\n outputSchema: webSearchPreviewOutputSchema,\n });\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const imageGenerationArgsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n background: z.enum(['auto', 'opaque', 'transparent']).optional(),\n inputFidelity: z.enum(['low', 'high']).optional(),\n inputImageMask: z\n .object({\n fileId: z.string().optional(),\n imageUrl: z.string().optional(),\n })\n .optional(),\n model: z.string().optional(),\n moderation: z.enum(['auto']).optional(),\n outputCompression: z.number().int().min(0).max(100).optional(),\n outputFormat: z.enum(['png', 'jpeg', 'webp']).optional(),\n partialImages: z.number().int().min(0).max(3).optional(),\n quality: z.enum(['auto', 'low', 'medium', 'high']).optional(),\n size: z\n .enum(['1024x1024', '1024x1536', '1536x1024', 'auto'])\n .optional(),\n })\n .strict(),\n ),\n);\n\nconst imageGenerationInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const imageGenerationOutputSchema = lazySchema(() =>\n zodSchema(z.object({ result: z.string() })),\n);\n\ntype ImageGenerationArgs = {\n /**\n * Background type for the generated image. Default is 'auto'.\n */\n background?: 'auto' | 'opaque' | 'transparent';\n\n /**\n * Input fidelity for the generated image. Default is 'low'.\n */\n inputFidelity?: 'low' | 'high';\n\n /**\n * Optional mask for inpainting.\n * Contains image_url (string, optional) and file_id (string, optional).\n */\n inputImageMask?: {\n /**\n * File ID for the mask image.\n */\n fileId?: string;\n\n /**\n * Base64-encoded mask image.\n */\n imageUrl?: string;\n };\n\n /**\n * The image generation model to use. Default: gpt-image-1.\n */\n model?: string;\n\n /**\n * Moderation level for the generated image. Default: auto.\n */\n moderation?: 'auto';\n\n /**\n * Compression level for the output image. Default: 100.\n */\n outputCompression?: number;\n\n /**\n * The output format of the generated image. One of png, webp, or jpeg.\n * Default: png\n */\n outputFormat?: 'png' | 'jpeg' | 'webp';\n\n /**\n * The quality of the generated image.\n * One of low, medium, high, or auto. Default: auto.\n */\n quality?: 'auto' | 'low' | 'medium' | 'high';\n\n /**\n * The size of the generated image.\n * One of 1024x1024, 1024x1536, 1536x1024, or auto.\n * Default: auto.\n */\n size?: 'auto' | '1024x1024' | '1024x1536' | '1536x1024';\n};\n\nconst imageGenerationToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema<\n {},\n {\n /**\n * The generated image encoded in base64.\n */\n result: string;\n },\n ImageGenerationArgs\n >({\n id: 'openai.image_generation',\n name: 'image_generation',\n inputSchema: imageGenerationInputSchema,\n outputSchema: imageGenerationOutputSchema,\n });\n\nexport const imageGeneration = (\n args: ImageGenerationArgs = {}, // default\n) => {\n return imageGenerationToolFactory(args);\n};\n","import {\n type LanguageModelV2CallOptions,\n type LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { codeInterpreterArgsSchema } from '../tool/code-interpreter';\nimport { fileSearchArgsSchema } from '../tool/file-search';\nimport { webSearchArgsSchema } from '../tool/web-search';\nimport { webSearchPreviewArgsSchema } from '../tool/web-search-preview';\nimport { imageGenerationArgsSchema } from '../tool/image-generation';\nimport type { OpenAIResponsesTool } from './openai-responses-api';\nimport { validateTypes } from '@ai-sdk/provider-utils';\n\nexport async function prepareResponsesTools({\n tools,\n toolChoice,\n strictJsonSchema,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n strictJsonSchema: boolean;\n}): Promise<{\n tools?: Array;\n toolChoice?:\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'file_search' }\n | { type: 'web_search_preview' }\n | { type: 'web_search' }\n | { type: 'function'; name: string }\n | { type: 'code_interpreter' }\n | { type: 'image_generation' };\n toolWarnings: LanguageModelV2CallWarning[];\n}> {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const openaiTools: Array = [];\n\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n openaiTools.push({\n type: 'function',\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n strict: strictJsonSchema,\n });\n break;\n case 'provider-defined': {\n switch (tool.id) {\n case 'openai.file_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: fileSearchArgsSchema,\n });\n\n openaiTools.push({\n type: 'file_search',\n vector_store_ids: args.vectorStoreIds,\n max_num_results: args.maxNumResults,\n ranking_options: args.ranking\n ? {\n ranker: args.ranking.ranker,\n score_threshold: args.ranking.scoreThreshold,\n }\n : undefined,\n filters: args.filters,\n });\n\n break;\n }\n case 'openai.local_shell': {\n openaiTools.push({\n type: 'local_shell',\n });\n break;\n }\n case 'openai.web_search_preview': {\n const args = await validateTypes({\n value: tool.args,\n schema: webSearchPreviewArgsSchema,\n });\n openaiTools.push({\n type: 'web_search_preview',\n search_context_size: args.searchContextSize,\n user_location: args.userLocation,\n });\n break;\n }\n case 'openai.web_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: webSearchArgsSchema,\n });\n openaiTools.push({\n type: 'web_search',\n filters:\n args.filters != null\n ? { allowed_domains: args.filters.allowedDomains }\n : undefined,\n external_web_access: args.externalWebAccess,\n search_context_size: args.searchContextSize,\n user_location: args.userLocation,\n });\n break;\n }\n case 'openai.code_interpreter': {\n const args = await validateTypes({\n value: tool.args,\n schema: codeInterpreterArgsSchema,\n });\n\n openaiTools.push({\n type: 'code_interpreter',\n container:\n args.container == null\n ? { type: 'auto', file_ids: undefined }\n : typeof args.container === 'string'\n ? args.container\n : { type: 'auto', file_ids: args.container.fileIds },\n });\n break;\n }\n case 'openai.image_generation': {\n const args = await validateTypes({\n value: tool.args,\n schema: imageGenerationArgsSchema,\n });\n\n openaiTools.push({\n type: 'image_generation',\n background: args.background,\n input_fidelity: args.inputFidelity,\n input_image_mask: args.inputImageMask\n ? {\n file_id: args.inputImageMask.fileId,\n image_url: args.inputImageMask.imageUrl,\n }\n : undefined,\n model: args.model,\n size: args.size,\n quality: args.quality,\n moderation: args.moderation,\n output_format: args.outputFormat,\n output_compression: args.outputCompression,\n });\n break;\n }\n }\n break;\n }\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n case 'required':\n return { tools: openaiTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: openaiTools,\n toolChoice:\n toolChoice.toolName === 'code_interpreter' ||\n toolChoice.toolName === 'file_search' ||\n toolChoice.toolName === 'image_generation' ||\n toolChoice.toolName === 'web_search_preview' ||\n toolChoice.toolName === 'web_search'\n ? { type: toolChoice.toolName }\n : { type: 'function', name: toolChoice.toolName },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n type LanguageModelV2,\n type LanguageModelV2CallWarning,\n type LanguageModelV2Content,\n type LanguageModelV2FinishReason,\n type LanguageModelV2ProviderDefinedTool,\n type LanguageModelV2StreamPart,\n type LanguageModelV2Usage,\n type SharedV2ProviderMetadata,\n APICallError,\n} from '@ai-sdk/provider';\nimport {\n type InferValidator,\n type ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport type { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport type {\n codeInterpreterInputSchema,\n codeInterpreterOutputSchema,\n} from '../tool/code-interpreter';\nimport type { fileSearchOutputSchema } from '../tool/file-search';\nimport type { imageGenerationOutputSchema } from '../tool/image-generation';\nimport type { localShellInputSchema } from '../tool/local-shell';\nimport type { webSearchOutputSchema } from '../tool/web-search';\nimport { convertToOpenAIResponsesInput } from './convert-to-openai-responses-input';\nimport { mapOpenAIResponseFinishReason } from './map-openai-responses-finish-reason';\nimport {\n type OpenAIResponsesChunk,\n type OpenAIResponsesIncludeOptions,\n type OpenAIResponsesIncludeValue,\n type OpenAIResponsesLogprobs,\n type OpenAIResponsesWebSearchAction,\n openaiResponsesChunkSchema,\n openaiResponsesResponseSchema,\n} from './openai-responses-api';\nimport {\n type OpenAIResponsesModelId,\n openaiResponsesProviderOptionsSchema,\n TOP_LOGPROBS_MAX,\n} from './openai-responses-options';\nimport { prepareResponsesTools } from './openai-responses-prepare-tools';\nimport { getOpenAILanguageModelCapabilities } from '../openai-language-model-capabilities';\n\nexport class OpenAIResponsesLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAIResponsesModelId;\n\n private readonly config: OpenAIConfig;\n\n constructor(modelId: OpenAIResponsesModelId, config: OpenAIConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n readonly supportedUrls: Record = {\n 'image/*': [/^https?:\\/\\/.*$/],\n 'application/pdf': [/^https?:\\/\\/.*$/],\n };\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n maxOutputTokens,\n temperature,\n stopSequences,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n prompt,\n providerOptions,\n tools,\n toolChoice,\n responseFormat,\n }: Parameters[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n const modelCapabilities = getOpenAILanguageModelCapabilities(this.modelId);\n\n if (topK != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'stopSequences' });\n }\n\n const openaiOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiResponsesProviderOptionsSchema,\n });\n\n if (openaiOptions?.conversation && openaiOptions?.previousResponseId) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'conversation',\n details: 'conversation and previousResponseId cannot be used together',\n });\n }\n\n const { input, warnings: inputWarnings } =\n await convertToOpenAIResponsesInput({\n prompt,\n systemMessageMode: modelCapabilities.systemMessageMode,\n fileIdPrefixes: this.config.fileIdPrefixes,\n store: openaiOptions?.store ?? true,\n hasLocalShellTool: hasOpenAITool('openai.local_shell'),\n });\n\n warnings.push(...inputWarnings);\n\n const strictJsonSchema = openaiOptions?.strictJsonSchema ?? false;\n\n let include: OpenAIResponsesIncludeOptions = openaiOptions?.include;\n\n function addInclude(key: OpenAIResponsesIncludeValue) {\n if (include == null) {\n include = [key];\n } else if (!include.includes(key)) {\n include = [...include, key];\n }\n }\n\n function hasOpenAITool(id: string) {\n return (\n tools?.find(\n tool => tool.type === 'provider-defined' && tool.id === id,\n ) != null\n );\n }\n\n // when logprobs are requested, automatically include them:\n const topLogprobs =\n typeof openaiOptions?.logprobs === 'number'\n ? openaiOptions?.logprobs\n : openaiOptions?.logprobs === true\n ? TOP_LOGPROBS_MAX\n : undefined;\n\n if (topLogprobs) {\n addInclude('message.output_text.logprobs');\n }\n\n // when a web search tool is present, automatically include the sources:\n const webSearchToolName = (\n tools?.find(\n tool =>\n tool.type === 'provider-defined' &&\n (tool.id === 'openai.web_search' ||\n tool.id === 'openai.web_search_preview'),\n ) as LanguageModelV2ProviderDefinedTool | undefined\n )?.name;\n\n if (webSearchToolName) {\n addInclude('web_search_call.action.sources');\n }\n\n // when a code interpreter tool is present, automatically include the outputs:\n if (hasOpenAITool('openai.code_interpreter')) {\n addInclude('code_interpreter_call.outputs');\n }\n\n const store = openaiOptions?.store;\n\n // store defaults to true in the OpenAI responses API, so check for false exactly:\n if (store === false && modelCapabilities.isReasoningModel) {\n addInclude('reasoning.encrypted_content');\n }\n\n const baseArgs = {\n model: this.modelId,\n input,\n temperature,\n top_p: topP,\n max_output_tokens: maxOutputTokens,\n\n ...((responseFormat?.type === 'json' || openaiOptions?.textVerbosity) && {\n text: {\n ...(responseFormat?.type === 'json' && {\n format:\n responseFormat.schema != null\n ? {\n type: 'json_schema',\n strict: strictJsonSchema,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n schema: responseFormat.schema,\n }\n : { type: 'json_object' },\n }),\n ...(openaiOptions?.textVerbosity && {\n verbosity: openaiOptions.textVerbosity,\n }),\n },\n }),\n\n // provider options:\n conversation: openaiOptions?.conversation,\n max_tool_calls: openaiOptions?.maxToolCalls,\n metadata: openaiOptions?.metadata,\n parallel_tool_calls: openaiOptions?.parallelToolCalls,\n previous_response_id: openaiOptions?.previousResponseId,\n store,\n user: openaiOptions?.user,\n instructions: openaiOptions?.instructions,\n service_tier: openaiOptions?.serviceTier,\n include,\n prompt_cache_key: openaiOptions?.promptCacheKey,\n prompt_cache_retention: openaiOptions?.promptCacheRetention,\n safety_identifier: openaiOptions?.safetyIdentifier,\n top_logprobs: topLogprobs,\n truncation: openaiOptions?.truncation,\n\n // model-specific settings:\n ...(modelCapabilities.isReasoningModel &&\n (openaiOptions?.reasoningEffort != null ||\n openaiOptions?.reasoningSummary != null) && {\n reasoning: {\n ...(openaiOptions?.reasoningEffort != null && {\n effort: openaiOptions.reasoningEffort,\n }),\n ...(openaiOptions?.reasoningSummary != null && {\n summary: openaiOptions.reasoningSummary,\n }),\n },\n }),\n };\n\n // remove unsupported settings for reasoning models\n // see https://platform.openai.com/docs/guides/reasoning#limitations\n if (modelCapabilities.isReasoningModel) {\n // when reasoning effort is none, gpt-5.1 models allow temperature, topP, logprobs\n // https://platform.openai.com/docs/guides/latest-model#gpt-5-1-parameter-compatibility\n if (\n !(\n openaiOptions?.reasoningEffort === 'none' &&\n modelCapabilities.supportsNonReasoningParameters\n )\n ) {\n if (baseArgs.temperature != null) {\n baseArgs.temperature = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details: 'temperature is not supported for reasoning models',\n });\n }\n\n if (baseArgs.top_p != null) {\n baseArgs.top_p = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topP',\n details: 'topP is not supported for reasoning models',\n });\n }\n }\n } else {\n if (openaiOptions?.reasoningEffort != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'reasoningEffort',\n details: 'reasoningEffort is not supported for non-reasoning models',\n });\n }\n\n if (openaiOptions?.reasoningSummary != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'reasoningSummary',\n details: 'reasoningSummary is not supported for non-reasoning models',\n });\n }\n }\n\n // Validate flex processing support\n if (\n openaiOptions?.serviceTier === 'flex' &&\n !modelCapabilities.supportsFlexProcessing\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'flex processing is only available for o3, o4-mini, and gpt-5 models',\n });\n // Remove from args if not supported\n delete (baseArgs as any).service_tier;\n }\n\n // Validate priority processing support\n if (\n openaiOptions?.serviceTier === 'priority' &&\n !modelCapabilities.supportsPriorityProcessing\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported',\n });\n // Remove from args if not supported\n delete (baseArgs as any).service_tier;\n }\n\n const {\n tools: openaiTools,\n toolChoice: openaiToolChoice,\n toolWarnings,\n } = await prepareResponsesTools({\n tools,\n toolChoice,\n strictJsonSchema,\n });\n\n return {\n webSearchToolName,\n args: {\n ...baseArgs,\n tools: openaiTools,\n tool_choice: openaiToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n store,\n };\n }\n\n async doGenerate(\n options: Parameters[0],\n ): Promise>> {\n const {\n args: body,\n warnings,\n webSearchToolName,\n } = await this.getArgs(options);\n const url = this.config.url({\n path: '/responses',\n modelId: this.modelId,\n });\n\n const providerKey = this.config.provider.replace('.responses', ''); // can be 'openai' or 'azure'. provider is 'openai.responses' or 'azure.responses'.\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiResponsesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if (response.error) {\n throw new APICallError({\n message: response.error.message,\n url,\n requestBodyValues: body,\n statusCode: 400,\n responseHeaders,\n responseBody: rawResponse as string,\n isRetryable: false,\n });\n }\n\n const content: Array = [];\n const logprobs: Array = [];\n\n // flag that checks if there have been client-side tool calls (not executed by openai)\n let hasFunctionCall = false;\n\n // map response content to content array (defined when there is no error)\n for (const part of response.output!) {\n switch (part.type) {\n case 'reasoning': {\n // when there are no summary parts, we need to add an empty reasoning part:\n if (part.summary.length === 0) {\n part.summary.push({ type: 'summary_text', text: '' });\n }\n\n for (const summary of part.summary) {\n content.push({\n type: 'reasoning' as const,\n text: summary.text,\n providerMetadata: {\n [providerKey]: {\n itemId: part.id,\n reasoningEncryptedContent: part.encrypted_content ?? null,\n },\n },\n });\n }\n break;\n }\n\n case 'image_generation_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'image_generation',\n input: '{}',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'image_generation',\n result: {\n result: part.result,\n } satisfies InferValidator,\n providerExecuted: true,\n });\n\n break;\n }\n\n case 'local_shell_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: 'local_shell',\n input: JSON.stringify({\n action: part.action,\n } satisfies InferValidator),\n providerMetadata: {\n [providerKey]: {\n itemId: part.id,\n },\n },\n });\n\n break;\n }\n\n case 'message': {\n for (const contentPart of part.content) {\n if (\n options.providerOptions?.openai?.logprobs &&\n contentPart.logprobs\n ) {\n logprobs.push(contentPart.logprobs);\n }\n\n content.push({\n type: 'text',\n text: contentPart.text,\n providerMetadata: {\n [providerKey]: {\n itemId: part.id,\n ...(part.phase != null && { phase: part.phase }),\n },\n },\n });\n\n for (const annotation of contentPart.annotations) {\n if (annotation.type === 'url_citation') {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId?.() ?? generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n } else if (annotation.type === 'file_citation') {\n content.push({\n type: 'source',\n sourceType: 'document',\n id: this.config.generateId?.() ?? generateId(),\n mediaType: 'text/plain',\n title: annotation.quote ?? annotation.filename ?? 'Document',\n filename: annotation.filename ?? annotation.file_id,\n ...(annotation.file_id\n ? {\n providerMetadata: {\n [providerKey]: {\n fileId: annotation.file_id,\n },\n },\n }\n : {}),\n });\n } else if (annotation.type === 'container_file_citation') {\n content.push({\n type: 'source',\n sourceType: 'document',\n id: this.config.generateId?.() ?? generateId(),\n mediaType: 'text/plain',\n title:\n annotation.filename ?? annotation.file_id ?? 'Document',\n filename: annotation.filename ?? annotation.file_id,\n providerMetadata: {\n [providerKey]: {\n fileId: annotation.file_id,\n containerId: annotation.container_id,\n ...(annotation.index != null\n ? { index: annotation.index }\n : {}),\n },\n },\n });\n } else if (annotation.type === 'file_path') {\n content.push({\n type: 'source',\n sourceType: 'document',\n id: this.config.generateId?.() ?? generateId(),\n mediaType: 'application/octet-stream',\n title: annotation.file_id,\n filename: annotation.file_id,\n providerMetadata: {\n [providerKey]: {\n fileId: annotation.file_id,\n ...(annotation.index != null\n ? { index: annotation.index }\n : {}),\n },\n },\n });\n }\n }\n }\n\n break;\n }\n\n case 'function_call': {\n hasFunctionCall = true;\n\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n providerMetadata: {\n [providerKey]: {\n itemId: part.id,\n },\n },\n });\n break;\n }\n\n case 'web_search_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: webSearchToolName ?? 'web_search',\n input: JSON.stringify({}),\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: webSearchToolName ?? 'web_search',\n result: mapWebSearchOutput(part.action),\n providerExecuted: true,\n });\n\n break;\n }\n\n case 'computer_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'computer_use',\n input: '',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'computer_use',\n result: {\n type: 'computer_use_tool_result',\n status: part.status || 'completed',\n },\n providerExecuted: true,\n });\n break;\n }\n\n case 'file_search_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'file_search',\n input: '{}',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'file_search',\n result: {\n queries: part.queries,\n results:\n part.results?.map(result => ({\n attributes: result.attributes,\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n } satisfies InferValidator,\n providerExecuted: true,\n });\n break;\n }\n\n case 'code_interpreter_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'code_interpreter',\n input: JSON.stringify({\n code: part.code,\n containerId: part.container_id,\n } satisfies InferValidator),\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'code_interpreter',\n result: {\n outputs: part.outputs,\n } satisfies InferValidator,\n providerExecuted: true,\n });\n break;\n }\n }\n }\n\n const providerMetadata: SharedV2ProviderMetadata = {\n [providerKey]: {\n ...(response.id != null ? { responseId: response.id } : {}),\n },\n };\n\n if (logprobs.length > 0) {\n providerMetadata[providerKey].logprobs = logprobs;\n }\n\n if (typeof response.service_tier === 'string') {\n providerMetadata[providerKey].serviceTier = response.service_tier;\n }\n\n const usage = response.usage!; // defined when there is no error\n\n return {\n content,\n finishReason: mapOpenAIResponseFinishReason({\n finishReason: response.incomplete_details?.reason,\n hasFunctionCall,\n }),\n usage: {\n inputTokens: usage.input_tokens,\n outputTokens: usage.output_tokens,\n totalTokens: usage.input_tokens + usage.output_tokens,\n reasoningTokens:\n usage.output_tokens_details?.reasoning_tokens ?? undefined,\n cachedInputTokens:\n usage.input_tokens_details?.cached_tokens ?? undefined,\n },\n request: { body },\n response: {\n id: response.id,\n timestamp: new Date(response.created_at! * 1000),\n modelId: response.model,\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata,\n warnings,\n };\n }\n\n async doStream(\n options: Parameters[0],\n ): Promise>> {\n const {\n args: body,\n warnings,\n webSearchToolName,\n store,\n } = await this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/responses',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...body,\n stream: true,\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiResponsesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const self = this;\n const providerKey = this.config.provider.replace('.responses', ''); // can be 'openai' or 'azure'. provider is 'openai.responses' or 'azure.responses'.\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n const logprobs: Array = [];\n let responseId: string | null = null;\n const ongoingToolCalls: Record<\n number,\n | {\n toolName: string;\n toolCallId: string;\n codeInterpreter?: {\n containerId: string;\n };\n }\n | undefined\n > = {};\n\n // set annotations in 'text-end' part providerMetadata.\n const ongoingAnnotations: Array<\n Extract<\n OpenAIResponsesChunk,\n { type: 'response.output_text.annotation.added' }\n >['annotation']\n > = [];\n\n // track the phase of the current message being streamed\n let activeMessagePhase: 'commentary' | 'final_answer' | undefined;\n\n // flag that checks if there have been client-side tool calls (not executed by openai)\n let hasFunctionCall = false;\n\n const activeReasoning: Record<\n string,\n {\n encryptedContent?: string | null;\n // summary index as string to reasoning part state:\n summaryParts: Record;\n }\n > = {};\n\n let serviceTier: string | undefined;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n if (isResponseOutputItemAddedChunk(value)) {\n if (value.item.type === 'function_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: value.item.name,\n toolCallId: value.item.call_id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.call_id,\n toolName: value.item.name,\n });\n } else if (value.item.type === 'web_search_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: webSearchToolName ?? 'web_search',\n toolCallId: value.item.id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: webSearchToolName ?? 'web_search',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: webSearchToolName ?? 'web_search',\n input: JSON.stringify({}),\n providerExecuted: true,\n });\n } else if (value.item.type === 'computer_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: 'computer_use',\n toolCallId: value.item.id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: 'computer_use',\n providerExecuted: true,\n });\n } else if (value.item.type === 'code_interpreter_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: 'code_interpreter',\n toolCallId: value.item.id,\n codeInterpreter: {\n containerId: value.item.container_id,\n },\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: 'code_interpreter',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: value.item.id,\n delta: `{\"containerId\":\"${value.item.container_id}\",\"code\":\"`,\n });\n } else if (value.item.type === 'file_search_call') {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'file_search',\n input: '{}',\n providerExecuted: true,\n });\n } else if (value.item.type === 'image_generation_call') {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'image_generation',\n input: '{}',\n providerExecuted: true,\n });\n } else if (value.item.type === 'message') {\n ongoingAnnotations.splice(0, ongoingAnnotations.length);\n activeMessagePhase = value.item.phase ?? undefined;\n controller.enqueue({\n type: 'text-start',\n id: value.item.id,\n providerMetadata: {\n [providerKey]: {\n itemId: value.item.id,\n ...(value.item.phase != null && {\n phase: value.item.phase,\n }),\n },\n },\n });\n } else if (\n isResponseOutputItemAddedChunk(value) &&\n value.item.type === 'reasoning'\n ) {\n activeReasoning[value.item.id] = {\n encryptedContent: value.item.encrypted_content,\n summaryParts: { 0: 'active' },\n };\n\n controller.enqueue({\n type: 'reasoning-start',\n id: `${value.item.id}:0`,\n providerMetadata: {\n [providerKey]: {\n itemId: value.item.id,\n reasoningEncryptedContent:\n value.item.encrypted_content ?? null,\n },\n },\n });\n }\n } else if (isResponseOutputItemDoneChunk(value)) {\n if (value.item.type === 'message') {\n const phase = value.item.phase ?? activeMessagePhase;\n activeMessagePhase = undefined;\n controller.enqueue({\n type: 'text-end',\n id: value.item.id,\n providerMetadata: {\n [providerKey]: {\n itemId: value.item.id,\n ...(phase != null && { phase }),\n ...(ongoingAnnotations.length > 0 && {\n annotations: ongoingAnnotations,\n }),\n },\n },\n });\n } else if (value.item.type === 'function_call') {\n ongoingToolCalls[value.output_index] = undefined;\n hasFunctionCall = true;\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.call_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.call_id,\n toolName: value.item.name,\n input: value.item.arguments,\n providerMetadata: {\n [providerKey]: {\n itemId: value.item.id,\n },\n },\n });\n } else if (value.item.type === 'web_search_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: webSearchToolName ?? 'web_search',\n result: mapWebSearchOutput(value.item.action),\n providerExecuted: true,\n });\n } else if (value.item.type === 'computer_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'computer_use',\n input: '',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'computer_use',\n result: {\n type: 'computer_use_tool_result',\n status: value.item.status || 'completed',\n },\n providerExecuted: true,\n });\n } else if (value.item.type === 'file_search_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'file_search',\n result: {\n queries: value.item.queries,\n results:\n value.item.results?.map(result => ({\n attributes: result.attributes,\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n } satisfies InferValidator,\n providerExecuted: true,\n });\n } else if (value.item.type === 'code_interpreter_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'code_interpreter',\n result: {\n outputs: value.item.outputs,\n } satisfies InferValidator<\n typeof codeInterpreterOutputSchema\n >,\n providerExecuted: true,\n });\n } else if (value.item.type === 'image_generation_call') {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'image_generation',\n result: {\n result: value.item.result,\n } satisfies InferValidator<\n typeof imageGenerationOutputSchema\n >,\n providerExecuted: true,\n });\n } else if (value.item.type === 'local_shell_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.call_id,\n toolName: 'local_shell',\n input: JSON.stringify({\n action: {\n type: 'exec',\n command: value.item.action.command,\n timeoutMs: value.item.action.timeout_ms,\n user: value.item.action.user,\n workingDirectory: value.item.action.working_directory,\n env: value.item.action.env,\n },\n } satisfies InferValidator),\n providerMetadata: {\n [providerKey]: { itemId: value.item.id },\n },\n });\n } else if (value.item.type === 'reasoning') {\n const activeReasoningPart = activeReasoning[value.item.id];\n\n // get all active or can-conclude summary parts' ids\n // to conclude ongoing reasoning parts:\n const summaryPartIndices = Object.entries(\n activeReasoningPart.summaryParts,\n )\n .filter(\n ([_, status]) =>\n status === 'active' || status === 'can-conclude',\n )\n .map(([summaryIndex]) => summaryIndex);\n\n for (const summaryIndex of summaryPartIndices) {\n controller.enqueue({\n type: 'reasoning-end',\n id: `${value.item.id}:${summaryIndex}`,\n providerMetadata: {\n [providerKey]: {\n itemId: value.item.id,\n reasoningEncryptedContent:\n value.item.encrypted_content ?? null,\n },\n },\n });\n }\n\n delete activeReasoning[value.item.id];\n }\n } else if (isResponseFunctionCallArgumentsDeltaChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: value.delta,\n });\n }\n } else if (isResponseCodeInterpreterCallCodeDeltaChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n // The delta is code, which is embedding in a JSON string.\n // To escape it, we use JSON.stringify and slice to remove the outer quotes.\n delta: JSON.stringify(value.delta).slice(1, -1),\n });\n }\n } else if (isResponseCodeInterpreterCallCodeDoneChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: '\"}',\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.toolCallId,\n });\n\n // immediately send the tool call after the input end:\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.toolCallId,\n toolName: 'code_interpreter',\n input: JSON.stringify({\n code: value.code,\n containerId: toolCall.codeInterpreter!.containerId,\n } satisfies InferValidator<\n typeof codeInterpreterInputSchema\n >),\n providerExecuted: true,\n });\n }\n } else if (isResponseCreatedChunk(value)) {\n responseId = value.response.id;\n controller.enqueue({\n type: 'response-metadata',\n id: value.response.id,\n timestamp: new Date(value.response.created_at * 1000),\n modelId: value.response.model,\n });\n } else if (isTextDeltaChunk(value)) {\n controller.enqueue({\n type: 'text-delta',\n id: value.item_id,\n delta: value.delta,\n });\n\n if (options.providerOptions?.openai?.logprobs && value.logprobs) {\n logprobs.push(value.logprobs);\n }\n } else if (value.type === 'response.reasoning_summary_part.added') {\n // the first reasoning start is pushed in isResponseOutputItemAddedReasoningChunk\n if (value.summary_index > 0) {\n const activeReasoningPart = activeReasoning[value.item_id]!;\n\n activeReasoningPart.summaryParts[value.summary_index] =\n 'active';\n\n // since there is a new active summary part, we can conclude all can-conclude summary parts\n for (const summaryIndex of Object.keys(\n activeReasoningPart.summaryParts,\n )) {\n if (\n activeReasoningPart.summaryParts[summaryIndex] ===\n 'can-conclude'\n ) {\n controller.enqueue({\n type: 'reasoning-end',\n id: `${value.item_id}:${summaryIndex}`,\n providerMetadata: {\n [providerKey]: { itemId: value.item_id },\n },\n });\n activeReasoningPart.summaryParts[summaryIndex] =\n 'concluded';\n }\n }\n\n controller.enqueue({\n type: 'reasoning-start',\n id: `${value.item_id}:${value.summary_index}`,\n providerMetadata: {\n [providerKey]: {\n itemId: value.item_id,\n reasoningEncryptedContent:\n activeReasoning[value.item_id]?.encryptedContent ??\n null,\n },\n },\n });\n }\n } else if (value.type === 'response.reasoning_summary_text.delta') {\n controller.enqueue({\n type: 'reasoning-delta',\n id: `${value.item_id}:${value.summary_index}`,\n delta: value.delta,\n providerMetadata: {\n [providerKey]: {\n itemId: value.item_id,\n },\n },\n });\n } else if (value.type === 'response.reasoning_summary_part.done') {\n // when OpenAI stores the message data, we can immediately conclude the reasoning part\n // since we do not need to send the encrypted content.\n if (store) {\n controller.enqueue({\n type: 'reasoning-end',\n id: `${value.item_id}:${value.summary_index}`,\n providerMetadata: {\n [providerKey]: { itemId: value.item_id },\n },\n });\n\n // mark the summary part as concluded\n activeReasoning[value.item_id]!.summaryParts[\n value.summary_index\n ] = 'concluded';\n } else {\n // mark the summary part as can-conclude only\n // because we need to have a final summary part with the encrypted content\n activeReasoning[value.item_id]!.summaryParts[\n value.summary_index\n ] = 'can-conclude';\n }\n } else if (isResponseFinishedChunk(value)) {\n finishReason = mapOpenAIResponseFinishReason({\n finishReason: value.response.incomplete_details?.reason,\n hasFunctionCall,\n });\n usage.inputTokens = value.response.usage.input_tokens;\n usage.outputTokens = value.response.usage.output_tokens;\n usage.totalTokens =\n value.response.usage.input_tokens +\n value.response.usage.output_tokens;\n usage.reasoningTokens =\n value.response.usage.output_tokens_details?.reasoning_tokens ??\n undefined;\n usage.cachedInputTokens =\n value.response.usage.input_tokens_details?.cached_tokens ??\n undefined;\n if (typeof value.response.service_tier === 'string') {\n serviceTier = value.response.service_tier;\n }\n } else if (isResponseAnnotationAddedChunk(value)) {\n ongoingAnnotations.push(value.annotation);\n if (value.annotation.type === 'url_citation') {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId?.() ?? generateId(),\n url: value.annotation.url,\n title: value.annotation.title,\n });\n } else if (value.annotation.type === 'file_citation') {\n controller.enqueue({\n type: 'source',\n sourceType: 'document',\n id: self.config.generateId?.() ?? generateId(),\n mediaType: 'text/plain',\n title:\n value.annotation.quote ??\n value.annotation.filename ??\n 'Document',\n filename:\n value.annotation.filename ?? value.annotation.file_id,\n ...(value.annotation.file_id\n ? {\n providerMetadata: {\n [providerKey]: {\n fileId: value.annotation.file_id,\n },\n },\n }\n : {}),\n });\n }\n } else if (isErrorChunk(value)) {\n controller.enqueue({ type: 'error', error: value });\n }\n },\n\n flush(controller) {\n const providerMetadata: SharedV2ProviderMetadata = {\n [providerKey]: {\n responseId,\n },\n };\n\n if (logprobs.length > 0) {\n providerMetadata[providerKey].logprobs = logprobs;\n }\n\n if (serviceTier !== undefined) {\n providerMetadata[providerKey].serviceTier = serviceTier;\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nfunction isTextDeltaChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_text.delta' } {\n return chunk.type === 'response.output_text.delta';\n}\n\nfunction isResponseOutputItemDoneChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_item.done' } {\n return chunk.type === 'response.output_item.done';\n}\n\nfunction isResponseFinishedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.completed' | 'response.incomplete';\n} {\n return (\n chunk.type === 'response.completed' || chunk.type === 'response.incomplete'\n );\n}\n\nfunction isResponseCreatedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.created' } {\n return chunk.type === 'response.created';\n}\n\nfunction isResponseFunctionCallArgumentsDeltaChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.function_call_arguments.delta';\n} {\n return chunk.type === 'response.function_call_arguments.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDeltaChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.code_interpreter_call_code.delta';\n} {\n return chunk.type === 'response.code_interpreter_call_code.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDoneChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.code_interpreter_call_code.done';\n} {\n return chunk.type === 'response.code_interpreter_call_code.done';\n}\n\nfunction isResponseOutputItemAddedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_item.added' } {\n return chunk.type === 'response.output_item.added';\n}\n\nfunction isResponseAnnotationAddedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.output_text.annotation.added';\n} {\n return chunk.type === 'response.output_text.annotation.added';\n}\n\nfunction isErrorChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'error' } {\n return chunk.type === 'error';\n}\n\nfunction mapWebSearchOutput(\n action: OpenAIResponsesWebSearchAction | null | undefined,\n): InferValidator {\n if (action == null) {\n return {};\n }\n\n switch (action.type) {\n case 'search':\n return {\n action: { type: 'search', query: action.query ?? undefined },\n // include sources when provided by the Responses API (behind include flag)\n ...(action.sources != null && { sources: action.sources }),\n };\n case 'open_page':\n return { action: { type: 'openPage', url: action.url } };\n case 'find_in_page':\n return {\n action: {\n type: 'findInPage',\n url: action.url,\n pattern: action.pattern,\n },\n };\n }\n}\n","import {\n codeInterpreter,\n fileSearch,\n imageGeneration,\n webSearchPreview,\n} from '@ai-sdk/openai/internal';\n\nexport const azureOpenaiTools: {\n codeInterpreter: typeof codeInterpreter;\n fileSearch: typeof fileSearch;\n imageGeneration: typeof imageGeneration;\n webSearchPreview: typeof webSearchPreview;\n} = {\n codeInterpreter,\n fileSearch,\n imageGeneration,\n webSearchPreview,\n};\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n","import {\n OpenAIChatLanguageModel,\n OpenAICompletionLanguageModel,\n OpenAIEmbeddingModel,\n OpenAIImageModel,\n OpenAIResponsesLanguageModel,\n OpenAISpeechModel,\n OpenAITranscriptionModel,\n} from '@ai-sdk/openai/internal';\nimport type {\n EmbeddingModelV2,\n LanguageModelV2,\n ProviderV2,\n ImageModelV2,\n SpeechModelV2,\n TranscriptionModelV2,\n} from '@ai-sdk/provider';\nimport {\n type FetchFunction,\n loadApiKey,\n loadSetting,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { azureOpenaiTools } from './azure-openai-tools';\nimport { VERSION } from './version';\n\nexport interface AzureOpenAIProvider extends ProviderV2 {\n (deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI chat model for text generation.\n */\n languageModel(deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI chat model for text generation.\n */\n chat(deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI responses API model for text generation.\n */\n responses(deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI completion model for text generation.\n */\n completion(deploymentId: string): LanguageModelV2;\n\n /**\n@deprecated Use `textEmbedding` instead.\n */\n embedding(deploymentId: string): EmbeddingModelV2;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n image(deploymentId: string): ImageModelV2;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n imageModel(deploymentId: string): ImageModelV2;\n\n textEmbedding(deploymentId: string): EmbeddingModelV2;\n\n /**\nCreates an Azure OpenAI model for text embeddings.\n */\n textEmbeddingModel(deploymentId: string): EmbeddingModelV2;\n\n /**\n * Creates an Azure OpenAI model for audio transcription.\n */\n transcription(deploymentId: string): TranscriptionModelV2;\n\n /**\n * Creates an Azure OpenAI model for speech generation.\n */\n speech(deploymentId: string): SpeechModelV2;\n\n /**\n * AzureOpenAI-specific tools.\n */\n tools: typeof azureOpenaiTools;\n}\n\nexport interface AzureOpenAIProviderSettings {\n /**\nName of the Azure OpenAI resource. Either this or `baseURL` can be used.\n\nThe resource name is used in the assembled URL: `https://{resourceName}.openai.azure.com/openai/v1{path}`.\n */\n resourceName?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers. Either this or `resourceName` can be used.\nWhen a baseURL is provided, the resourceName is ignored.\n\nWith a baseURL, the resolved URL is `{baseURL}/v1{path}`.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\nCustom api version to use. Defaults to `preview`.\n */\n apiVersion?: string;\n\n /**\nUse deployment-based URLs for specific model types. Set to true to use legacy deployment format: \n`{baseURL}/deployments/{deploymentId}{path}?api-version={apiVersion}` instead of \n`{baseURL}/v1{path}?api-version={apiVersion}`.\n */\n useDeploymentBasedUrls?: boolean;\n}\n\n/**\nCreate an Azure OpenAI provider instance.\n */\nexport function createAzure(\n options: AzureOpenAIProviderSettings = {},\n): AzureOpenAIProvider {\n const getHeaders = () => {\n const baseHeaders = {\n 'api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'AZURE_API_KEY',\n description: 'Azure OpenAI',\n }),\n ...options.headers,\n };\n return withUserAgentSuffix(baseHeaders, `ai-sdk/azure/${VERSION}`);\n };\n\n const getResourceName = () =>\n loadSetting({\n settingValue: options.resourceName,\n settingName: 'resourceName',\n environmentVariableName: 'AZURE_RESOURCE_NAME',\n description: 'Azure OpenAI resource name',\n });\n\n const apiVersion = options.apiVersion ?? 'v1';\n\n const url = ({ path, modelId }: { path: string; modelId: string }) => {\n const baseUrlPrefix =\n options.baseURL ?? `https://${getResourceName()}.openai.azure.com/openai`;\n\n let fullUrl: URL;\n if (options.useDeploymentBasedUrls) {\n // Use deployment-based format for compatibility with certain Azure OpenAI models\n fullUrl = new URL(`${baseUrlPrefix}/deployments/${modelId}${path}`);\n } else {\n // Use v1 API format - no deployment ID in URL\n fullUrl = new URL(`${baseUrlPrefix}/v1${path}`);\n }\n\n fullUrl.searchParams.set('api-version', apiVersion);\n return fullUrl.toString();\n };\n\n const createChatModel = (deploymentName: string) =>\n new OpenAIChatLanguageModel(deploymentName, {\n provider: 'azure.chat',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createCompletionModel = (modelId: string) =>\n new OpenAICompletionLanguageModel(modelId, {\n provider: 'azure.completion',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createEmbeddingModel = (modelId: string) =>\n new OpenAIEmbeddingModel(modelId, {\n provider: 'azure.embeddings',\n headers: getHeaders,\n url,\n fetch: options.fetch,\n });\n\n const createResponsesModel = (modelId: string) =>\n new OpenAIResponsesLanguageModel(modelId, {\n provider: 'azure.responses',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n fileIdPrefixes: ['assistant-'],\n });\n\n const createImageModel = (modelId: string) =>\n new OpenAIImageModel(modelId, {\n provider: 'azure.image',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createTranscriptionModel = (modelId: string) =>\n new OpenAITranscriptionModel(modelId, {\n provider: 'azure.transcription',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createSpeechModel = (modelId: string) =>\n new OpenAISpeechModel(modelId, {\n provider: 'azure.speech',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (deploymentId: string) {\n if (new.target) {\n throw new Error(\n 'The Azure OpenAI model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(deploymentId);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.completion = createCompletionModel;\n provider.embedding = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.responses = createResponsesModel;\n provider.transcription = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.tools = azureOpenaiTools;\n return provider;\n}\n\n/**\nDefault Azure OpenAI provider instance.\n */\nexport const azure = createAzure();\n","import WebSocket from 'ws';\n\nexport interface CreateOpenAIWebSocketFetchOptions {\n /**\n * WebSocket endpoint URL.\n * @default 'wss://api.openai.com/v1/responses'\n */\n url?: string;\n /**\n * Additional headers sent when establishing the WebSocket connection.\n * Authorization and OpenAI-Beta are managed internally.\n */\n headers?: Record;\n /**\n * Convert an `api-key` request header into `Authorization: Bearer ...` for\n * providers whose WebSocket endpoint authenticates API keys as bearer tokens.\n */\n apiKeyAsBearer?: boolean;\n /**\n * Move an `api-key` request header into the WebSocket URL query string for\n * providers whose WebSocket endpoint authenticates API keys through a query\n * parameter. Entra ID and OpenAI bearer-token auth should leave this disabled.\n */\n apiKeyQueryParam?: string | false;\n /**\n * Optional beta header sent when establishing the WebSocket connection.\n * @default 'responses_websockets=2026-02-06'\n */\n betaHeader?: string | false;\n}\n\nexport type OpenAIWebSocketFetch = ((input: RequestInfo | URL, init?: RequestInit) => Promise) & {\n close(): void;\n};\n\nconst TERMINAL_RESPONSE_EVENTS = new Set(['response.completed', 'response.failed', 'response.incomplete', 'error']);\n\n/**\n * Creates a `fetch` function that routes OpenAI Responses API streaming\n * requests through a persistent WebSocket connection instead of HTTP.\n */\nexport function createOpenAIWebSocketFetch(options?: CreateOpenAIWebSocketFetchOptions): OpenAIWebSocketFetch {\n const wsUrl = options?.url ?? 'wss://api.openai.com/v1/responses';\n const betaHeader = options?.betaHeader === undefined ? 'responses_websockets=2026-02-06' : options.betaHeader;\n const apiKeyQueryParam = options?.apiKeyQueryParam ?? false;\n\n let ws: WebSocket | null = null;\n let connecting: Promise | null = null;\n let connectionKey: string | null = null;\n let nextQueryCredentialId = 0;\n const queryCredentialIds = new Map();\n let busy = false;\n\n function getQueryCredentialCacheId(value?: string): string {\n if (!value) return '';\n\n const existing = queryCredentialIds.get(value);\n if (existing) return existing;\n\n const id = String(++nextQueryCredentialId);\n queryCredentialIds.set(value, id);\n return id;\n }\n\n function getConnection(\n authorization: string,\n headers: Record,\n signal?: AbortSignal | null,\n ): Promise {\n if (signal?.aborted) {\n return Promise.reject(getAbortError(signal));\n }\n\n const normalizedHeaders = { ...normalizeHeaders(options?.headers), ...headers };\n const apiKey = normalizedHeaders['api-key'];\n delete normalizedHeaders['authorization'];\n delete normalizedHeaders['openai-beta'];\n if (options?.apiKeyAsBearer || apiKeyQueryParam) {\n delete normalizedHeaders['api-key'];\n }\n const queryCredential = apiKeyQueryParam ? `${apiKeyQueryParam}:${getQueryCredentialCacheId(apiKey)}` : '';\n const nextConnectionKey = buildConnectionKey(authorization, normalizedHeaders, queryCredential);\n\n if (ws?.readyState === WebSocket.OPEN && connectionKey === nextConnectionKey) {\n return Promise.resolve(ws);\n }\n\n if (ws?.readyState === WebSocket.OPEN && connectionKey !== nextConnectionKey) {\n ws.close();\n ws = null;\n connectionKey = null;\n }\n\n if (connecting && connectionKey === nextConnectionKey) return connecting;\n\n connectionKey = nextConnectionKey;\n\n connecting = new Promise((resolve, reject) => {\n let settled = false;\n const socket = new WebSocket(getWebSocketUrl(wsUrl, apiKeyQueryParam, apiKey), {\n headers: {\n ...normalizedHeaders,\n ...(authorization ? { Authorization: authorization } : {}),\n ...(betaHeader ? { 'OpenAI-Beta': betaHeader } : {}),\n },\n });\n\n function cleanupAbortListener() {\n signal?.removeEventListener('abort', onAbort);\n }\n\n function rejectConnection(err: unknown, closeSocket = true) {\n if (settled) return;\n settled = true;\n connecting = null;\n connectionKey = null;\n cleanupAbortListener();\n if (closeSocket) socket.close();\n reject(err);\n }\n\n function onAbort() {\n rejectConnection(getAbortError(signal));\n }\n\n signal?.addEventListener('abort', onAbort, { once: true });\n\n socket.on('open', () => {\n if (signal?.aborted) {\n rejectConnection(getAbortError(signal));\n return;\n }\n settled = true;\n ws = socket;\n connecting = null;\n cleanupAbortListener();\n resolve(socket);\n });\n\n socket.on('error', err => {\n rejectConnection(err, false);\n });\n\n socket.on('close', () => {\n if (settled) return;\n rejectConnection(new Error('WebSocket closed before the connection opened'), false);\n });\n\n socket.on('close', () => {\n if (ws === socket) ws = null;\n if (ws === null) connectionKey = null;\n });\n });\n\n return connecting;\n }\n\n async function websocketFetch(input: RequestInfo | URL, init?: RequestInit): Promise {\n const url = input instanceof URL ? input.toString() : typeof input === 'string' ? input : input.url;\n\n if (init?.method !== 'POST' || !isResponsesUrl(url)) {\n return globalThis.fetch(input, init);\n }\n\n let body: Record;\n try {\n body = JSON.parse(typeof init.body === 'string' ? init.body : '');\n } catch {\n return globalThis.fetch(input, init);\n }\n\n if (!body.stream) {\n return globalThis.fetch(input, init);\n }\n\n // Prevent concurrent streams from sharing one WebSocket transport instance.\n // Only fall back to HTTP when the request does not depend on the socket's\n // connection-local previous_response_id cache.\n if (busy) {\n if (body.previous_response_id) {\n throw new Error(\n 'Cannot start an overlapping WebSocket Responses continuation. Wait for the active stream to finish before sending previous_response_id.',\n );\n }\n return globalThis.fetch(input, init);\n }\n\n const headers = normalizeHeaders(init.headers);\n const authorization =\n headers['authorization'] ?? (options?.apiKeyAsBearer && headers['api-key'] ? `Bearer ${headers['api-key']}` : '');\n\n // Acquire the busy lock before awaiting to prevent races\n busy = true;\n let connection: WebSocket;\n try {\n connection = await getConnection(authorization, headers, init?.signal);\n } catch (err) {\n busy = false;\n throw err;\n }\n\n const { stream: _stream, background: _background, ...requestBody } = body;\n const encoder = new TextEncoder();\n\n let cleanupActiveStream: ((options?: { closeSocket?: boolean }) => void) | undefined;\n const responseStream = new ReadableStream({\n start(controller) {\n let cleanedUp = false;\n let abortHandler: (() => void) | undefined;\n\n function cleanup({ closeSocket = false }: { closeSocket?: boolean } = {}) {\n if (cleanedUp) return;\n cleanedUp = true;\n connection.off('message', onMessage);\n connection.off('error', onError);\n connection.off('close', onClose);\n if (abortHandler) {\n init?.signal?.removeEventListener('abort', abortHandler);\n abortHandler = undefined;\n }\n\n if (closeSocket && ws === connection) {\n connection.close();\n ws = null;\n connectionKey = null;\n }\n\n busy = false;\n cleanupActiveStream = undefined;\n }\n\n cleanupActiveStream = cleanup;\n\n function onMessage(data: WebSocket.RawData) {\n const text = data.toString();\n controller.enqueue(encoder.encode(formatSSEData(text)));\n\n try {\n const event = JSON.parse(text);\n if (isTerminalWebSocketEvent(event)) {\n controller.enqueue(encoder.encode('data: [DONE]\\n\\n'));\n cleanup({ closeSocket: shouldReconnectAfterEvent(event) });\n controller.close();\n }\n } catch {\n // non-JSON frame, continue\n }\n }\n\n function onError(err: Error) {\n cleanup();\n controller.error(err);\n }\n\n function onClose() {\n cleanup();\n try {\n controller.close();\n } catch {\n // already closed\n }\n }\n\n connection.on('message', onMessage);\n connection.on('error', onError);\n connection.on('close', onClose);\n\n const signal = init?.signal;\n if (signal) {\n if (signal.aborted) {\n cleanup({ closeSocket: true });\n controller.error(signal.reason ?? new DOMException('Aborted', 'AbortError'));\n return;\n }\n abortHandler = () => {\n cleanup({ closeSocket: true });\n try {\n controller.error(signal.reason ?? new DOMException('Aborted', 'AbortError'));\n } catch {\n // already closed\n }\n };\n signal.addEventListener('abort', abortHandler, { once: true });\n }\n\n connection.send(JSON.stringify({ type: 'response.create', ...requestBody }));\n },\n cancel() {\n cleanupActiveStream?.({ closeSocket: true });\n },\n });\n\n return new Response(responseStream, {\n status: 200,\n headers: { 'content-type': 'text/event-stream' },\n });\n }\n\n return Object.assign(websocketFetch, {\n /** Close the underlying WebSocket connection. */\n close() {\n if (ws) {\n ws.close();\n ws = null;\n }\n connectionKey = null;\n connecting = null;\n },\n });\n}\n\nfunction isResponsesUrl(url: string): boolean {\n try {\n return new URL(url).pathname.endsWith('/responses');\n } catch {\n return url.split('?')[0]?.endsWith('/responses') ?? false;\n }\n}\n\nfunction getWebSocketUrl(url: string, apiKeyQueryParam: string | false, apiKey?: string): string {\n if (!apiKeyQueryParam || !apiKey) return url;\n\n const parsedUrl = new URL(url);\n parsedUrl.searchParams.set(apiKeyQueryParam, apiKey);\n return parsedUrl.toString();\n}\n\nfunction formatSSEData(text: string): string {\n return `${text\n .split(/\\r?\\n/)\n .map(line => `data: ${line}`)\n .join('\\n')}\\n\\n`;\n}\n\nfunction buildConnectionKey(authorization: string, headers: Record, queryCredential = ''): string {\n return JSON.stringify({\n authorization,\n queryCredential,\n headers: Object.entries(headers).sort(([a], [b]) => a.localeCompare(b)),\n });\n}\n\nfunction isTerminalWebSocketEvent(event: unknown): event is { type: string } {\n return (\n typeof event === 'object' &&\n event !== null &&\n 'type' in event &&\n typeof event.type === 'string' &&\n TERMINAL_RESPONSE_EVENTS.has(event.type)\n );\n}\n\nfunction shouldReconnectAfterEvent(event: unknown): boolean {\n if (typeof event !== 'object' || event === null || !('error' in event)) return false;\n const error = event.error;\n return (\n typeof error === 'object' &&\n error !== null &&\n 'code' in error &&\n error.code === 'websocket_connection_limit_reached'\n );\n}\n\nfunction getAbortError(signal?: AbortSignal | null): unknown {\n return signal?.reason ?? new DOMException('Aborted', 'AbortError');\n}\n\nfunction normalizeHeaders(headers: HeadersInit | undefined): Record {\n const result: Record = {};\n if (!headers) return result;\n\n if (headers instanceof Headers) {\n headers.forEach((value, key) => {\n result[key.toLowerCase()] = value;\n });\n } else if (Array.isArray(headers)) {\n for (const [key, value] of headers) {\n result[key.toLowerCase()] = value;\n }\n } else {\n for (const [key, value] of Object.entries(headers)) {\n if (value != null) result[key.toLowerCase()] = value;\n }\n }\n\n return result;\n}\n","import { createAzure } from '@ai-sdk/azure';\nimport type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport { InMemoryServerCache } from '../../../cache/inmemory.js';\nimport { MastraError } from '../../../error/index.js';\nimport { createOpenAIWebSocketFetch } from '../openai-websocket-fetch.js';\nimport type { OpenAITransport, ResponsesWebSocketOptions } from '../provider-options.js';\nimport { MASTRA_GATEWAY_STREAM_TRANSPORT, MastraModelGateway } from './base.js';\nimport type { ProviderConfig } from './base.js';\nimport { MASTRA_USER_AGENT } from './constants.js';\n\ninterface AzureTokenResponse {\n token_type: 'Bearer';\n expires_in: number;\n access_token: string;\n}\n\ninterface AzureDeployment {\n name: string;\n properties: {\n model: {\n name: string;\n version: string;\n format: string;\n };\n provisioningState: string;\n };\n}\n\ninterface AzureDeploymentsResponse {\n value: AzureDeployment[];\n nextLink?: string;\n}\n\ninterface CachedToken {\n token: string;\n expiresAt: number;\n}\n\ntype AzureLanguageModelCallOptions = Parameters[0];\n\nexport interface AzureAccessToken {\n token: string;\n expiresOnTimestamp?: number;\n}\n\nexport interface AzureTokenCredential {\n getToken(scopes: string | string[], options?: unknown): Promise;\n}\n\nexport interface AzureOpenAIGatewayConfig {\n resourceName: string;\n apiKey?: string;\n apiVersion?: string;\n useResponsesAPI?: boolean;\n useDeploymentBasedUrls?: boolean;\n deployments?: string[];\n authentication?: {\n type: 'entraId';\n credential: AzureTokenCredential;\n scope?: string;\n };\n management?: {\n tenantId: string;\n clientId: string;\n clientSecret: string;\n subscriptionId: string;\n resourceGroup: string;\n };\n}\n\nfunction isRecord(value: unknown): value is Record {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction mirrorAzureProviderOptionsForOpenAI(providerOptions: T): T {\n if (!isRecord(providerOptions) || !isRecord(providerOptions.azure)) {\n return providerOptions;\n }\n\n const openai = isRecord(providerOptions.openai) ? providerOptions.openai : {};\n\n return {\n ...providerOptions,\n openai: {\n ...openai,\n ...providerOptions.azure,\n },\n } as T;\n}\n\nfunction mirrorAzureResponseProviderOptions(\n prompt: AzureLanguageModelCallOptions['prompt'],\n): AzureLanguageModelCallOptions['prompt'] {\n let promptModified = false;\n\n const mirroredPrompt = prompt.map(message => {\n const messageWithProviderOptions = message as typeof message & { providerOptions?: unknown };\n const providerOptions = mirrorAzureProviderOptionsForOpenAI(messageWithProviderOptions.providerOptions);\n const providerOptionsModified = providerOptions !== messageWithProviderOptions.providerOptions;\n\n if (!Array.isArray(message.content)) {\n if (providerOptionsModified) {\n promptModified = true;\n return { ...message, providerOptions } as typeof message;\n }\n\n return message;\n }\n\n let contentModified = false;\n const content = message.content.map(part => {\n if (!('providerOptions' in part)) {\n return part;\n }\n\n const providerOptions = mirrorAzureProviderOptionsForOpenAI(part.providerOptions);\n if (providerOptions === part.providerOptions) {\n return part;\n }\n\n contentModified = true;\n return { ...part, providerOptions };\n }) as typeof message.content;\n\n if (!contentModified) {\n if (providerOptionsModified) {\n promptModified = true;\n return { ...message, providerOptions } as typeof message;\n }\n\n return message;\n }\n\n promptModified = true;\n return { ...message, ...(providerOptionsModified ? { providerOptions } : {}), content };\n });\n\n return (promptModified ? mirroredPrompt : prompt) as AzureLanguageModelCallOptions['prompt'];\n}\n\nfunction withAzureResponsesInputCompatibility(model: LanguageModelV2): LanguageModelV2 {\n return new Proxy(model, {\n get(target, property, receiver) {\n // Audit this wrapper when AI SDK adds new prompt-taking LanguageModelV2 methods.\n if (property === 'doGenerate') {\n return (options: AzureLanguageModelCallOptions) =>\n target.doGenerate({\n ...options,\n providerOptions: mirrorAzureProviderOptionsForOpenAI(options.providerOptions),\n prompt: mirrorAzureResponseProviderOptions(options.prompt),\n });\n }\n\n if (property === 'doStream') {\n return (options: Parameters[0]) =>\n target.doStream({\n ...options,\n providerOptions: mirrorAzureProviderOptionsForOpenAI(options.providerOptions),\n prompt: mirrorAzureResponseProviderOptions(options.prompt),\n });\n }\n\n return Reflect.get(target, property, receiver);\n },\n });\n}\n\nexport class AzureOpenAIGateway extends MastraModelGateway {\n readonly id = 'azure-openai';\n readonly name = 'azure-openai';\n private tokenCache = new InMemoryServerCache();\n private entraIdTokenRequests = new Map>();\n\n constructor(private config: AzureOpenAIGatewayConfig) {\n super();\n this.validateConfig();\n }\n\n private validateConfig(): void {\n if (!this.config.resourceName) {\n throw new MastraError({\n id: 'AZURE_GATEWAY_INVALID_CONFIG',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'resourceName is required for Azure OpenAI gateway',\n });\n }\n\n if (!this.config.apiKey && this.config.authentication?.type !== 'entraId') {\n throw new MastraError({\n id: 'AZURE_GATEWAY_INVALID_CONFIG',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'apiKey or Entra ID authentication is required for Azure OpenAI gateway',\n });\n }\n\n if (this.config.authentication?.type === 'entraId' && !this.config.authentication.credential) {\n throw new MastraError({\n id: 'AZURE_GATEWAY_INVALID_CONFIG',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'credential is required for Azure OpenAI Entra ID authentication',\n });\n }\n\n if (this.config.apiKey && this.config.authentication?.type === 'entraId') {\n console.warn(\n '[AzureOpenAIGateway] Both apiKey and Entra ID authentication provided. Using Entra ID authentication and ignoring apiKey.',\n );\n }\n\n if (this.config.useResponsesAPI && this.config.useDeploymentBasedUrls === true) {\n throw new MastraError({\n id: 'AZURE_GATEWAY_INVALID_CONFIG',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'useResponsesAPI: true cannot be combined with useDeploymentBasedUrls: true. Omit useDeploymentBasedUrls or set it to false.',\n });\n }\n\n if (this.config.useResponsesAPI && this.config.apiVersion && !['v1', 'preview'].includes(this.config.apiVersion)) {\n throw new MastraError({\n id: 'AZURE_GATEWAY_INVALID_CONFIG',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'useResponsesAPI: true requires apiVersion: \"v1\" or apiVersion: \"preview\". Omit apiVersion to use \"v1\".',\n });\n }\n\n if (\n this.config.useDeploymentBasedUrls === false &&\n this.config.apiVersion &&\n !['v1', 'preview'].includes(this.config.apiVersion)\n ) {\n throw new MastraError({\n id: 'AZURE_GATEWAY_INVALID_CONFIG',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'useDeploymentBasedUrls: false requires apiVersion: \"v1\" or apiVersion: \"preview\". Omit apiVersion to use \"v1\".',\n });\n }\n\n const hasDeployments = this.config.deployments && this.config.deployments.length > 0;\n const hasManagement = this.config.management !== undefined;\n\n if (hasDeployments && hasManagement) {\n console.warn(\n '[AzureOpenAIGateway] Both deployments and management credentials provided. Using static deployments list and ignoring management API.',\n );\n }\n\n if (hasManagement) {\n this.getManagementCredentials(this.config.management!);\n }\n }\n\n async fetchProviders(): Promise> {\n if (this.config.deployments && this.config.deployments.length > 0) {\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: this.config.deployments,\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n\n if (!this.config.management) {\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: [],\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n\n try {\n const credentials = this.getManagementCredentials(this.config.management);\n\n const token = await this.getAzureADToken({\n tenantId: credentials.tenantId,\n clientId: credentials.clientId,\n clientSecret: credentials.clientSecret,\n });\n\n const deployments = await this.fetchDeployments(token, {\n subscriptionId: credentials.subscriptionId,\n resourceGroup: credentials.resourceGroup,\n resourceName: this.config.resourceName,\n });\n\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: deployments.map(d => d.name),\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error);\n console.warn(\n `[AzureOpenAIGateway] Deployment discovery failed: ${errorMsg}`,\n '\\nReturning fallback configuration. Azure OpenAI can still be used by manually specifying deployment names.',\n );\n\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: [],\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n }\n\n private getManagementCredentials(management: NonNullable) {\n const { tenantId, clientId, clientSecret, subscriptionId, resourceGroup } = management;\n\n const missing = [];\n if (!tenantId) missing.push('tenantId');\n if (!clientId) missing.push('clientId');\n if (!clientSecret) missing.push('clientSecret');\n if (!subscriptionId) missing.push('subscriptionId');\n if (!resourceGroup) missing.push('resourceGroup');\n\n if (missing.length > 0) {\n throw new MastraError({\n id: 'AZURE_MANAGEMENT_CREDENTIALS_MISSING',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Management credentials incomplete. Missing: ${missing.join(', ')}. Required fields: tenantId, clientId, clientSecret, subscriptionId, resourceGroup.`,\n });\n }\n\n return {\n tenantId,\n clientId,\n clientSecret,\n subscriptionId,\n resourceGroup,\n };\n }\n\n private async getAzureADToken(credentials: {\n tenantId: string;\n clientId: string;\n clientSecret: string;\n }): Promise {\n const { tenantId, clientId, clientSecret } = credentials;\n\n const cacheKey = `azure-mgmt-token:${tenantId}:${clientId}`;\n\n const cached = (await this.tokenCache.get(cacheKey)) as CachedToken | undefined;\n if (cached && cached.expiresAt > Date.now() / 1000 + 60) {\n return cached.token;\n }\n\n const tokenEndpoint = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/token`;\n\n const body = new URLSearchParams({\n grant_type: 'client_credentials',\n client_id: clientId,\n client_secret: clientSecret,\n scope: 'https://management.azure.com/.default',\n });\n\n const response = await fetch(tokenEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: body.toString(),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new MastraError({\n id: 'AZURE_AD_TOKEN_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to get Azure AD token: ${response.status} ${error}`,\n });\n }\n\n const tokenResponse = (await response.json()) as AzureTokenResponse;\n\n const expiresAt = Math.floor(Date.now() / 1000) + tokenResponse.expires_in;\n\n await this.tokenCache.set(cacheKey, {\n token: tokenResponse.access_token,\n expiresAt,\n });\n\n return tokenResponse.access_token;\n }\n\n private async fetchDeployments(\n token: string,\n credentials: {\n subscriptionId: string;\n resourceGroup: string;\n resourceName: string;\n },\n ): Promise {\n const { subscriptionId, resourceGroup, resourceName } = credentials;\n\n let url: string | undefined =\n `https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.CognitiveServices/accounts/${resourceName}/deployments?api-version=2024-10-01`;\n\n const allDeployments: AzureDeployment[] = [];\n\n while (url) {\n const response = await fetch(url, {\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new MastraError({\n id: 'AZURE_DEPLOYMENTS_FETCH_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to fetch Azure deployments: ${response.status} ${error}`,\n });\n }\n\n const data = (await response.json()) as AzureDeploymentsResponse;\n\n allDeployments.push(...data.value);\n\n url = data.nextLink;\n }\n\n const successfulDeployments = allDeployments.filter(d => d.properties.provisioningState === 'Succeeded');\n\n return successfulDeployments;\n }\n\n buildUrl(_routerId: string, _envVars?: typeof process.env): undefined {\n return undefined;\n }\n\n async getApiKey(_modelId: string): Promise {\n return this.config.authentication?.type === 'entraId' ? '' : (this.config.apiKey ?? '');\n }\n\n private async getEntraIdToken(): Promise {\n if (this.config.authentication?.type !== 'entraId') {\n throw new MastraError({\n id: 'AZURE_ENTRA_ID_AUTH_NOT_CONFIGURED',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'Entra ID authentication is not configured for Azure OpenAI gateway',\n });\n }\n\n const scope = this.config.authentication.scope ?? 'https://cognitiveservices.azure.com/.default';\n const cacheKey = `azure-openai-token:${scope}`;\n const cached = (await this.tokenCache.get(cacheKey)) as CachedToken | undefined;\n if (cached && cached.expiresAt > Date.now() / 1000 + 60) {\n return cached.token;\n }\n\n let tokenRequest = this.entraIdTokenRequests.get(cacheKey);\n\n if (!tokenRequest) {\n tokenRequest = this.fetchEntraIdToken(scope, cacheKey);\n this.entraIdTokenRequests.set(cacheKey, tokenRequest);\n }\n\n try {\n const token = await tokenRequest;\n return token.token;\n } finally {\n this.entraIdTokenRequests.delete(cacheKey);\n }\n }\n\n private async fetchEntraIdToken(scope: string, cacheKey: string): Promise {\n if (this.config.authentication?.type !== 'entraId') {\n throw new MastraError({\n id: 'AZURE_ENTRA_ID_AUTH_NOT_CONFIGURED',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'Entra ID authentication is not configured for Azure OpenAI gateway',\n });\n }\n\n const accessToken = await this.config.authentication.credential.getToken(scope);\n if (!accessToken?.token) {\n throw new MastraError({\n id: 'AZURE_ENTRA_ID_TOKEN_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'Failed to get Entra ID token for Azure OpenAI gateway',\n });\n }\n\n const token = {\n token: accessToken.token,\n expiresAt: accessToken.expiresOnTimestamp\n ? Math.floor(accessToken.expiresOnTimestamp / 1000)\n : Math.floor(Date.now() / 1000) + 300,\n };\n\n await this.tokenCache.set(cacheKey, token);\n\n return token;\n }\n\n private createEntraIdFetch(innerFetch: typeof globalThis.fetch = fetch): typeof globalThis.fetch {\n return async (input, init) => {\n const token = await this.getEntraIdToken();\n const headers = new Headers(init?.headers);\n headers.delete('api-key');\n headers.set('Authorization', `Bearer ${token}`);\n\n return innerFetch(input, {\n ...init,\n headers,\n });\n };\n }\n\n private createAzureResponsesWebSocketFetch({\n useEntraId,\n responsesWebSocket,\n }: {\n useEntraId: boolean;\n responsesWebSocket?: ResponsesWebSocketOptions;\n }): typeof globalThis.fetch & { close(): void } {\n const websocketFetch = createOpenAIWebSocketFetch({\n url: responsesWebSocket?.url ?? `wss://${this.config.resourceName}.openai.azure.com/openai/v1/responses`,\n headers: responsesWebSocket?.headers,\n apiKeyQueryParam: useEntraId ? false : 'api-key',\n betaHeader: false,\n });\n\n return useEntraId\n ? Object.assign(this.createEntraIdFetch(websocketFetch), { close: websocketFetch.close })\n : websocketFetch;\n }\n\n async resolveLanguageModel({\n modelId,\n apiKey,\n headers,\n transport,\n responsesWebSocket,\n }: {\n modelId: string;\n providerId: string;\n apiKey: string;\n headers?: Record;\n transport?: OpenAITransport;\n responsesWebSocket?: ResponsesWebSocketOptions;\n }): Promise {\n const useResponsesAPI = this.config.useResponsesAPI ?? false;\n const apiVersion =\n this.config.apiVersion ||\n (useResponsesAPI || this.config.useDeploymentBasedUrls === false ? 'v1' : '2024-04-01-preview');\n const useDeploymentBasedUrls = this.config.useDeploymentBasedUrls ?? (useResponsesAPI ? false : true);\n const useEntraId = this.config.authentication?.type === 'entraId';\n const useWebSocket = useResponsesAPI && transport === 'websocket';\n const websocketFetch = useWebSocket\n ? this.createAzureResponsesWebSocketFetch({\n useEntraId,\n responsesWebSocket,\n })\n : undefined;\n const azureConfig = {\n resourceName: this.config.resourceName,\n apiKey: useEntraId ? '' : apiKey,\n apiVersion,\n // Mastra's Azure gateway has historically used deployment-based URLs.\n // Keep that default for compatibility; set false with apiVersion: 'v1'\n // to use the newer Azure OpenAI v1 route.\n useDeploymentBasedUrls,\n headers: { 'User-Agent': MASTRA_USER_AGENT, ...headers },\n ...(websocketFetch && !useEntraId ? { fetch: websocketFetch } : {}),\n };\n\n const azureProvider = createAzure(\n useEntraId\n ? {\n ...azureConfig,\n fetch: websocketFetch ?? this.createEntraIdFetch(),\n }\n : azureConfig,\n );\n\n if (useResponsesAPI) {\n const model = withAzureResponsesInputCompatibility(azureProvider.responses(modelId));\n if (websocketFetch) {\n Object.defineProperty(model, MASTRA_GATEWAY_STREAM_TRANSPORT, {\n configurable: true,\n value: {\n type: 'openai-websocket',\n close: websocketFetch.close,\n },\n });\n }\n\n return model;\n }\n\n return azureProvider(modelId);\n }\n}\n","import { createAnthropic } from '@ai-sdk/anthropic-v6';\nimport { createOpenRouter } from '@openrouter/ai-sdk-provider-v5';\nimport { MastraError } from '../../../error/index.js';\nimport { PROVIDER_REGISTRY } from '../provider-registry.js';\nimport { MastraModelGateway } from './base.js';\nimport type { ProviderConfig, GatewayLanguageModel } from './base.js';\nimport { GATEWAY_AUTH_HEADER, MASTRA_USER_AGENT } from './constants.js';\n\nexport interface MastraGatewayConfig {\n apiKey?: string;\n baseUrl?: string;\n customFetch?: typeof globalThis.fetch;\n}\n\nexport class MastraGateway extends MastraModelGateway {\n readonly id = 'mastra';\n readonly name = 'Memory Gateway';\n\n constructor(private config?: MastraGatewayConfig) {\n super();\n }\n\n private getBaseUrl(): string {\n const raw = this.config?.baseUrl ?? process.env['MASTRA_GATEWAY_URL'] ?? 'https://gateway-api.mastra.ai';\n return raw.replace(/\\/+$/, '').replace(/\\/v1$/, '');\n }\n\n override shouldEnable(): boolean {\n return !!(this.config?.apiKey ?? process.env['MASTRA_GATEWAY_API_KEY']);\n }\n\n async fetchProviders(): Promise> {\n if (!this.shouldEnable()) {\n return {};\n }\n\n const openrouterConfig = PROVIDER_REGISTRY['openrouter'];\n const models = openrouterConfig?.models ?? [];\n\n const providers = {\n mastra: {\n apiKeyEnvVar: 'MASTRA_GATEWAY_API_KEY',\n apiKeyHeader: 'Authorization',\n name: 'Memory Gateway',\n gateway: 'mastra',\n models: [...models],\n docUrl: 'https://mastra.ai/docs/gateway',\n },\n };\n\n return providers;\n }\n\n async buildUrl(_modelId: string): Promise {\n return `${this.getBaseUrl()}/v1`;\n }\n\n async getApiKey(): Promise {\n const apiKey = this.config?.apiKey ?? process.env['MASTRA_GATEWAY_API_KEY'];\n if (!apiKey) {\n throw new MastraError({\n id: 'MASTRA_GATEWAY_NO_API_KEY',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'Missing MASTRA_GATEWAY_API_KEY environment variable',\n });\n }\n return apiKey;\n }\n\n resolveLanguageModel({\n modelId,\n providerId,\n apiKey,\n headers,\n }: {\n modelId: string;\n providerId: string;\n apiKey: string;\n headers?: Record;\n }): GatewayLanguageModel {\n const baseURL = `${this.getBaseUrl()}/v1`;\n const fullModelId = `${providerId}/${modelId}`;\n\n if (this.config?.customFetch && providerId === 'anthropic') {\n // Anthropic OAuth path: use native Anthropic SDK (sends /messages, not /chat/completions)\n return createAnthropic({\n apiKey: 'oauth-gateway-placeholder',\n baseURL,\n headers: {\n 'User-Agent': MASTRA_USER_AGENT,\n [GATEWAY_AUTH_HEADER]: `Bearer ${apiKey}`,\n ...headers,\n },\n fetch: this.config.customFetch as any,\n })(modelId) as unknown as GatewayLanguageModel;\n }\n\n if (this.config?.customFetch) {\n // Non-Anthropic OAuth path: gateway key in GATEWAY_AUTH_HEADER, customFetch owns Authorization\n return createOpenRouter({\n apiKey: 'oauth-gateway-placeholder',\n baseURL,\n headers: {\n 'User-Agent': MASTRA_USER_AGENT,\n [GATEWAY_AUTH_HEADER]: `Bearer ${apiKey}`,\n ...headers,\n },\n fetch: this.config.customFetch,\n }).chat(fullModelId) as unknown as GatewayLanguageModel;\n }\n\n // API key path: gateway key goes via Authorization (standard flow)\n return createOpenRouter({\n apiKey,\n baseURL,\n headers: {\n 'User-Agent': MASTRA_USER_AGENT,\n ...headers,\n },\n }).chat(fullModelId) as unknown as GatewayLanguageModel;\n }\n}\n","import { MastraError } from '../../../error/index.js';\nimport type { MastraModelGatewayInterface } from './base.js';\nexport {\n MastraModelGateway,\n type MastraModelGatewayInterface,\n type ProviderConfig,\n type GatewayLanguageModel,\n type GatewayAuthRequest,\n type GatewayAuthResult,\n type GatewayAuthSource,\n} from './base.js';\nexport {\n AzureOpenAIGateway,\n type AzureAccessToken,\n type AzureOpenAIGatewayConfig,\n type AzureTokenCredential,\n} from './azure.js';\nexport { ModelsDevGateway } from './models-dev.js';\nexport { MastraGateway, type MastraGatewayConfig } from './mastra.js';\nexport { NetlifyGateway } from './netlify.js';\n\nexport function getGatewayId(gateway: MastraModelGatewayInterface): string {\n return gateway.getId?.() ?? gateway.id;\n}\n\nexport function shouldEnableGateway(gateway: MastraModelGatewayInterface): boolean {\n return gateway.shouldEnable?.() ?? true;\n}\n\nexport function serializeGatewayForSpan(\n gateway: MastraModelGatewayInterface,\n): { id: string; name: string } & Record {\n return gateway.serializeForSpan?.() ?? { id: getGatewayId(gateway), name: gateway.name };\n}\n\n/**\n * Find the gateway that handles a specific model ID based on gateway ID\n * Gateway ID is used as the prefix (e.g., \"netlify\" for netlify gateway)\n * Exception: models.dev is a provider registry and doesn't use a prefix\n */\nexport function findGatewayForModel(\n gatewayId: string,\n gateways: MastraModelGatewayInterface[],\n): MastraModelGatewayInterface {\n // First, check for gateways whose ID matches the prefix (true gateways like netlify, openrouter, vercel)\n const prefixedGateway = gateways.find(g => {\n const id = getGatewayId(g);\n return id !== 'models.dev' && (id === gatewayId || gatewayId.startsWith(`${id}/`));\n });\n if (prefixedGateway) {\n return prefixedGateway;\n }\n\n // Then check models.dev (provider registry without prefix)\n const modelsDevGateway = gateways.find(g => getGatewayId(g) === 'models.dev');\n if (modelsDevGateway) {\n return modelsDevGateway;\n }\n\n throw new MastraError({\n id: 'MODEL_ROUTER_NO_GATEWAY_FOUND',\n category: 'USER',\n domain: 'MODEL_ROUTER',\n text: `No Mastra model router gateway found for model id ${gatewayId}`,\n });\n}\n","{\n \"providers\": {\n \"helicone\": {\n \"url\": \"https://ai-gateway.helicone.ai/v1\",\n \"apiKeyEnvVar\": \"HELICONE_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Helicone\",\n \"models\": [\n \"chatgpt-4o-latest\",\n \"claude-3-haiku-20240307\",\n \"claude-3.5-haiku\",\n \"claude-3.5-sonnet-v2\",\n \"claude-3.7-sonnet\",\n \"claude-4.5-haiku\",\n \"claude-4.5-opus\",\n \"claude-4.5-sonnet\",\n \"claude-haiku-4-5-20251001\",\n \"claude-opus-4\",\n \"claude-opus-4-1\",\n \"claude-opus-4-1-20250805\",\n \"claude-sonnet-4\",\n \"claude-sonnet-4-5-20250929\",\n \"deepseek-r1-distill-llama-70b\",\n \"deepseek-reasoner\",\n \"deepseek-tng-r1t2-chimera\",\n \"deepseek-v3\",\n \"deepseek-v3.1-terminus\",\n \"deepseek-v3.2\",\n \"ernie-4.5-21b-a3b-thinking\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-flash-lite\",\n \"gemini-2.5-pro\",\n \"gemini-3-pro-preview\",\n \"gemma-3-12b-it\",\n \"gemma2-9b-it\",\n \"glm-4.6\",\n \"gpt-4.1\",\n \"gpt-4.1-mini\",\n \"gpt-4.1-mini-2025-04-14\",\n \"gpt-4.1-nano\",\n \"gpt-4o\",\n \"gpt-4o-mini\",\n \"gpt-5\",\n \"gpt-5-chat-latest\",\n \"gpt-5-codex\",\n \"gpt-5-mini\",\n \"gpt-5-nano\",\n \"gpt-5-pro\",\n \"gpt-5.1\",\n \"gpt-5.1-chat-latest\",\n \"gpt-5.1-codex\",\n \"gpt-5.1-codex-mini\",\n \"gpt-oss-120b\",\n \"gpt-oss-20b\",\n \"grok-3\",\n \"grok-3-mini\",\n \"grok-4\",\n \"grok-4-1-fast-non-reasoning\",\n \"grok-4-1-fast-reasoning\",\n \"grok-4-fast-non-reasoning\",\n \"grok-4-fast-reasoning\",\n \"grok-code-fast-1\",\n \"hermes-2-pro-llama-3-8b\",\n \"kimi-k2-0711\",\n \"kimi-k2-0905\",\n \"kimi-k2-thinking\",\n \"llama-3.1-8b-instant\",\n \"llama-3.1-8b-instruct\",\n \"llama-3.1-8b-instruct-turbo\",\n \"llama-3.3-70b-instruct\",\n \"llama-3.3-70b-versatile\",\n \"llama-4-maverick\",\n \"llama-4-scout\",\n \"llama-guard-4\",\n \"llama-prompt-guard-2-22m\",\n \"llama-prompt-guard-2-86m\",\n \"mistral-large-2411\",\n \"mistral-nemo\",\n \"mistral-small\",\n \"o1\",\n \"o1-mini\",\n \"o3\",\n \"o3-mini\",\n \"o3-pro\",\n \"o4-mini\",\n \"qwen2.5-coder-7b-fast\",\n \"qwen3-235b-a22b-thinking\",\n \"qwen3-30b-a3b\",\n \"qwen3-32b\",\n \"qwen3-coder\",\n \"qwen3-coder-30b-a3b-instruct\",\n \"qwen3-next-80b-a3b-instruct\",\n \"qwen3-vl-235b-a22b-instruct\",\n \"sonar\",\n \"sonar-deep-research\",\n \"sonar-pro\",\n \"sonar-reasoning\",\n \"sonar-reasoning-pro\"\n ],\n \"docUrl\": \"https://helicone.ai/models\",\n \"gateway\": \"models.dev\"\n },\n \"auriko\": {\n \"url\": \"https://api.auriko.ai/v1\",\n \"apiKeyEnvVar\": \"AURIKO_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Auriko\",\n \"models\": [\n \"claude-opus-4-6\",\n \"claude-opus-4-7\",\n \"claude-sonnet-4-6\",\n \"deepseek-v4-flash\",\n \"deepseek-v4-pro\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-pro\",\n \"gemini-3.1-pro-preview\",\n \"glm-5.1\",\n \"grok-4.3\",\n \"kimi-k2.5\",\n \"kimi-k2.6\",\n \"minimax-m2-7\",\n \"minimax-m2-7-highspeed\",\n \"qwen-3.6-plus\"\n ],\n \"docUrl\": \"https://docs.auriko.ai\",\n \"gateway\": \"models.dev\"\n },\n \"firepass\": {\n \"url\": \"https://api.fireworks.ai/inference/v1/\",\n \"apiKeyEnvVar\": \"FIREPASS_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Fireworks (Firepass)\",\n \"models\": [\"accounts/fireworks/routers/kimi-k2p6-turbo\"],\n \"docUrl\": \"https://docs.fireworks.ai/firepass\",\n \"gateway\": \"models.dev\"\n },\n \"nano-gpt\": {\n \"url\": \"https://nano-gpt.com/api/v1\",\n \"apiKeyEnvVar\": \"NANO_GPT_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"NanoGPT\",\n \"models\": [\n \"Alibaba-NLP/Tongyi-DeepResearch-30B-A3B\",\n \"Baichuan-M2\",\n \"Baichuan4-Air\",\n \"Baichuan4-Turbo\",\n \"CrucibleLab/L3.3-70B-Loki-V2.0\",\n \"Doctor-Shotgun/MS3.2-24B-Magnum-Diamond\",\n \"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0\",\n \"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1\",\n \"EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2\",\n \"EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2\",\n \"Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B\",\n \"Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B\",\n \"GLM-4.5-Air-Derestricted\",\n \"GLM-4.5-Air-Derestricted-Iceblink\",\n \"GLM-4.5-Air-Derestricted-Iceblink-ReExtract\",\n \"GLM-4.5-Air-Derestricted-Iceblink-v2\",\n \"GLM-4.5-Air-Derestricted-Iceblink-v2-ReExtract\",\n \"GLM-4.5-Air-Derestricted-Steam\",\n \"GLM-4.5-Air-Derestricted-Steam-ReExtract\",\n \"GLM-4.6-Derestricted-v5\",\n \"GalrionSoftworks/MN-LooseCannon-12B-v1\",\n \"Gemma-3-27B-ArliAI-RPMax-v3\",\n \"Gemma-3-27B-Big-Tiger-v3\",\n \"Gemma-3-27B-CardProjector-v4\",\n \"Gemma-3-27B-Glitter\",\n \"Gemma-3-27B-Nidum-Uncensored\",\n \"Gemma-3-27B-it\",\n \"Gemma-3-27B-it-Abliterated\",\n \"Gryphe/MythoMax-L2-13b\",\n \"Infermatic/MN-12B-Inferor-v0.0\",\n \"KAT-Coder-Air-V1\",\n \"KAT-Coder-Exp-72B-1010\",\n \"KAT-Coder-Pro-V1\",\n \"LLM360/K2-Think\",\n \"LatitudeGames/Wayfarer-Large-70B-Llama-3.3\",\n \"Llama-3.3+(3.1v3.3)-70B-Hanami-x1\",\n \"Llama-3.3+(3.1v3.3)-70B-New-Dawn-v1.1\",\n \"Llama-3.3+(3v3.3)-70B-TenyxChat-DaybreakStorywriter\",\n \"Llama-3.3-70B-Anthrobomination\",\n \"Llama-3.3-70B-Argunaut-1-SFT\",\n \"Llama-3.3-70B-ArliAI-RPMax-v1.4\",\n \"Llama-3.3-70B-ArliAI-RPMax-v2\",\n \"Llama-3.3-70B-ArliAI-RPMax-v3\",\n \"Llama-3.3-70B-Aurora-Borealis\",\n \"Llama-3.3-70B-Bigger-Body\",\n \"Llama-3.3-70B-Cirrus-x1\",\n \"Llama-3.3-70B-Cu-Mai-R1\",\n \"Llama-3.3-70B-Damascus-R1\",\n \"Llama-3.3-70B-Dark-Ages-v0.1\",\n \"Llama-3.3-70B-Electra-R1\",\n \"Llama-3.3-70B-Electranova-v1.0\",\n \"Llama-3.3-70B-Fallen-R1-v1\",\n \"Llama-3.3-70B-Fallen-v1\",\n \"Llama-3.3-70B-Forgotten-Abomination-v5.0\",\n \"Llama-3.3-70B-Forgotten-Safeword-3.6\",\n \"Llama-3.3-70B-GeneticLemonade-Opus\",\n \"Llama-3.3-70B-GeneticLemonade-Unleashed-v3\",\n \"Llama-3.3-70B-Ignition-v0.1\",\n \"Llama-3.3-70B-Incandescent-Malevolence\",\n \"Llama-3.3-70B-Legion-V2.1\",\n \"Llama-3.3-70B-MS-Nevoria\",\n \"Llama-3.3-70B-Magnum-v4-SE\",\n \"Llama-3.3-70B-Magnum-v4-SE-Cirrus-x1-SLERP\",\n \"Llama-3.3-70B-Mhnnn-x1\",\n \"Llama-3.3-70B-MiraiFanfare\",\n \"Llama-3.3-70B-Mokume-Gane-R1\",\n \"Llama-3.3-70B-Nova\",\n \"Llama-3.3-70B-Predatorial-Extasy\",\n \"Llama-3.3-70B-Progenitor-V3.3\",\n \"Llama-3.3-70B-RAWMAW\",\n \"Llama-3.3-70B-Sapphira-0.1\",\n \"Llama-3.3-70B-Sapphira-0.2\",\n \"Llama-3.3-70B-Shakudo\",\n \"Llama-3.3-70B-StrawberryLemonade-v1.0\",\n \"Llama-3.3-70B-Strawberrylemonade-v1.2\",\n \"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.0\",\n \"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.1\",\n \"Llama-3.3-70B-Vulpecula-R1\",\n \"Magistral-Small-2506\",\n \"MarinaraSpaghetti/NemoMix-Unleashed-12B\",\n \"Meta-Llama-3-1-8B-Instruct-FP8\",\n \"MiniMax-M1\",\n \"MiniMax-M2\",\n \"MiniMaxAI/MiniMax-M1-80k\",\n \"Mistral-Nemo-12B-Instruct-2407\",\n \"NeverSleep/Llama-3-Lumimaid-70B-v0.1\",\n \"NeverSleep/Lumimaid-v0.2-70B\",\n \"NousResearch 2/DeepHermes-3-Mistral-24B-Preview\",\n \"NousResearch 2/Hermes-4-70B:thinking\",\n \"NousResearch 2/hermes-3-llama-3.1-70b\",\n \"NousResearch 2/hermes-4-405b\",\n \"NousResearch 2/hermes-4-405b:thinking\",\n \"NousResearch 2/hermes-4-70b\",\n \"QwQ-32B-ArliAI-RpR-v1\",\n \"Qwen2.5-32B-EVA-v0.2\",\n \"ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0\",\n \"ReadyArt/The-Omega-Abomination-L-70B-v1.0\",\n \"Salesforce/Llama-xLAM-2-70b-fc-r\",\n \"Sao10K/L3-8B-Stheno-v3.2\",\n \"Sao10K/L3.1-70B-Euryale-v2.2\",\n \"Sao10K/L3.1-70B-Hanami-x1\",\n \"Sao10K/L3.3-70B-Euryale-v2.3\",\n \"Steelskull/L3.3-Cu-Mai-R1-70b\",\n \"Steelskull/L3.3-Electra-R1-70b\",\n \"Steelskull/L3.3-MS-Evalebis-70b\",\n \"Steelskull/L3.3-MS-Evayale-70B\",\n \"Steelskull/L3.3-MS-Nevoria-70b\",\n \"Steelskull/L3.3-Nevoria-R1-70b\",\n \"TEE/deepseek-r1-0528\",\n \"TEE/deepseek-v3.1\",\n \"TEE/deepseek-v3.2\",\n \"TEE/gemma-3-27b-it\",\n \"TEE/glm-4.6\",\n \"TEE/glm-4.7\",\n \"TEE/glm-4.7-flash\",\n \"TEE/glm-5\",\n \"TEE/gpt-oss-120b\",\n \"TEE/gpt-oss-20b\",\n \"TEE/kimi-k2-thinking\",\n \"TEE/kimi-k2.5\",\n \"TEE/kimi-k2.5-thinking\",\n \"TEE/llama3-3-70b\",\n \"TEE/minimax-m2.1\",\n \"TEE/qwen2.5-vl-72b-instruct\",\n \"TEE/qwen3-30b-a3b-instruct-2507\",\n \"TEE/qwen3-coder\",\n \"TEE/qwen3.5-397b-a17b\",\n \"THUDM/GLM-4-32B-0414\",\n \"THUDM/GLM-4-9B-0414\",\n \"THUDM/GLM-Z1-32B-0414\",\n \"THUDM/GLM-Z1-9B-0414\",\n \"THUDM/GLM-Z1-Rumination-32B-0414\",\n \"TheDrummer 2/Anubis-70B-v1\",\n \"TheDrummer 2/Anubis-70B-v1.1\",\n \"TheDrummer 2/Cydonia-24B-v2\",\n \"TheDrummer 2/Cydonia-24B-v4\",\n \"TheDrummer 2/Cydonia-24B-v4.1\",\n \"TheDrummer 2/Cydonia-24B-v4.3\",\n \"TheDrummer 2/Magidonia-24B-v4.3\",\n \"TheDrummer 2/Rocinante-12B-v1.1\",\n \"TheDrummer 2/UnslopNemo-12B-v4.1\",\n \"TheDrummer 2/skyfall-36b-v2\",\n \"Tongyi-Zhiwen/QwenLong-L1-32B\",\n \"VongolaChouko/Starcannon-Unleashed-12B-v1.0\",\n \"abacusai/Dracarys-72B-Instruct\",\n \"aion-labs/aion-1.0\",\n \"aion-labs/aion-1.0-mini\",\n \"aion-labs/aion-rp-llama-3.1-8b\",\n \"alibaba/qwen3.6-flash\",\n \"allenai/molmo-2-8b\",\n \"allenai/olmo-3-32b-think\",\n \"allenai/olmo-3.1-32b-instruct\",\n \"allenai/olmo-3.1-32b-think\",\n \"amazon/nova-2-lite-v1\",\n \"amazon/nova-lite-v1\",\n \"amazon/nova-micro-v1\",\n \"amazon/nova-pro-v1\",\n \"anthracite-org/magnum-v2-72b\",\n \"anthracite-org/magnum-v4-72b\",\n \"anthropic/claude-opus-4.6\",\n \"anthropic/claude-opus-4.6:thinking\",\n \"anthropic/claude-opus-4.6:thinking:low\",\n \"anthropic/claude-opus-4.6:thinking:max\",\n \"anthropic/claude-opus-4.6:thinking:medium\",\n \"anthropic/claude-sonnet-4.6\",\n \"anthropic/claude-sonnet-4.6:thinking\",\n \"arcee-ai/trinity-large\",\n \"arcee-ai/trinity-mini\",\n \"asi1-mini\",\n \"auto-model\",\n \"auto-model-basic\",\n \"auto-model-premium\",\n \"auto-model-standard\",\n \"azure-gpt-4-turbo\",\n \"azure-gpt-4o\",\n \"azure-gpt-4o-mini\",\n \"azure-o1\",\n \"azure-o3-mini\",\n \"baidu/ernie-4.5-300b-a47b\",\n \"baidu/ernie-4.5-vl-28b-a3b\",\n \"baseten/Kimi-K2-Instruct-FP4\",\n \"brave\",\n \"brave-pro\",\n \"brave-research\",\n \"chroma\",\n \"chutesai/Mistral-Small-3.2-24B-Instruct-2506\",\n \"claude-3-5-haiku-20241022\",\n \"claude-3-5-sonnet-20240620\",\n \"claude-3-5-sonnet-20241022\",\n \"claude-3-7-sonnet-20250219\",\n \"claude-3-7-sonnet-reasoner\",\n \"claude-3-7-sonnet-thinking\",\n \"claude-3-7-sonnet-thinking:1024\",\n \"claude-3-7-sonnet-thinking:128000\",\n \"claude-3-7-sonnet-thinking:32768\",\n \"claude-3-7-sonnet-thinking:8192\",\n \"claude-haiku-4-5-20251001\",\n \"claude-opus-4-1-20250805\",\n \"claude-opus-4-1-thinking\",\n \"claude-opus-4-1-thinking:1024\",\n \"claude-opus-4-1-thinking:32000\",\n \"claude-opus-4-1-thinking:32768\",\n \"claude-opus-4-1-thinking:8192\",\n \"claude-opus-4-20250514\",\n \"claude-opus-4-5-20251101\",\n \"claude-opus-4-5-20251101:thinking\",\n \"claude-opus-4-thinking\",\n \"claude-opus-4-thinking:1024\",\n \"claude-opus-4-thinking:32000\",\n \"claude-opus-4-thinking:32768\",\n \"claude-opus-4-thinking:8192\",\n \"claude-sonnet-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-sonnet-4-5-20250929-thinking\",\n \"claude-sonnet-4-thinking\",\n \"claude-sonnet-4-thinking:1024\",\n \"claude-sonnet-4-thinking:32768\",\n \"claude-sonnet-4-thinking:64000\",\n \"claude-sonnet-4-thinking:8192\",\n \"cognitivecomputations/dolphin-2.9.2-qwen2-72b\",\n \"cohere/command-r\",\n \"cohere/command-r-plus-08-2024\",\n \"command-a-reasoning-08-2025\",\n \"deepclaude\",\n \"deepcogito/cogito-v1-preview-qwen-32B\",\n \"deepcogito/cogito-v2.1-671b\",\n \"deepseek-ai/DeepSeek-R1-0528\",\n \"deepseek-ai/DeepSeek-V3.1\",\n \"deepseek-ai/DeepSeek-V3.1-Terminus\",\n \"deepseek-ai/DeepSeek-V3.1-Terminus:thinking\",\n \"deepseek-ai/DeepSeek-V3.1:thinking\",\n \"deepseek-ai/deepseek-v3.2-exp\",\n \"deepseek-ai/deepseek-v3.2-exp-thinking\",\n \"deepseek-chat\",\n \"deepseek-chat-cheaper\",\n \"deepseek-math-v2\",\n \"deepseek-r1\",\n \"deepseek-r1-sambanova\",\n \"deepseek-reasoner\",\n \"deepseek-reasoner-cheaper\",\n \"deepseek-v3-0324\",\n \"deepseek/deepseek-prover-v2-671b\",\n \"deepseek/deepseek-v3.2\",\n \"deepseek/deepseek-v3.2-speciale\",\n \"deepseek/deepseek-v3.2:thinking\",\n \"dmind/dmind-1\",\n \"dmind/dmind-1-mini\",\n \"doubao-1-5-thinking-pro-250415\",\n \"doubao-1-5-thinking-pro-vision-250415\",\n \"doubao-1-5-thinking-vision-pro-250428\",\n \"doubao-1.5-pro-256k\",\n \"doubao-1.5-pro-32k\",\n \"doubao-1.5-vision-pro-32k\",\n \"doubao-seed-1-6-250615\",\n \"doubao-seed-1-6-flash-250615\",\n \"doubao-seed-1-6-thinking-250615\",\n \"doubao-seed-1-8-251215\",\n \"doubao-seed-2-0-code-preview-260215\",\n \"doubao-seed-2-0-lite-260215\",\n \"doubao-seed-2-0-mini-260215\",\n \"doubao-seed-2-0-pro-260215\",\n \"doubao-seed-code-preview-latest\",\n \"ernie-4.5-8k-preview\",\n \"ernie-4.5-turbo-128k\",\n \"ernie-4.5-turbo-vl-32k\",\n \"ernie-5.0-thinking-latest\",\n \"ernie-5.0-thinking-preview\",\n \"ernie-x1-32k\",\n \"ernie-x1-32k-preview\",\n \"ernie-x1-turbo-32k\",\n \"ernie-x1.1-preview\",\n \"essentialai/rnj-1-instruct\",\n \"exa-answer\",\n \"exa-research\",\n \"exa-research-pro\",\n \"failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5\",\n \"fastgpt\",\n \"featherless-ai/Qwerky-72B\",\n \"gemini-2.0-flash-001\",\n \"gemini-2.0-flash-exp-image-generation\",\n \"gemini-2.0-flash-lite\",\n \"gemini-2.0-flash-thinking-exp-01-21\",\n \"gemini-2.0-flash-thinking-exp-1219\",\n \"gemini-2.0-pro-exp-02-05\",\n \"gemini-2.0-pro-reasoner\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-flash-lite\",\n \"gemini-2.5-flash-lite-preview-06-17\",\n \"gemini-2.5-flash-lite-preview-09-2025\",\n \"gemini-2.5-flash-lite-preview-09-2025-thinking\",\n \"gemini-2.5-flash-nothinking\",\n \"gemini-2.5-flash-preview-04-17\",\n \"gemini-2.5-flash-preview-04-17:thinking\",\n \"gemini-2.5-flash-preview-05-20\",\n \"gemini-2.5-flash-preview-05-20:thinking\",\n \"gemini-2.5-flash-preview-09-2025\",\n \"gemini-2.5-flash-preview-09-2025-thinking\",\n \"gemini-2.5-pro\",\n \"gemini-2.5-pro-exp-03-25\",\n \"gemini-2.5-pro-preview-03-25\",\n \"gemini-2.5-pro-preview-05-06\",\n \"gemini-2.5-pro-preview-06-05\",\n \"gemini-3-pro-image-preview\",\n \"gemini-3-pro-preview\",\n \"gemini-3-pro-preview-thinking\",\n \"gemini-exp-1206\",\n \"glm-4\",\n \"glm-4-air\",\n \"glm-4-air-0111\",\n \"glm-4-airx\",\n \"glm-4-flash\",\n \"glm-4-long\",\n \"glm-4-plus\",\n \"glm-4-plus-0111\",\n \"glm-4.1v-thinking-flash\",\n \"glm-4.1v-thinking-flashx\",\n \"glm-z1-air\",\n \"glm-z1-airx\",\n \"glm-zero-preview\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3-flash-preview-thinking\",\n \"google/gemini-flash-1.5\",\n \"grok-3-beta\",\n \"grok-3-fast-beta\",\n \"grok-3-mini-beta\",\n \"grok-3-mini-fast-beta\",\n \"hidream\",\n \"huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated\",\n \"huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated\",\n \"huihui-ai/Llama-3.1-Nemotron-70B-Instruct-HF-abliterated\",\n \"huihui-ai/Llama-3.3-70B-Instruct-abliterated\",\n \"huihui-ai/Qwen2.5-32B-Instruct-abliterated\",\n \"hunyuan-t1-latest\",\n \"hunyuan-turbos-20250226\",\n \"inflatebot/MN-12B-Mag-Mell-R1\",\n \"inflection/inflection-3-pi\",\n \"inflection/inflection-3-productivity\",\n \"jamba-large\",\n \"jamba-large-1.6\",\n \"jamba-large-1.7\",\n \"jamba-mini\",\n \"jamba-mini-1.6\",\n \"jamba-mini-1.7\",\n \"kimi-k2-instruct-fast\",\n \"kimi-thinking-preview\",\n \"learnlm-1.5-pro-experimental\",\n \"meganova-ai/manta-flash-1.0\",\n \"meganova-ai/manta-mini-1.0\",\n \"meganova-ai/manta-pro-1.0\",\n \"meituan-longcat/LongCat-Flash-Chat-FP8\",\n \"meta-llama/llama-3.1-8b-instruct\",\n \"meta-llama/llama-3.2-3b-instruct\",\n \"meta-llama/llama-3.2-90b-vision-instruct\",\n \"meta-llama/llama-3.3-70b-instruct\",\n \"meta-llama/llama-4-maverick\",\n \"meta-llama/llama-4-scout\",\n \"microsoft/MAI-DS-R1-FP8\",\n \"microsoft/wizardlm-2-8x22b\",\n \"minimax/minimax-01\",\n \"minimax/minimax-m2-her\",\n \"minimax/minimax-m2.1\",\n \"minimax/minimax-m2.5\",\n \"minimax/minimax-m2.7\",\n \"miromind-ai/mirothinker-v1.5-235b\",\n \"mistral-small-31-24b-instruct\",\n \"mistralai/Devstral-Small-2505\",\n \"mistralai/Mistral-Nemo-Instruct-2407\",\n \"mistralai/codestral-2508\",\n \"mistralai/devstral-2-123b-instruct-2512\",\n \"mistralai/ministral-14b-2512\",\n \"mistralai/ministral-14b-instruct-2512\",\n \"mistralai/ministral-3b-2512\",\n \"mistralai/ministral-8b-2512\",\n \"mistralai/mistral-7b-instruct\",\n \"mistralai/mistral-large\",\n \"mistralai/mistral-large-3-675b-instruct-2512\",\n \"mistralai/mistral-medium-3\",\n \"mistralai/mistral-medium-3.1\",\n \"mistralai/mistral-saba\",\n \"mistralai/mistral-small-creative\",\n \"mistralai/mistral-tiny\",\n \"mistralai/mixtral-8x22b-instruct-v0.1\",\n \"mistralai/mixtral-8x7b-instruct-v0.1\",\n \"mlabonne/NeuralDaredevil-8B-abliterated\",\n \"moonshotai/Kimi-Dev-72B\",\n \"moonshotai/Kimi-K2-Instruct-0905\",\n \"moonshotai/kimi-k2-instruct\",\n \"moonshotai/kimi-k2-instruct-0711\",\n \"moonshotai/kimi-k2-thinking\",\n \"moonshotai/kimi-k2-thinking-original\",\n \"moonshotai/kimi-k2-thinking-turbo-original\",\n \"moonshotai/kimi-k2.5\",\n \"moonshotai/kimi-k2.5:thinking\",\n \"moonshotai/kimi-k2.6\",\n \"moonshotai/kimi-k2.6:thinking\",\n \"nex-agi/deepseek-v3.1-nex-n1\",\n \"nothingiisreal/L3.1-70B-Celeste-V0.1-BF16\",\n \"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF\",\n \"nvidia/Llama-3.1-Nemotron-Ultra-253B-v1\",\n \"nvidia/Llama-3.3-Nemotron-Super-49B-v1\",\n \"nvidia/Llama-3_3-Nemotron-Super-49B-v1_5\",\n \"nvidia/nemotron-3-nano-30b-a3b\",\n \"nvidia/nvidia-nemotron-nano-9b-v2\",\n \"openai/chatgpt-4o-latest\",\n \"openai/gpt-3.5-turbo\",\n \"openai/gpt-4-turbo\",\n \"openai/gpt-4-turbo-preview\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-4o\",\n \"openai/gpt-4o-2024-08-06\",\n \"openai/gpt-4o-2024-11-20\",\n \"openai/gpt-4o-mini\",\n \"openai/gpt-4o-mini-search-preview\",\n \"openai/gpt-4o-search-preview\",\n \"openai/gpt-5\",\n \"openai/gpt-5-chat-latest\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5-pro\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.1-2025-11-13\",\n \"openai/gpt-5.1-chat\",\n \"openai/gpt-5.1-chat-latest\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-max\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-chat\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"openai/gpt-oss-safeguard-20b\",\n \"openai/o1\",\n \"openai/o1-preview\",\n \"openai/o1-pro\",\n \"openai/o3\",\n \"openai/o3-deep-research\",\n \"openai/o3-mini\",\n \"openai/o3-mini-high\",\n \"openai/o3-mini-low\",\n \"openai/o3-pro-2025-06-10\",\n \"openai/o4-mini\",\n \"openai/o4-mini-deep-research\",\n \"openai/o4-mini-high\",\n \"pamanseau/OpenReasoning-Nemotron-32B\",\n \"phi-4-mini-instruct\",\n \"phi-4-multimodal-instruct\",\n \"qvq-max\",\n \"qwen-3.6-plus\",\n \"qwen-image\",\n \"qwen-long\",\n \"qwen-max\",\n \"qwen-plus\",\n \"qwen-turbo\",\n \"qwen/Qwen3.6-35B-A3B\",\n \"qwen/Qwen3.6-35B-A3B:thinking\",\n \"qwen/qwen3.5-397b-a17b\",\n \"qwen25-vl-72b-instruct\",\n \"qwen3-30b-a3b-instruct-2507\",\n \"qwen3-coder-30b-a3b-instruct\",\n \"qwen3-max-2026-01-23\",\n \"qwen3-vl-235b-a22b-instruct-original\",\n \"qwen3-vl-235b-a22b-thinking\",\n \"qwen3.6-max-preview\",\n \"qwq-32b\",\n \"raifle/sorcererlm-8x22b\",\n \"sarvan-medium\",\n \"shisa-ai/shisa-v2-llama3.3-70b\",\n \"shisa-ai/shisa-v2.1-llama3.3-70b\",\n \"sonar\",\n \"sonar-deep-research\",\n \"sonar-pro\",\n \"sonar-reasoning-pro\",\n \"soob3123/GrayLine-Qwen3-8B\",\n \"soob3123/Veiled-Calla-12B\",\n \"soob3123/amoral-gemma3-27B-v2\",\n \"step-2-16k-exp\",\n \"step-2-mini\",\n \"step-3\",\n \"step-r1-v-mini\",\n \"stepfun-ai/step-3.5-flash\",\n \"stepfun-ai/step-3.5-flash:thinking\",\n \"study_gpt-chatgpt-4o-latest\",\n \"tencent/Hunyuan-MT-7B\",\n \"tngtech/DeepSeek-TNG-R1T2-Chimera\",\n \"tngtech/tng-r1t-chimera\",\n \"undi95/remm-slerp-l2-13b\",\n \"universal-summarizer\",\n \"unsloth/gemma-3-12b-it\",\n \"unsloth/gemma-3-1b-it\",\n \"unsloth/gemma-3-27b-it\",\n \"unsloth/gemma-3-4b-it\",\n \"v0-1.0-md\",\n \"v0-1.5-lg\",\n \"v0-1.5-md\",\n \"venice-uncensored\",\n \"venice-uncensored:web\",\n \"x-ai/grok-4-07-09\",\n \"x-ai/grok-4-fast\",\n \"x-ai/grok-4-fast:thinking\",\n \"x-ai/grok-4.1-fast\",\n \"x-ai/grok-4.1-fast-reasoning\",\n \"x-ai/grok-code-fast-1\",\n \"xiaomi/mimo-v2-flash\",\n \"xiaomi/mimo-v2-flash-original\",\n \"xiaomi/mimo-v2-flash-thinking\",\n \"xiaomi/mimo-v2-flash-thinking-original\",\n \"yi-large\",\n \"yi-lightning\",\n \"yi-medium-200k\",\n \"z-ai/glm-4.5v\",\n \"z-ai/glm-4.5v:thinking\",\n \"z-ai/glm-4.6\",\n \"z-ai/glm-4.6:thinking\",\n \"z-image-turbo\",\n \"zai-org/glm-4.7\",\n \"zai-org/glm-4.7-flash\",\n \"zai-org/glm-5\",\n \"zai-org/glm-5.1\",\n \"zai-org/glm-5.1:thinking\",\n \"zai-org/glm-5:thinking\"\n ],\n \"docUrl\": \"https://docs.nano-gpt.com\",\n \"gateway\": \"models.dev\"\n },\n \"io-net\": {\n \"url\": \"https://api.intelligence.io.solutions/api/v1\",\n \"apiKeyEnvVar\": \"IOINTELLIGENCE_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"IO.NET\",\n \"models\": [\n \"Intel/Qwen3-Coder-480B-A35B-Instruct-int4-mixed-ar\",\n \"Qwen/Qwen2.5-VL-32B-Instruct\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n \"deepseek-ai/DeepSeek-R1-0528\",\n \"meta-llama/Llama-3.2-90B-Vision-Instruct\",\n \"meta-llama/Llama-3.3-70B-Instruct\",\n \"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\",\n \"mistralai/Devstral-Small-2505\",\n \"mistralai/Magistral-Small-2506\",\n \"mistralai/Mistral-Large-Instruct-2411\",\n \"mistralai/Mistral-Nemo-Instruct-2407\",\n \"moonshotai/Kimi-K2-Instruct-0905\",\n \"moonshotai/Kimi-K2-Thinking\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"zai-org/GLM-4.6\"\n ],\n \"docUrl\": \"https://io.net/docs/guides/intelligence/io-intelligence\",\n \"gateway\": \"models.dev\"\n },\n \"inception\": {\n \"url\": \"https://api.inceptionlabs.ai/v1/\",\n \"apiKeyEnvVar\": \"INCEPTION_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Inception\",\n \"models\": [\"mercury-2\", \"mercury-edit-2\"],\n \"docUrl\": \"https://platform.inceptionlabs.ai/docs\",\n \"gateway\": \"models.dev\"\n },\n \"submodel\": {\n \"url\": \"https://llm.submodel.ai/v1\",\n \"apiKeyEnvVar\": \"SUBMODEL_INSTAGEN_ACCESS_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"submodel\",\n \"models\": [\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8\",\n \"deepseek-ai/DeepSeek-R1-0528\",\n \"deepseek-ai/DeepSeek-V3-0324\",\n \"deepseek-ai/DeepSeek-V3.1\",\n \"openai/gpt-oss-120b\",\n \"zai-org/GLM-4.5-Air\",\n \"zai-org/GLM-4.5-FP8\"\n ],\n \"docUrl\": \"https://submodel.gitbook.io\",\n \"gateway\": \"models.dev\"\n },\n \"requesty\": {\n \"url\": \"https://router.requesty.ai/v1\",\n \"apiKeyEnvVar\": \"REQUESTY_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Requesty\",\n \"models\": [\n \"anthropic/claude-3-7-sonnet\",\n \"anthropic/claude-haiku-4-5\",\n \"anthropic/claude-opus-4\",\n \"anthropic/claude-opus-4-1\",\n \"anthropic/claude-opus-4-5\",\n \"anthropic/claude-opus-4-6\",\n \"anthropic/claude-sonnet-4\",\n \"anthropic/claude-sonnet-4-5\",\n \"anthropic/claude-sonnet-4-6\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3-pro-preview\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4o-mini\",\n \"openai/gpt-5\",\n \"openai/gpt-5-chat\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5-image\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5-pro\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.1-chat\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-max\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-chat\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-5.3-codex\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-pro\",\n \"openai/o4-mini\",\n \"xai/grok-4\",\n \"xai/grok-4-fast\"\n ],\n \"docUrl\": \"https://requesty.ai/solution/llm-routing/models\",\n \"gateway\": \"models.dev\"\n },\n \"zai\": {\n \"url\": \"https://api.z.ai/api/paas/v4\",\n \"apiKeyEnvVar\": \"ZHIPU_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Z.AI\",\n \"models\": [\n \"glm-4.5\",\n \"glm-4.5-air\",\n \"glm-4.5-flash\",\n \"glm-4.5v\",\n \"glm-4.6\",\n \"glm-4.6v\",\n \"glm-4.7\",\n \"glm-4.7-flash\",\n \"glm-4.7-flashx\",\n \"glm-5\",\n \"glm-5-turbo\",\n \"glm-5.1\",\n \"glm-5v-turbo\"\n ],\n \"docUrl\": \"https://docs.z.ai/guides/overview/pricing\",\n \"gateway\": \"models.dev\"\n },\n \"zai-coding-plan\": {\n \"url\": \"https://api.z.ai/api/coding/paas/v4\",\n \"apiKeyEnvVar\": \"ZHIPU_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Z.AI Coding Plan\",\n \"models\": [\"glm-4.5-air\", \"glm-4.7\", \"glm-5-turbo\", \"glm-5.1\", \"glm-5v-turbo\"],\n \"docUrl\": \"https://docs.z.ai/devpack/overview\",\n \"gateway\": \"models.dev\"\n },\n \"deepinfra\": {\n \"apiKeyEnvVar\": \"DEEPINFRA_API_KEY\",\n \"name\": \"Deep Infra\",\n \"models\": [\n \"MiniMaxAI/MiniMax-M2\",\n \"MiniMaxAI/MiniMax-M2.1\",\n \"MiniMaxAI/MiniMax-M2.5\",\n \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\",\n \"Qwen/Qwen3.5-35B-A3B\",\n \"Qwen/Qwen3.5-397B-A17B\",\n \"Qwen/Qwen3.6-35B-A3B\",\n \"anthropic/claude-3-7-sonnet-latest\",\n \"anthropic/claude-4-opus\",\n \"deepseek-ai/DeepSeek-R1-0528\",\n \"deepseek-ai/DeepSeek-V3.2\",\n \"deepseek-ai/DeepSeek-V4-Flash\",\n \"deepseek-ai/DeepSeek-V4-Pro\",\n \"google/gemma-4-26B-A4B-it\",\n \"google/gemma-4-31B-it\",\n \"meta-llama/Llama-3.1-70B-Instruct\",\n \"meta-llama/Llama-3.1-70B-Instruct-Turbo\",\n \"meta-llama/Llama-3.1-8B-Instruct\",\n \"meta-llama/Llama-3.1-8B-Instruct-Turbo\",\n \"meta-llama/Llama-3.3-70B-Instruct-Turbo\",\n \"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\",\n \"meta-llama/Llama-4-Scout-17B-16E-Instruct\",\n \"moonshotai/Kimi-K2-Instruct\",\n \"moonshotai/Kimi-K2-Instruct-0905\",\n \"moonshotai/Kimi-K2-Thinking\",\n \"moonshotai/Kimi-K2.5\",\n \"moonshotai/Kimi-K2.6\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"xiaomi/mimo-v2.5\",\n \"xiaomi/mimo-v2.5-pro\",\n \"zai-org/GLM-4.6\",\n \"zai-org/GLM-4.6V\",\n \"zai-org/GLM-4.7\",\n \"zai-org/GLM-4.7-Flash\",\n \"zai-org/GLM-5\",\n \"zai-org/GLM-5.1\"\n ],\n \"docUrl\": \"https://deepinfra.com/models\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/deepinfra\"\n },\n \"clarifai\": {\n \"url\": \"https://api.clarifai.com/v2/ext/openai/v1\",\n \"apiKeyEnvVar\": \"CLARIFAI_PAT\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Clarifai\",\n \"models\": [\n \"arcee_ai/AFM/models/trinity-mini\",\n \"clarifai/main/models/mm-poly-8b\",\n \"deepseek-ai/deepseek-ocr/models/DeepSeek-OCR\",\n \"minimaxai/chat-completion/models/MiniMax-M2_5-high-throughput\",\n \"mistralai/completion/models/Ministral-3-14B-Reasoning-2512\",\n \"mistralai/completion/models/Ministral-3-3B-Reasoning-2512\",\n \"moonshotai/chat-completion/models/Kimi-K2_6\",\n \"openai/chat-completion/models/gpt-oss-120b-high-throughput\",\n \"openai/chat-completion/models/gpt-oss-20b\",\n \"qwen/qwenCoder/models/Qwen3-Coder-30B-A3B-Instruct\",\n \"qwen/qwenLM/models/Qwen3-30B-A3B-Instruct-2507\",\n \"qwen/qwenLM/models/Qwen3-30B-A3B-Thinking-2507\"\n ],\n \"docUrl\": \"https://docs.clarifai.com/compute/inference/\",\n \"gateway\": \"models.dev\"\n },\n \"moark\": {\n \"url\": \"https://moark.com/v1\",\n \"apiKeyEnvVar\": \"MOARK_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Moark\",\n \"models\": [\"GLM-4.7\", \"MiniMax-M2.1\"],\n \"docUrl\": \"https://moark.com/docs/openapi/v1#tag/%E6%96%87%E6%9C%AC%E7%94%9F%E6%88%90\",\n \"gateway\": \"models.dev\"\n },\n \"frogbot\": {\n \"url\": \"https://app.frogbot.ai/api/v1\",\n \"apiKeyEnvVar\": \"FROGBOT_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"FrogBot\",\n \"models\": [\n \"claude-haiku-4-5\",\n \"claude-opus-4-6\",\n \"claude-opus-4-7\",\n \"claude-sonnet-4-6\",\n \"deepseek-v4-pro\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-pro\",\n \"gemini-3-1-pro-preview\",\n \"gemini-3-flash-preview\",\n \"gpt-4o\",\n \"gpt-5-3-codex\",\n \"gpt-5-4-mini\",\n \"gpt-5-4-nano\",\n \"gpt-5-5\",\n \"gpt-oss-120b\",\n \"gpt-oss-20b\",\n \"grok-4-1-fast-non-reasoning\",\n \"grok-4-1-fast-reasoning\",\n \"grok-4-3\",\n \"grok-code-fast-1\",\n \"kimi-k2-6\",\n \"kimi-k2.5\",\n \"minimax-m2-5\",\n \"minimax-m2-7\",\n \"qwen-3-6-plus\",\n \"zai-glm-5-1\"\n ],\n \"docUrl\": \"https://docs.frogbot.ai\",\n \"gateway\": \"models.dev\"\n },\n \"wandb\": {\n \"url\": \"https://api.inference.wandb.ai/v1\",\n \"apiKeyEnvVar\": \"WANDB_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Weights & Biases\",\n \"models\": [\n \"MiniMaxAI/MiniMax-M2.5\",\n \"OpenPipe/Qwen3-14B-Instruct\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n \"deepseek-ai/DeepSeek-V3.1\",\n \"meta-llama/Llama-3.1-70B-Instruct\",\n \"meta-llama/Llama-3.1-8B-Instruct\",\n \"meta-llama/Llama-3.3-70B-Instruct\",\n \"meta-llama/Llama-4-Scout-17B-16E-Instruct\",\n \"microsoft/Phi-4-mini-instruct\",\n \"moonshotai/Kimi-K2.5\",\n \"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"zai-org/GLM-5-FP8\",\n \"zai-org/GLM-5.1\"\n ],\n \"docUrl\": \"https://docs.wandb.ai/guides/integrations/inference/\",\n \"gateway\": \"models.dev\"\n },\n \"gmicloud\": {\n \"url\": \"https://api.gmi-serving.com/v1\",\n \"apiKeyEnvVar\": \"GMICLOUD_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"GMI Cloud\",\n \"models\": [\n \"anthropic/claude-opus-4.6\",\n \"anthropic/claude-opus-4.7\",\n \"anthropic/claude-sonnet-4.6\",\n \"deepseek-ai/DeepSeek-V4-Flash\",\n \"deepseek-ai/DeepSeek-V4-Pro\",\n \"moonshotai/Kimi-K2.6\",\n \"zai-org/GLM-5-FP8\",\n \"zai-org/GLM-5.1-FP8\"\n ],\n \"docUrl\": \"https://docs.gmicloud.ai/inference-engine/api-reference/llm-api-reference\",\n \"gateway\": \"models.dev\"\n },\n \"crof\": {\n \"url\": \"https://crof.ai/v1\",\n \"apiKeyEnvVar\": \"CROF_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"CrofAI\",\n \"models\": [\n \"deepseek-v3.2\",\n \"deepseek-v4-flash\",\n \"deepseek-v4-pro\",\n \"deepseek-v4-pro-precision\",\n \"gemma-4-31b-it\",\n \"glm-4.7\",\n \"glm-4.7-flash\",\n \"glm-5\",\n \"glm-5.1\",\n \"glm-5.1-precision\",\n \"greg\",\n \"kimi-k2.5\",\n \"kimi-k2.5-lightning\",\n \"kimi-k2.6\",\n \"kimi-k2.6-precision\",\n \"mimo-v2.5-pro\",\n \"mimo-v2.5-pro-precision\",\n \"minimax-m2.5\",\n \"qwen3.5-397b-a17b\",\n \"qwen3.5-9b\",\n \"qwen3.6-27b\"\n ],\n \"docUrl\": \"https://crof.ai/docs\",\n \"gateway\": \"models.dev\"\n },\n \"ambient\": {\n \"url\": \"https://api.ambient.xyz/v1\",\n \"apiKeyEnvVar\": \"AMBIENT_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Ambient\",\n \"models\": [\"moonshotai/kimi-k2.6\", \"zai-org/GLM-5.1-FP8\"],\n \"docUrl\": \"https://ambient.xyz\",\n \"gateway\": \"models.dev\"\n },\n \"routing-run\": {\n \"url\": \"https://api.routing.run/v1\",\n \"apiKeyEnvVar\": \"ROUTING_RUN_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"routing.run\",\n \"models\": [\n \"route/deepseek-v3.2\",\n \"route/deepseek-v4-flash\",\n \"route/deepseek-v4-flash-6bit\",\n \"route/deepseek-v4-pro\",\n \"route/deepseek-v4-pro-6bit\",\n \"route/gemma-4-31b-it\",\n \"route/glm-5.1\",\n \"route/glm-5.1-6bit\",\n \"route/kimi-k2.5\",\n \"route/kimi-k2.6\",\n \"route/kimi-k2.6-6bit\",\n \"route/mimo-v2.5-pro\",\n \"route/mimo-v2.5-pro-6bit\",\n \"route/minimax-m2.5\",\n \"route/minimax-m2.5-highspeed\",\n \"route/minimax-m2.7\",\n \"route/minimax-m2.7-highspeed\",\n \"route/mistral-large-3\",\n \"route/mistral-medium-2505\",\n \"route/mistral-small-2503\",\n \"route/qwen3.6-27b\",\n \"route/step-3.5-flash\",\n \"route/step-3.5-flash-2603\",\n \"route/stepfun-3.5-flash\"\n ],\n \"docUrl\": \"https://docs.routing.run/api-reference/models\",\n \"gateway\": \"models.dev\"\n },\n \"the-grid-ai\": {\n \"url\": \"https://api.thegrid.ai/v1\",\n \"apiKeyEnvVar\": \"THEGRIDAI_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"The Grid AI\",\n \"models\": [\n \"agent-max\",\n \"agent-prime\",\n \"agent-standard\",\n \"code-max\",\n \"code-prime\",\n \"code-standard\",\n \"text-max\",\n \"text-prime\",\n \"text-standard\"\n ],\n \"docUrl\": \"https://thegrid.ai/docs\",\n \"gateway\": \"models.dev\"\n },\n \"fastrouter\": {\n \"url\": \"https://go.fastrouter.ai/api/v1\",\n \"apiKeyEnvVar\": \"FASTROUTER_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"FastRouter\",\n \"models\": [\n \"anthropic/claude-opus-4.1\",\n \"anthropic/claude-sonnet-4\",\n \"deepseek-ai/deepseek-r1-distill-llama-70b\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-pro\",\n \"moonshotai/kimi-k2\",\n \"openai/gpt-4.1\",\n \"openai/gpt-5\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"qwen/qwen3-coder\",\n \"x-ai/grok-4\",\n \"z-ai/glm-5\"\n ],\n \"docUrl\": \"https://fastrouter.ai/models\",\n \"gateway\": \"models.dev\"\n },\n \"tencent-coding-plan\": {\n \"url\": \"https://api.lkeap.cloud.tencent.com/coding/v3\",\n \"apiKeyEnvVar\": \"TENCENT_CODING_PLAN_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Tencent Coding Plan (China)\",\n \"models\": [\n \"glm-5\",\n \"hunyuan-2.0-instruct\",\n \"hunyuan-2.0-thinking\",\n \"hunyuan-t1\",\n \"hunyuan-turbos\",\n \"kimi-k2.5\",\n \"minimax-m2.5\",\n \"tc-code-latest\"\n ],\n \"docUrl\": \"https://cloud.tencent.com/document/product/1772/128947\",\n \"gateway\": \"models.dev\"\n },\n \"cortecs\": {\n \"url\": \"https://api.cortecs.ai/v1\",\n \"apiKeyEnvVar\": \"CORTECS_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Cortecs\",\n \"models\": [\n \"claude-4-5-sonnet\",\n \"claude-4-6-sonnet\",\n \"claude-haiku-4-5\",\n \"claude-opus4-5\",\n \"claude-opus4-6\",\n \"claude-opus4-7\",\n \"claude-sonnet-4\",\n \"codestral-2508\",\n \"deepseek-r1-0528\",\n \"deepseek-v3-0324\",\n \"deepseek-v3.2\",\n \"deepseek-v4-flash\",\n \"deepseek-v4-pro\",\n \"devstral-2512\",\n \"devstral-small-2512\",\n \"gemini-2.5-pro\",\n \"glm-4.5\",\n \"glm-4.5-air\",\n \"glm-4.7\",\n \"glm-4.7-flash\",\n \"glm-5\",\n \"glm-5.1\",\n \"gpt-4.1\",\n \"gpt-oss-120b\",\n \"hermes-4-70b\",\n \"intellect-3\",\n \"kimi-k2-instruct\",\n \"kimi-k2-thinking\",\n \"kimi-k2.5\",\n \"kimi-k2.6\",\n \"llama-3.1-405b-instruct\",\n \"llama-3.3-70b-instruct\",\n \"minimax-m2\",\n \"minimax-m2.1\",\n \"minimax-m2.5\",\n \"minimax-m2.7\",\n \"mistral-large-2512\",\n \"mixtral-8x7B-instruct-v0.1\",\n \"nemotron-3-super-120b-a12b\",\n \"nova-pro-v1\",\n \"qwen-2.5-72b-instruct\",\n \"qwen3-235b-a22b-instruct-2507\",\n \"qwen3-32b\",\n \"qwen3-coder-30b-a3b-instruct\",\n \"qwen3-coder-480b-a35b-instruct\",\n \"qwen3-coder-next\",\n \"qwen3-next-80b-a3b-thinking\",\n \"qwen3.5-122b-a10b\",\n \"qwen3.5-397b-a17b\"\n ],\n \"docUrl\": \"https://api.cortecs.ai/v1/models\",\n \"gateway\": \"models.dev\"\n },\n \"baseten\": {\n \"url\": \"https://inference.baseten.co/v1\",\n \"apiKeyEnvVar\": \"BASETEN_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Baseten\",\n \"models\": [\n \"MiniMaxAI/MiniMax-M2.5\",\n \"deepseek-ai/DeepSeek-V3-0324\",\n \"deepseek-ai/DeepSeek-V3.1\",\n \"deepseek-ai/DeepSeek-V4-Pro\",\n \"moonshotai/Kimi-K2.5\",\n \"moonshotai/Kimi-K2.6\",\n \"nvidia/Nemotron-120B-A12B\",\n \"openai/gpt-oss-120b\",\n \"zai-org/GLM-4.6\",\n \"zai-org/GLM-4.7\",\n \"zai-org/GLM-5\"\n ],\n \"docUrl\": \"https://docs.baseten.co/development/model-apis/overview\",\n \"gateway\": \"models.dev\"\n },\n \"llama\": {\n \"url\": \"https://api.llama.com/compat/v1/\",\n \"apiKeyEnvVar\": \"LLAMA_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Llama\",\n \"models\": [\n \"cerebras-llama-4-maverick-17b-128e-instruct\",\n \"cerebras-llama-4-scout-17b-16e-instruct\",\n \"groq-llama-4-maverick-17b-128e-instruct\",\n \"llama-3.3-70b-instruct\",\n \"llama-3.3-8b-instruct\",\n \"llama-4-maverick-17b-128e-instruct-fp8\",\n \"llama-4-scout-17b-16e-instruct-fp8\"\n ],\n \"docUrl\": \"https://llama.developer.meta.com/docs/models\",\n \"gateway\": \"models.dev\"\n },\n \"novita-ai\": {\n \"url\": \"https://api.novita.ai/openai\",\n \"apiKeyEnvVar\": \"NOVITA_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"NovitaAI\",\n \"models\": [\n \"baichuan/baichuan-m2-32b\",\n \"baidu/ernie-4.5-21B-a3b\",\n \"baidu/ernie-4.5-21B-a3b-thinking\",\n \"baidu/ernie-4.5-300b-a47b-paddle\",\n \"baidu/ernie-4.5-vl-28b-a3b\",\n \"baidu/ernie-4.5-vl-28b-a3b-thinking\",\n \"baidu/ernie-4.5-vl-424b-a47b\",\n \"deepseek/deepseek-ocr\",\n \"deepseek/deepseek-ocr-2\",\n \"deepseek/deepseek-prover-v2-671b\",\n \"deepseek/deepseek-r1-0528\",\n \"deepseek/deepseek-r1-0528-qwen3-8b\",\n \"deepseek/deepseek-r1-distill-llama-70b\",\n \"deepseek/deepseek-r1-distill-qwen-14b\",\n \"deepseek/deepseek-r1-distill-qwen-32b\",\n \"deepseek/deepseek-r1-turbo\",\n \"deepseek/deepseek-v3-0324\",\n \"deepseek/deepseek-v3-turbo\",\n \"deepseek/deepseek-v3.1\",\n \"deepseek/deepseek-v3.1-terminus\",\n \"deepseek/deepseek-v3.2\",\n \"deepseek/deepseek-v3.2-exp\",\n \"deepseek/deepseek-v4-flash\",\n \"deepseek/deepseek-v4-pro\",\n \"google/gemma-3-12b-it\",\n \"google/gemma-3-27b-it\",\n \"google/gemma-4-26b-a4b-it\",\n \"google/gemma-4-31b-it\",\n \"gryphe/mythomax-l2-13b\",\n \"inclusionai/ling-2.6-1t\",\n \"inclusionai/ling-2.6-flash\",\n \"kwaipilot/kat-coder-pro\",\n \"meta-llama/llama-3-70b-instruct\",\n \"meta-llama/llama-3-8b-instruct\",\n \"meta-llama/llama-3.1-8b-instruct\",\n \"meta-llama/llama-3.2-3b-instruct\",\n \"meta-llama/llama-3.3-70b-instruct\",\n \"meta-llama/llama-4-maverick-17b-128e-instruct-fp8\",\n \"meta-llama/llama-4-scout-17b-16e-instruct\",\n \"microsoft/wizardlm-2-8x22b\",\n \"minimax/minimax-m2\",\n \"minimax/minimax-m2.1\",\n \"minimax/minimax-m2.5\",\n \"minimax/minimax-m2.5-highspeed\",\n \"minimax/minimax-m2.7\",\n \"minimaxai/minimax-m1-80k\",\n \"mistralai/mistral-nemo\",\n \"moonshotai/kimi-k2-0905\",\n \"moonshotai/kimi-k2-instruct\",\n \"moonshotai/kimi-k2-thinking\",\n \"moonshotai/kimi-k2.5\",\n \"moonshotai/kimi-k2.6\",\n \"nousresearch/hermes-2-pro-llama-3-8b\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"paddlepaddle/paddleocr-vl\",\n \"qwen/qwen-2.5-72b-instruct\",\n \"qwen/qwen-mt-plus\",\n \"qwen/qwen2.5-7b-instruct\",\n \"qwen/qwen2.5-vl-72b-instruct\",\n \"qwen/qwen3-235b-a22b-fp8\",\n \"qwen/qwen3-235b-a22b-instruct-2507\",\n \"qwen/qwen3-235b-a22b-thinking-2507\",\n \"qwen/qwen3-30b-a3b-fp8\",\n \"qwen/qwen3-32b-fp8\",\n \"qwen/qwen3-4b-fp8\",\n \"qwen/qwen3-8b-fp8\",\n \"qwen/qwen3-coder-30b-a3b-instruct\",\n \"qwen/qwen3-coder-480b-a35b-instruct\",\n \"qwen/qwen3-coder-next\",\n \"qwen/qwen3-max\",\n \"qwen/qwen3-next-80b-a3b-instruct\",\n \"qwen/qwen3-next-80b-a3b-thinking\",\n \"qwen/qwen3-omni-30b-a3b-instruct\",\n \"qwen/qwen3-omni-30b-a3b-thinking\",\n \"qwen/qwen3-vl-235b-a22b-instruct\",\n \"qwen/qwen3-vl-235b-a22b-thinking\",\n \"qwen/qwen3-vl-30b-a3b-instruct\",\n \"qwen/qwen3-vl-30b-a3b-thinking\",\n \"qwen/qwen3-vl-8b-instruct\",\n \"qwen/qwen3.5-122b-a10b\",\n \"qwen/qwen3.5-27b\",\n \"qwen/qwen3.5-35b-a3b\",\n \"qwen/qwen3.5-397b-a17b\",\n \"sao10K/L3-8B-stheno-v3.2\",\n \"sao10K/l3-70b-euryale-v2.1\",\n \"sao10K/l3-8b-lunaris\",\n \"sao10K/l31-70b-euryale-v2.2\",\n \"xiaomimimo/mimo-v2-flash\",\n \"zai-org/autoglm-phone-9b-multilingual\",\n \"zai-org/glm-4.5\",\n \"zai-org/glm-4.5-air\",\n \"zai-org/glm-4.5v\",\n \"zai-org/glm-4.6\",\n \"zai-org/glm-4.6v\",\n \"zai-org/glm-4.7\",\n \"zai-org/glm-4.7-flash\",\n \"zai-org/glm-5\",\n \"zai-org/glm-5.1\"\n ],\n \"docUrl\": \"https://novita.ai/docs/guides/introduction\",\n \"gateway\": \"models.dev\"\n },\n \"digitalocean\": {\n \"url\": \"https://inference.do-ai.run/v1\",\n \"apiKeyEnvVar\": \"DIGITALOCEAN_ACCESS_TOKEN\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"DigitalOcean\",\n \"models\": [\n \"alibaba-qwen3-32b\",\n \"all-mini-lm-l6-v2\",\n \"anthropic-claude-4.1-opus\",\n \"anthropic-claude-4.5-haiku\",\n \"anthropic-claude-4.5-sonnet\",\n \"anthropic-claude-4.6-sonnet\",\n \"anthropic-claude-haiku-4.5\",\n \"anthropic-claude-opus-4\",\n \"anthropic-claude-opus-4.5\",\n \"anthropic-claude-opus-4.6\",\n \"anthropic-claude-opus-4.7\",\n \"anthropic-claude-sonnet-4\",\n \"arcee-trinity-large-thinking\",\n \"bge-m3\",\n \"bge-reranker-v2-m3\",\n \"deepseek-3.2\",\n \"deepseek-r1-distill-llama-70b\",\n \"deepseek-v3\",\n \"deepseek-v4-pro\",\n \"e5-large-v2\",\n \"fal-ai/elevenlabs/tts/multilingual-v2\",\n \"fal-ai/fast-sdxl\",\n \"fal-ai/flux/schnell\",\n \"fal-ai/stable-audio-25/text-to-audio\",\n \"gemma-4-31B-it\",\n \"glm-5\",\n \"gte-large-en-v1.5\",\n \"kimi-k2.5\",\n \"kimi-k2.6\",\n \"llama-4-maverick\",\n \"llama3-8b-instruct\",\n \"llama3.3-70b-instruct\",\n \"minimax-m2.5\",\n \"ministral-3-8b-instruct-2512\",\n \"mistral-3-14B\",\n \"mistral-7b-instruct-v0.3\",\n \"multi-qa-mpnet-base-dot-v1\",\n \"nemotron-3-nano-30b\",\n \"nemotron-3-nano-omni\",\n \"nemotron-nano-12b-v2-vl\",\n \"nvidia-nemotron-3-super-120b\",\n \"openai-gpt-4.1\",\n \"openai-gpt-4o\",\n \"openai-gpt-4o-mini\",\n \"openai-gpt-5\",\n \"openai-gpt-5-mini\",\n \"openai-gpt-5-nano\",\n \"openai-gpt-5.1-codex-max\",\n \"openai-gpt-5.2\",\n \"openai-gpt-5.2-pro\",\n \"openai-gpt-5.3-codex\",\n \"openai-gpt-5.4\",\n \"openai-gpt-5.4-mini\",\n \"openai-gpt-5.4-nano\",\n \"openai-gpt-5.4-pro\",\n \"openai-gpt-5.5\",\n \"openai-gpt-image-1\",\n \"openai-gpt-image-1.5\",\n \"openai-gpt-image-2\",\n \"openai-gpt-oss-120b\",\n \"openai-gpt-oss-20b\",\n \"openai-o1\",\n \"openai-o3\",\n \"openai-o3-mini\",\n \"qwen-2.5-14b-instruct\",\n \"qwen3-coder-flash\",\n \"qwen3-embedding-0.6b\",\n \"qwen3-tts-voicedesign\",\n \"qwen3.5-397b-a17b\",\n \"stable-diffusion-3.5-large\",\n \"wan2-2-t2v-a14b\"\n ],\n \"docUrl\": \"https://docs.digitalocean.com/products/gradient-ai-platform/details/models/\",\n \"gateway\": \"models.dev\"\n },\n \"moonshotai\": {\n \"url\": \"https://api.moonshot.ai/anthropic/v1\",\n \"apiKeyEnvVar\": \"MOONSHOT_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Moonshot AI\",\n \"models\": [\n \"kimi-k2-0711-preview\",\n \"kimi-k2-0905-preview\",\n \"kimi-k2-thinking\",\n \"kimi-k2-thinking-turbo\",\n \"kimi-k2-turbo-preview\",\n \"kimi-k2.5\",\n \"kimi-k2.6\"\n ],\n \"docUrl\": \"https://platform.moonshot.ai/docs/api/chat\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/anthropic\"\n },\n \"mistral\": {\n \"url\": \"https://api.mistral.ai/v1\",\n \"apiKeyEnvVar\": \"MISTRAL_API_KEY\",\n \"name\": \"Mistral\",\n \"models\": [\n \"codestral-latest\",\n \"devstral-2512\",\n \"devstral-medium-2507\",\n \"devstral-medium-latest\",\n \"devstral-small-2505\",\n \"devstral-small-2507\",\n \"labs-devstral-small-2512\",\n \"magistral-medium-latest\",\n \"magistral-small\",\n \"ministral-3b-latest\",\n \"ministral-8b-latest\",\n \"mistral-embed\",\n \"mistral-large-2411\",\n \"mistral-large-2512\",\n \"mistral-large-latest\",\n \"mistral-medium-2505\",\n \"mistral-medium-2508\",\n \"mistral-medium-2604\",\n \"mistral-medium-latest\",\n \"mistral-nemo\",\n \"mistral-small-2506\",\n \"mistral-small-2603\",\n \"mistral-small-latest\",\n \"open-mistral-7b\",\n \"open-mixtral-8x22b\",\n \"open-mixtral-8x7b\",\n \"pixtral-12b\",\n \"pixtral-large-latest\"\n ],\n \"docUrl\": \"https://docs.mistral.ai/getting-started/models/\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/mistral\"\n },\n \"kilo\": {\n \"url\": \"https://api.kilo.ai/api/gateway\",\n \"apiKeyEnvVar\": \"KILO_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Kilo Gateway\",\n \"models\": [\n \"ai21/jamba-large-1.7\",\n \"aion-labs/aion-1.0\",\n \"aion-labs/aion-1.0-mini\",\n \"aion-labs/aion-2.0\",\n \"aion-labs/aion-rp-llama-3.1-8b\",\n \"alfredpros/codellama-7b-instruct-solidity\",\n \"alibaba/tongyi-deepresearch-30b-a3b\",\n \"allenai/olmo-3-32b-think\",\n \"amazon/nova-2-lite-v1\",\n \"amazon/nova-lite-v1\",\n \"amazon/nova-micro-v1\",\n \"amazon/nova-premier-v1\",\n \"amazon/nova-pro-v1\",\n \"anthracite-org/magnum-v4-72b\",\n \"anthropic/claude-3-haiku\",\n \"anthropic/claude-3.5-haiku\",\n \"anthropic/claude-haiku-4.5\",\n \"anthropic/claude-opus-4\",\n \"anthropic/claude-opus-4.1\",\n \"anthropic/claude-opus-4.5\",\n \"anthropic/claude-opus-4.6\",\n \"anthropic/claude-opus-4.6-fast\",\n \"anthropic/claude-opus-4.7\",\n \"anthropic/claude-opus-4.7-fast\",\n \"anthropic/claude-sonnet-4\",\n \"anthropic/claude-sonnet-4.5\",\n \"anthropic/claude-sonnet-4.6\",\n \"arcee-ai/coder-large\",\n \"arcee-ai/maestro-reasoning\",\n \"arcee-ai/spotlight\",\n \"arcee-ai/trinity-large-preview\",\n \"arcee-ai/trinity-large-thinking\",\n \"arcee-ai/trinity-mini\",\n \"arcee-ai/virtuoso-large\",\n \"baidu/cobuddy:free\",\n \"baidu/ernie-4.5-21b-a3b\",\n \"baidu/ernie-4.5-21b-a3b-thinking\",\n \"baidu/ernie-4.5-300b-a47b\",\n \"baidu/ernie-4.5-vl-28b-a3b\",\n \"baidu/ernie-4.5-vl-424b-a47b\",\n \"baidu/qianfan-ocr-fast\",\n \"bytedance-seed/seed-1.6\",\n \"bytedance-seed/seed-1.6-flash\",\n \"bytedance-seed/seed-2.0-lite\",\n \"bytedance-seed/seed-2.0-mini\",\n \"bytedance/ui-tars-1.5-7b\",\n \"cohere/command-a\",\n \"cohere/command-r-08-2024\",\n \"cohere/command-r-plus-08-2024\",\n \"cohere/command-r7b-12-2024\",\n \"deepcogito/cogito-v2.1-671b\",\n \"deepseek/deepseek-chat\",\n \"deepseek/deepseek-chat-v3-0324\",\n \"deepseek/deepseek-chat-v3.1\",\n \"deepseek/deepseek-r1\",\n \"deepseek/deepseek-r1-0528\",\n \"deepseek/deepseek-r1-distill-llama-70b\",\n \"deepseek/deepseek-r1-distill-qwen-32b\",\n \"deepseek/deepseek-v3.1-terminus\",\n \"deepseek/deepseek-v3.2\",\n \"deepseek/deepseek-v3.2-exp\",\n \"deepseek/deepseek-v3.2-speciale\",\n \"deepseek/deepseek-v4-flash\",\n \"deepseek/deepseek-v4-flash:free\",\n \"deepseek/deepseek-v4-pro\",\n \"essentialai/rnj-1-instruct\",\n \"google/gemini-2.0-flash-001\",\n \"google/gemini-2.0-flash-lite-001\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-flash-image\",\n \"google/gemini-2.5-flash-lite\",\n \"google/gemini-2.5-flash-lite-preview-09-2025\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-2.5-pro-preview\",\n \"google/gemini-2.5-pro-preview-05-06\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3-pro-image-preview\",\n \"google/gemini-3.1-flash-image-preview\",\n \"google/gemini-3.1-flash-lite\",\n \"google/gemini-3.1-flash-lite-preview\",\n \"google/gemini-3.1-pro-preview\",\n \"google/gemini-3.1-pro-preview-customtools\",\n \"google/gemma-2-27b-it\",\n \"google/gemma-3-12b-it\",\n \"google/gemma-3-27b-it\",\n \"google/gemma-3-4b-it\",\n \"google/gemma-3n-e4b-it\",\n \"google/gemma-4-26b-a4b-it\",\n \"google/gemma-4-31b-it\",\n \"google/lyria-3-clip-preview\",\n \"google/lyria-3-pro-preview\",\n \"gryphe/mythomax-l2-13b\",\n \"ibm-granite/granite-4.0-h-micro\",\n \"ibm-granite/granite-4.1-8b\",\n \"inception/mercury-2\",\n \"inclusionai/ling-2.6-1t\",\n \"inclusionai/ling-2.6-flash\",\n \"inclusionai/ring-2.6-1t\",\n \"inflection/inflection-3-pi\",\n \"inflection/inflection-3-productivity\",\n \"kilo-auto/balanced\",\n \"kilo-auto/free\",\n \"kilo-auto/frontier\",\n \"kilo-auto/small\",\n \"kwaipilot/kat-coder-pro-v2\",\n \"liquid/lfm-2-24b-a2b\",\n \"mancer/weaver\",\n \"meta-llama/llama-3-70b-instruct\",\n \"meta-llama/llama-3-8b-instruct\",\n \"meta-llama/llama-3.1-70b-instruct\",\n \"meta-llama/llama-3.1-8b-instruct\",\n \"meta-llama/llama-3.2-11b-vision-instruct\",\n \"meta-llama/llama-3.2-1b-instruct\",\n \"meta-llama/llama-3.2-3b-instruct\",\n \"meta-llama/llama-3.3-70b-instruct\",\n \"meta-llama/llama-4-maverick\",\n \"meta-llama/llama-4-scout\",\n \"meta-llama/llama-guard-3-8b\",\n \"meta-llama/llama-guard-4-12b\",\n \"microsoft/phi-4\",\n \"microsoft/phi-4-mini-instruct\",\n \"microsoft/wizardlm-2-8x22b\",\n \"minimax/minimax-01\",\n \"minimax/minimax-m1\",\n \"minimax/minimax-m2\",\n \"minimax/minimax-m2-her\",\n \"minimax/minimax-m2.1\",\n \"minimax/minimax-m2.5\",\n \"minimax/minimax-m2.7\",\n \"mistralai/codestral-2508\",\n \"mistralai/devstral-2512\",\n \"mistralai/devstral-medium\",\n \"mistralai/devstral-small\",\n \"mistralai/ministral-14b-2512\",\n \"mistralai/ministral-3b-2512\",\n \"mistralai/ministral-8b-2512\",\n \"mistralai/mistral-7b-instruct-v0.1\",\n \"mistralai/mistral-large\",\n \"mistralai/mistral-large-2407\",\n \"mistralai/mistral-large-2411\",\n \"mistralai/mistral-large-2512\",\n \"mistralai/mistral-medium-3\",\n \"mistralai/mistral-medium-3-5\",\n \"mistralai/mistral-medium-3.1\",\n \"mistralai/mistral-nemo\",\n \"mistralai/mistral-saba\",\n \"mistralai/mistral-small-24b-instruct-2501\",\n \"mistralai/mistral-small-2603\",\n \"mistralai/mistral-small-3.1-24b-instruct\",\n \"mistralai/mistral-small-3.2-24b-instruct\",\n \"mistralai/mixtral-8x22b-instruct\",\n \"mistralai/pixtral-large-2411\",\n \"mistralai/voxtral-small-24b-2507\",\n \"moonshotai/kimi-k2\",\n \"moonshotai/kimi-k2-0905\",\n \"moonshotai/kimi-k2-thinking\",\n \"moonshotai/kimi-k2.5\",\n \"moonshotai/kimi-k2.6\",\n \"morph/morph-v3-fast\",\n \"morph/morph-v3-large\",\n \"nex-agi/deepseek-v3.1-nex-n1\",\n \"nousresearch/hermes-2-pro-llama-3-8b\",\n \"nousresearch/hermes-3-llama-3.1-405b\",\n \"nousresearch/hermes-3-llama-3.1-70b\",\n \"nousresearch/hermes-4-405b\",\n \"nousresearch/hermes-4-70b\",\n \"nvidia/llama-3.3-nemotron-super-49b-v1.5\",\n \"nvidia/nemotron-3-nano-30b-a3b\",\n \"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free\",\n \"nvidia/nemotron-3-super-120b-a12b\",\n \"nvidia/nemotron-3-super-120b-a12b:free\",\n \"nvidia/nemotron-nano-9b-v2\",\n \"openai/gpt-3.5-turbo\",\n \"openai/gpt-3.5-turbo-0613\",\n \"openai/gpt-3.5-turbo-16k\",\n \"openai/gpt-3.5-turbo-instruct\",\n \"openai/gpt-4\",\n \"openai/gpt-4-0314\",\n \"openai/gpt-4-1106-preview\",\n \"openai/gpt-4-turbo\",\n \"openai/gpt-4-turbo-preview\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-4o\",\n \"openai/gpt-4o-2024-05-13\",\n \"openai/gpt-4o-2024-08-06\",\n \"openai/gpt-4o-2024-11-20\",\n \"openai/gpt-4o-audio-preview\",\n \"openai/gpt-4o-mini\",\n \"openai/gpt-4o-mini-2024-07-18\",\n \"openai/gpt-4o-mini-search-preview\",\n \"openai/gpt-4o-search-preview\",\n \"openai/gpt-5\",\n \"openai/gpt-5-chat\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5-image\",\n \"openai/gpt-5-image-mini\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5-pro\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.1-chat\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-max\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-chat\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-5.3-chat\",\n \"openai/gpt-5.3-codex\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-image-2\",\n \"openai/gpt-5.4-mini\",\n \"openai/gpt-5.4-nano\",\n \"openai/gpt-5.4-pro\",\n \"openai/gpt-5.5\",\n \"openai/gpt-5.5-pro\",\n \"openai/gpt-audio\",\n \"openai/gpt-audio-mini\",\n \"openai/gpt-chat-latest\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"openai/gpt-oss-safeguard-20b\",\n \"openai/o1\",\n \"openai/o1-pro\",\n \"openai/o3\",\n \"openai/o3-deep-research\",\n \"openai/o3-mini\",\n \"openai/o3-mini-high\",\n \"openai/o3-pro\",\n \"openai/o4-mini\",\n \"openai/o4-mini-deep-research\",\n \"openai/o4-mini-high\",\n \"openrouter/auto\",\n \"openrouter/bodybuilder\",\n \"openrouter/free\",\n \"openrouter/owl-alpha\",\n \"openrouter/pareto-code\",\n \"perceptron/perceptron-mk1\",\n \"perplexity/sonar\",\n \"perplexity/sonar-deep-research\",\n \"perplexity/sonar-pro\",\n \"perplexity/sonar-pro-search\",\n \"perplexity/sonar-reasoning-pro\",\n \"poolside/laguna-m.1:free\",\n \"poolside/laguna-xs.2:free\",\n \"prime-intellect/intellect-3\",\n \"qwen/qwen-2.5-72b-instruct\",\n \"qwen/qwen-2.5-7b-instruct\",\n \"qwen/qwen-2.5-coder-32b-instruct\",\n \"qwen/qwen-plus\",\n \"qwen/qwen-plus-2025-07-28\",\n \"qwen/qwen-plus-2025-07-28:thinking\",\n \"qwen/qwen2.5-vl-72b-instruct\",\n \"qwen/qwen3-14b\",\n \"qwen/qwen3-235b-a22b\",\n \"qwen/qwen3-235b-a22b-2507\",\n \"qwen/qwen3-235b-a22b-thinking-2507\",\n \"qwen/qwen3-30b-a3b\",\n \"qwen/qwen3-30b-a3b-instruct-2507\",\n \"qwen/qwen3-30b-a3b-thinking-2507\",\n \"qwen/qwen3-32b\",\n \"qwen/qwen3-8b\",\n \"qwen/qwen3-coder\",\n \"qwen/qwen3-coder-30b-a3b-instruct\",\n \"qwen/qwen3-coder-flash\",\n \"qwen/qwen3-coder-next\",\n \"qwen/qwen3-coder-plus\",\n \"qwen/qwen3-max\",\n \"qwen/qwen3-max-thinking\",\n \"qwen/qwen3-next-80b-a3b-instruct\",\n \"qwen/qwen3-next-80b-a3b-thinking\",\n \"qwen/qwen3-vl-235b-a22b-instruct\",\n \"qwen/qwen3-vl-235b-a22b-thinking\",\n \"qwen/qwen3-vl-30b-a3b-instruct\",\n \"qwen/qwen3-vl-30b-a3b-thinking\",\n \"qwen/qwen3-vl-32b-instruct\",\n \"qwen/qwen3-vl-8b-instruct\",\n \"qwen/qwen3-vl-8b-thinking\",\n \"qwen/qwen3.5-122b-a10b\",\n \"qwen/qwen3.5-27b\",\n \"qwen/qwen3.5-35b-a3b\",\n \"qwen/qwen3.5-397b-a17b\",\n \"qwen/qwen3.5-9b\",\n \"qwen/qwen3.5-flash-02-23\",\n \"qwen/qwen3.5-plus-02-15\",\n \"qwen/qwen3.5-plus-20260420\",\n \"qwen/qwen3.6-27b\",\n \"qwen/qwen3.6-35b-a3b\",\n \"qwen/qwen3.6-flash\",\n \"qwen/qwen3.6-max-preview\",\n \"qwen/qwen3.6-plus\",\n \"rekaai/reka-edge\",\n \"rekaai/reka-flash-3\",\n \"relace/relace-apply-3\",\n \"relace/relace-search\",\n \"sao10k/l3-euryale-70b\",\n \"sao10k/l3-lunaris-8b\",\n \"sao10k/l3.1-70b-hanami-x1\",\n \"sao10k/l3.1-euryale-70b\",\n \"sao10k/l3.3-euryale-70b\",\n \"stepfun/step-3.5-flash\",\n \"stepfun/step-3.5-flash:free\",\n \"switchpoint/router\",\n \"tencent/hunyuan-a13b-instruct\",\n \"tencent/hy3-preview\",\n \"thedrummer/cydonia-24b-v4.1\",\n \"thedrummer/rocinante-12b\",\n \"thedrummer/skyfall-36b-v2\",\n \"thedrummer/unslopnemo-12b\",\n \"undi95/remm-slerp-l2-13b\",\n \"upstage/solar-pro-3\",\n \"writer/palmyra-x5\",\n \"x-ai/grok-4.20\",\n \"x-ai/grok-4.20-multi-agent\",\n \"x-ai/grok-4.3\",\n \"x-ai/grok-code-fast-1:optimized:free\",\n \"xiaomi/mimo-v2-flash\",\n \"xiaomi/mimo-v2-omni\",\n \"xiaomi/mimo-v2-pro\",\n \"xiaomi/mimo-v2.5\",\n \"xiaomi/mimo-v2.5-pro\",\n \"z-ai/glm-4-32b\",\n \"z-ai/glm-4.5\",\n \"z-ai/glm-4.5-air\",\n \"z-ai/glm-4.5v\",\n \"z-ai/glm-4.6\",\n \"z-ai/glm-4.6v\",\n \"z-ai/glm-4.7\",\n \"z-ai/glm-4.7-flash\",\n \"z-ai/glm-5\",\n \"z-ai/glm-5-turbo\",\n \"z-ai/glm-5.1\",\n \"z-ai/glm-5v-turbo\",\n \"~anthropic/claude-haiku-latest\",\n \"~anthropic/claude-opus-latest\",\n \"~anthropic/claude-sonnet-latest\",\n \"~google/gemini-flash-latest\",\n \"~google/gemini-pro-latest\",\n \"~moonshotai/kimi-latest\",\n \"~openai/gpt-latest\",\n \"~openai/gpt-mini-latest\"\n ],\n \"docUrl\": \"https://kilo.ai\",\n \"gateway\": \"models.dev\"\n },\n \"cloudflare-workers-ai\": {\n \"url\": \"https://api.cloudflare.com/client/v4/accounts/${CLOUDFLARE_ACCOUNT_ID}/ai/v1\",\n \"apiKeyEnvVar\": \"CLOUDFLARE_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Cloudflare Workers AI\",\n \"models\": [\n \"@cf/aisingapore/gemma-sea-lion-v4-27b-it\",\n \"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b\",\n \"@cf/google/gemma-3-12b-it\",\n \"@cf/google/gemma-4-26b-a4b-it\",\n \"@cf/ibm-granite/granite-4.0-h-micro\",\n \"@cf/meta/llama-2-7b-chat-fp16\",\n \"@cf/meta/llama-3-8b-instruct\",\n \"@cf/meta/llama-3-8b-instruct-awq\",\n \"@cf/meta/llama-3.1-8b-instruct-awq\",\n \"@cf/meta/llama-3.1-8b-instruct-fp8\",\n \"@cf/meta/llama-3.2-11b-vision-instruct\",\n \"@cf/meta/llama-3.2-1b-instruct\",\n \"@cf/meta/llama-3.2-3b-instruct\",\n \"@cf/meta/llama-3.3-70b-instruct-fp8-fast\",\n \"@cf/meta/llama-4-scout-17b-16e-instruct\",\n \"@cf/meta/llama-guard-3-8b\",\n \"@cf/mistral/mistral-7b-instruct-v0.1\",\n \"@cf/mistralai/mistral-small-3.1-24b-instruct\",\n \"@cf/moonshotai/kimi-k2.5\",\n \"@cf/moonshotai/kimi-k2.6\",\n \"@cf/nvidia/nemotron-3-120b-a12b\",\n \"@cf/openai/gpt-oss-120b\",\n \"@cf/openai/gpt-oss-20b\",\n \"@cf/qwen/qwen2.5-coder-32b-instruct\",\n \"@cf/qwen/qwen3-30b-a3b-fp8\",\n \"@cf/qwen/qwq-32b\",\n \"@cf/zai-org/glm-4.7-flash\"\n ],\n \"docUrl\": \"https://developers.cloudflare.com/workers-ai/models/\",\n \"gateway\": \"models.dev\"\n },\n \"lmstudio\": {\n \"url\": \"http://127.0.0.1:1234/v1\",\n \"apiKeyEnvVar\": \"LMSTUDIO_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"LMStudio\",\n \"models\": [\"openai/gpt-oss-20b\", \"qwen/qwen3-30b-a3b-2507\", \"qwen/qwen3-coder-30b\"],\n \"docUrl\": \"https://lmstudio.ai/models\",\n \"gateway\": \"models.dev\"\n },\n \"xiaomi-token-plan-cn\": {\n \"url\": \"https://token-plan-cn.xiaomimimo.com/v1\",\n \"apiKeyEnvVar\": \"XIAOMI_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Xiaomi Token Plan (China)\",\n \"models\": [\"mimo-v2-flash\", \"mimo-v2-omni\", \"mimo-v2-pro\", \"mimo-v2-tts\", \"mimo-v2.5\", \"mimo-v2.5-pro\"],\n \"docUrl\": \"https://platform.xiaomimimo.com/#/docs\",\n \"gateway\": \"models.dev\"\n },\n \"morph\": {\n \"url\": \"https://api.morphllm.com/v1\",\n \"apiKeyEnvVar\": \"MORPH_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Morph\",\n \"models\": [\"auto\", \"morph-v3-fast\", \"morph-v3-large\"],\n \"docUrl\": \"https://docs.morphllm.com/api-reference/introduction\",\n \"gateway\": \"models.dev\"\n },\n \"nearai\": {\n \"url\": \"https://cloud-api.near.ai/v1\",\n \"apiKeyEnvVar\": \"NEARAI_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"NEAR AI Cloud\",\n \"models\": [\n \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n \"Qwen/Qwen3-Embedding-0.6B\",\n \"Qwen/Qwen3-Reranker-0.6B\",\n \"Qwen/Qwen3-VL-30B-A3B-Instruct\",\n \"Qwen/Qwen3.5-122B-A10B\",\n \"anthropic/claude-haiku-4-5\",\n \"anthropic/claude-opus-4-6\",\n \"anthropic/claude-opus-4-7\",\n \"anthropic/claude-sonnet-4-5\",\n \"anthropic/claude-sonnet-4-6\",\n \"black-forest-labs/FLUX.2-klein-4B\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-flash-lite\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-3.1-flash-lite\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-5\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-mini\",\n \"openai/gpt-5.4-nano\",\n \"openai/gpt-5.5\",\n \"openai/gpt-oss-120b\",\n \"openai/o3\",\n \"openai/o3-mini\",\n \"openai/o4-mini\",\n \"openai/whisper-large-v3\",\n \"zai-org/GLM-5.1-FP8\"\n ],\n \"docUrl\": \"https://docs.near.ai/\",\n \"gateway\": \"models.dev\"\n },\n \"abacus\": {\n \"url\": \"https://routellm.abacus.ai/v1\",\n \"apiKeyEnvVar\": \"ABACUS_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Abacus\",\n \"models\": [\n \"Qwen/QwQ-32B\",\n \"Qwen/Qwen2.5-72B-Instruct\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"Qwen/Qwen3-32B\",\n \"Qwen/qwen3-coder-480b-a35b-instruct\",\n \"claude-3-7-sonnet-20250219\",\n \"claude-haiku-4-5-20251001\",\n \"claude-opus-4-1-20250805\",\n \"claude-opus-4-20250514\",\n \"claude-opus-4-5-20251101\",\n \"claude-opus-4-6\",\n \"claude-sonnet-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-sonnet-4-6\",\n \"deepseek-ai/DeepSeek-R1\",\n \"deepseek-ai/DeepSeek-V3.1-Terminus\",\n \"deepseek-ai/DeepSeek-V3.2\",\n \"deepseek/deepseek-v3.1\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-pro\",\n \"gemini-3-flash-preview\",\n \"gemini-3.1-flash-lite-preview\",\n \"gemini-3.1-pro-preview\",\n \"gpt-4.1\",\n \"gpt-4.1-mini\",\n \"gpt-4.1-nano\",\n \"gpt-4o-2024-11-20\",\n \"gpt-4o-mini\",\n \"gpt-5\",\n \"gpt-5-codex\",\n \"gpt-5-mini\",\n \"gpt-5-nano\",\n \"gpt-5.1\",\n \"gpt-5.1-chat-latest\",\n \"gpt-5.1-codex\",\n \"gpt-5.1-codex-max\",\n \"gpt-5.2\",\n \"gpt-5.2-chat-latest\",\n \"gpt-5.2-codex\",\n \"gpt-5.3-chat-latest\",\n \"gpt-5.3-codex\",\n \"gpt-5.3-codex-xhigh\",\n \"gpt-5.4\",\n \"grok-4-0709\",\n \"grok-4-1-fast-non-reasoning\",\n \"grok-4-fast-non-reasoning\",\n \"grok-code-fast-1\",\n \"kimi-k2-turbo-preview\",\n \"kimi-k2.5\",\n \"llama-3.3-70b-versatile\",\n \"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\",\n \"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo\",\n \"meta-llama/Meta-Llama-3.1-8B-Instruct\",\n \"o3\",\n \"o3-mini\",\n \"o3-pro\",\n \"o4-mini\",\n \"openai/gpt-oss-120b\",\n \"qwen-2.5-coder-32b\",\n \"qwen3-max\",\n \"route-llm\",\n \"zai-org/glm-4.5\",\n \"zai-org/glm-4.6\",\n \"zai-org/glm-4.7\",\n \"zai-org/glm-5\"\n ],\n \"docUrl\": \"https://abacus.ai/help/api\",\n \"gateway\": \"models.dev\"\n },\n \"privatemode-ai\": {\n \"url\": \"http://localhost:8080/v1\",\n \"apiKeyEnvVar\": \"PRIVATEMODE_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Privatemode AI\",\n \"models\": [\"gemma-3-27b\", \"gpt-oss-120b\", \"qwen3-coder-30b-a3b\", \"qwen3-embedding-4b\", \"whisper-large-v3\"],\n \"docUrl\": \"https://docs.privatemode.ai/api/overview\",\n \"gateway\": \"models.dev\"\n },\n \"minimax-cn-coding-plan\": {\n \"url\": \"https://api.minimaxi.com/anthropic/v1\",\n \"apiKeyEnvVar\": \"MINIMAX_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"MiniMax Token Plan (minimaxi.com)\",\n \"models\": [\n \"MiniMax-M2\",\n \"MiniMax-M2.1\",\n \"MiniMax-M2.5\",\n \"MiniMax-M2.5-highspeed\",\n \"MiniMax-M2.7\",\n \"MiniMax-M2.7-highspeed\"\n ],\n \"docUrl\": \"https://platform.minimaxi.com/docs/token-plan/intro\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/anthropic\"\n },\n \"xiaomi-token-plan-ams\": {\n \"url\": \"https://token-plan-ams.xiaomimimo.com/v1\",\n \"apiKeyEnvVar\": \"XIAOMI_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Xiaomi Token Plan (Europe)\",\n \"models\": [\"mimo-v2-flash\", \"mimo-v2-omni\", \"mimo-v2-pro\", \"mimo-v2-tts\", \"mimo-v2.5\", \"mimo-v2.5-pro\"],\n \"docUrl\": \"https://platform.xiaomimimo.com/#/docs\",\n \"gateway\": \"models.dev\"\n },\n \"cloudferro-sherlock\": {\n \"url\": \"https://api-sherlock.cloudferro.com/openai/v1/\",\n \"apiKeyEnvVar\": \"CLOUDFERRO_SHERLOCK_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"CloudFerro Sherlock\",\n \"models\": [\n \"MiniMaxAI/MiniMax-M2.5\",\n \"meta-llama/Llama-3.3-70B-Instruct\",\n \"openai/gpt-oss-120b\",\n \"speakleash/Bielik-11B-v2.6-Instruct\",\n \"speakleash/Bielik-11B-v3.0-Instruct\"\n ],\n \"docUrl\": \"https://docs.sherlock.cloudferro.com/\",\n \"gateway\": \"models.dev\"\n },\n \"openai\": {\n \"apiKeyEnvVar\": \"OPENAI_API_KEY\",\n \"name\": \"OpenAI\",\n \"models\": [\n \"chatgpt-image-latest\",\n \"gpt-3.5-turbo\",\n \"gpt-4\",\n \"gpt-4-turbo\",\n \"gpt-4.1\",\n \"gpt-4.1-mini\",\n \"gpt-4.1-nano\",\n \"gpt-4o\",\n \"gpt-4o-2024-05-13\",\n \"gpt-4o-2024-08-06\",\n \"gpt-4o-2024-11-20\",\n \"gpt-4o-mini\",\n \"gpt-5\",\n \"gpt-5-chat-latest\",\n \"gpt-5-codex\",\n \"gpt-5-mini\",\n \"gpt-5-nano\",\n \"gpt-5-pro\",\n \"gpt-5.1\",\n \"gpt-5.1-chat-latest\",\n \"gpt-5.1-codex\",\n \"gpt-5.1-codex-max\",\n \"gpt-5.1-codex-mini\",\n \"gpt-5.2\",\n \"gpt-5.2-chat-latest\",\n \"gpt-5.2-codex\",\n \"gpt-5.2-pro\",\n \"gpt-5.3-chat-latest\",\n \"gpt-5.3-codex\",\n \"gpt-5.3-codex-spark\",\n \"gpt-5.4\",\n \"gpt-5.4-mini\",\n \"gpt-5.4-nano\",\n \"gpt-5.4-pro\",\n \"gpt-5.5\",\n \"gpt-5.5-pro\",\n \"gpt-image-1\",\n \"gpt-image-1-mini\",\n \"gpt-image-1.5\",\n \"o1\",\n \"o1-mini\",\n \"o1-preview\",\n \"o1-pro\",\n \"o3\",\n \"o3-deep-research\",\n \"o3-mini\",\n \"o3-pro\",\n \"o4-mini\",\n \"o4-mini-deep-research\",\n \"text-embedding-3-large\",\n \"text-embedding-3-small\",\n \"text-embedding-ada-002\"\n ],\n \"docUrl\": \"https://platform.openai.com/docs/models\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/openai\"\n },\n \"dinference\": {\n \"url\": \"https://api.dinference.com/v1\",\n \"apiKeyEnvVar\": \"DINFERENCE_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"DInference\",\n \"models\": [\"glm-4.7\", \"glm-5\", \"glm-5.1\", \"gpt-oss-120b\", \"minimax-m2.5\"],\n \"docUrl\": \"https://dinference.com\",\n \"gateway\": \"models.dev\"\n },\n \"vivgrid\": {\n \"url\": \"https://api.vivgrid.com/v1\",\n \"apiKeyEnvVar\": \"VIVGRID_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Vivgrid\",\n \"models\": [\n \"deepseek-v3.2\",\n \"deepseek-v4-pro\",\n \"gemini-3.1-flash-lite-preview\",\n \"gemini-3.1-pro-preview\",\n \"gpt-5-mini\",\n \"gpt-5.1-codex\",\n \"gpt-5.1-codex-max\",\n \"gpt-5.2-codex\",\n \"gpt-5.3-codex\",\n \"gpt-5.4\",\n \"gpt-5.4-mini\",\n \"gpt-5.4-nano\",\n \"gpt-5.5\"\n ],\n \"docUrl\": \"https://docs.vivgrid.com/models\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/openai\"\n },\n \"cerebras\": {\n \"apiKeyEnvVar\": \"CEREBRAS_API_KEY\",\n \"name\": \"Cerebras\",\n \"models\": [\"gpt-oss-120b\", \"llama3.1-8b\", \"qwen-3-235b-a22b-instruct-2507\", \"zai-glm-4.7\"],\n \"docUrl\": \"https://inference-docs.cerebras.ai/models/overview\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/cerebras\"\n },\n \"vultr\": {\n \"url\": \"https://api.vultrinference.com/v1\",\n \"apiKeyEnvVar\": \"VULTR_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Vultr\",\n \"models\": [\"DeepSeek-V3.2\", \"GLM-5-FP8\", \"Kimi-K2.5\", \"MiniMax-M2.5\", \"gpt-oss-120b\"],\n \"docUrl\": \"https://api.vultrinference.com/\",\n \"gateway\": \"models.dev\"\n },\n \"kuae-cloud-coding-plan\": {\n \"url\": \"https://coding-plan-endpoint.kuaecloud.net/v1\",\n \"apiKeyEnvVar\": \"KUAE_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"KUAE Cloud Coding Plan\",\n \"models\": [\"GLM-4.7\"],\n \"docUrl\": \"https://docs.mthreads.com/kuaecloud/kuaecloud-doc-online/coding_plan/\",\n \"gateway\": \"models.dev\"\n },\n \"modelscope\": {\n \"url\": \"https://api-inference.modelscope.cn/v1\",\n \"apiKeyEnvVar\": \"MODELSCOPE_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"ModelScope\",\n \"models\": [\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n \"Qwen/Qwen3-30B-A3B-Thinking-2507\",\n \"Qwen/Qwen3-Coder-30B-A3B-Instruct\",\n \"ZhipuAI/GLM-4.5\",\n \"ZhipuAI/GLM-4.6\"\n ],\n \"docUrl\": \"https://modelscope.cn/docs/model-service/API-Inference/intro\",\n \"gateway\": \"models.dev\"\n },\n \"kimi-for-coding\": {\n \"url\": \"https://api.kimi.com/coding/v1\",\n \"apiKeyEnvVar\": \"KIMI_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Kimi For Coding\",\n \"models\": [\"k2p5\", \"k2p6\", \"kimi-k2-thinking\"],\n \"docUrl\": \"https://www.kimi.com/coding/docs/en/third-party-agents.html\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/anthropic\"\n },\n \"lucidquery\": {\n \"url\": \"https://lucidquery.com/api/v1\",\n \"apiKeyEnvVar\": \"LUCIDQUERY_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"LucidQuery AI\",\n \"models\": [\"lucidnova-rf1-100b\", \"lucidquery-nexus-coder\"],\n \"docUrl\": \"https://lucidquery.com/api/docs\",\n \"gateway\": \"models.dev\"\n },\n \"neuralwatt\": {\n \"url\": \"https://api.neuralwatt.com/v1\",\n \"apiKeyEnvVar\": \"NEURALWATT_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Neuralwatt\",\n \"models\": [\n \"MiniMaxAI/MiniMax-M2.5\",\n \"Qwen/Qwen3.5-397B-A17B-FP8\",\n \"Qwen/Qwen3.6-35B-A3B\",\n \"glm-5-fast\",\n \"glm-5.1-fast\",\n \"kimi-k2.5-fast\",\n \"kimi-k2.6-fast\",\n \"mistralai/Devstral-Small-2-24B-Instruct-2512\",\n \"moonshotai/Kimi-K2.5\",\n \"moonshotai/Kimi-K2.6\",\n \"openai/gpt-oss-20b\",\n \"qwen3.5-397b-fast\",\n \"qwen3.6-35b-fast\",\n \"zai-org/GLM-5.1-FP8\"\n ],\n \"docUrl\": \"https://portal.neuralwatt.com/docs\",\n \"gateway\": \"models.dev\"\n },\n \"jiekou\": {\n \"url\": \"https://api.jiekou.ai/openai\",\n \"apiKeyEnvVar\": \"JIEKOU_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Jiekou.AI\",\n \"models\": [\n \"baidu/ernie-4.5-300b-a47b-paddle\",\n \"baidu/ernie-4.5-vl-424b-a47b\",\n \"claude-haiku-4-5-20251001\",\n \"claude-opus-4-1-20250805\",\n \"claude-opus-4-20250514\",\n \"claude-opus-4-5-20251101\",\n \"claude-opus-4-6\",\n \"claude-sonnet-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"deepseek/deepseek-r1-0528\",\n \"deepseek/deepseek-v3-0324\",\n \"deepseek/deepseek-v3.1\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-flash-lite\",\n \"gemini-2.5-flash-lite-preview-06-17\",\n \"gemini-2.5-flash-lite-preview-09-2025\",\n \"gemini-2.5-flash-preview-05-20\",\n \"gemini-2.5-pro\",\n \"gemini-2.5-pro-preview-06-05\",\n \"gemini-3-flash-preview\",\n \"gemini-3-pro-preview\",\n \"gpt-5-chat-latest\",\n \"gpt-5-codex\",\n \"gpt-5-mini\",\n \"gpt-5-nano\",\n \"gpt-5-pro\",\n \"gpt-5.1\",\n \"gpt-5.1-codex\",\n \"gpt-5.1-codex-max\",\n \"gpt-5.1-codex-mini\",\n \"gpt-5.2\",\n \"gpt-5.2-codex\",\n \"gpt-5.2-pro\",\n \"grok-4-0709\",\n \"grok-4-1-fast-non-reasoning\",\n \"grok-4-1-fast-reasoning\",\n \"grok-4-fast-non-reasoning\",\n \"grok-4-fast-reasoning\",\n \"grok-code-fast-1\",\n \"minimax/minimax-m2.1\",\n \"minimaxai/minimax-m1-80k\",\n \"moonshotai/kimi-k2-0905\",\n \"moonshotai/kimi-k2-instruct\",\n \"moonshotai/kimi-k2.5\",\n \"o3\",\n \"o3-mini\",\n \"o4-mini\",\n \"qwen/qwen3-235b-a22b-fp8\",\n \"qwen/qwen3-235b-a22b-instruct-2507\",\n \"qwen/qwen3-235b-a22b-thinking-2507\",\n \"qwen/qwen3-30b-a3b-fp8\",\n \"qwen/qwen3-32b-fp8\",\n \"qwen/qwen3-coder-480b-a35b-instruct\",\n \"qwen/qwen3-coder-next\",\n \"qwen/qwen3-next-80b-a3b-instruct\",\n \"qwen/qwen3-next-80b-a3b-thinking\",\n \"xiaomimimo/mimo-v2-flash\",\n \"zai-org/glm-4.5\",\n \"zai-org/glm-4.5v\",\n \"zai-org/glm-4.7\",\n \"zai-org/glm-4.7-flash\"\n ],\n \"docUrl\": \"https://docs.jiekou.ai/docs/support/quickstart?utm_source=github_models.dev\",\n \"gateway\": \"models.dev\"\n },\n \"ovhcloud\": {\n \"url\": \"https://oai.endpoints.kepler.ai.cloud.ovh.net/v1\",\n \"apiKeyEnvVar\": \"OVHCLOUD_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"OVHcloud AI Endpoints\",\n \"models\": [\n \"gpt-oss-120b\",\n \"gpt-oss-20b\",\n \"llama-3.1-8b-instruct\",\n \"meta-llama-3_3-70b-instruct\",\n \"mistral-7b-instruct-v0.3\",\n \"mistral-nemo-instruct-2407\",\n \"mistral-small-3.2-24b-instruct-2506\",\n \"qwen2.5-vl-72b-instruct\",\n \"qwen3-32b\",\n \"qwen3-coder-30b-a3b-instruct\",\n \"qwen3.5-9b\"\n ],\n \"docUrl\": \"https://www.ovhcloud.com/en/public-cloud/ai-endpoints/catalog//\",\n \"gateway\": \"models.dev\"\n },\n \"friendli\": {\n \"url\": \"https://api.friendli.ai/serverless/v1\",\n \"apiKeyEnvVar\": \"FRIENDLI_TOKEN\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Friendli\",\n \"models\": [\n \"MiniMaxAI/MiniMax-M2.5\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"meta-llama/Llama-3.1-8B-Instruct\",\n \"meta-llama/Llama-3.3-70B-Instruct\",\n \"zai-org/GLM-5\",\n \"zai-org/GLM-5.1\"\n ],\n \"docUrl\": \"https://friendli.ai/docs/guides/serverless_endpoints/introduction\",\n \"gateway\": \"models.dev\"\n },\n \"openrouter\": {\n \"url\": \"https://openrouter.ai/api/v1\",\n \"apiKeyEnvVar\": \"OPENROUTER_API_KEY\",\n \"name\": \"OpenRouter\",\n \"models\": [\n \"ai21/jamba-large-1.7\",\n \"aion-labs/aion-1.0\",\n \"aion-labs/aion-1.0-mini\",\n \"aion-labs/aion-2.0\",\n \"aion-labs/aion-rp-llama-3.1-8b\",\n \"alfredpros/codellama-7b-instruct-solidity\",\n \"alibaba/tongyi-deepresearch-30b-a3b\",\n \"allenai/olmo-3-32b-think\",\n \"amazon/nova-2-lite-v1\",\n \"amazon/nova-lite-v1\",\n \"amazon/nova-micro-v1\",\n \"amazon/nova-premier-v1\",\n \"amazon/nova-pro-v1\",\n \"anthracite-org/magnum-v4-72b\",\n \"anthropic/claude-3-haiku\",\n \"anthropic/claude-3.5-haiku\",\n \"anthropic/claude-haiku-4.5\",\n \"anthropic/claude-opus-4\",\n \"anthropic/claude-opus-4.1\",\n \"anthropic/claude-opus-4.5\",\n \"anthropic/claude-opus-4.6\",\n \"anthropic/claude-opus-4.6-fast\",\n \"anthropic/claude-opus-4.7\",\n \"anthropic/claude-opus-4.7-fast\",\n \"anthropic/claude-sonnet-4\",\n \"anthropic/claude-sonnet-4.5\",\n \"anthropic/claude-sonnet-4.6\",\n \"arcee-ai/coder-large\",\n \"arcee-ai/maestro-reasoning\",\n \"arcee-ai/spotlight\",\n \"arcee-ai/trinity-large-thinking\",\n \"arcee-ai/trinity-large-thinking:free\",\n \"arcee-ai/trinity-mini\",\n \"arcee-ai/virtuoso-large\",\n \"baidu/cobuddy:free\",\n \"baidu/ernie-4.5-21b-a3b\",\n \"baidu/ernie-4.5-21b-a3b-thinking\",\n \"baidu/ernie-4.5-300b-a47b\",\n \"baidu/ernie-4.5-vl-28b-a3b\",\n \"baidu/ernie-4.5-vl-424b-a47b\",\n \"baidu/qianfan-ocr-fast\",\n \"bytedance-seed/seed-1.6\",\n \"bytedance-seed/seed-1.6-flash\",\n \"bytedance-seed/seed-2.0-lite\",\n \"bytedance-seed/seed-2.0-mini\",\n \"bytedance/ui-tars-1.5-7b\",\n \"cognitivecomputations/dolphin-mistral-24b-venice-edition:free\",\n \"cohere/command-a\",\n \"cohere/command-r-08-2024\",\n \"cohere/command-r-plus-08-2024\",\n \"cohere/command-r7b-12-2024\",\n \"deepcogito/cogito-v2.1-671b\",\n \"deepseek/deepseek-chat\",\n \"deepseek/deepseek-chat-v3-0324\",\n \"deepseek/deepseek-chat-v3.1\",\n \"deepseek/deepseek-r1\",\n \"deepseek/deepseek-r1-0528\",\n \"deepseek/deepseek-r1-distill-llama-70b\",\n \"deepseek/deepseek-r1-distill-qwen-32b\",\n \"deepseek/deepseek-v3.1-terminus\",\n \"deepseek/deepseek-v3.2\",\n \"deepseek/deepseek-v3.2-exp\",\n \"deepseek/deepseek-v3.2-speciale\",\n \"deepseek/deepseek-v4-flash\",\n \"deepseek/deepseek-v4-flash:free\",\n \"deepseek/deepseek-v4-pro\",\n \"essentialai/rnj-1-instruct\",\n \"google/gemini-2.0-flash-001\",\n \"google/gemini-2.0-flash-lite-001\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-flash-image\",\n \"google/gemini-2.5-flash-lite\",\n \"google/gemini-2.5-flash-lite-preview-09-2025\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-2.5-pro-preview\",\n \"google/gemini-2.5-pro-preview-05-06\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3-pro-image-preview\",\n \"google/gemini-3.1-flash-image-preview\",\n \"google/gemini-3.1-flash-lite\",\n \"google/gemini-3.1-flash-lite-preview\",\n \"google/gemini-3.1-pro-preview\",\n \"google/gemini-3.1-pro-preview-customtools\",\n \"google/gemini-3.5-flash\",\n \"google/gemma-2-27b-it\",\n \"google/gemma-3-12b-it\",\n \"google/gemma-3-27b-it\",\n \"google/gemma-3-4b-it\",\n \"google/gemma-3n-e4b-it\",\n \"google/gemma-4-26b-a4b-it\",\n \"google/gemma-4-26b-a4b-it:free\",\n \"google/gemma-4-31b-it\",\n \"google/gemma-4-31b-it:free\",\n \"google/lyria-3-clip-preview\",\n \"google/lyria-3-pro-preview\",\n \"gryphe/mythomax-l2-13b\",\n \"ibm-granite/granite-4.0-h-micro\",\n \"ibm-granite/granite-4.1-8b\",\n \"inception/mercury-2\",\n \"inclusionai/ling-2.6-1t\",\n \"inclusionai/ling-2.6-flash\",\n \"inclusionai/ring-2.6-1t\",\n \"inflection/inflection-3-pi\",\n \"inflection/inflection-3-productivity\",\n \"kwaipilot/kat-coder-pro-v2\",\n \"liquid/lfm-2-24b-a2b\",\n \"liquid/lfm-2.5-1.2b-instruct:free\",\n \"liquid/lfm-2.5-1.2b-thinking:free\",\n \"mancer/weaver\",\n \"meta-llama/llama-3-70b-instruct\",\n \"meta-llama/llama-3-8b-instruct\",\n \"meta-llama/llama-3.1-70b-instruct\",\n \"meta-llama/llama-3.1-8b-instruct\",\n \"meta-llama/llama-3.2-11b-vision-instruct\",\n \"meta-llama/llama-3.2-1b-instruct\",\n \"meta-llama/llama-3.2-3b-instruct\",\n \"meta-llama/llama-3.2-3b-instruct:free\",\n \"meta-llama/llama-3.3-70b-instruct\",\n \"meta-llama/llama-3.3-70b-instruct:free\",\n \"meta-llama/llama-4-maverick\",\n \"meta-llama/llama-4-scout\",\n \"meta-llama/llama-guard-3-8b\",\n \"meta-llama/llama-guard-4-12b\",\n \"microsoft/phi-4\",\n \"microsoft/phi-4-mini-instruct\",\n \"microsoft/wizardlm-2-8x22b\",\n \"minimax/minimax-01\",\n \"minimax/minimax-m1\",\n \"minimax/minimax-m2\",\n \"minimax/minimax-m2-her\",\n \"minimax/minimax-m2.1\",\n \"minimax/minimax-m2.5\",\n \"minimax/minimax-m2.5:free\",\n \"minimax/minimax-m2.7\",\n \"mistralai/codestral-2508\",\n \"mistralai/devstral-2512\",\n \"mistralai/devstral-medium\",\n \"mistralai/devstral-small\",\n \"mistralai/ministral-14b-2512\",\n \"mistralai/ministral-3b-2512\",\n \"mistralai/ministral-8b-2512\",\n \"mistralai/mistral-7b-instruct-v0.1\",\n \"mistralai/mistral-large\",\n \"mistralai/mistral-large-2407\",\n \"mistralai/mistral-large-2411\",\n \"mistralai/mistral-large-2512\",\n \"mistralai/mistral-medium-3\",\n \"mistralai/mistral-medium-3-5\",\n \"mistralai/mistral-medium-3.1\",\n \"mistralai/mistral-nemo\",\n \"mistralai/mistral-saba\",\n \"mistralai/mistral-small-24b-instruct-2501\",\n \"mistralai/mistral-small-2603\",\n \"mistralai/mistral-small-3.1-24b-instruct\",\n \"mistralai/mistral-small-3.2-24b-instruct\",\n \"mistralai/mixtral-8x22b-instruct\",\n \"mistralai/pixtral-large-2411\",\n \"mistralai/voxtral-small-24b-2507\",\n \"moonshotai/kimi-k2\",\n \"moonshotai/kimi-k2-0905\",\n \"moonshotai/kimi-k2-thinking\",\n \"moonshotai/kimi-k2.5\",\n \"moonshotai/kimi-k2.6\",\n \"morph/morph-v3-fast\",\n \"morph/morph-v3-large\",\n \"nex-agi/deepseek-v3.1-nex-n1\",\n \"nousresearch/hermes-2-pro-llama-3-8b\",\n \"nousresearch/hermes-3-llama-3.1-405b\",\n \"nousresearch/hermes-3-llama-3.1-405b:free\",\n \"nousresearch/hermes-3-llama-3.1-70b\",\n \"nousresearch/hermes-4-405b\",\n \"nousresearch/hermes-4-70b\",\n \"nvidia/llama-3.3-nemotron-super-49b-v1.5\",\n \"nvidia/nemotron-3-nano-30b-a3b\",\n \"nvidia/nemotron-3-nano-30b-a3b:free\",\n \"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free\",\n \"nvidia/nemotron-3-super-120b-a12b\",\n \"nvidia/nemotron-3-super-120b-a12b:free\",\n \"nvidia/nemotron-nano-12b-v2-vl:free\",\n \"nvidia/nemotron-nano-9b-v2\",\n \"nvidia/nemotron-nano-9b-v2:free\",\n \"openai/gpt-3.5-turbo\",\n \"openai/gpt-3.5-turbo-0613\",\n \"openai/gpt-3.5-turbo-16k\",\n \"openai/gpt-3.5-turbo-instruct\",\n \"openai/gpt-4\",\n \"openai/gpt-4-0314\",\n \"openai/gpt-4-1106-preview\",\n \"openai/gpt-4-turbo\",\n \"openai/gpt-4-turbo-preview\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-4o\",\n \"openai/gpt-4o-2024-05-13\",\n \"openai/gpt-4o-2024-08-06\",\n \"openai/gpt-4o-2024-11-20\",\n \"openai/gpt-4o-audio-preview\",\n \"openai/gpt-4o-mini\",\n \"openai/gpt-4o-mini-2024-07-18\",\n \"openai/gpt-4o-mini-search-preview\",\n \"openai/gpt-4o-search-preview\",\n \"openai/gpt-5\",\n \"openai/gpt-5-chat\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5-image\",\n \"openai/gpt-5-image-mini\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5-pro\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.1-chat\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-max\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-chat\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-5.3-chat\",\n \"openai/gpt-5.3-codex\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-image-2\",\n \"openai/gpt-5.4-mini\",\n \"openai/gpt-5.4-nano\",\n \"openai/gpt-5.4-pro\",\n \"openai/gpt-5.5\",\n \"openai/gpt-5.5-pro\",\n \"openai/gpt-audio\",\n \"openai/gpt-audio-mini\",\n \"openai/gpt-chat-latest\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-120b:free\",\n \"openai/gpt-oss-20b\",\n \"openai/gpt-oss-20b:free\",\n \"openai/gpt-oss-safeguard-20b\",\n \"openai/o1\",\n \"openai/o1-pro\",\n \"openai/o3\",\n \"openai/o3-deep-research\",\n \"openai/o3-mini\",\n \"openai/o3-mini-high\",\n \"openai/o3-pro\",\n \"openai/o4-mini\",\n \"openai/o4-mini-deep-research\",\n \"openai/o4-mini-high\",\n \"openrouter/auto\",\n \"openrouter/bodybuilder\",\n \"openrouter/free\",\n \"openrouter/owl-alpha\",\n \"openrouter/pareto-code\",\n \"perceptron/perceptron-mk1\",\n \"perplexity/sonar\",\n \"perplexity/sonar-deep-research\",\n \"perplexity/sonar-pro\",\n \"perplexity/sonar-pro-search\",\n \"perplexity/sonar-reasoning-pro\",\n \"poolside/laguna-m.1:free\",\n \"poolside/laguna-xs.2:free\",\n \"prime-intellect/intellect-3\",\n \"qwen/qwen-2.5-72b-instruct\",\n \"qwen/qwen-2.5-7b-instruct\",\n \"qwen/qwen-2.5-coder-32b-instruct\",\n \"qwen/qwen-plus\",\n \"qwen/qwen-plus-2025-07-28\",\n \"qwen/qwen-plus-2025-07-28:thinking\",\n \"qwen/qwen2.5-vl-72b-instruct\",\n \"qwen/qwen3-14b\",\n \"qwen/qwen3-235b-a22b\",\n \"qwen/qwen3-235b-a22b-2507\",\n \"qwen/qwen3-235b-a22b-thinking-2507\",\n \"qwen/qwen3-30b-a3b\",\n \"qwen/qwen3-30b-a3b-instruct-2507\",\n \"qwen/qwen3-30b-a3b-thinking-2507\",\n \"qwen/qwen3-32b\",\n \"qwen/qwen3-8b\",\n \"qwen/qwen3-coder\",\n \"qwen/qwen3-coder-30b-a3b-instruct\",\n \"qwen/qwen3-coder-flash\",\n \"qwen/qwen3-coder-next\",\n \"qwen/qwen3-coder-plus\",\n \"qwen/qwen3-coder:free\",\n \"qwen/qwen3-max\",\n \"qwen/qwen3-max-thinking\",\n \"qwen/qwen3-next-80b-a3b-instruct\",\n \"qwen/qwen3-next-80b-a3b-instruct:free\",\n \"qwen/qwen3-next-80b-a3b-thinking\",\n \"qwen/qwen3-vl-235b-a22b-instruct\",\n \"qwen/qwen3-vl-235b-a22b-thinking\",\n \"qwen/qwen3-vl-30b-a3b-instruct\",\n \"qwen/qwen3-vl-30b-a3b-thinking\",\n \"qwen/qwen3-vl-32b-instruct\",\n \"qwen/qwen3-vl-8b-instruct\",\n \"qwen/qwen3-vl-8b-thinking\",\n \"qwen/qwen3.5-122b-a10b\",\n \"qwen/qwen3.5-27b\",\n \"qwen/qwen3.5-35b-a3b\",\n \"qwen/qwen3.5-397b-a17b\",\n \"qwen/qwen3.5-9b\",\n \"qwen/qwen3.5-flash-02-23\",\n \"qwen/qwen3.5-plus-02-15\",\n \"qwen/qwen3.5-plus-20260420\",\n \"qwen/qwen3.6-27b\",\n \"qwen/qwen3.6-35b-a3b\",\n \"qwen/qwen3.6-flash\",\n \"qwen/qwen3.6-max-preview\",\n \"qwen/qwen3.6-plus\",\n \"qwen/qwen3.7-max\",\n \"rekaai/reka-edge\",\n \"rekaai/reka-flash-3\",\n \"relace/relace-apply-3\",\n \"relace/relace-search\",\n \"sao10k/l3-euryale-70b\",\n \"sao10k/l3-lunaris-8b\",\n \"sao10k/l3.1-70b-hanami-x1\",\n \"sao10k/l3.1-euryale-70b\",\n \"sao10k/l3.3-euryale-70b\",\n \"stepfun/step-3.5-flash\",\n \"switchpoint/router\",\n \"tencent/hunyuan-a13b-instruct\",\n \"tencent/hy3-preview\",\n \"thedrummer/cydonia-24b-v4.1\",\n \"thedrummer/rocinante-12b\",\n \"thedrummer/skyfall-36b-v2\",\n \"thedrummer/unslopnemo-12b\",\n \"undi95/remm-slerp-l2-13b\",\n \"upstage/solar-pro-3\",\n \"writer/palmyra-x5\",\n \"x-ai/grok-4.20\",\n \"x-ai/grok-4.20-multi-agent\",\n \"x-ai/grok-4.3\",\n \"x-ai/grok-build-0.1\",\n \"xiaomi/mimo-v2-flash\",\n \"xiaomi/mimo-v2-omni\",\n \"xiaomi/mimo-v2-pro\",\n \"xiaomi/mimo-v2.5\",\n \"xiaomi/mimo-v2.5-pro\",\n \"z-ai/glm-4-32b\",\n \"z-ai/glm-4.5\",\n \"z-ai/glm-4.5-air\",\n \"z-ai/glm-4.5-air:free\",\n \"z-ai/glm-4.5v\",\n \"z-ai/glm-4.6\",\n \"z-ai/glm-4.6v\",\n \"z-ai/glm-4.7\",\n \"z-ai/glm-4.7-flash\",\n \"z-ai/glm-5\",\n \"z-ai/glm-5-turbo\",\n \"z-ai/glm-5.1\",\n \"z-ai/glm-5v-turbo\",\n \"~anthropic/claude-haiku-latest\",\n \"~anthropic/claude-opus-latest\",\n \"~anthropic/claude-sonnet-latest\",\n \"~google/gemini-flash-latest\",\n \"~google/gemini-pro-latest\",\n \"~moonshotai/kimi-latest\",\n \"~openai/gpt-latest\",\n \"~openai/gpt-mini-latest\"\n ],\n \"docUrl\": \"https://openrouter.ai/models\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@openrouter/ai-sdk-provider\"\n },\n \"regolo-ai\": {\n \"url\": \"https://api.regolo.ai/v1\",\n \"apiKeyEnvVar\": \"REGOLO_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Regolo AI\",\n \"models\": [\n \"gpt-oss-120b\",\n \"gpt-oss-20b\",\n \"llama-3.1-8b-instruct\",\n \"llama-3.3-70b-instruct\",\n \"minimax-m2.5\",\n \"mistral-small-4-119b\",\n \"mistral-small3.2\",\n \"qwen-image\",\n \"qwen3-coder-next\",\n \"qwen3-embedding-8b\",\n \"qwen3-reranker-4b\",\n \"qwen3.5-122b\",\n \"qwen3.5-9b\"\n ],\n \"docUrl\": \"https://docs.regolo.ai/\",\n \"gateway\": \"models.dev\"\n },\n \"claudinio\": {\n \"url\": \"https://api.claudin.io/v1\",\n \"apiKeyEnvVar\": \"CLAUDINIO_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Claudinio\",\n \"models\": [\"claudinio\"],\n \"docUrl\": \"https://claudin.io\",\n \"gateway\": \"models.dev\"\n },\n \"orcarouter\": {\n \"url\": \"https://api.orcarouter.ai/v1\",\n \"apiKeyEnvVar\": \"ORCAROUTER_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"OrcaRouter\",\n \"models\": [\n \"anthropic/claude-haiku-4.5\",\n \"anthropic/claude-opus-4\",\n \"anthropic/claude-opus-4.1\",\n \"anthropic/claude-opus-4.5\",\n \"anthropic/claude-opus-4.6\",\n \"anthropic/claude-opus-4.7\",\n \"anthropic/claude-sonnet-4\",\n \"anthropic/claude-sonnet-4.5\",\n \"anthropic/claude-sonnet-4.6\",\n \"deepseek/deepseek-chat\",\n \"deepseek/deepseek-reasoner\",\n \"deepseek/deepseek-v4-flash\",\n \"deepseek/deepseek-v4-pro\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-flash-lite\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3-pro-preview\",\n \"google/gemini-3.1-flash-lite-preview\",\n \"google/gemini-3.1-pro-preview\",\n \"google/gemini-3.1-pro-preview-customtools\",\n \"google/gemini-flash-latest\",\n \"google/gemini-flash-lite-latest\",\n \"google/gemma-4-26b-a4b-it\",\n \"google/gemma-4-31b-it\",\n \"grok/grok-4.3\",\n \"kimi/kimi-k2.5\",\n \"kimi/kimi-k2.6\",\n \"minimax/minimax-m2.5\",\n \"minimax/minimax-m2.5-highspeed\",\n \"minimax/minimax-m2.7\",\n \"minimax/minimax-m2.7-highspeed\",\n \"openai/gpt-3.5-turbo\",\n \"openai/gpt-4\",\n \"openai/gpt-4-turbo\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-4o\",\n \"openai/gpt-4o-2024-05-13\",\n \"openai/gpt-4o-2024-08-06\",\n \"openai/gpt-4o-2024-11-20\",\n \"openai/gpt-4o-mini\",\n \"openai/gpt-5\",\n \"openai/gpt-5-chat-latest\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5-pro\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.1-chat-latest\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-max\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-chat-latest\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-5.3-chat-latest\",\n \"openai/gpt-5.3-codex\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-mini\",\n \"openai/gpt-5.4-nano\",\n \"openai/gpt-5.4-pro\",\n \"openai/gpt-5.5\",\n \"openai/gpt-5.5-pro\",\n \"orcarouter/auto\",\n \"qwen/qwen3-max\",\n \"qwen/qwen3.5-122b-a10b\",\n \"qwen/qwen3.5-27b\",\n \"qwen/qwen3.5-35b-a3b\",\n \"qwen/qwen3.5-397b-a17b\",\n \"qwen/qwen3.5-plus\",\n \"qwen/qwen3.6-35b-a3b\",\n \"qwen/qwen3.6-plus\",\n \"z-ai/glm-4.5\",\n \"z-ai/glm-4.5-air\",\n \"z-ai/glm-4.6\",\n \"z-ai/glm-4.7\",\n \"z-ai/glm-5\",\n \"z-ai/glm-5.1\"\n ],\n \"docUrl\": \"https://docs.orcarouter.ai\",\n \"gateway\": \"models.dev\"\n },\n \"opencode-go\": {\n \"url\": \"https://opencode.ai/zen/go/v1\",\n \"apiKeyEnvVar\": \"OPENCODE_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"OpenCode Go\",\n \"models\": [\n \"deepseek-v4-flash\",\n \"deepseek-v4-pro\",\n \"glm-5\",\n \"glm-5.1\",\n \"kimi-k2.5\",\n \"kimi-k2.6\",\n \"mimo-v2.5\",\n \"mimo-v2.5-pro\",\n \"minimax-m2.5\",\n \"minimax-m2.7\",\n \"qwen3.5-plus\",\n \"qwen3.6-plus\"\n ],\n \"docUrl\": \"https://opencode.ai/docs/zen\",\n \"gateway\": \"models.dev\"\n },\n \"llmgateway\": {\n \"url\": \"https://api.llmgateway.io/v1\",\n \"apiKeyEnvVar\": \"LLMGATEWAY_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"LLM Gateway\",\n \"models\": [\n \"auto\",\n \"claude-3-5-sonnet-20241022\",\n \"claude-3-7-sonnet\",\n \"claude-3-7-sonnet-20250219\",\n \"claude-3-opus\",\n \"claude-haiku-4-5\",\n \"claude-haiku-4-5-20251001\",\n \"claude-opus-4-1-20250805\",\n \"claude-opus-4-20250514\",\n \"claude-opus-4-5-20251101\",\n \"claude-opus-4-6\",\n \"claude-opus-4-7\",\n \"claude-sonnet-4-20250514\",\n \"claude-sonnet-4-5\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-sonnet-4-6\",\n \"codestral-2508\",\n \"custom\",\n \"deepseek-r1-0528\",\n \"deepseek-v3.1\",\n \"deepseek-v3.2\",\n \"deepseek-v4-flash\",\n \"deepseek-v4-pro\",\n \"devstral-2512\",\n \"devstral-small-2507\",\n \"gemini-2.0-flash\",\n \"gemini-2.0-flash-lite\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-flash-lite\",\n \"gemini-2.5-pro\",\n \"gemini-3-flash-preview\",\n \"gemini-3.1-flash-lite\",\n \"gemini-3.1-flash-lite-preview\",\n \"gemini-3.1-pro-preview\",\n \"gemini-3.5-flash\",\n \"gemini-pro-latest\",\n \"gemma-2-27b-it-together\",\n \"gemma-3-1b-it\",\n \"gemma-3-27b\",\n \"glm-4-32b-0414-128k\",\n \"glm-4.5\",\n \"glm-4.5-air\",\n \"glm-4.5-airx\",\n \"glm-4.5-flash\",\n \"glm-4.5-x\",\n \"glm-4.5v\",\n \"glm-4.6\",\n \"glm-4.6v\",\n \"glm-4.6v-flash\",\n \"glm-4.6v-flashx\",\n \"glm-4.7\",\n \"glm-4.7-flash\",\n \"glm-4.7-flashx\",\n \"glm-5\",\n \"glm-5.1\",\n \"gpt-3.5-turbo\",\n \"gpt-4\",\n \"gpt-4-turbo\",\n \"gpt-4.1\",\n \"gpt-4.1-mini\",\n \"gpt-4.1-nano\",\n \"gpt-4o\",\n \"gpt-4o-mini\",\n \"gpt-4o-mini-search-preview\",\n \"gpt-4o-search-preview\",\n \"gpt-5\",\n \"gpt-5-chat-latest\",\n \"gpt-5-mini\",\n \"gpt-5-nano\",\n \"gpt-5-pro\",\n \"gpt-5.1\",\n \"gpt-5.1-codex\",\n \"gpt-5.1-codex-mini\",\n \"gpt-5.2\",\n \"gpt-5.2-chat-latest\",\n \"gpt-5.2-codex\",\n \"gpt-5.2-pro\",\n \"gpt-5.3-chat-latest\",\n \"gpt-5.3-codex\",\n \"gpt-5.4\",\n \"gpt-5.4-mini\",\n \"gpt-5.4-nano\",\n \"gpt-5.4-pro\",\n \"gpt-5.5\",\n \"gpt-5.5-pro\",\n \"gpt-oss-120b\",\n \"gpt-oss-20b\",\n \"grok-4-0709\",\n \"grok-4-1-fast-reasoning\",\n \"grok-4-20-beta-0309-non-reasoning\",\n \"grok-4-20-beta-0309-reasoning\",\n \"grok-4-20-non-reasoning\",\n \"grok-4-20-reasoning\",\n \"grok-4-3\",\n \"grok-4-fast-reasoning\",\n \"hermes-2-pro-llama-3-8b\",\n \"kimi-k2\",\n \"kimi-k2-thinking\",\n \"kimi-k2-thinking-turbo\",\n \"kimi-k2.5\",\n \"kimi-k2.6\",\n \"llama-3-70b-instruct\",\n \"llama-3-8b-instruct\",\n \"llama-3.1-70b-instruct\",\n \"llama-3.1-8b-instruct\",\n \"llama-3.1-nemotron-ultra-253b\",\n \"llama-3.2-11b-instruct\",\n \"llama-3.2-3b-instruct\",\n \"llama-3.3-70b-instruct\",\n \"llama-4-maverick-17b-instruct\",\n \"llama-4-scout\",\n \"llama-4-scout-17b-instruct\",\n \"mimo-v2-flash\",\n \"mimo-v2-omni\",\n \"mimo-v2-pro\",\n \"mimo-v2.5\",\n \"mimo-v2.5-pro\",\n \"minimax-m2\",\n \"minimax-m2.1\",\n \"minimax-m2.1-lightning\",\n \"minimax-m2.5\",\n \"minimax-m2.5-highspeed\",\n \"minimax-m2.7\",\n \"minimax-m2.7-highspeed\",\n \"minimax-text-01\",\n \"ministral-14b-2512\",\n \"ministral-3b-2512\",\n \"ministral-8b-2512\",\n \"mistral-large-2512\",\n \"mistral-large-latest\",\n \"mistral-small-2506\",\n \"o1\",\n \"o3\",\n \"o3-mini\",\n \"o4-mini\",\n \"pixtral-large-latest\",\n \"qwen-coder-plus\",\n \"qwen-flash\",\n \"qwen-max\",\n \"qwen-max-latest\",\n \"qwen-omni-turbo\",\n \"qwen-plus\",\n \"qwen-plus-latest\",\n \"qwen-turbo\",\n \"qwen-vl-max\",\n \"qwen-vl-plus\",\n \"qwen2-5-vl-32b-instruct\",\n \"qwen2-5-vl-72b-instruct\",\n \"qwen25-coder-7b\",\n \"qwen3-235b-a22b-fp8\",\n \"qwen3-235b-a22b-instruct-2507\",\n \"qwen3-235b-a22b-thinking-2507\",\n \"qwen3-30b-a3b-fp8\",\n \"qwen3-30b-a3b-instruct-2507\",\n \"qwen3-30b-a3b-thinking-2507\",\n \"qwen3-32b\",\n \"qwen3-32b-fp8\",\n \"qwen3-4b-fp8\",\n \"qwen3-coder-30b-a3b-instruct\",\n \"qwen3-coder-480b-a35b-instruct\",\n \"qwen3-coder-flash\",\n \"qwen3-coder-next\",\n \"qwen3-coder-plus\",\n \"qwen3-max\",\n \"qwen3-max-2026-01-23\",\n \"qwen3-next-80b-a3b-instruct\",\n \"qwen3-next-80b-a3b-thinking\",\n \"qwen3-vl-235b-a22b-instruct\",\n \"qwen3-vl-235b-a22b-thinking\",\n \"qwen3-vl-30b-a3b-instruct\",\n \"qwen3-vl-30b-a3b-thinking\",\n \"qwen3-vl-8b-instruct\",\n \"qwen3-vl-flash\",\n \"qwen3-vl-plus\",\n \"qwen3.6-35b-a3b\",\n \"qwen3.6-max-preview\",\n \"qwen3.6-plus\",\n \"qwen35-397b-a17b\",\n \"qwen37-max\",\n \"qwq-plus\",\n \"seed-1-6-250615\",\n \"seed-1-6-250915\",\n \"seed-1-6-flash-250715\",\n \"seed-1-8-251228\",\n \"sonar\",\n \"sonar-pro\",\n \"sonar-reasoning-pro\"\n ],\n \"docUrl\": \"https://llmgateway.io/docs\",\n \"gateway\": \"models.dev\"\n },\n \"poe\": {\n \"url\": \"https://api.poe.com/v1\",\n \"apiKeyEnvVar\": \"POE_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Poe\",\n \"models\": [\n \"anthropic/claude-haiku-3\",\n \"anthropic/claude-haiku-3.5\",\n \"anthropic/claude-haiku-4.5\",\n \"anthropic/claude-opus-4\",\n \"anthropic/claude-opus-4.1\",\n \"anthropic/claude-opus-4.5\",\n \"anthropic/claude-opus-4.6\",\n \"anthropic/claude-opus-4.7\",\n \"anthropic/claude-sonnet-3.7\",\n \"anthropic/claude-sonnet-4\",\n \"anthropic/claude-sonnet-4.5\",\n \"anthropic/claude-sonnet-4.6\",\n \"cerebras/gpt-oss-120b-cs\",\n \"cerebras/llama-3.1-8b-cs\",\n \"elevenlabs/elevenlabs-music\",\n \"elevenlabs/elevenlabs-v2.5-turbo\",\n \"elevenlabs/elevenlabs-v3\",\n \"empiriolabs/deepseek-v4-flash-el\",\n \"empiriolabs/deepseek-v4-pro-el\",\n \"fireworks-ai/kimi-k2.5-fw\",\n \"google/gemini-2.0-flash\",\n \"google/gemini-2.0-flash-lite\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-flash-lite\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-3-flash\",\n \"google/gemini-3.1-flash-lite\",\n \"google/gemini-3.1-pro\",\n \"google/gemini-3.5-flash\",\n \"google/gemma-4-31b\",\n \"google/imagen-3\",\n \"google/imagen-3-fast\",\n \"google/imagen-4\",\n \"google/imagen-4-fast\",\n \"google/imagen-4-ultra\",\n \"google/lyria\",\n \"google/nano-banana\",\n \"google/nano-banana-pro\",\n \"google/veo-2\",\n \"google/veo-3\",\n \"google/veo-3-fast\",\n \"google/veo-3.1\",\n \"google/veo-3.1-fast\",\n \"ideogramai/ideogram\",\n \"ideogramai/ideogram-v2\",\n \"ideogramai/ideogram-v2a\",\n \"ideogramai/ideogram-v2a-turbo\",\n \"lumalabs/ray2\",\n \"novita/deepseek-v3.2\",\n \"novita/glm-4.6\",\n \"novita/glm-4.6v\",\n \"novita/glm-4.7-flash\",\n \"novita/glm-4.7-n\",\n \"novita/glm-5\",\n \"novita/kimi-k2-thinking\",\n \"novita/kimi-k2.5\",\n \"novita/kimi-k2.6\",\n \"novita/minimax-m2.1\",\n \"openai/dall-e-3\",\n \"openai/gpt-3.5-turbo\",\n \"openai/gpt-3.5-turbo-instruct\",\n \"openai/gpt-3.5-turbo-raw\",\n \"openai/gpt-4-turbo\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-4o\",\n \"openai/gpt-4o-aug\",\n \"openai/gpt-4o-mini\",\n \"openai/gpt-4o-mini-search\",\n \"openai/gpt-4o-search\",\n \"openai/gpt-5\",\n \"openai/gpt-5-chat\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5-pro\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-max\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.1-instant\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-instant\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-5.3-codex\",\n \"openai/gpt-5.3-codex-spark\",\n \"openai/gpt-5.3-instant\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-mini\",\n \"openai/gpt-5.4-nano\",\n \"openai/gpt-5.4-pro\",\n \"openai/gpt-5.5\",\n \"openai/gpt-5.5-pro\",\n \"openai/gpt-image-1\",\n \"openai/gpt-image-1-mini\",\n \"openai/gpt-image-1.5\",\n \"openai/gpt-image-2\",\n \"openai/o1\",\n \"openai/o1-pro\",\n \"openai/o3\",\n \"openai/o3-deep-research\",\n \"openai/o3-mini\",\n \"openai/o3-mini-high\",\n \"openai/o3-pro\",\n \"openai/o4-mini\",\n \"openai/o4-mini-deep-research\",\n \"openai/sora-2\",\n \"openai/sora-2-pro\",\n \"poetools/claude-code\",\n \"runwayml/runway\",\n \"runwayml/runway-gen-4-turbo\",\n \"stabilityai/stablediffusionxl\",\n \"topazlabs-co/topazlabs\",\n \"trytako/tako\",\n \"xai/grok-3\",\n \"xai/grok-3-mini\",\n \"xai/grok-4\",\n \"xai/grok-4-fast-non-reasoning\",\n \"xai/grok-4-fast-reasoning\",\n \"xai/grok-4.1-fast-non-reasoning\",\n \"xai/grok-4.1-fast-reasoning\",\n \"xai/grok-4.20-multi-agent\",\n \"xai/grok-code-fast-1\"\n ],\n \"docUrl\": \"https://creator.poe.com/docs/external-applications/openai-compatible-api\",\n \"gateway\": \"models.dev\"\n },\n \"minimax\": {\n \"url\": \"https://api.minimax.io/anthropic/v1\",\n \"apiKeyEnvVar\": \"MINIMAX_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"MiniMax (minimax.io)\",\n \"models\": [\n \"MiniMax-M2\",\n \"MiniMax-M2.1\",\n \"MiniMax-M2.5\",\n \"MiniMax-M2.5-highspeed\",\n \"MiniMax-M2.7\",\n \"MiniMax-M2.7-highspeed\"\n ],\n \"docUrl\": \"https://platform.minimax.io/docs/guides/quickstart\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/anthropic\"\n },\n \"groq\": {\n \"url\": \"https://api.groq.com/openai/v1\",\n \"apiKeyEnvVar\": \"GROQ_API_KEY\",\n \"name\": \"Groq\",\n \"models\": [\n \"allam-2-7b\",\n \"canopylabs/orpheus-arabic-saudi\",\n \"canopylabs/orpheus-v1-english\",\n \"groq/compound\",\n \"groq/compound-mini\",\n \"llama-3.1-8b-instant\",\n \"llama-3.3-70b-versatile\",\n \"meta-llama/llama-4-scout-17b-16e-instruct\",\n \"meta-llama/llama-prompt-guard-2-22m\",\n \"meta-llama/llama-prompt-guard-2-86m\",\n \"moonshotai/kimi-k2-instruct-0905\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"openai/gpt-oss-safeguard-20b\",\n \"qwen/qwen3-32b\",\n \"whisper-large-v3\",\n \"whisper-large-v3-turbo\"\n ],\n \"docUrl\": \"https://console.groq.com/docs/models\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/groq\"\n },\n \"xiaomi-token-plan-sgp\": {\n \"url\": \"https://token-plan-sgp.xiaomimimo.com/v1\",\n \"apiKeyEnvVar\": \"XIAOMI_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Xiaomi Token Plan (Singapore)\",\n \"models\": [\"mimo-v2-flash\", \"mimo-v2-omni\", \"mimo-v2-pro\", \"mimo-v2-tts\", \"mimo-v2.5\", \"mimo-v2.5-pro\"],\n \"docUrl\": \"https://platform.xiaomimimo.com/#/docs\",\n \"gateway\": \"models.dev\"\n },\n \"siliconflow\": {\n \"url\": \"https://api.siliconflow.com/v1\",\n \"apiKeyEnvVar\": \"SILICONFLOW_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"SiliconFlow\",\n \"models\": [\n \"ByteDance-Seed/Seed-OSS-36B-Instruct\",\n \"MiniMaxAI/MiniMax-M2.1\",\n \"MiniMaxAI/MiniMax-M2.5\",\n \"Qwen/QwQ-32B\",\n \"Qwen/Qwen2.5-14B-Instruct\",\n \"Qwen/Qwen2.5-32B-Instruct\",\n \"Qwen/Qwen2.5-72B-Instruct\",\n \"Qwen/Qwen2.5-72B-Instruct-128K\",\n \"Qwen/Qwen2.5-7B-Instruct\",\n \"Qwen/Qwen2.5-Coder-32B-Instruct\",\n \"Qwen/Qwen2.5-VL-32B-Instruct\",\n \"Qwen/Qwen2.5-VL-72B-Instruct\",\n \"Qwen/Qwen2.5-VL-7B-Instruct\",\n \"Qwen/Qwen3-14B\",\n \"Qwen/Qwen3-235B-A22B\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n \"Qwen/Qwen3-30B-A3B-Thinking-2507\",\n \"Qwen/Qwen3-32B\",\n \"Qwen/Qwen3-8B\",\n \"Qwen/Qwen3-Coder-30B-A3B-Instruct\",\n \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n \"Qwen/Qwen3-Next-80B-A3B-Thinking\",\n \"Qwen/Qwen3-Omni-30B-A3B-Captioner\",\n \"Qwen/Qwen3-Omni-30B-A3B-Instruct\",\n \"Qwen/Qwen3-Omni-30B-A3B-Thinking\",\n \"Qwen/Qwen3-VL-235B-A22B-Instruct\",\n \"Qwen/Qwen3-VL-235B-A22B-Thinking\",\n \"Qwen/Qwen3-VL-30B-A3B-Instruct\",\n \"Qwen/Qwen3-VL-30B-A3B-Thinking\",\n \"Qwen/Qwen3-VL-32B-Instruct\",\n \"Qwen/Qwen3-VL-32B-Thinking\",\n \"Qwen/Qwen3-VL-8B-Instruct\",\n \"Qwen/Qwen3-VL-8B-Thinking\",\n \"THUDM/GLM-4-32B-0414\",\n \"THUDM/GLM-4-9B-0414\",\n \"THUDM/GLM-Z1-32B-0414\",\n \"THUDM/GLM-Z1-9B-0414\",\n \"baidu/ERNIE-4.5-300B-A47B\",\n \"deepseek-ai/DeepSeek-R1\",\n \"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B\",\n \"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B\",\n \"deepseek-ai/DeepSeek-V3\",\n \"deepseek-ai/DeepSeek-V3.1\",\n \"deepseek-ai/DeepSeek-V3.1-Terminus\",\n \"deepseek-ai/DeepSeek-V3.2\",\n \"deepseek-ai/DeepSeek-V3.2-Exp\",\n \"deepseek-ai/deepseek-v4-flash\",\n \"deepseek-ai/deepseek-v4-pro\",\n \"deepseek-ai/deepseek-vl2\",\n \"inclusionAI/Ling-flash-2.0\",\n \"inclusionAI/Ling-mini-2.0\",\n \"inclusionAI/Ring-flash-2.0\",\n \"meta-llama/Meta-Llama-3.1-8B-Instruct\",\n \"moonshotai/Kimi-K2-Instruct\",\n \"moonshotai/Kimi-K2-Instruct-0905\",\n \"moonshotai/Kimi-K2-Thinking\",\n \"moonshotai/Kimi-K2.5\",\n \"moonshotai/Kimi-K2.6\",\n \"nex-agi/DeepSeek-V3.1-Nex-N1\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"stepfun-ai/Step-3.5-Flash\",\n \"tencent/Hunyuan-A13B-Instruct\",\n \"tencent/Hunyuan-MT-7B\",\n \"zai-org/GLM-4.5\",\n \"zai-org/GLM-4.5-Air\",\n \"zai-org/GLM-4.5V\",\n \"zai-org/GLM-4.6\",\n \"zai-org/GLM-4.6V\",\n \"zai-org/GLM-4.7\",\n \"zai-org/GLM-5\",\n \"zai-org/GLM-5.1\",\n \"zai-org/GLM-5V-Turbo\"\n ],\n \"docUrl\": \"https://cloud.siliconflow.com/models\",\n \"gateway\": \"models.dev\"\n },\n \"ollama-cloud\": {\n \"url\": \"https://ollama.com/v1\",\n \"apiKeyEnvVar\": \"OLLAMA_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Ollama Cloud\",\n \"models\": [\n \"cogito-2.1:671b\",\n \"deepseek-v3.1:671b\",\n \"deepseek-v3.2\",\n \"deepseek-v4-flash\",\n \"deepseek-v4-pro\",\n \"devstral-2:123b\",\n \"devstral-small-2:24b\",\n \"gemini-3-flash-preview\",\n \"gemma3:12b\",\n \"gemma3:27b\",\n \"gemma3:4b\",\n \"gemma4:31b\",\n \"glm-4.6\",\n \"glm-4.7\",\n \"glm-5\",\n \"glm-5.1\",\n \"gpt-oss:120b\",\n \"gpt-oss:20b\",\n \"kimi-k2-thinking\",\n \"kimi-k2.5\",\n \"kimi-k2.6\",\n \"kimi-k2:1t\",\n \"minimax-m2\",\n \"minimax-m2.1\",\n \"minimax-m2.5\",\n \"minimax-m2.7\",\n \"ministral-3:14b\",\n \"ministral-3:3b\",\n \"ministral-3:8b\",\n \"mistral-large-3:675b\",\n \"nemotron-3-nano:30b\",\n \"nemotron-3-super\",\n \"qwen3-coder-next\",\n \"qwen3-coder:480b\",\n \"qwen3-next:80b\",\n \"qwen3-vl:235b\",\n \"qwen3-vl:235b-instruct\",\n \"qwen3.5:397b\",\n \"rnj-1:8b\"\n ],\n \"docUrl\": \"https://docs.ollama.com/cloud\",\n \"gateway\": \"models.dev\"\n },\n \"databricks\": {\n \"url\": \"https://${DATABRICKS_HOST}/ai-gateway/mlflow/v1\",\n \"apiKeyEnvVar\": \"DATABRICKS_TOKEN\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Databricks\",\n \"models\": [\n \"databricks-claude-haiku-4-5\",\n \"databricks-claude-opus-4-1\",\n \"databricks-claude-opus-4-5\",\n \"databricks-claude-opus-4-6\",\n \"databricks-claude-opus-4-7\",\n \"databricks-claude-sonnet-4\",\n \"databricks-claude-sonnet-4-5\",\n \"databricks-claude-sonnet-4-6\",\n \"databricks-gemini-2-5-flash\",\n \"databricks-gemini-2-5-pro\",\n \"databricks-gemini-3-1-flash-lite\",\n \"databricks-gemini-3-1-pro\",\n \"databricks-gemini-3-flash\",\n \"databricks-gemini-3-pro\",\n \"databricks-gpt-5\",\n \"databricks-gpt-5-1\",\n \"databricks-gpt-5-2\",\n \"databricks-gpt-5-4\",\n \"databricks-gpt-5-4-mini\",\n \"databricks-gpt-5-4-nano\",\n \"databricks-gpt-5-5\",\n \"databricks-gpt-5-mini\",\n \"databricks-gpt-5-nano\",\n \"databricks-gpt-oss-120b\",\n \"databricks-gpt-oss-20b\"\n ],\n \"docUrl\": \"https://docs.databricks.com/aws/en/machine-learning/foundation-models/\",\n \"gateway\": \"models.dev\"\n },\n \"berget\": {\n \"url\": \"https://api.berget.ai/v1\",\n \"apiKeyEnvVar\": \"BERGET_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Berget.AI\",\n \"models\": [\n \"google/gemma-4-31B-it\",\n \"meta-llama/Llama-3.3-70B-Instruct\",\n \"mistralai/Mistral-Medium-3.5-128B\",\n \"mistralai/Mistral-Small-3.2-24B-Instruct-2506\",\n \"moonshotai/Kimi-K2.6\",\n \"openai/gpt-oss-120b\",\n \"zai-org/GLM-4.7\"\n ],\n \"docUrl\": \"https://api.berget.ai\",\n \"gateway\": \"models.dev\"\n },\n \"moonshotai-cn\": {\n \"url\": \"https://api.moonshot.cn/anthropic/v1\",\n \"apiKeyEnvVar\": \"MOONSHOT_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Moonshot AI (China)\",\n \"models\": [\n \"kimi-k2-0711-preview\",\n \"kimi-k2-0905-preview\",\n \"kimi-k2-thinking\",\n \"kimi-k2-thinking-turbo\",\n \"kimi-k2-turbo-preview\",\n \"kimi-k2.5\",\n \"kimi-k2.6\"\n ],\n \"docUrl\": \"https://platform.moonshot.cn/docs/api/chat\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/anthropic\"\n },\n \"alibaba-coding-plan-cn\": {\n \"url\": \"https://coding.dashscope.aliyuncs.com/v1\",\n \"apiKeyEnvVar\": \"ALIBABA_CODING_PLAN_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Alibaba Coding Plan (China)\",\n \"models\": [\n \"MiniMax-M2.5\",\n \"glm-4.7\",\n \"glm-5\",\n \"kimi-k2.5\",\n \"qwen3-coder-next\",\n \"qwen3-coder-plus\",\n \"qwen3-max-2026-01-23\",\n \"qwen3.5-plus\",\n \"qwen3.6-plus\"\n ],\n \"docUrl\": \"https://help.aliyun.com/zh/model-studio/coding-plan\",\n \"gateway\": \"models.dev\"\n },\n \"minimax-cn\": {\n \"url\": \"https://api.minimaxi.com/anthropic/v1\",\n \"apiKeyEnvVar\": \"MINIMAX_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"MiniMax (minimaxi.com)\",\n \"models\": [\n \"MiniMax-M2\",\n \"MiniMax-M2.1\",\n \"MiniMax-M2.5\",\n \"MiniMax-M2.5-highspeed\",\n \"MiniMax-M2.7\",\n \"MiniMax-M2.7-highspeed\"\n ],\n \"docUrl\": \"https://platform.minimaxi.com/docs/guides/quickstart\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/anthropic\"\n },\n \"chutes\": {\n \"url\": \"https://llm.chutes.ai/v1\",\n \"apiKeyEnvVar\": \"CHUTES_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Chutes\",\n \"models\": [\n \"MiniMaxAI/MiniMax-M2.5-TEE\",\n \"NousResearch/DeepHermes-3-Mistral-24B-Preview\",\n \"NousResearch/Hermes-4-14B\",\n \"Qwen/Qwen2.5-72B-Instruct\",\n \"Qwen/Qwen2.5-Coder-32B-Instruct\",\n \"Qwen/Qwen2.5-VL-32B-Instruct\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507-TEE\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"Qwen/Qwen3-30B-A3B\",\n \"Qwen/Qwen3-32B-TEE\",\n \"Qwen/Qwen3-Coder-Next-TEE\",\n \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n \"Qwen/Qwen3.5-397B-A17B-TEE\",\n \"Qwen/Qwen3.6-27B-TEE\",\n \"Qwen/Qwen3Guard-Gen-0.6B\",\n \"XiaomiMiMo/MiMo-V2-Flash-TEE\",\n \"deepseek-ai/DeepSeek-R1-0528-TEE\",\n \"deepseek-ai/DeepSeek-R1-Distill-Llama-70B\",\n \"deepseek-ai/DeepSeek-V3-0324-TEE\",\n \"deepseek-ai/DeepSeek-V3.1-TEE\",\n \"deepseek-ai/DeepSeek-V3.2-TEE\",\n \"google/gemma-4-31B-turbo-TEE\",\n \"moonshotai/Kimi-K2.5-TEE\",\n \"moonshotai/Kimi-K2.6-TEE\",\n \"openai/gpt-oss-120b-TEE\",\n \"rednote-hilab/dots.ocr\",\n \"tngtech/DeepSeek-TNG-R1T2-Chimera-TEE\",\n \"unsloth/Llama-3.2-1B-Instruct\",\n \"unsloth/Llama-3.2-3B-Instruct\",\n \"unsloth/Mistral-Nemo-Instruct-2407\",\n \"unsloth/gemma-3-12b-it\",\n \"unsloth/gemma-3-27b-it\",\n \"unsloth/gemma-3-4b-it\",\n \"zai-org/GLM-4.6V\",\n \"zai-org/GLM-4.7-FP8\",\n \"zai-org/GLM-4.7-TEE\",\n \"zai-org/GLM-5-TEE\",\n \"zai-org/GLM-5-Turbo\",\n \"zai-org/GLM-5.1-TEE\"\n ],\n \"docUrl\": \"https://llm.chutes.ai/v1/models\",\n \"gateway\": \"models.dev\"\n },\n \"siliconflow-cn\": {\n \"url\": \"https://api.siliconflow.cn/v1\",\n \"apiKeyEnvVar\": \"SILICONFLOW_CN_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"SiliconFlow (China)\",\n \"models\": [\n \"ByteDance-Seed/Seed-OSS-36B-Instruct\",\n \"Kwaipilot/KAT-Dev\",\n \"PaddlePaddle/PaddleOCR-VL\",\n \"PaddlePaddle/PaddleOCR-VL-1.5\",\n \"Pro/MiniMaxAI/MiniMax-M2.1\",\n \"Pro/MiniMaxAI/MiniMax-M2.5\",\n \"Pro/deepseek-ai/DeepSeek-R1\",\n \"Pro/deepseek-ai/DeepSeek-V3\",\n \"Pro/deepseek-ai/DeepSeek-V3.1-Terminus\",\n \"Pro/deepseek-ai/DeepSeek-V3.2\",\n \"Pro/moonshotai/Kimi-K2-Instruct-0905\",\n \"Pro/moonshotai/Kimi-K2-Thinking\",\n \"Pro/moonshotai/Kimi-K2.5\",\n \"Pro/moonshotai/Kimi-K2.6\",\n \"Pro/zai-org/GLM-4.7\",\n \"Pro/zai-org/GLM-5\",\n \"Pro/zai-org/GLM-5.1\",\n \"Qwen/QwQ-32B\",\n \"Qwen/Qwen2.5-14B-Instruct\",\n \"Qwen/Qwen2.5-32B-Instruct\",\n \"Qwen/Qwen2.5-72B-Instruct\",\n \"Qwen/Qwen2.5-72B-Instruct-128K\",\n \"Qwen/Qwen2.5-7B-Instruct\",\n \"Qwen/Qwen2.5-Coder-32B-Instruct\",\n \"Qwen/Qwen2.5-VL-32B-Instruct\",\n \"Qwen/Qwen2.5-VL-72B-Instruct\",\n \"Qwen/Qwen3-14B\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n \"Qwen/Qwen3-30B-A3B-Thinking-2507\",\n \"Qwen/Qwen3-32B\",\n \"Qwen/Qwen3-8B\",\n \"Qwen/Qwen3-Coder-30B-A3B-Instruct\",\n \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n \"Qwen/Qwen3-Next-80B-A3B-Thinking\",\n \"Qwen/Qwen3-Omni-30B-A3B-Captioner\",\n \"Qwen/Qwen3-Omni-30B-A3B-Instruct\",\n \"Qwen/Qwen3-Omni-30B-A3B-Thinking\",\n \"Qwen/Qwen3-VL-235B-A22B-Instruct\",\n \"Qwen/Qwen3-VL-235B-A22B-Thinking\",\n \"Qwen/Qwen3-VL-30B-A3B-Instruct\",\n \"Qwen/Qwen3-VL-30B-A3B-Thinking\",\n \"Qwen/Qwen3-VL-32B-Instruct\",\n \"Qwen/Qwen3-VL-32B-Thinking\",\n \"Qwen/Qwen3-VL-8B-Instruct\",\n \"Qwen/Qwen3-VL-8B-Thinking\",\n \"Qwen/Qwen3.5-122B-A10B\",\n \"Qwen/Qwen3.5-27B\",\n \"Qwen/Qwen3.5-35B-A3B\",\n \"Qwen/Qwen3.5-397B-A17B\",\n \"Qwen/Qwen3.5-4B\",\n \"Qwen/Qwen3.5-9B\",\n \"Qwen/Qwen3.6-35B-A3B\",\n \"THUDM/GLM-4-32B-0414\",\n \"THUDM/GLM-4-9B-0414\",\n \"THUDM/GLM-Z1-32B-0414\",\n \"THUDM/GLM-Z1-9B-0414\",\n \"ascend-tribe/pangu-pro-moe\",\n \"baidu/ERNIE-4.5-300B-A47B\",\n \"deepseek-ai/DeepSeek-OCR\",\n \"deepseek-ai/DeepSeek-R1\",\n \"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B\",\n \"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B\",\n \"deepseek-ai/DeepSeek-V3\",\n \"deepseek-ai/DeepSeek-V3.1-Terminus\",\n \"deepseek-ai/DeepSeek-V3.2\",\n \"deepseek-ai/deepseek-vl2\",\n \"inclusionAI/Ling-flash-2.0\",\n \"inclusionAI/Ling-mini-2.0\",\n \"inclusionAI/Ring-flash-2.0\",\n \"moonshotai/Kimi-K2-Instruct-0905\",\n \"moonshotai/Kimi-K2-Thinking\",\n \"stepfun-ai/Step-3.5-Flash\",\n \"tencent/Hunyuan-A13B-Instruct\",\n \"tencent/Hunyuan-MT-7B\",\n \"zai-org/GLM-4.5-Air\",\n \"zai-org/GLM-4.5V\",\n \"zai-org/GLM-4.6\",\n \"zai-org/GLM-4.6V\"\n ],\n \"docUrl\": \"https://cloud.siliconflow.com/models\",\n \"gateway\": \"models.dev\"\n },\n \"nvidia\": {\n \"url\": \"https://integrate.api.nvidia.com/v1\",\n \"apiKeyEnvVar\": \"NVIDIA_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Nvidia\",\n \"models\": [\n \"abacusai/dracarys-llama-3_1-70b-instruct\",\n \"baai/bge-m3\",\n \"black-forest-labs/flux.1-dev\",\n \"black-forest-labs/flux_1-kontext-dev\",\n \"black-forest-labs/flux_1-schnell\",\n \"black-forest-labs/flux_2-klein-4b\",\n \"bytedance/seed-oss-36b-instruct\",\n \"deepseek-ai/deepseek-v3.1-terminus\",\n \"deepseek-ai/deepseek-v3.2\",\n \"deepseek-ai/deepseek-v4-flash\",\n \"deepseek-ai/deepseek-v4-pro\",\n \"google/gemma-2-2b-it\",\n \"google/gemma-3-27b-it\",\n \"google/gemma-3n-e2b-it\",\n \"google/gemma-3n-e4b-it\",\n \"google/gemma-4-31b-it\",\n \"google/google-paligemma\",\n \"meta/esm2-650m\",\n \"meta/esmfold\",\n \"meta/llama-3.1-70b-instruct\",\n \"meta/llama-3.1-8b-instruct\",\n \"meta/llama-3.2-11b-vision-instruct\",\n \"meta/llama-3.2-1b-instruct\",\n \"meta/llama-3.2-3b-instruct\",\n \"meta/llama-3.2-90b-vision-instruct\",\n \"meta/llama-3.3-70b-instruct\",\n \"meta/llama-4-maverick-17b-128e-instruct\",\n \"meta/llama-guard-4-12b\",\n \"microsoft/phi-4-mini-instruct\",\n \"microsoft/phi-4-multimodal-instruct\",\n \"minimaxai/minimax-m2.5\",\n \"minimaxai/minimax-m2.7\",\n \"mistralai/devstral-2-123b-instruct-2512\",\n \"mistralai/magistral-small-2506\",\n \"mistralai/mistral-7b-instruct-v03\",\n \"mistralai/mistral-large-3-675b-instruct-2512\",\n \"mistralai/mistral-medium-3-instruct\",\n \"mistralai/mistral-nemotron\",\n \"mistralai/mistral-small-4-119b-2603\",\n \"mistralai/mixtral-8x22b-instruct\",\n \"mistralai/mixtral-8x7b-instruct\",\n \"moonshotai/kimi-k2-instruct\",\n \"moonshotai/kimi-k2-instruct-0905\",\n \"moonshotai/kimi-k2-thinking\",\n \"moonshotai/kimi-k2.6\",\n \"nvidia/active-speaker-detection\",\n \"nvidia/bevformer\",\n \"nvidia/cosmos-predict1-5b\",\n \"nvidia/cosmos-transfer1-7b\",\n \"nvidia/cosmos-transfer2_5-2b\",\n \"nvidia/gliner-pii\",\n \"nvidia/llama-3_1-nemotron-safety-guard-8b-v3\",\n \"nvidia/llama-3_2-nemoretriever-300m-embed-v1\",\n \"nvidia/llama-3_3-nemotron-super-49b-v1\",\n \"nvidia/llama-3_3-nemotron-super-49b-v1_5\",\n \"nvidia/llama-nemotron-embed-vl-1b-v2\",\n \"nvidia/llama-nemotron-rerank-vl-1b-v2\",\n \"nvidia/magpie-tts-zeroshot\",\n \"nvidia/nemotron-3-content-safety\",\n \"nvidia/nemotron-3-nano-30b-a3b\",\n \"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\",\n \"nvidia/nemotron-3-super-120b-a12b\",\n \"nvidia/nemotron-content-safety-reasoning-4b\",\n \"nvidia/nemotron-mini-4b-instruct\",\n \"nvidia/nemotron-voicechat\",\n \"nvidia/nv-embed-v1\",\n \"nvidia/nv-embedcode-7b-v1\",\n \"nvidia/nvidia-nemotron-nano-9b-v2\",\n \"nvidia/rerank-qa-mistral-4b\",\n \"nvidia/riva-translate-4b-instruct-v1_1\",\n \"nvidia/sparsedrive\",\n \"nvidia/streampetr\",\n \"nvidia/studiovoice\",\n \"nvidia/synthetic-video-detector\",\n \"nvidia/usdcode\",\n \"nvidia/usdvalidate\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"openai/whisper-large-v3\",\n \"qwen/qwen-image\",\n \"qwen/qwen-image-edit\",\n \"qwen/qwen2.5-coder-32b-instruct\",\n \"qwen/qwen3-coder-480b-a35b-instruct\",\n \"qwen/qwen3-next-80b-a3b-instruct\",\n \"qwen/qwen3-next-80b-a3b-thinking\",\n \"qwen/qwen3.5-122b-a10b\",\n \"qwen/qwen3.5-397b-a17b\",\n \"sarvamai/sarvam-m\",\n \"stepfun-ai/step-3.5-flash\",\n \"upstage/solar-10_7b-instruct\",\n \"z-ai/glm-5.1\",\n \"z-ai/glm4.7\"\n ],\n \"docUrl\": \"https://docs.api.nvidia.com/nim/\",\n \"gateway\": \"models.dev\"\n },\n \"anthropic\": {\n \"apiKeyEnvVar\": \"ANTHROPIC_API_KEY\",\n \"name\": \"Anthropic\",\n \"models\": [\n \"claude-3-5-haiku-20241022\",\n \"claude-3-5-haiku-latest\",\n \"claude-3-5-sonnet-20240620\",\n \"claude-3-5-sonnet-20241022\",\n \"claude-3-7-sonnet-20250219\",\n \"claude-3-haiku-20240307\",\n \"claude-3-opus-20240229\",\n \"claude-3-sonnet-20240229\",\n \"claude-haiku-4-5\",\n \"claude-haiku-4-5-20251001\",\n \"claude-opus-4-0\",\n \"claude-opus-4-1\",\n \"claude-opus-4-1-20250805\",\n \"claude-opus-4-20250514\",\n \"claude-opus-4-5\",\n \"claude-opus-4-5-20251101\",\n \"claude-opus-4-6\",\n \"claude-opus-4-7\",\n \"claude-sonnet-4-0\",\n \"claude-sonnet-4-20250514\",\n \"claude-sonnet-4-5\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-sonnet-4-6\"\n ],\n \"docUrl\": \"https://docs.anthropic.com/en/docs/about-claude/models\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/anthropic\"\n },\n \"zhipuai-coding-plan\": {\n \"url\": \"https://open.bigmodel.cn/api/coding/paas/v4\",\n \"apiKeyEnvVar\": \"ZHIPU_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Zhipu AI Coding Plan\",\n \"models\": [\"glm-4.5-air\", \"glm-4.7\", \"glm-5-turbo\", \"glm-5.1\", \"glm-5v-turbo\"],\n \"docUrl\": \"https://docs.bigmodel.cn/cn/coding-plan/overview\",\n \"gateway\": \"models.dev\"\n },\n \"atomic-chat\": {\n \"url\": \"http://127.0.0.1:1337/v1\",\n \"apiKeyEnvVar\": \"ATOMIC_CHAT_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Atomic Chat\",\n \"models\": [\n \"Meta-Llama-3_1-8B-Instruct-GGUF\",\n \"Qwen3_5-9B-MLX-4bit\",\n \"Qwen3_5-9B-Q4_K_M\",\n \"gemma-4-E4B-it-IQ4_XS\",\n \"gemma-4-E4B-it-MLX-4bit\"\n ],\n \"docUrl\": \"https://atomic.chat\",\n \"gateway\": \"models.dev\"\n },\n \"github-models\": {\n \"url\": \"https://models.github.ai/inference\",\n \"apiKeyEnvVar\": \"GITHUB_TOKEN\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"GitHub Models\",\n \"models\": [\n \"ai21-labs/ai21-jamba-1.5-large\",\n \"ai21-labs/ai21-jamba-1.5-mini\",\n \"cohere/cohere-command-a\",\n \"cohere/cohere-command-r\",\n \"cohere/cohere-command-r-08-2024\",\n \"cohere/cohere-command-r-plus\",\n \"cohere/cohere-command-r-plus-08-2024\",\n \"core42/jais-30b-chat\",\n \"deepseek/deepseek-r1\",\n \"deepseek/deepseek-r1-0528\",\n \"deepseek/deepseek-v3-0324\",\n \"meta/llama-3.2-11b-vision-instruct\",\n \"meta/llama-3.2-90b-vision-instruct\",\n \"meta/llama-3.3-70b-instruct\",\n \"meta/llama-4-maverick-17b-128e-instruct-fp8\",\n \"meta/llama-4-scout-17b-16e-instruct\",\n \"meta/meta-llama-3-70b-instruct\",\n \"meta/meta-llama-3-8b-instruct\",\n \"meta/meta-llama-3.1-405b-instruct\",\n \"meta/meta-llama-3.1-70b-instruct\",\n \"meta/meta-llama-3.1-8b-instruct\",\n \"microsoft/mai-ds-r1\",\n \"microsoft/phi-3-medium-128k-instruct\",\n \"microsoft/phi-3-medium-4k-instruct\",\n \"microsoft/phi-3-mini-128k-instruct\",\n \"microsoft/phi-3-mini-4k-instruct\",\n \"microsoft/phi-3-small-128k-instruct\",\n \"microsoft/phi-3-small-8k-instruct\",\n \"microsoft/phi-3.5-mini-instruct\",\n \"microsoft/phi-3.5-moe-instruct\",\n \"microsoft/phi-3.5-vision-instruct\",\n \"microsoft/phi-4\",\n \"microsoft/phi-4-mini-instruct\",\n \"microsoft/phi-4-mini-reasoning\",\n \"microsoft/phi-4-multimodal-instruct\",\n \"microsoft/phi-4-reasoning\",\n \"mistral-ai/codestral-2501\",\n \"mistral-ai/ministral-3b\",\n \"mistral-ai/mistral-large-2411\",\n \"mistral-ai/mistral-medium-2505\",\n \"mistral-ai/mistral-nemo\",\n \"mistral-ai/mistral-small-2503\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-4o\",\n \"openai/gpt-4o-mini\",\n \"openai/o1\",\n \"openai/o1-mini\",\n \"openai/o1-preview\",\n \"openai/o3\",\n \"openai/o3-mini\",\n \"openai/o4-mini\",\n \"xai/grok-3\",\n \"xai/grok-3-mini\"\n ],\n \"docUrl\": \"https://docs.github.com/en/github-models\",\n \"gateway\": \"models.dev\"\n },\n \"qiniu-ai\": {\n \"url\": \"https://api.qnaigc.com/v1\",\n \"apiKeyEnvVar\": \"QINIU_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Qiniu\",\n \"models\": [\n \"MiniMax-M1\",\n \"claude-3.5-haiku\",\n \"claude-3.5-sonnet\",\n \"claude-3.7-sonnet\",\n \"claude-4.0-opus\",\n \"claude-4.0-sonnet\",\n \"claude-4.1-opus\",\n \"claude-4.5-haiku\",\n \"claude-4.5-opus\",\n \"claude-4.5-sonnet\",\n \"deepseek-r1\",\n \"deepseek-r1-0528\",\n \"deepseek-v3\",\n \"deepseek-v3-0324\",\n \"deepseek-v3.1\",\n \"deepseek/deepseek-math-v2\",\n \"deepseek/deepseek-v3.1-terminus\",\n \"deepseek/deepseek-v3.1-terminus-thinking\",\n \"deepseek/deepseek-v3.2-251201\",\n \"deepseek/deepseek-v3.2-exp\",\n \"deepseek/deepseek-v3.2-exp-thinking\",\n \"doubao-1.5-pro-32k\",\n \"doubao-1.5-thinking-pro\",\n \"doubao-1.5-vision-pro\",\n \"doubao-seed-1.6\",\n \"doubao-seed-1.6-flash\",\n \"doubao-seed-1.6-thinking\",\n \"doubao-seed-2.0-code\",\n \"doubao-seed-2.0-lite\",\n \"doubao-seed-2.0-mini\",\n \"doubao-seed-2.0-pro\",\n \"gemini-2.0-flash\",\n \"gemini-2.0-flash-lite\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-flash-image\",\n \"gemini-2.5-flash-lite\",\n \"gemini-2.5-pro\",\n \"gemini-3.0-flash-preview\",\n \"gemini-3.0-pro-image-preview\",\n \"gemini-3.0-pro-preview\",\n \"glm-4.5\",\n \"glm-4.5-air\",\n \"gpt-oss-120b\",\n \"gpt-oss-20b\",\n \"kimi-k2\",\n \"kling-v2-6\",\n \"meituan/longcat-flash-chat\",\n \"meituan/longcat-flash-lite\",\n \"mimo-v2-flash\",\n \"minimax/minimax-m2\",\n \"minimax/minimax-m2.1\",\n \"minimax/minimax-m2.5\",\n \"minimax/minimax-m2.5-highspeed\",\n \"moonshotai/kimi-k2-0905\",\n \"moonshotai/kimi-k2-thinking\",\n \"moonshotai/kimi-k2.5\",\n \"openai/gpt-5\",\n \"openai/gpt-5.2\",\n \"qwen-max-2025-01-25\",\n \"qwen-turbo\",\n \"qwen-vl-max-2025-01-25\",\n \"qwen2.5-vl-72b-instruct\",\n \"qwen2.5-vl-7b-instruct\",\n \"qwen3-235b-a22b\",\n \"qwen3-235b-a22b-instruct-2507\",\n \"qwen3-235b-a22b-thinking-2507\",\n \"qwen3-30b-a3b\",\n \"qwen3-30b-a3b-instruct-2507\",\n \"qwen3-30b-a3b-thinking-2507\",\n \"qwen3-32b\",\n \"qwen3-coder-480b-a35b-instruct\",\n \"qwen3-max\",\n \"qwen3-max-preview\",\n \"qwen3-next-80b-a3b-instruct\",\n \"qwen3-next-80b-a3b-thinking\",\n \"qwen3-vl-30b-a3b-thinking\",\n \"qwen3.5-397b-a17b\",\n \"stepfun-ai/gelab-zero-4b-preview\",\n \"stepfun/step-3.5-flash\",\n \"x-ai/grok-4-fast\",\n \"x-ai/grok-4-fast-non-reasoning\",\n \"x-ai/grok-4-fast-reasoning\",\n \"x-ai/grok-4.1-fast\",\n \"x-ai/grok-4.1-fast-non-reasoning\",\n \"x-ai/grok-4.1-fast-reasoning\",\n \"x-ai/grok-code-fast-1\",\n \"xiaomi/mimo-v2-flash\",\n \"z-ai/autoglm-phone-9b\",\n \"z-ai/glm-4.6\",\n \"z-ai/glm-4.7\",\n \"z-ai/glm-5\"\n ],\n \"docUrl\": \"https://developer.qiniu.com/aitokenapi\",\n \"gateway\": \"models.dev\"\n },\n \"google\": {\n \"apiKeyEnvVar\": [\"GOOGLE_API_KEY\", \"GOOGLE_GENERATIVE_AI_API_KEY\"],\n \"name\": \"Google\",\n \"models\": [\n \"gemini-2.0-flash\",\n \"gemini-2.0-flash-lite\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-flash-image\",\n \"gemini-2.5-flash-lite\",\n \"gemini-2.5-flash-preview-tts\",\n \"gemini-2.5-pro\",\n \"gemini-2.5-pro-preview-tts\",\n \"gemini-3-flash-preview\",\n \"gemini-3-pro-preview\",\n \"gemini-3.1-flash-image-preview\",\n \"gemini-3.1-flash-lite\",\n \"gemini-3.1-flash-lite-preview\",\n \"gemini-3.1-pro-preview\",\n \"gemini-3.1-pro-preview-customtools\",\n \"gemini-3.5-flash\",\n \"gemini-embedding-001\",\n \"gemini-flash-latest\",\n \"gemini-flash-lite-latest\",\n \"gemma-4-26b-a4b-it\",\n \"gemma-4-31b-it\"\n ],\n \"docUrl\": \"https://ai.google.dev/gemini-api/docs/models\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/google\"\n },\n \"scaleway\": {\n \"url\": \"https://api.scaleway.ai/v1\",\n \"apiKeyEnvVar\": \"SCALEWAY_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Scaleway\",\n \"models\": [\n \"bge-multilingual-gemma2\",\n \"deepseek-r1-distill-llama-70b\",\n \"devstral-2-123b-instruct-2512\",\n \"gemma-3-27b-it\",\n \"gpt-oss-120b\",\n \"llama-3.1-8b-instruct\",\n \"llama-3.3-70b-instruct\",\n \"mistral-medium-3.5-128b\",\n \"mistral-nemo-instruct-2407\",\n \"mistral-small-3.2-24b-instruct-2506\",\n \"pixtral-12b-2409\",\n \"qwen3-235b-a22b-instruct-2507\",\n \"qwen3-coder-30b-a3b-instruct\",\n \"qwen3-embedding-8b\",\n \"qwen3.5-397b-a17b\",\n \"voxtral-small-24b-2507\",\n \"whisper-large-v3\"\n ],\n \"docUrl\": \"https://www.scaleway.com/en/docs/generative-apis/\",\n \"gateway\": \"models.dev\"\n },\n \"opencode\": {\n \"url\": \"https://opencode.ai/zen/v1\",\n \"apiKeyEnvVar\": \"OPENCODE_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"OpenCode Zen\",\n \"models\": [\n \"big-pickle\",\n \"claude-haiku-4-5\",\n \"claude-opus-4-1\",\n \"claude-opus-4-5\",\n \"claude-opus-4-6\",\n \"claude-opus-4-7\",\n \"claude-sonnet-4\",\n \"claude-sonnet-4-5\",\n \"claude-sonnet-4-6\",\n \"deepseek-v4-flash-free\",\n \"gemini-3-flash\",\n \"gemini-3.1-pro\",\n \"gemini-3.5-flash\",\n \"glm-5\",\n \"glm-5.1\",\n \"gpt-5\",\n \"gpt-5-codex\",\n \"gpt-5-nano\",\n \"gpt-5.1\",\n \"gpt-5.1-codex\",\n \"gpt-5.1-codex-max\",\n \"gpt-5.1-codex-mini\",\n \"gpt-5.2\",\n \"gpt-5.2-codex\",\n \"gpt-5.3-codex\",\n \"gpt-5.3-codex-spark\",\n \"gpt-5.4\",\n \"gpt-5.4-mini\",\n \"gpt-5.4-nano\",\n \"gpt-5.4-pro\",\n \"gpt-5.5\",\n \"gpt-5.5-pro\",\n \"grok-build-0.1\",\n \"kimi-k2.5\",\n \"kimi-k2.6\",\n \"minimax-m2.5\",\n \"minimax-m2.7\",\n \"nemotron-3-super-free\",\n \"qwen3.5-plus\",\n \"qwen3.6-plus\"\n ],\n \"docUrl\": \"https://opencode.ai/docs/zen\",\n \"gateway\": \"models.dev\"\n },\n \"mixlayer\": {\n \"url\": \"https://models.mixlayer.ai/v1\",\n \"apiKeyEnvVar\": \"MIXLAYER_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Mixlayer\",\n \"models\": [\n \"qwen/qwen3.5-122b-a10b\",\n \"qwen/qwen3.5-27b\",\n \"qwen/qwen3.5-35b-a3b\",\n \"qwen/qwen3.5-397b-a17b\",\n \"qwen/qwen3.5-9b\"\n ],\n \"docUrl\": \"https://docs.mixlayer.com\",\n \"gateway\": \"models.dev\"\n },\n \"zenmux\": {\n \"url\": \"https://zenmux.ai/api/v1\",\n \"apiKeyEnvVar\": \"ZENMUX_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"ZenMux\",\n \"models\": [\n \"anthropic/claude-3.5-haiku\",\n \"anthropic/claude-3.7-sonnet\",\n \"anthropic/claude-haiku-4.5\",\n \"anthropic/claude-opus-4\",\n \"anthropic/claude-opus-4.1\",\n \"anthropic/claude-opus-4.5\",\n \"anthropic/claude-opus-4.6\",\n \"anthropic/claude-opus-4.7\",\n \"anthropic/claude-sonnet-4\",\n \"anthropic/claude-sonnet-4.5\",\n \"anthropic/claude-sonnet-4.6\",\n \"baidu/ernie-5.0-thinking-preview\",\n \"deepseek/deepseek-chat\",\n \"deepseek/deepseek-v3.2\",\n \"deepseek/deepseek-v3.2-exp\",\n \"deepseek/deepseek-v4-flash\",\n \"deepseek/deepseek-v4-pro\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-flash-lite\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3.1-flash-lite-preview\",\n \"google/gemini-3.1-pro-preview\",\n \"inclusionai/ling-1t\",\n \"inclusionai/ring-1t\",\n \"kuaishou/kat-coder-pro-v2\",\n \"minimax/minimax-m2\",\n \"minimax/minimax-m2.1\",\n \"minimax/minimax-m2.5\",\n \"minimax/minimax-m2.5-lightning\",\n \"minimax/minimax-m2.7\",\n \"minimax/minimax-m2.7-highspeed\",\n \"moonshotai/kimi-k2-0905\",\n \"moonshotai/kimi-k2-thinking\",\n \"moonshotai/kimi-k2-thinking-turbo\",\n \"moonshotai/kimi-k2.5\",\n \"moonshotai/kimi-k2.6\",\n \"openai/gpt-5\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.1-chat\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-5.3-chat\",\n \"openai/gpt-5.3-codex\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-mini\",\n \"openai/gpt-5.4-nano\",\n \"openai/gpt-5.4-pro\",\n \"openai/gpt-5.5\",\n \"openai/gpt-5.5-pro\",\n \"qwen/qwen3-coder-plus\",\n \"qwen/qwen3-max\",\n \"qwen/qwen3.5-flash\",\n \"qwen/qwen3.5-plus\",\n \"qwen/qwen3.6-plus\",\n \"sapiens-ai/agnes-1.5-lite\",\n \"sapiens-ai/agnes-1.5-pro\",\n \"stepfun/step-3\",\n \"stepfun/step-3.5-flash\",\n \"stepfun/step-3.5-flash-free\",\n \"tencent/hy3-preview\",\n \"volcengine/doubao-seed-1.8\",\n \"volcengine/doubao-seed-2.0-code\",\n \"volcengine/doubao-seed-2.0-lite\",\n \"volcengine/doubao-seed-2.0-mini\",\n \"volcengine/doubao-seed-2.0-pro\",\n \"volcengine/doubao-seed-code\",\n \"x-ai/grok-4\",\n \"x-ai/grok-4-fast\",\n \"x-ai/grok-4.1-fast\",\n \"x-ai/grok-4.1-fast-non-reasoning\",\n \"x-ai/grok-4.2-fast\",\n \"x-ai/grok-4.2-fast-non-reasoning\",\n \"x-ai/grok-code-fast-1\",\n \"xiaomi/mimo-v2-flash\",\n \"xiaomi/mimo-v2-omni\",\n \"xiaomi/mimo-v2-pro\",\n \"xiaomi/mimo-v2.5\",\n \"xiaomi/mimo-v2.5-pro\",\n \"z-ai/glm-4.5\",\n \"z-ai/glm-4.5-air\",\n \"z-ai/glm-4.6\",\n \"z-ai/glm-4.6v\",\n \"z-ai/glm-4.6v-flash\",\n \"z-ai/glm-4.6v-flash-free\",\n \"z-ai/glm-4.7\",\n \"z-ai/glm-4.7-flash-free\",\n \"z-ai/glm-4.7-flashx\",\n \"z-ai/glm-5\",\n \"z-ai/glm-5-turbo\",\n \"z-ai/glm-5.1\",\n \"z-ai/glm-5v-turbo\"\n ],\n \"docUrl\": \"https://docs.zenmux.ai\",\n \"gateway\": \"models.dev\"\n },\n \"perplexity-agent\": {\n \"url\": \"https://api.perplexity.ai/v1\",\n \"apiKeyEnvVar\": \"PERPLEXITY_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Perplexity Agent\",\n \"models\": [\n \"anthropic/claude-haiku-4-5\",\n \"anthropic/claude-opus-4-5\",\n \"anthropic/claude-opus-4-6\",\n \"anthropic/claude-opus-4-7\",\n \"anthropic/claude-sonnet-4-5\",\n \"anthropic/claude-sonnet-4-6\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3.1-pro-preview\",\n \"nvidia/nemotron-3-super-120b-a12b\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.5\",\n \"perplexity/sonar\",\n \"xai/grok-4-1-fast-non-reasoning\"\n ],\n \"docUrl\": \"https://docs.perplexity.ai/docs/agent-api/models\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/openai\"\n },\n \"alibaba-coding-plan\": {\n \"url\": \"https://coding-intl.dashscope.aliyuncs.com/v1\",\n \"apiKeyEnvVar\": \"ALIBABA_CODING_PLAN_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Alibaba Coding Plan\",\n \"models\": [\n \"MiniMax-M2.5\",\n \"glm-4.7\",\n \"glm-5\",\n \"kimi-k2.5\",\n \"qwen3-coder-next\",\n \"qwen3-coder-plus\",\n \"qwen3-max-2026-01-23\",\n \"qwen3.5-plus\",\n \"qwen3.6-plus\"\n ],\n \"docUrl\": \"https://www.alibabacloud.com/help/en/model-studio/coding-plan\",\n \"gateway\": \"models.dev\"\n },\n \"meganova\": {\n \"url\": \"https://api.meganova.ai/v1\",\n \"apiKeyEnvVar\": \"MEGANOVA_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Meganova\",\n \"models\": [\n \"MiniMaxAI/MiniMax-M2.1\",\n \"MiniMaxAI/MiniMax-M2.5\",\n \"Qwen/Qwen2.5-VL-32B-Instruct\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"Qwen/Qwen3.5-Plus\",\n \"XiaomiMiMo/MiMo-V2-Flash\",\n \"deepseek-ai/DeepSeek-R1-0528\",\n \"deepseek-ai/DeepSeek-V3-0324\",\n \"deepseek-ai/DeepSeek-V3.1\",\n \"deepseek-ai/DeepSeek-V3.2\",\n \"deepseek-ai/DeepSeek-V3.2-Exp\",\n \"meta-llama/Llama-3.3-70B-Instruct\",\n \"mistralai/Mistral-Nemo-Instruct-2407\",\n \"mistralai/Mistral-Small-3.2-24B-Instruct-2506\",\n \"moonshotai/Kimi-K2-Thinking\",\n \"moonshotai/Kimi-K2.5\",\n \"zai-org/GLM-4.6\",\n \"zai-org/GLM-4.7\",\n \"zai-org/GLM-5\"\n ],\n \"docUrl\": \"https://docs.meganova.ai\",\n \"gateway\": \"models.dev\"\n },\n \"synthetic\": {\n \"url\": \"https://api.synthetic.new/openai/v1\",\n \"apiKeyEnvVar\": \"SYNTHETIC_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Synthetic\",\n \"models\": [\n \"hf:MiniMaxAI/MiniMax-M2\",\n \"hf:MiniMaxAI/MiniMax-M2.1\",\n \"hf:MiniMaxAI/MiniMax-M2.5\",\n \"hf:Qwen/Qwen2.5-Coder-32B-Instruct\",\n \"hf:Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"hf:Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"hf:Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n \"hf:Qwen/Qwen3.5-397B-A17B\",\n \"hf:deepseek-ai/DeepSeek-R1\",\n \"hf:deepseek-ai/DeepSeek-R1-0528\",\n \"hf:deepseek-ai/DeepSeek-V3\",\n \"hf:deepseek-ai/DeepSeek-V3-0324\",\n \"hf:deepseek-ai/DeepSeek-V3.1\",\n \"hf:deepseek-ai/DeepSeek-V3.1-Terminus\",\n \"hf:deepseek-ai/DeepSeek-V3.2\",\n \"hf:meta-llama/Llama-3.1-405B-Instruct\",\n \"hf:meta-llama/Llama-3.1-70B-Instruct\",\n \"hf:meta-llama/Llama-3.1-8B-Instruct\",\n \"hf:meta-llama/Llama-3.3-70B-Instruct\",\n \"hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\",\n \"hf:meta-llama/Llama-4-Scout-17B-16E-Instruct\",\n \"hf:moonshotai/Kimi-K2-Instruct-0905\",\n \"hf:moonshotai/Kimi-K2-Thinking\",\n \"hf:moonshotai/Kimi-K2.5\",\n \"hf:moonshotai/Kimi-K2.6\",\n \"hf:nvidia/Kimi-K2.5-NVFP4\",\n \"hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4\",\n \"hf:openai/gpt-oss-120b\",\n \"hf:zai-org/GLM-4.6\",\n \"hf:zai-org/GLM-4.7\",\n \"hf:zai-org/GLM-4.7-Flash\",\n \"hf:zai-org/GLM-5\",\n \"hf:zai-org/GLM-5.1\"\n ],\n \"docUrl\": \"https://synthetic.new/pricing\",\n \"gateway\": \"models.dev\"\n },\n \"inceptron\": {\n \"url\": \"https://api.inceptron.io/v1\",\n \"apiKeyEnvVar\": \"INCEPTRON_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Inceptron\",\n \"models\": [\n \"MiniMaxAI/MiniMax-M2.5\",\n \"moonshotai/Kimi-K2.6\",\n \"nvidia/llama-3.3-70b-instruct-fp8\",\n \"zai-org/GLM-5.1-FP8\"\n ],\n \"docUrl\": \"https://docs.inceptron.io\",\n \"gateway\": \"models.dev\"\n },\n \"minimax-coding-plan\": {\n \"url\": \"https://api.minimax.io/anthropic/v1\",\n \"apiKeyEnvVar\": \"MINIMAX_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"MiniMax Token Plan (minimax.io)\",\n \"models\": [\n \"MiniMax-M2\",\n \"MiniMax-M2.1\",\n \"MiniMax-M2.5\",\n \"MiniMax-M2.5-highspeed\",\n \"MiniMax-M2.7\",\n \"MiniMax-M2.7-highspeed\"\n ],\n \"docUrl\": \"https://platform.minimax.io/docs/token-plan/intro\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/anthropic\"\n },\n \"upstage\": {\n \"url\": \"https://api.upstage.ai/v1/solar\",\n \"apiKeyEnvVar\": \"UPSTAGE_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Upstage\",\n \"models\": [\"solar-mini\", \"solar-pro2\", \"solar-pro3\"],\n \"docUrl\": \"https://developers.upstage.ai/docs/apis/chat\",\n \"gateway\": \"models.dev\"\n },\n \"vercel\": {\n \"apiKeyEnvVar\": \"AI_GATEWAY_API_KEY\",\n \"name\": \"Vercel AI Gateway\",\n \"models\": [\n \"alibaba/qwen-3-14b\",\n \"alibaba/qwen-3-235b\",\n \"alibaba/qwen-3-30b\",\n \"alibaba/qwen-3-32b\",\n \"alibaba/qwen-3.6-max-preview\",\n \"alibaba/qwen3-235b-a22b-thinking\",\n \"alibaba/qwen3-coder\",\n \"alibaba/qwen3-coder-30b-a3b\",\n \"alibaba/qwen3-coder-next\",\n \"alibaba/qwen3-coder-plus\",\n \"alibaba/qwen3-embedding-0.6b\",\n \"alibaba/qwen3-embedding-4b\",\n \"alibaba/qwen3-embedding-8b\",\n \"alibaba/qwen3-max\",\n \"alibaba/qwen3-max-preview\",\n \"alibaba/qwen3-max-thinking\",\n \"alibaba/qwen3-next-80b-a3b-instruct\",\n \"alibaba/qwen3-next-80b-a3b-thinking\",\n \"alibaba/qwen3-vl-235b-a22b-instruct\",\n \"alibaba/qwen3-vl-instruct\",\n \"alibaba/qwen3-vl-thinking\",\n \"alibaba/qwen3.5-flash\",\n \"alibaba/qwen3.5-plus\",\n \"alibaba/qwen3.6-27b\",\n \"alibaba/qwen3.6-plus\",\n \"alibaba/qwen3.7-max\",\n \"amazon/nova-2-lite\",\n \"amazon/nova-lite\",\n \"amazon/nova-micro\",\n \"amazon/nova-pro\",\n \"amazon/titan-embed-text-v2\",\n \"anthropic/claude-3-haiku\",\n \"anthropic/claude-3-opus\",\n \"anthropic/claude-3.5-haiku\",\n \"anthropic/claude-3.5-sonnet\",\n \"anthropic/claude-3.5-sonnet-20240620\",\n \"anthropic/claude-3.7-sonnet\",\n \"anthropic/claude-haiku-4.5\",\n \"anthropic/claude-opus-4\",\n \"anthropic/claude-opus-4.1\",\n \"anthropic/claude-opus-4.5\",\n \"anthropic/claude-opus-4.6\",\n \"anthropic/claude-opus-4.7\",\n \"anthropic/claude-sonnet-4\",\n \"anthropic/claude-sonnet-4.5\",\n \"anthropic/claude-sonnet-4.6\",\n \"arcee-ai/trinity-large-preview\",\n \"arcee-ai/trinity-large-thinking\",\n \"arcee-ai/trinity-mini\",\n \"bfl/flux-kontext-max\",\n \"bfl/flux-kontext-pro\",\n \"bfl/flux-pro-1.0-fill\",\n \"bfl/flux-pro-1.1\",\n \"bfl/flux-pro-1.1-ultra\",\n \"bytedance/seed-1.6\",\n \"bytedance/seed-1.8\",\n \"cohere/command-a\",\n \"cohere/embed-v4.0\",\n \"deepseek/deepseek-r1\",\n \"deepseek/deepseek-v3\",\n \"deepseek/deepseek-v3.1\",\n \"deepseek/deepseek-v3.1-terminus\",\n \"deepseek/deepseek-v3.2\",\n \"deepseek/deepseek-v3.2-exp\",\n \"deepseek/deepseek-v3.2-thinking\",\n \"deepseek/deepseek-v4-flash\",\n \"deepseek/deepseek-v4-pro\",\n \"google/gemini-2.0-flash\",\n \"google/gemini-2.0-flash-lite\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-flash-image\",\n \"google/gemini-2.5-flash-image-preview\",\n \"google/gemini-2.5-flash-lite\",\n \"google/gemini-2.5-flash-lite-preview-09-2025\",\n \"google/gemini-2.5-flash-preview-09-2025\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-3-flash\",\n \"google/gemini-3-pro-image\",\n \"google/gemini-3-pro-preview\",\n \"google/gemini-3.1-flash-image-preview\",\n \"google/gemini-3.1-flash-lite\",\n \"google/gemini-3.1-flash-lite-preview\",\n \"google/gemini-3.1-pro-preview\",\n \"google/gemini-3.5-flash\",\n \"google/gemini-embedding-001\",\n \"google/gemini-embedding-2\",\n \"google/gemma-4-26b-a4b-it\",\n \"google/gemma-4-31b-it\",\n \"google/imagen-4.0-fast-generate-001\",\n \"google/imagen-4.0-generate-001\",\n \"google/imagen-4.0-ultra-generate-001\",\n \"google/text-embedding-005\",\n \"google/text-multilingual-embedding-002\",\n \"inception/mercury-2\",\n \"inception/mercury-coder-small\",\n \"inception/mercury-edit-2\",\n \"interfaze/interfaze-beta\",\n \"kwaipilot/kat-coder-pro-v1\",\n \"kwaipilot/kat-coder-pro-v2\",\n \"meituan/longcat-flash-chat\",\n \"meituan/longcat-flash-thinking\",\n \"meituan/longcat-flash-thinking-2601\",\n \"meta/llama-3.1-70b\",\n \"meta/llama-3.1-8b\",\n \"meta/llama-3.2-11b\",\n \"meta/llama-3.2-1b\",\n \"meta/llama-3.2-3b\",\n \"meta/llama-3.2-90b\",\n \"meta/llama-3.3-70b\",\n \"meta/llama-4-maverick\",\n \"meta/llama-4-scout\",\n \"minimax/minimax-m2\",\n \"minimax/minimax-m2.1\",\n \"minimax/minimax-m2.1-lightning\",\n \"minimax/minimax-m2.5\",\n \"minimax/minimax-m2.5-highspeed\",\n \"minimax/minimax-m2.7\",\n \"minimax/minimax-m2.7-highspeed\",\n \"mistral/codestral\",\n \"mistral/codestral-embed\",\n \"mistral/devstral-2\",\n \"mistral/devstral-small\",\n \"mistral/devstral-small-2\",\n \"mistral/magistral-medium\",\n \"mistral/magistral-small\",\n \"mistral/ministral-14b\",\n \"mistral/ministral-3b\",\n \"mistral/ministral-8b\",\n \"mistral/mistral-embed\",\n \"mistral/mistral-large-3\",\n \"mistral/mistral-medium\",\n \"mistral/mistral-medium-3.5\",\n \"mistral/mistral-nemo\",\n \"mistral/mistral-small\",\n \"mistral/mixtral-8x22b-instruct\",\n \"mistral/pixtral-12b\",\n \"mistral/pixtral-large\",\n \"moonshotai/kimi-k2-0905\",\n \"moonshotai/kimi-k2-thinking\",\n \"moonshotai/kimi-k2-thinking-turbo\",\n \"moonshotai/kimi-k2-turbo\",\n \"moonshotai/kimi-k2.5\",\n \"moonshotai/kimi-k2.6\",\n \"morph/morph-v3-fast\",\n \"morph/morph-v3-large\",\n \"nvidia/nemotron-3-nano-30b-a3b\",\n \"nvidia/nemotron-3-super-120b-a12b\",\n \"nvidia/nemotron-nano-12b-v2-vl\",\n \"nvidia/nemotron-nano-9b-v2\",\n \"openai/codex-mini\",\n \"openai/gpt-3.5-turbo\",\n \"openai/gpt-3.5-turbo-instruct\",\n \"openai/gpt-4-turbo\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-4o\",\n \"openai/gpt-4o-mini\",\n \"openai/gpt-4o-mini-search-preview\",\n \"openai/gpt-5\",\n \"openai/gpt-5-chat\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5-pro\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-max\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.1-instant\",\n \"openai/gpt-5.1-thinking\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-chat\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-5.3-chat\",\n \"openai/gpt-5.3-codex\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-mini\",\n \"openai/gpt-5.4-nano\",\n \"openai/gpt-5.4-pro\",\n \"openai/gpt-5.5\",\n \"openai/gpt-5.5-pro\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"openai/gpt-oss-safeguard-20b\",\n \"openai/o1\",\n \"openai/o3\",\n \"openai/o3-deep-research\",\n \"openai/o3-mini\",\n \"openai/o3-pro\",\n \"openai/o4-mini\",\n \"openai/text-embedding-3-large\",\n \"openai/text-embedding-3-small\",\n \"openai/text-embedding-ada-002\",\n \"perplexity/sonar\",\n \"perplexity/sonar-pro\",\n \"perplexity/sonar-reasoning\",\n \"perplexity/sonar-reasoning-pro\",\n \"prime-intellect/intellect-3\",\n \"recraft/recraft-v2\",\n \"recraft/recraft-v3\",\n \"vercel/v0-1.0-md\",\n \"vercel/v0-1.5-md\",\n \"voyage/voyage-3-large\",\n \"voyage/voyage-3.5\",\n \"voyage/voyage-3.5-lite\",\n \"voyage/voyage-4\",\n \"voyage/voyage-4-large\",\n \"voyage/voyage-4-lite\",\n \"voyage/voyage-code-2\",\n \"voyage/voyage-code-3\",\n \"voyage/voyage-finance-2\",\n \"voyage/voyage-law-2\",\n \"xai/grok-4-fast-reasoning\",\n \"xai/grok-4.1-fast-non-reasoning\",\n \"xai/grok-4.1-fast-reasoning\",\n \"xai/grok-4.20-multi-agent\",\n \"xai/grok-4.20-multi-agent-beta\",\n \"xai/grok-4.20-non-reasoning\",\n \"xai/grok-4.20-non-reasoning-beta\",\n \"xai/grok-4.20-reasoning\",\n \"xai/grok-4.20-reasoning-beta\",\n \"xai/grok-4.3\",\n \"xai/grok-build-0.1\",\n \"xai/grok-imagine-image\",\n \"xai/grok-imagine-image-pro\",\n \"xiaomi/mimo-v2-flash\",\n \"xiaomi/mimo-v2-pro\",\n \"xiaomi/mimo-v2.5\",\n \"xiaomi/mimo-v2.5-pro\",\n \"zai/glm-4.5\",\n \"zai/glm-4.5-air\",\n \"zai/glm-4.5v\",\n \"zai/glm-4.6\",\n \"zai/glm-4.6v\",\n \"zai/glm-4.6v-flash\",\n \"zai/glm-4.7\",\n \"zai/glm-4.7-flash\",\n \"zai/glm-4.7-flashx\",\n \"zai/glm-5\",\n \"zai/glm-5-turbo\",\n \"zai/glm-5.1\",\n \"zai/glm-5v-turbo\"\n ],\n \"docUrl\": \"https://github.com/vercel/ai/tree/5eb85cc45a259553501f535b8ac79a77d0e79223/packages/gateway\",\n \"gateway\": \"models.dev\"\n },\n \"abliteration-ai\": {\n \"url\": \"https://api.abliteration.ai/v1\",\n \"apiKeyEnvVar\": \"ABLIT_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"abliteration.ai\",\n \"models\": [\"abliterated-model\"],\n \"docUrl\": \"https://docs.abliteration.ai/models\",\n \"gateway\": \"models.dev\"\n },\n \"deepseek\": {\n \"url\": \"https://api.deepseek.com\",\n \"apiKeyEnvVar\": \"DEEPSEEK_API_KEY\",\n \"name\": \"DeepSeek\",\n \"models\": [\"deepseek-chat\", \"deepseek-reasoner\", \"deepseek-v4-flash\", \"deepseek-v4-pro\"],\n \"docUrl\": \"https://api-docs.deepseek.com/quick_start/pricing\",\n \"gateway\": \"models.dev\"\n },\n \"perplexity\": {\n \"apiKeyEnvVar\": \"PERPLEXITY_API_KEY\",\n \"name\": \"Perplexity\",\n \"models\": [\"sonar\", \"sonar-deep-research\", \"sonar-pro\", \"sonar-reasoning-pro\"],\n \"docUrl\": \"https://docs.perplexity.ai\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/perplexity\"\n },\n \"iflowcn\": {\n \"url\": \"https://apis.iflow.cn/v1\",\n \"apiKeyEnvVar\": \"IFLOW_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"iFlow\",\n \"models\": [\n \"deepseek-r1\",\n \"deepseek-v3\",\n \"deepseek-v3.2\",\n \"glm-4.6\",\n \"kimi-k2\",\n \"kimi-k2-0905\",\n \"qwen3-235b\",\n \"qwen3-235b-a22b-instruct\",\n \"qwen3-235b-a22b-thinking-2507\",\n \"qwen3-32b\",\n \"qwen3-coder-plus\",\n \"qwen3-max\",\n \"qwen3-max-preview\",\n \"qwen3-vl-plus\"\n ],\n \"docUrl\": \"https://platform.iflow.cn/en/docs\",\n \"gateway\": \"models.dev\"\n },\n \"stackit\": {\n \"url\": \"https://api.openai-compat.model-serving.eu01.onstackit.cloud/v1\",\n \"apiKeyEnvVar\": \"STACKIT_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"STACKIT\",\n \"models\": [\n \"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8\",\n \"Qwen/Qwen3-VL-Embedding-8B\",\n \"cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic\",\n \"google/gemma-3-27b-it\",\n \"intfloat/e5-mistral-7b-instruct\",\n \"neuralmagic/Meta-Llama-3.1-8B-Instruct-FP8\",\n \"neuralmagic/Mistral-Nemo-Instruct-2407-FP8\",\n \"openai/gpt-oss-120b\"\n ],\n \"docUrl\": \"https://docs.stackit.cloud/products/data-and-ai/ai-model-serving/basics/available-shared-models\",\n \"gateway\": \"models.dev\"\n },\n \"wafer.ai\": {\n \"url\": \"https://pass.wafer.ai/v1\",\n \"apiKeyEnvVar\": \"WAFER_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Wafer\",\n \"models\": [\"GLM-5.1\", \"Qwen3.5-397B-A17B\"],\n \"docUrl\": \"https://docs.wafer.ai/wafer-pass\",\n \"gateway\": \"models.dev\"\n },\n \"evroc\": {\n \"url\": \"https://models.think.evroc.com/v1\",\n \"apiKeyEnvVar\": \"EVROC_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"evroc\",\n \"models\": [\n \"KBLab/kb-whisper-large\",\n \"Qwen/Qwen3-30B-A3B-Instruct-2507-FP8\",\n \"Qwen/Qwen3-Embedding-8B\",\n \"Qwen/Qwen3-VL-30B-A3B-Instruct\",\n \"intfloat/multilingual-e5-large-instruct\",\n \"microsoft/Phi-4-multimodal-instruct\",\n \"mistralai/Magistral-Small-2509\",\n \"mistralai/Voxtral-Small-24B-2507\",\n \"mistralai/devstral-small-2-24b-instruct-2512\",\n \"moonshotai/Kimi-K2.5\",\n \"nvidia/Llama-3.3-70B-Instruct-FP8\",\n \"openai/gpt-oss-120b\",\n \"openai/whisper-large-v3\"\n ],\n \"docUrl\": \"https://docs.evroc.com/products/think/overview.html\",\n \"gateway\": \"models.dev\"\n },\n \"nova\": {\n \"url\": \"https://api.nova.amazon.com/v1\",\n \"apiKeyEnvVar\": \"NOVA_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Nova\",\n \"models\": [\"nova-2-lite-v1\", \"nova-2-pro-v1\"],\n \"docUrl\": \"https://nova.amazon.com/dev/documentation\",\n \"gateway\": \"models.dev\"\n },\n \"fireworks-ai\": {\n \"url\": \"https://api.fireworks.ai/inference/v1/\",\n \"apiKeyEnvVar\": \"FIREWORKS_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Fireworks AI\",\n \"models\": [\n \"accounts/fireworks/models/deepseek-v3p1\",\n \"accounts/fireworks/models/deepseek-v3p2\",\n \"accounts/fireworks/models/deepseek-v4-flash\",\n \"accounts/fireworks/models/deepseek-v4-pro\",\n \"accounts/fireworks/models/glm-4p5\",\n \"accounts/fireworks/models/glm-4p5-air\",\n \"accounts/fireworks/models/glm-4p7\",\n \"accounts/fireworks/models/glm-5\",\n \"accounts/fireworks/models/glm-5p1\",\n \"accounts/fireworks/models/gpt-oss-120b\",\n \"accounts/fireworks/models/gpt-oss-20b\",\n \"accounts/fireworks/models/kimi-k2-instruct\",\n \"accounts/fireworks/models/kimi-k2-thinking\",\n \"accounts/fireworks/models/kimi-k2p5\",\n \"accounts/fireworks/models/kimi-k2p6\",\n \"accounts/fireworks/models/minimax-m2p1\",\n \"accounts/fireworks/models/minimax-m2p5\",\n \"accounts/fireworks/models/minimax-m2p7\",\n \"accounts/fireworks/models/qwen3p6-plus\",\n \"accounts/fireworks/routers/kimi-k2p5-turbo\"\n ],\n \"docUrl\": \"https://fireworks.ai/docs/\",\n \"gateway\": \"models.dev\"\n },\n \"alibaba\": {\n \"url\": \"https://dashscope-intl.aliyuncs.com/compatible-mode/v1\",\n \"apiKeyEnvVar\": \"DASHSCOPE_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Alibaba\",\n \"models\": [\n \"qvq-max\",\n \"qwen-flash\",\n \"qwen-max\",\n \"qwen-mt-plus\",\n \"qwen-mt-turbo\",\n \"qwen-omni-turbo\",\n \"qwen-omni-turbo-realtime\",\n \"qwen-plus\",\n \"qwen-plus-character-ja\",\n \"qwen-turbo\",\n \"qwen-vl-max\",\n \"qwen-vl-ocr\",\n \"qwen-vl-plus\",\n \"qwen2-5-14b-instruct\",\n \"qwen2-5-32b-instruct\",\n \"qwen2-5-72b-instruct\",\n \"qwen2-5-7b-instruct\",\n \"qwen2-5-omni-7b\",\n \"qwen2-5-vl-72b-instruct\",\n \"qwen2-5-vl-7b-instruct\",\n \"qwen3-14b\",\n \"qwen3-235b-a22b\",\n \"qwen3-32b\",\n \"qwen3-8b\",\n \"qwen3-asr-flash\",\n \"qwen3-coder-30b-a3b-instruct\",\n \"qwen3-coder-480b-a35b-instruct\",\n \"qwen3-coder-flash\",\n \"qwen3-coder-plus\",\n \"qwen3-livetranslate-flash-realtime\",\n \"qwen3-max\",\n \"qwen3-next-80b-a3b-instruct\",\n \"qwen3-next-80b-a3b-thinking\",\n \"qwen3-omni-flash\",\n \"qwen3-omni-flash-realtime\",\n \"qwen3-vl-235b-a22b\",\n \"qwen3-vl-30b-a3b\",\n \"qwen3-vl-plus\",\n \"qwen3.5-122b-a10b\",\n \"qwen3.5-27b\",\n \"qwen3.5-35b-a3b\",\n \"qwen3.5-397b-a17b\",\n \"qwen3.5-plus\",\n \"qwen3.6-27b\",\n \"qwen3.6-35b-a3b\",\n \"qwen3.6-max-preview\",\n \"qwen3.6-plus\",\n \"qwen3.7-max\",\n \"qwq-plus\"\n ],\n \"docUrl\": \"https://www.alibabacloud.com/help/en/model-studio/models\",\n \"gateway\": \"models.dev\"\n },\n \"302ai\": {\n \"url\": \"https://api.302.ai/v1\",\n \"apiKeyEnvVar\": \"302AI_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"302.AI\",\n \"models\": [\n \"MiniMax-M1\",\n \"MiniMax-M2\",\n \"MiniMax-M2.1\",\n \"MiniMax-M2.7\",\n \"MiniMax-M2.7-highspeed\",\n \"chatgpt-4o-latest\",\n \"claude-3-5-haiku-20241022\",\n \"claude-3-5-haiku-latest\",\n \"claude-haiku-4-5\",\n \"claude-haiku-4-5-20251001\",\n \"claude-opus-4-1-20250805\",\n \"claude-opus-4-1-20250805-thinking\",\n \"claude-opus-4-20250514\",\n \"claude-opus-4-5\",\n \"claude-opus-4-5-20251101\",\n \"claude-opus-4-5-20251101-thinking\",\n \"claude-opus-4-6\",\n \"claude-opus-4-6-thinking\",\n \"claude-opus-4-7\",\n \"claude-sonnet-4-20250514\",\n \"claude-sonnet-4-5\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-sonnet-4-5-20250929-thinking\",\n \"claude-sonnet-4-6\",\n \"claude-sonnet-4-6-thinking\",\n \"deepseek-chat\",\n \"deepseek-reasoner\",\n \"deepseek-v3.2\",\n \"deepseek-v3.2-thinking\",\n \"doubao-seed-1-6-thinking-250715\",\n \"doubao-seed-1-6-vision-250815\",\n \"doubao-seed-1-8-251215\",\n \"doubao-seed-code-preview-251028\",\n \"gemini-2.0-flash-lite\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-flash-image\",\n \"gemini-2.5-flash-lite-preview-09-2025\",\n \"gemini-2.5-flash-nothink\",\n \"gemini-2.5-flash-preview-09-2025\",\n \"gemini-2.5-pro\",\n \"gemini-3-flash-preview\",\n \"gemini-3-pro-image-preview\",\n \"gemini-3-pro-preview\",\n \"gemini-3.1-flash-image-preview\",\n \"glm-4.5\",\n \"glm-4.5-air\",\n \"glm-4.5-airx\",\n \"glm-4.5-x\",\n \"glm-4.5v\",\n \"glm-4.6\",\n \"glm-4.6v\",\n \"glm-4.7\",\n \"glm-4.7-flashx\",\n \"glm-5\",\n \"glm-5-turbo\",\n \"glm-5.1\",\n \"glm-5v-turbo\",\n \"glm-for-coding\",\n \"gpt-4.1\",\n \"gpt-4.1-mini\",\n \"gpt-4.1-nano\",\n \"gpt-4o\",\n \"gpt-5\",\n \"gpt-5-mini\",\n \"gpt-5-pro\",\n \"gpt-5-thinking\",\n \"gpt-5.1\",\n \"gpt-5.1-chat-latest\",\n \"gpt-5.2\",\n \"gpt-5.2-chat-latest\",\n \"gpt-5.4\",\n \"gpt-5.4-mini\",\n \"gpt-5.4-mini-2026-03-17\",\n \"gpt-5.4-nano\",\n \"gpt-5.4-nano-2026-03-17\",\n \"gpt-5.4-pro\",\n \"grok-4-1-fast-non-reasoning\",\n \"grok-4-1-fast-reasoning\",\n \"grok-4-fast-non-reasoning\",\n \"grok-4-fast-reasoning\",\n \"grok-4.1\",\n \"grok-4.20-beta-0309-non-reasoning\",\n \"grok-4.20-beta-0309-reasoning\",\n \"grok-4.20-multi-agent-beta-0309\",\n \"kimi-k2-0905-preview\",\n \"kimi-k2-thinking\",\n \"kimi-k2-thinking-turbo\",\n \"ministral-14b-2512\",\n \"mistral-large-2512\",\n \"qwen-flash\",\n \"qwen-max-latest\",\n \"qwen-plus\",\n \"qwen3-235b-a22b\",\n \"qwen3-235b-a22b-instruct-2507\",\n \"qwen3-30b-a3b\",\n \"qwen3-coder-480b-a35b-instruct\",\n \"qwen3-max-2025-09-23\"\n ],\n \"docUrl\": \"https://doc.302.ai\",\n \"gateway\": \"models.dev\"\n },\n \"xpersona\": {\n \"url\": \"https://www.xpersona.co/v1\",\n \"apiKeyEnvVar\": \"XPERSONA_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Xpersona\",\n \"models\": [\"xpersona-frieren-coder\"],\n \"docUrl\": \"https://www.xpersona.co/docs\",\n \"gateway\": \"models.dev\"\n },\n \"stepfun\": {\n \"url\": \"https://api.stepfun.com/v1\",\n \"apiKeyEnvVar\": \"STEPFUN_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"StepFun\",\n \"models\": [\"step-1-32k\", \"step-2-16k\", \"step-3.5-flash\", \"step-3.5-flash-2603\"],\n \"docUrl\": \"https://platform.stepfun.com/docs/zh/overview/concept\",\n \"gateway\": \"models.dev\"\n },\n \"xai\": {\n \"apiKeyEnvVar\": \"XAI_API_KEY\",\n \"name\": \"xAI\",\n \"models\": [\n \"grok-4.20-0309-non-reasoning\",\n \"grok-4.20-0309-reasoning\",\n \"grok-4.20-multi-agent-0309\",\n \"grok-4.3\",\n \"grok-build-0.1\",\n \"grok-imagine-image\",\n \"grok-imagine-image-quality\",\n \"grok-imagine-video\"\n ],\n \"docUrl\": \"https://docs.x.ai/docs/models\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/xai\"\n },\n \"sarvam\": {\n \"url\": \"https://api.sarvam.ai/v1\",\n \"apiKeyEnvVar\": \"SARVAM_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Sarvam AI\",\n \"models\": [\"sarvam-105b\", \"sarvam-30b\"],\n \"docUrl\": \"https://docs.sarvam.ai/api-reference-docs/getting-started/models\",\n \"gateway\": \"models.dev\"\n },\n \"zhipuai\": {\n \"url\": \"https://open.bigmodel.cn/api/paas/v4\",\n \"apiKeyEnvVar\": \"ZHIPU_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Zhipu AI\",\n \"models\": [\n \"glm-4.5\",\n \"glm-4.5-air\",\n \"glm-4.5-flash\",\n \"glm-4.5v\",\n \"glm-4.6\",\n \"glm-4.6v\",\n \"glm-4.7\",\n \"glm-4.7-flash\",\n \"glm-4.7-flashx\",\n \"glm-5\",\n \"glm-5.1\",\n \"glm-5v-turbo\"\n ],\n \"docUrl\": \"https://docs.z.ai/guides/overview/pricing\",\n \"gateway\": \"models.dev\"\n },\n \"bailing\": {\n \"url\": \"https://api.tbox.cn/api/llm/v1/chat/completions\",\n \"apiKeyEnvVar\": \"BAILING_API_TOKEN\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Bailing\",\n \"models\": [\"Ling-1T\", \"Ring-1T\"],\n \"docUrl\": \"https://alipaytbox.yuque.com/sxs0ba/ling/intro\",\n \"gateway\": \"models.dev\"\n },\n \"qihang-ai\": {\n \"url\": \"https://api.qhaigc.net/v1\",\n \"apiKeyEnvVar\": \"QIHANG_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"QiHang\",\n \"models\": [\n \"claude-haiku-4-5-20251001\",\n \"claude-opus-4-5-20251101\",\n \"claude-sonnet-4-5-20250929\",\n \"gemini-2.5-flash\",\n \"gemini-3-flash-preview\",\n \"gemini-3-pro-preview\",\n \"gpt-5-mini\",\n \"gpt-5.2\",\n \"gpt-5.2-codex\"\n ],\n \"docUrl\": \"https://www.qhaigc.net/docs\",\n \"gateway\": \"models.dev\"\n },\n \"lilac\": {\n \"url\": \"https://api.getlilac.com/v1\",\n \"apiKeyEnvVar\": \"LILAC_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Lilac\",\n \"models\": [\"google/gemma-4-31b-it\", \"minimaxai/minimax-m2.7\", \"moonshotai/kimi-k2.6\", \"zai-org/glm-5.1\"],\n \"docUrl\": \"https://docs.getlilac.com/inference/models\",\n \"gateway\": \"models.dev\"\n },\n \"alibaba-cn\": {\n \"url\": \"https://dashscope.aliyuncs.com/compatible-mode/v1\",\n \"apiKeyEnvVar\": \"DASHSCOPE_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Alibaba (China)\",\n \"models\": [\n \"MiniMax-M2.5\",\n \"MiniMax/MiniMax-M2.7\",\n \"deepseek-r1\",\n \"deepseek-r1-0528\",\n \"deepseek-r1-distill-llama-70b\",\n \"deepseek-r1-distill-llama-8b\",\n \"deepseek-r1-distill-qwen-1-5b\",\n \"deepseek-r1-distill-qwen-14b\",\n \"deepseek-r1-distill-qwen-32b\",\n \"deepseek-r1-distill-qwen-7b\",\n \"deepseek-v3\",\n \"deepseek-v3-1\",\n \"deepseek-v3-2-exp\",\n \"deepseek-v4-flash\",\n \"deepseek-v4-pro\",\n \"glm-5\",\n \"glm-5.1\",\n \"kimi-k2-thinking\",\n \"kimi-k2.5\",\n \"kimi-k2.6\",\n \"kimi/kimi-k2.5\",\n \"moonshot-kimi-k2-instruct\",\n \"qvq-max\",\n \"qwen-deep-research\",\n \"qwen-doc-turbo\",\n \"qwen-flash\",\n \"qwen-long\",\n \"qwen-math-plus\",\n \"qwen-math-turbo\",\n \"qwen-max\",\n \"qwen-mt-plus\",\n \"qwen-mt-turbo\",\n \"qwen-omni-turbo\",\n \"qwen-omni-turbo-realtime\",\n \"qwen-plus\",\n \"qwen-plus-character\",\n \"qwen-turbo\",\n \"qwen-vl-max\",\n \"qwen-vl-ocr\",\n \"qwen-vl-plus\",\n \"qwen2-5-14b-instruct\",\n \"qwen2-5-32b-instruct\",\n \"qwen2-5-72b-instruct\",\n \"qwen2-5-7b-instruct\",\n \"qwen2-5-coder-32b-instruct\",\n \"qwen2-5-coder-7b-instruct\",\n \"qwen2-5-math-72b-instruct\",\n \"qwen2-5-math-7b-instruct\",\n \"qwen2-5-omni-7b\",\n \"qwen2-5-vl-72b-instruct\",\n \"qwen2-5-vl-7b-instruct\",\n \"qwen3-14b\",\n \"qwen3-235b-a22b\",\n \"qwen3-32b\",\n \"qwen3-8b\",\n \"qwen3-asr-flash\",\n \"qwen3-coder-30b-a3b-instruct\",\n \"qwen3-coder-480b-a35b-instruct\",\n \"qwen3-coder-flash\",\n \"qwen3-coder-plus\",\n \"qwen3-max\",\n \"qwen3-next-80b-a3b-instruct\",\n \"qwen3-next-80b-a3b-thinking\",\n \"qwen3-omni-flash\",\n \"qwen3-omni-flash-realtime\",\n \"qwen3-vl-235b-a22b\",\n \"qwen3-vl-30b-a3b\",\n \"qwen3-vl-plus\",\n \"qwen3.5-397b-a17b\",\n \"qwen3.5-flash\",\n \"qwen3.5-plus\",\n \"qwen3.6-max-preview\",\n \"qwen3.6-plus\",\n \"qwq-32b\",\n \"qwq-plus\",\n \"siliconflow/deepseek-r1-0528\",\n \"siliconflow/deepseek-v3-0324\",\n \"siliconflow/deepseek-v3.1-terminus\",\n \"siliconflow/deepseek-v3.2\",\n \"tongyi-intent-detect-v3\"\n ],\n \"docUrl\": \"https://www.alibabacloud.com/help/en/model-studio/models\",\n \"gateway\": \"models.dev\"\n },\n \"drun\": {\n \"url\": \"https://chat.d.run/v1\",\n \"apiKeyEnvVar\": \"DRUN_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"D.Run (China)\",\n \"models\": [\"public/deepseek-r1\", \"public/deepseek-v3\", \"public/minimax-m25\"],\n \"docUrl\": \"https://www.d.run\",\n \"gateway\": \"models.dev\"\n },\n \"huggingface\": {\n \"url\": \"https://router.huggingface.co/v1\",\n \"apiKeyEnvVar\": \"HF_TOKEN\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Hugging Face\",\n \"models\": [\n \"MiniMaxAI/MiniMax-M2.1\",\n \"MiniMaxAI/MiniMax-M2.5\",\n \"MiniMaxAI/MiniMax-M2.7\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n \"Qwen/Qwen3-Coder-Next\",\n \"Qwen/Qwen3-Embedding-4B\",\n \"Qwen/Qwen3-Embedding-8B\",\n \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n \"Qwen/Qwen3-Next-80B-A3B-Thinking\",\n \"Qwen/Qwen3.5-397B-A17B\",\n \"XiaomiMiMo/MiMo-V2-Flash\",\n \"deepseek-ai/DeepSeek-R1-0528\",\n \"deepseek-ai/DeepSeek-V3.2\",\n \"deepseek-ai/DeepSeek-V4-Pro\",\n \"moonshotai/Kimi-K2-Instruct\",\n \"moonshotai/Kimi-K2-Instruct-0905\",\n \"moonshotai/Kimi-K2-Thinking\",\n \"moonshotai/Kimi-K2.5\",\n \"moonshotai/Kimi-K2.6\",\n \"zai-org/GLM-4.7\",\n \"zai-org/GLM-4.7-Flash\",\n \"zai-org/GLM-5\",\n \"zai-org/GLM-5.1\"\n ],\n \"docUrl\": \"https://huggingface.co/docs/inference-providers\",\n \"gateway\": \"models.dev\"\n },\n \"umans-ai-coding-plan\": {\n \"url\": \"https://api.code.umans.ai/v1\",\n \"apiKeyEnvVar\": \"UMANS_AI_CODING_PLAN_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Umans AI Coding Plan\",\n \"models\": [\"umans-coder\", \"umans-flash\", \"umans-glm-5.1\", \"umans-kimi-k2.6\", \"umans-qwen3.6-35b-a3b\"],\n \"docUrl\": \"https://app.umans.ai/offers/code/docs\",\n \"gateway\": \"models.dev\"\n },\n \"tencent-tokenhub\": {\n \"url\": \"https://tokenhub.tencentmaas.com/v1\",\n \"apiKeyEnvVar\": \"TENCENT_TOKENHUB_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Tencent TokenHub\",\n \"models\": [\"hy3-preview\"],\n \"docUrl\": \"https://cloud.tencent.com/document/product/1823/130050\",\n \"gateway\": \"models.dev\"\n },\n \"nebius\": {\n \"url\": \"https://api.tokenfactory.nebius.com/v1\",\n \"apiKeyEnvVar\": \"NEBIUS_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Nebius Token Factory\",\n \"models\": [\n \"MiniMaxAI/MiniMax-M2.5\",\n \"MiniMaxAI/MiniMax-M2.5-fast\",\n \"NousResearch/Hermes-4-405B\",\n \"NousResearch/Hermes-4-70B\",\n \"PrimeIntellect/INTELLECT-3\",\n \"Qwen/Qwen2.5-VL-72B-Instruct\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507-fast\",\n \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n \"Qwen/Qwen3-32B\",\n \"Qwen/Qwen3-Embedding-8B\",\n \"Qwen/Qwen3-Next-80B-A3B-Thinking\",\n \"Qwen/Qwen3-Next-80B-A3B-Thinking-fast\",\n \"Qwen/Qwen3.5-397B-A17B\",\n \"Qwen/Qwen3.5-397B-A17B-fast\",\n \"deepseek-ai/DeepSeek-V3.2\",\n \"deepseek-ai/DeepSeek-V3.2-fast\",\n \"deepseek-ai/DeepSeek-V4-Pro\",\n \"google/gemma-2-2b-it\",\n \"google/gemma-3-27b-it\",\n \"meta-llama/Llama-3.3-70B-Instruct\",\n \"meta-llama/Meta-Llama-3.1-8B-Instruct\",\n \"moonshotai/Kimi-K2.5\",\n \"moonshotai/Kimi-K2.5-fast\",\n \"nvidia/Llama-3_1-Nemotron-Ultra-253B-v1\",\n \"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B\",\n \"nvidia/Nemotron-3-Nano-Omni\",\n \"nvidia/nemotron-3-super-120b-a12b\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-120b-fast\",\n \"zai-org/GLM-5\"\n ],\n \"docUrl\": \"https://docs.tokenfactory.nebius.com/\",\n \"gateway\": \"models.dev\"\n },\n \"hpc-ai\": {\n \"url\": \"https://api.hpc-ai.com/inference/v1\",\n \"apiKeyEnvVar\": \"HPC_AI_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"HPC-AI\",\n \"models\": [\"minimax/minimax-m2.5\", \"moonshotai/kimi-k2.5\", \"zai-org/glm-5.1\"],\n \"docUrl\": \"https://www.hpc-ai.com/doc/docs/quickstart/\",\n \"gateway\": \"models.dev\"\n },\n \"xiaomi\": {\n \"url\": \"https://api.xiaomimimo.com/v1\",\n \"apiKeyEnvVar\": \"XIAOMI_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Xiaomi\",\n \"models\": [\"mimo-v2-flash\", \"mimo-v2-omni\", \"mimo-v2-pro\", \"mimo-v2.5\", \"mimo-v2.5-pro\"],\n \"docUrl\": \"https://platform.xiaomimimo.com/#/docs\",\n \"gateway\": \"models.dev\"\n },\n \"togetherai\": {\n \"apiKeyEnvVar\": \"TOGETHER_API_KEY\",\n \"name\": \"Together AI\",\n \"models\": [\n \"MiniMaxAI/MiniMax-M2.5\",\n \"MiniMaxAI/MiniMax-M2.7\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507-tput\",\n \"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8\",\n \"Qwen/Qwen3-Coder-Next-FP8\",\n \"Qwen/Qwen3.5-397B-A17B\",\n \"Qwen/Qwen3.6-Plus\",\n \"deepseek-ai/DeepSeek-R1\",\n \"deepseek-ai/DeepSeek-V3\",\n \"deepseek-ai/DeepSeek-V3-1\",\n \"deepseek-ai/DeepSeek-V4-Pro\",\n \"essentialai/Rnj-1-Instruct\",\n \"google/gemma-4-31B-it\",\n \"meta-llama/Llama-3.3-70B-Instruct-Turbo\",\n \"moonshotai/Kimi-K2.5\",\n \"moonshotai/Kimi-K2.6\",\n \"openai/gpt-oss-120b\",\n \"zai-org/GLM-5.1\"\n ],\n \"docUrl\": \"https://docs.together.ai/docs/serverless-models\",\n \"gateway\": \"models.dev\",\n \"npm\": \"@ai-sdk/togetherai\"\n },\n \"stepfun-ai\": {\n \"url\": \"https://api.stepfun.ai/step_plan/v1\",\n \"apiKeyEnvVar\": \"STEPFUN_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"StepFun\",\n \"models\": [\"step-3.5-flash\", \"step-3.5-flash-2603\"],\n \"docUrl\": \"https://platform.stepfun.ai/docs/en/step-plan/integrations/open-code\",\n \"gateway\": \"models.dev\"\n },\n \"inference\": {\n \"url\": \"https://inference.net/v1\",\n \"apiKeyEnvVar\": \"INFERENCE_API_KEY\",\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Inference\",\n \"models\": [\n \"google/gemma-3\",\n \"meta/llama-3.1-8b-instruct\",\n \"meta/llama-3.2-11b-vision-instruct\",\n \"meta/llama-3.2-1b-instruct\",\n \"meta/llama-3.2-3b-instruct\",\n \"mistral/mistral-nemo-12b-instruct\",\n \"osmosis/osmosis-structure-0.6b\",\n \"qwen/qwen-2.5-7b-vision-instruct\",\n \"qwen/qwen3-embedding-4b\"\n ],\n \"docUrl\": \"https://inference.net/models\",\n \"gateway\": \"models.dev\"\n },\n \"netlify\": {\n \"apiKeyEnvVar\": [\"NETLIFY_TOKEN\", \"NETLIFY_SITE_ID\"],\n \"apiKeyHeader\": \"Authorization\",\n \"name\": \"Netlify\",\n \"gateway\": \"netlify\",\n \"models\": [\n \"anthropic/claude-haiku-4-5\",\n \"anthropic/claude-haiku-4-5-20251001\",\n \"anthropic/claude-opus-4-1-20250805\",\n \"anthropic/claude-opus-4-20250514\",\n \"anthropic/claude-opus-4-5\",\n \"anthropic/claude-opus-4-5-20251101\",\n \"anthropic/claude-opus-4-6\",\n \"anthropic/claude-opus-4-7\",\n \"anthropic/claude-sonnet-4-0\",\n \"anthropic/claude-sonnet-4-20250514\",\n \"anthropic/claude-sonnet-4-5\",\n \"anthropic/claude-sonnet-4-5-20250929\",\n \"anthropic/claude-sonnet-4-6\",\n \"gemini/gemini-2.0-flash\",\n \"gemini/gemini-2.0-flash-lite\",\n \"gemini/gemini-2.5-flash\",\n \"gemini/gemini-2.5-flash-image\",\n \"gemini/gemini-2.5-flash-lite\",\n \"gemini/gemini-2.5-pro\",\n \"gemini/gemini-3-flash-preview\",\n \"gemini/gemini-3-pro-image-preview\",\n \"gemini/gemini-3.1-flash-image-preview\",\n \"gemini/gemini-3.1-flash-lite\",\n \"gemini/gemini-3.1-flash-lite-preview\",\n \"gemini/gemini-3.1-pro-preview\",\n \"gemini/gemini-3.1-pro-preview-customtools\",\n \"gemini/gemini-3.5-flash\",\n \"gemini/gemini-flash-latest\",\n \"gemini/gemini-flash-lite-latest\",\n \"openai/chat-latest\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-4o\",\n \"openai/gpt-4o-mini\",\n \"openai/gpt-5\",\n \"openai/gpt-5-2025-08-07\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-mini-2025-08-07\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5-pro\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.1-2025-11-13\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-max\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-2025-12-11\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-5.2-pro-2025-12-11\",\n \"openai/gpt-5.3-chat-latest\",\n \"openai/gpt-5.3-codex\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-2026-03-05\",\n \"openai/gpt-5.4-mini\",\n \"openai/gpt-5.4-mini-2026-03-17\",\n \"openai/gpt-5.4-nano\",\n \"openai/gpt-5.4-nano-2026-03-17\",\n \"openai/gpt-5.4-pro\",\n \"openai/gpt-5.4-pro-2026-03-05\",\n \"openai/gpt-5.5\",\n \"openai/gpt-5.5-2026-04-23\",\n \"openai/gpt-5.5-pro\",\n \"openai/gpt-5.5-pro-2026-04-23\",\n \"openai/o3\",\n \"openai/o3-mini\",\n \"openai/o4-mini\"\n ],\n \"docUrl\": \"https://docs.netlify.com/build/ai-gateway/overview/\"\n }\n },\n \"models\": {\n \"helicone\": [\n \"chatgpt-4o-latest\",\n \"claude-3-haiku-20240307\",\n \"claude-3.5-haiku\",\n \"claude-3.5-sonnet-v2\",\n \"claude-3.7-sonnet\",\n \"claude-4.5-haiku\",\n \"claude-4.5-opus\",\n \"claude-4.5-sonnet\",\n \"claude-haiku-4-5-20251001\",\n \"claude-opus-4\",\n \"claude-opus-4-1\",\n \"claude-opus-4-1-20250805\",\n \"claude-sonnet-4\",\n \"claude-sonnet-4-5-20250929\",\n \"deepseek-r1-distill-llama-70b\",\n \"deepseek-reasoner\",\n \"deepseek-tng-r1t2-chimera\",\n \"deepseek-v3\",\n \"deepseek-v3.1-terminus\",\n \"deepseek-v3.2\",\n \"ernie-4.5-21b-a3b-thinking\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-flash-lite\",\n \"gemini-2.5-pro\",\n \"gemini-3-pro-preview\",\n \"gemma-3-12b-it\",\n \"gemma2-9b-it\",\n \"glm-4.6\",\n \"gpt-4.1\",\n \"gpt-4.1-mini\",\n \"gpt-4.1-mini-2025-04-14\",\n \"gpt-4.1-nano\",\n \"gpt-4o\",\n \"gpt-4o-mini\",\n \"gpt-5\",\n \"gpt-5-chat-latest\",\n \"gpt-5-codex\",\n \"gpt-5-mini\",\n \"gpt-5-nano\",\n \"gpt-5-pro\",\n \"gpt-5.1\",\n \"gpt-5.1-chat-latest\",\n \"gpt-5.1-codex\",\n \"gpt-5.1-codex-mini\",\n \"gpt-oss-120b\",\n \"gpt-oss-20b\",\n \"grok-3\",\n \"grok-3-mini\",\n \"grok-4\",\n \"grok-4-1-fast-non-reasoning\",\n \"grok-4-1-fast-reasoning\",\n \"grok-4-fast-non-reasoning\",\n \"grok-4-fast-reasoning\",\n \"grok-code-fast-1\",\n \"hermes-2-pro-llama-3-8b\",\n \"kimi-k2-0711\",\n \"kimi-k2-0905\",\n \"kimi-k2-thinking\",\n \"llama-3.1-8b-instant\",\n \"llama-3.1-8b-instruct\",\n \"llama-3.1-8b-instruct-turbo\",\n \"llama-3.3-70b-instruct\",\n \"llama-3.3-70b-versatile\",\n \"llama-4-maverick\",\n \"llama-4-scout\",\n \"llama-guard-4\",\n \"llama-prompt-guard-2-22m\",\n \"llama-prompt-guard-2-86m\",\n \"mistral-large-2411\",\n \"mistral-nemo\",\n \"mistral-small\",\n \"o1\",\n \"o1-mini\",\n \"o3\",\n \"o3-mini\",\n \"o3-pro\",\n \"o4-mini\",\n \"qwen2.5-coder-7b-fast\",\n \"qwen3-235b-a22b-thinking\",\n \"qwen3-30b-a3b\",\n \"qwen3-32b\",\n \"qwen3-coder\",\n \"qwen3-coder-30b-a3b-instruct\",\n \"qwen3-next-80b-a3b-instruct\",\n \"qwen3-vl-235b-a22b-instruct\",\n \"sonar\",\n \"sonar-deep-research\",\n \"sonar-pro\",\n \"sonar-reasoning\",\n \"sonar-reasoning-pro\"\n ],\n \"auriko\": [\n \"claude-opus-4-6\",\n \"claude-opus-4-7\",\n \"claude-sonnet-4-6\",\n \"deepseek-v4-flash\",\n \"deepseek-v4-pro\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-pro\",\n \"gemini-3.1-pro-preview\",\n \"glm-5.1\",\n \"grok-4.3\",\n \"kimi-k2.5\",\n \"kimi-k2.6\",\n \"minimax-m2-7\",\n \"minimax-m2-7-highspeed\",\n \"qwen-3.6-plus\"\n ],\n \"firepass\": [\"accounts/fireworks/routers/kimi-k2p6-turbo\"],\n \"nano-gpt\": [\n \"Alibaba-NLP/Tongyi-DeepResearch-30B-A3B\",\n \"Baichuan-M2\",\n \"Baichuan4-Air\",\n \"Baichuan4-Turbo\",\n \"CrucibleLab/L3.3-70B-Loki-V2.0\",\n \"Doctor-Shotgun/MS3.2-24B-Magnum-Diamond\",\n \"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.0\",\n \"EVA-UNIT-01/EVA-LLaMA-3.33-70B-v0.1\",\n \"EVA-UNIT-01/EVA-Qwen2.5-32B-v0.2\",\n \"EVA-UNIT-01/EVA-Qwen2.5-72B-v0.2\",\n \"Envoid/Llama-3.05-NT-Storybreaker-Ministral-70B\",\n \"Envoid/Llama-3.05-Nemotron-Tenyxchat-Storybreaker-70B\",\n \"GLM-4.5-Air-Derestricted\",\n \"GLM-4.5-Air-Derestricted-Iceblink\",\n \"GLM-4.5-Air-Derestricted-Iceblink-ReExtract\",\n \"GLM-4.5-Air-Derestricted-Iceblink-v2\",\n \"GLM-4.5-Air-Derestricted-Iceblink-v2-ReExtract\",\n \"GLM-4.5-Air-Derestricted-Steam\",\n \"GLM-4.5-Air-Derestricted-Steam-ReExtract\",\n \"GLM-4.6-Derestricted-v5\",\n \"GalrionSoftworks/MN-LooseCannon-12B-v1\",\n \"Gemma-3-27B-ArliAI-RPMax-v3\",\n \"Gemma-3-27B-Big-Tiger-v3\",\n \"Gemma-3-27B-CardProjector-v4\",\n \"Gemma-3-27B-Glitter\",\n \"Gemma-3-27B-Nidum-Uncensored\",\n \"Gemma-3-27B-it\",\n \"Gemma-3-27B-it-Abliterated\",\n \"Gryphe/MythoMax-L2-13b\",\n \"Infermatic/MN-12B-Inferor-v0.0\",\n \"KAT-Coder-Air-V1\",\n \"KAT-Coder-Exp-72B-1010\",\n \"KAT-Coder-Pro-V1\",\n \"LLM360/K2-Think\",\n \"LatitudeGames/Wayfarer-Large-70B-Llama-3.3\",\n \"Llama-3.3+(3.1v3.3)-70B-Hanami-x1\",\n \"Llama-3.3+(3.1v3.3)-70B-New-Dawn-v1.1\",\n \"Llama-3.3+(3v3.3)-70B-TenyxChat-DaybreakStorywriter\",\n \"Llama-3.3-70B-Anthrobomination\",\n \"Llama-3.3-70B-Argunaut-1-SFT\",\n \"Llama-3.3-70B-ArliAI-RPMax-v1.4\",\n \"Llama-3.3-70B-ArliAI-RPMax-v2\",\n \"Llama-3.3-70B-ArliAI-RPMax-v3\",\n \"Llama-3.3-70B-Aurora-Borealis\",\n \"Llama-3.3-70B-Bigger-Body\",\n \"Llama-3.3-70B-Cirrus-x1\",\n \"Llama-3.3-70B-Cu-Mai-R1\",\n \"Llama-3.3-70B-Damascus-R1\",\n \"Llama-3.3-70B-Dark-Ages-v0.1\",\n \"Llama-3.3-70B-Electra-R1\",\n \"Llama-3.3-70B-Electranova-v1.0\",\n \"Llama-3.3-70B-Fallen-R1-v1\",\n \"Llama-3.3-70B-Fallen-v1\",\n \"Llama-3.3-70B-Forgotten-Abomination-v5.0\",\n \"Llama-3.3-70B-Forgotten-Safeword-3.6\",\n \"Llama-3.3-70B-GeneticLemonade-Opus\",\n \"Llama-3.3-70B-GeneticLemonade-Unleashed-v3\",\n \"Llama-3.3-70B-Ignition-v0.1\",\n \"Llama-3.3-70B-Incandescent-Malevolence\",\n \"Llama-3.3-70B-Legion-V2.1\",\n \"Llama-3.3-70B-MS-Nevoria\",\n \"Llama-3.3-70B-Magnum-v4-SE\",\n \"Llama-3.3-70B-Magnum-v4-SE-Cirrus-x1-SLERP\",\n \"Llama-3.3-70B-Mhnnn-x1\",\n \"Llama-3.3-70B-MiraiFanfare\",\n \"Llama-3.3-70B-Mokume-Gane-R1\",\n \"Llama-3.3-70B-Nova\",\n \"Llama-3.3-70B-Predatorial-Extasy\",\n \"Llama-3.3-70B-Progenitor-V3.3\",\n \"Llama-3.3-70B-RAWMAW\",\n \"Llama-3.3-70B-Sapphira-0.1\",\n \"Llama-3.3-70B-Sapphira-0.2\",\n \"Llama-3.3-70B-Shakudo\",\n \"Llama-3.3-70B-StrawberryLemonade-v1.0\",\n \"Llama-3.3-70B-Strawberrylemonade-v1.2\",\n \"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.0\",\n \"Llama-3.3-70B-The-Omega-Directive-Unslop-v2.1\",\n \"Llama-3.3-70B-Vulpecula-R1\",\n \"Magistral-Small-2506\",\n \"MarinaraSpaghetti/NemoMix-Unleashed-12B\",\n \"Meta-Llama-3-1-8B-Instruct-FP8\",\n \"MiniMax-M1\",\n \"MiniMax-M2\",\n \"MiniMaxAI/MiniMax-M1-80k\",\n \"Mistral-Nemo-12B-Instruct-2407\",\n \"NeverSleep/Llama-3-Lumimaid-70B-v0.1\",\n \"NeverSleep/Lumimaid-v0.2-70B\",\n \"NousResearch 2/DeepHermes-3-Mistral-24B-Preview\",\n \"NousResearch 2/Hermes-4-70B:thinking\",\n \"NousResearch 2/hermes-3-llama-3.1-70b\",\n \"NousResearch 2/hermes-4-405b\",\n \"NousResearch 2/hermes-4-405b:thinking\",\n \"NousResearch 2/hermes-4-70b\",\n \"QwQ-32B-ArliAI-RpR-v1\",\n \"Qwen2.5-32B-EVA-v0.2\",\n \"ReadyArt/MS3.2-The-Omega-Directive-24B-Unslop-v2.0\",\n \"ReadyArt/The-Omega-Abomination-L-70B-v1.0\",\n \"Salesforce/Llama-xLAM-2-70b-fc-r\",\n \"Sao10K/L3-8B-Stheno-v3.2\",\n \"Sao10K/L3.1-70B-Euryale-v2.2\",\n \"Sao10K/L3.1-70B-Hanami-x1\",\n \"Sao10K/L3.3-70B-Euryale-v2.3\",\n \"Steelskull/L3.3-Cu-Mai-R1-70b\",\n \"Steelskull/L3.3-Electra-R1-70b\",\n \"Steelskull/L3.3-MS-Evalebis-70b\",\n \"Steelskull/L3.3-MS-Evayale-70B\",\n \"Steelskull/L3.3-MS-Nevoria-70b\",\n \"Steelskull/L3.3-Nevoria-R1-70b\",\n \"TEE/deepseek-r1-0528\",\n \"TEE/deepseek-v3.1\",\n \"TEE/deepseek-v3.2\",\n \"TEE/gemma-3-27b-it\",\n \"TEE/glm-4.6\",\n \"TEE/glm-4.7\",\n \"TEE/glm-4.7-flash\",\n \"TEE/glm-5\",\n \"TEE/gpt-oss-120b\",\n \"TEE/gpt-oss-20b\",\n \"TEE/kimi-k2-thinking\",\n \"TEE/kimi-k2.5\",\n \"TEE/kimi-k2.5-thinking\",\n \"TEE/llama3-3-70b\",\n \"TEE/minimax-m2.1\",\n \"TEE/qwen2.5-vl-72b-instruct\",\n \"TEE/qwen3-30b-a3b-instruct-2507\",\n \"TEE/qwen3-coder\",\n \"TEE/qwen3.5-397b-a17b\",\n \"THUDM/GLM-4-32B-0414\",\n \"THUDM/GLM-4-9B-0414\",\n \"THUDM/GLM-Z1-32B-0414\",\n \"THUDM/GLM-Z1-9B-0414\",\n \"THUDM/GLM-Z1-Rumination-32B-0414\",\n \"TheDrummer 2/Anubis-70B-v1\",\n \"TheDrummer 2/Anubis-70B-v1.1\",\n \"TheDrummer 2/Cydonia-24B-v2\",\n \"TheDrummer 2/Cydonia-24B-v4\",\n \"TheDrummer 2/Cydonia-24B-v4.1\",\n \"TheDrummer 2/Cydonia-24B-v4.3\",\n \"TheDrummer 2/Magidonia-24B-v4.3\",\n \"TheDrummer 2/Rocinante-12B-v1.1\",\n \"TheDrummer 2/UnslopNemo-12B-v4.1\",\n \"TheDrummer 2/skyfall-36b-v2\",\n \"Tongyi-Zhiwen/QwenLong-L1-32B\",\n \"VongolaChouko/Starcannon-Unleashed-12B-v1.0\",\n \"abacusai/Dracarys-72B-Instruct\",\n \"aion-labs/aion-1.0\",\n \"aion-labs/aion-1.0-mini\",\n \"aion-labs/aion-rp-llama-3.1-8b\",\n \"alibaba/qwen3.6-flash\",\n \"allenai/molmo-2-8b\",\n \"allenai/olmo-3-32b-think\",\n \"allenai/olmo-3.1-32b-instruct\",\n \"allenai/olmo-3.1-32b-think\",\n \"amazon/nova-2-lite-v1\",\n \"amazon/nova-lite-v1\",\n \"amazon/nova-micro-v1\",\n \"amazon/nova-pro-v1\",\n \"anthracite-org/magnum-v2-72b\",\n \"anthracite-org/magnum-v4-72b\",\n \"anthropic/claude-opus-4.6\",\n \"anthropic/claude-opus-4.6:thinking\",\n \"anthropic/claude-opus-4.6:thinking:low\",\n \"anthropic/claude-opus-4.6:thinking:max\",\n \"anthropic/claude-opus-4.6:thinking:medium\",\n \"anthropic/claude-sonnet-4.6\",\n \"anthropic/claude-sonnet-4.6:thinking\",\n \"arcee-ai/trinity-large\",\n \"arcee-ai/trinity-mini\",\n \"asi1-mini\",\n \"auto-model\",\n \"auto-model-basic\",\n \"auto-model-premium\",\n \"auto-model-standard\",\n \"azure-gpt-4-turbo\",\n \"azure-gpt-4o\",\n \"azure-gpt-4o-mini\",\n \"azure-o1\",\n \"azure-o3-mini\",\n \"baidu/ernie-4.5-300b-a47b\",\n \"baidu/ernie-4.5-vl-28b-a3b\",\n \"baseten/Kimi-K2-Instruct-FP4\",\n \"brave\",\n \"brave-pro\",\n \"brave-research\",\n \"chroma\",\n \"chutesai/Mistral-Small-3.2-24B-Instruct-2506\",\n \"claude-3-5-haiku-20241022\",\n \"claude-3-5-sonnet-20240620\",\n \"claude-3-5-sonnet-20241022\",\n \"claude-3-7-sonnet-20250219\",\n \"claude-3-7-sonnet-reasoner\",\n \"claude-3-7-sonnet-thinking\",\n \"claude-3-7-sonnet-thinking:1024\",\n \"claude-3-7-sonnet-thinking:128000\",\n \"claude-3-7-sonnet-thinking:32768\",\n \"claude-3-7-sonnet-thinking:8192\",\n \"claude-haiku-4-5-20251001\",\n \"claude-opus-4-1-20250805\",\n \"claude-opus-4-1-thinking\",\n \"claude-opus-4-1-thinking:1024\",\n \"claude-opus-4-1-thinking:32000\",\n \"claude-opus-4-1-thinking:32768\",\n \"claude-opus-4-1-thinking:8192\",\n \"claude-opus-4-20250514\",\n \"claude-opus-4-5-20251101\",\n \"claude-opus-4-5-20251101:thinking\",\n \"claude-opus-4-thinking\",\n \"claude-opus-4-thinking:1024\",\n \"claude-opus-4-thinking:32000\",\n \"claude-opus-4-thinking:32768\",\n \"claude-opus-4-thinking:8192\",\n \"claude-sonnet-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-sonnet-4-5-20250929-thinking\",\n \"claude-sonnet-4-thinking\",\n \"claude-sonnet-4-thinking:1024\",\n \"claude-sonnet-4-thinking:32768\",\n \"claude-sonnet-4-thinking:64000\",\n \"claude-sonnet-4-thinking:8192\",\n \"cognitivecomputations/dolphin-2.9.2-qwen2-72b\",\n \"cohere/command-r\",\n \"cohere/command-r-plus-08-2024\",\n \"command-a-reasoning-08-2025\",\n \"deepclaude\",\n \"deepcogito/cogito-v1-preview-qwen-32B\",\n \"deepcogito/cogito-v2.1-671b\",\n \"deepseek-ai/DeepSeek-R1-0528\",\n \"deepseek-ai/DeepSeek-V3.1\",\n \"deepseek-ai/DeepSeek-V3.1-Terminus\",\n \"deepseek-ai/DeepSeek-V3.1-Terminus:thinking\",\n \"deepseek-ai/DeepSeek-V3.1:thinking\",\n \"deepseek-ai/deepseek-v3.2-exp\",\n \"deepseek-ai/deepseek-v3.2-exp-thinking\",\n \"deepseek-chat\",\n \"deepseek-chat-cheaper\",\n \"deepseek-math-v2\",\n \"deepseek-r1\",\n \"deepseek-r1-sambanova\",\n \"deepseek-reasoner\",\n \"deepseek-reasoner-cheaper\",\n \"deepseek-v3-0324\",\n \"deepseek/deepseek-prover-v2-671b\",\n \"deepseek/deepseek-v3.2\",\n \"deepseek/deepseek-v3.2-speciale\",\n \"deepseek/deepseek-v3.2:thinking\",\n \"dmind/dmind-1\",\n \"dmind/dmind-1-mini\",\n \"doubao-1-5-thinking-pro-250415\",\n \"doubao-1-5-thinking-pro-vision-250415\",\n \"doubao-1-5-thinking-vision-pro-250428\",\n \"doubao-1.5-pro-256k\",\n \"doubao-1.5-pro-32k\",\n \"doubao-1.5-vision-pro-32k\",\n \"doubao-seed-1-6-250615\",\n \"doubao-seed-1-6-flash-250615\",\n \"doubao-seed-1-6-thinking-250615\",\n \"doubao-seed-1-8-251215\",\n \"doubao-seed-2-0-code-preview-260215\",\n \"doubao-seed-2-0-lite-260215\",\n \"doubao-seed-2-0-mini-260215\",\n \"doubao-seed-2-0-pro-260215\",\n \"doubao-seed-code-preview-latest\",\n \"ernie-4.5-8k-preview\",\n \"ernie-4.5-turbo-128k\",\n \"ernie-4.5-turbo-vl-32k\",\n \"ernie-5.0-thinking-latest\",\n \"ernie-5.0-thinking-preview\",\n \"ernie-x1-32k\",\n \"ernie-x1-32k-preview\",\n \"ernie-x1-turbo-32k\",\n \"ernie-x1.1-preview\",\n \"essentialai/rnj-1-instruct\",\n \"exa-answer\",\n \"exa-research\",\n \"exa-research-pro\",\n \"failspy/Meta-Llama-3-70B-Instruct-abliterated-v3.5\",\n \"fastgpt\",\n \"featherless-ai/Qwerky-72B\",\n \"gemini-2.0-flash-001\",\n \"gemini-2.0-flash-exp-image-generation\",\n \"gemini-2.0-flash-lite\",\n \"gemini-2.0-flash-thinking-exp-01-21\",\n \"gemini-2.0-flash-thinking-exp-1219\",\n \"gemini-2.0-pro-exp-02-05\",\n \"gemini-2.0-pro-reasoner\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-flash-lite\",\n \"gemini-2.5-flash-lite-preview-06-17\",\n \"gemini-2.5-flash-lite-preview-09-2025\",\n \"gemini-2.5-flash-lite-preview-09-2025-thinking\",\n \"gemini-2.5-flash-nothinking\",\n \"gemini-2.5-flash-preview-04-17\",\n \"gemini-2.5-flash-preview-04-17:thinking\",\n \"gemini-2.5-flash-preview-05-20\",\n \"gemini-2.5-flash-preview-05-20:thinking\",\n \"gemini-2.5-flash-preview-09-2025\",\n \"gemini-2.5-flash-preview-09-2025-thinking\",\n \"gemini-2.5-pro\",\n \"gemini-2.5-pro-exp-03-25\",\n \"gemini-2.5-pro-preview-03-25\",\n \"gemini-2.5-pro-preview-05-06\",\n \"gemini-2.5-pro-preview-06-05\",\n \"gemini-3-pro-image-preview\",\n \"gemini-3-pro-preview\",\n \"gemini-3-pro-preview-thinking\",\n \"gemini-exp-1206\",\n \"glm-4\",\n \"glm-4-air\",\n \"glm-4-air-0111\",\n \"glm-4-airx\",\n \"glm-4-flash\",\n \"glm-4-long\",\n \"glm-4-plus\",\n \"glm-4-plus-0111\",\n \"glm-4.1v-thinking-flash\",\n \"glm-4.1v-thinking-flashx\",\n \"glm-z1-air\",\n \"glm-z1-airx\",\n \"glm-zero-preview\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3-flash-preview-thinking\",\n \"google/gemini-flash-1.5\",\n \"grok-3-beta\",\n \"grok-3-fast-beta\",\n \"grok-3-mini-beta\",\n \"grok-3-mini-fast-beta\",\n \"hidream\",\n \"huihui-ai/DeepSeek-R1-Distill-Llama-70B-abliterated\",\n \"huihui-ai/DeepSeek-R1-Distill-Qwen-32B-abliterated\",\n \"huihui-ai/Llama-3.1-Nemotron-70B-Instruct-HF-abliterated\",\n \"huihui-ai/Llama-3.3-70B-Instruct-abliterated\",\n \"huihui-ai/Qwen2.5-32B-Instruct-abliterated\",\n \"hunyuan-t1-latest\",\n \"hunyuan-turbos-20250226\",\n \"inflatebot/MN-12B-Mag-Mell-R1\",\n \"inflection/inflection-3-pi\",\n \"inflection/inflection-3-productivity\",\n \"jamba-large\",\n \"jamba-large-1.6\",\n \"jamba-large-1.7\",\n \"jamba-mini\",\n \"jamba-mini-1.6\",\n \"jamba-mini-1.7\",\n \"kimi-k2-instruct-fast\",\n \"kimi-thinking-preview\",\n \"learnlm-1.5-pro-experimental\",\n \"meganova-ai/manta-flash-1.0\",\n \"meganova-ai/manta-mini-1.0\",\n \"meganova-ai/manta-pro-1.0\",\n \"meituan-longcat/LongCat-Flash-Chat-FP8\",\n \"meta-llama/llama-3.1-8b-instruct\",\n \"meta-llama/llama-3.2-3b-instruct\",\n \"meta-llama/llama-3.2-90b-vision-instruct\",\n \"meta-llama/llama-3.3-70b-instruct\",\n \"meta-llama/llama-4-maverick\",\n \"meta-llama/llama-4-scout\",\n \"microsoft/MAI-DS-R1-FP8\",\n \"microsoft/wizardlm-2-8x22b\",\n \"minimax/minimax-01\",\n \"minimax/minimax-m2-her\",\n \"minimax/minimax-m2.1\",\n \"minimax/minimax-m2.5\",\n \"minimax/minimax-m2.7\",\n \"miromind-ai/mirothinker-v1.5-235b\",\n \"mistral-small-31-24b-instruct\",\n \"mistralai/Devstral-Small-2505\",\n \"mistralai/Mistral-Nemo-Instruct-2407\",\n \"mistralai/codestral-2508\",\n \"mistralai/devstral-2-123b-instruct-2512\",\n \"mistralai/ministral-14b-2512\",\n \"mistralai/ministral-14b-instruct-2512\",\n \"mistralai/ministral-3b-2512\",\n \"mistralai/ministral-8b-2512\",\n \"mistralai/mistral-7b-instruct\",\n \"mistralai/mistral-large\",\n \"mistralai/mistral-large-3-675b-instruct-2512\",\n \"mistralai/mistral-medium-3\",\n \"mistralai/mistral-medium-3.1\",\n \"mistralai/mistral-saba\",\n \"mistralai/mistral-small-creative\",\n \"mistralai/mistral-tiny\",\n \"mistralai/mixtral-8x22b-instruct-v0.1\",\n \"mistralai/mixtral-8x7b-instruct-v0.1\",\n \"mlabonne/NeuralDaredevil-8B-abliterated\",\n \"moonshotai/Kimi-Dev-72B\",\n \"moonshotai/Kimi-K2-Instruct-0905\",\n \"moonshotai/kimi-k2-instruct\",\n \"moonshotai/kimi-k2-instruct-0711\",\n \"moonshotai/kimi-k2-thinking\",\n \"moonshotai/kimi-k2-thinking-original\",\n \"moonshotai/kimi-k2-thinking-turbo-original\",\n \"moonshotai/kimi-k2.5\",\n \"moonshotai/kimi-k2.5:thinking\",\n \"moonshotai/kimi-k2.6\",\n \"moonshotai/kimi-k2.6:thinking\",\n \"nex-agi/deepseek-v3.1-nex-n1\",\n \"nothingiisreal/L3.1-70B-Celeste-V0.1-BF16\",\n \"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF\",\n \"nvidia/Llama-3.1-Nemotron-Ultra-253B-v1\",\n \"nvidia/Llama-3.3-Nemotron-Super-49B-v1\",\n \"nvidia/Llama-3_3-Nemotron-Super-49B-v1_5\",\n \"nvidia/nemotron-3-nano-30b-a3b\",\n \"nvidia/nvidia-nemotron-nano-9b-v2\",\n \"openai/chatgpt-4o-latest\",\n \"openai/gpt-3.5-turbo\",\n \"openai/gpt-4-turbo\",\n \"openai/gpt-4-turbo-preview\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-4o\",\n \"openai/gpt-4o-2024-08-06\",\n \"openai/gpt-4o-2024-11-20\",\n \"openai/gpt-4o-mini\",\n \"openai/gpt-4o-mini-search-preview\",\n \"openai/gpt-4o-search-preview\",\n \"openai/gpt-5\",\n \"openai/gpt-5-chat-latest\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5-pro\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.1-2025-11-13\",\n \"openai/gpt-5.1-chat\",\n \"openai/gpt-5.1-chat-latest\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-max\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-chat\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"openai/gpt-oss-safeguard-20b\",\n \"openai/o1\",\n \"openai/o1-preview\",\n \"openai/o1-pro\",\n \"openai/o3\",\n \"openai/o3-deep-research\",\n \"openai/o3-mini\",\n \"openai/o3-mini-high\",\n \"openai/o3-mini-low\",\n \"openai/o3-pro-2025-06-10\",\n \"openai/o4-mini\",\n \"openai/o4-mini-deep-research\",\n \"openai/o4-mini-high\",\n \"pamanseau/OpenReasoning-Nemotron-32B\",\n \"phi-4-mini-instruct\",\n \"phi-4-multimodal-instruct\",\n \"qvq-max\",\n \"qwen-3.6-plus\",\n \"qwen-image\",\n \"qwen-long\",\n \"qwen-max\",\n \"qwen-plus\",\n \"qwen-turbo\",\n \"qwen/Qwen3.6-35B-A3B\",\n \"qwen/Qwen3.6-35B-A3B:thinking\",\n \"qwen/qwen3.5-397b-a17b\",\n \"qwen25-vl-72b-instruct\",\n \"qwen3-30b-a3b-instruct-2507\",\n \"qwen3-coder-30b-a3b-instruct\",\n \"qwen3-max-2026-01-23\",\n \"qwen3-vl-235b-a22b-instruct-original\",\n \"qwen3-vl-235b-a22b-thinking\",\n \"qwen3.6-max-preview\",\n \"qwq-32b\",\n \"raifle/sorcererlm-8x22b\",\n \"sarvan-medium\",\n \"shisa-ai/shisa-v2-llama3.3-70b\",\n \"shisa-ai/shisa-v2.1-llama3.3-70b\",\n \"sonar\",\n \"sonar-deep-research\",\n \"sonar-pro\",\n \"sonar-reasoning-pro\",\n \"soob3123/GrayLine-Qwen3-8B\",\n \"soob3123/Veiled-Calla-12B\",\n \"soob3123/amoral-gemma3-27B-v2\",\n \"step-2-16k-exp\",\n \"step-2-mini\",\n \"step-3\",\n \"step-r1-v-mini\",\n \"stepfun-ai/step-3.5-flash\",\n \"stepfun-ai/step-3.5-flash:thinking\",\n \"study_gpt-chatgpt-4o-latest\",\n \"tencent/Hunyuan-MT-7B\",\n \"tngtech/DeepSeek-TNG-R1T2-Chimera\",\n \"tngtech/tng-r1t-chimera\",\n \"undi95/remm-slerp-l2-13b\",\n \"universal-summarizer\",\n \"unsloth/gemma-3-12b-it\",\n \"unsloth/gemma-3-1b-it\",\n \"unsloth/gemma-3-27b-it\",\n \"unsloth/gemma-3-4b-it\",\n \"v0-1.0-md\",\n \"v0-1.5-lg\",\n \"v0-1.5-md\",\n \"venice-uncensored\",\n \"venice-uncensored:web\",\n \"x-ai/grok-4-07-09\",\n \"x-ai/grok-4-fast\",\n \"x-ai/grok-4-fast:thinking\",\n \"x-ai/grok-4.1-fast\",\n \"x-ai/grok-4.1-fast-reasoning\",\n \"x-ai/grok-code-fast-1\",\n \"xiaomi/mimo-v2-flash\",\n \"xiaomi/mimo-v2-flash-original\",\n \"xiaomi/mimo-v2-flash-thinking\",\n \"xiaomi/mimo-v2-flash-thinking-original\",\n \"yi-large\",\n \"yi-lightning\",\n \"yi-medium-200k\",\n \"z-ai/glm-4.5v\",\n \"z-ai/glm-4.5v:thinking\",\n \"z-ai/glm-4.6\",\n \"z-ai/glm-4.6:thinking\",\n \"z-image-turbo\",\n \"zai-org/glm-4.7\",\n \"zai-org/glm-4.7-flash\",\n \"zai-org/glm-5\",\n \"zai-org/glm-5.1\",\n \"zai-org/glm-5.1:thinking\",\n \"zai-org/glm-5:thinking\"\n ],\n \"io-net\": [\n \"Intel/Qwen3-Coder-480B-A35B-Instruct-int4-mixed-ar\",\n \"Qwen/Qwen2.5-VL-32B-Instruct\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n \"deepseek-ai/DeepSeek-R1-0528\",\n \"meta-llama/Llama-3.2-90B-Vision-Instruct\",\n \"meta-llama/Llama-3.3-70B-Instruct\",\n \"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\",\n \"mistralai/Devstral-Small-2505\",\n \"mistralai/Magistral-Small-2506\",\n \"mistralai/Mistral-Large-Instruct-2411\",\n \"mistralai/Mistral-Nemo-Instruct-2407\",\n \"moonshotai/Kimi-K2-Instruct-0905\",\n \"moonshotai/Kimi-K2-Thinking\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"zai-org/GLM-4.6\"\n ],\n \"inception\": [\"mercury-2\", \"mercury-edit-2\"],\n \"submodel\": [\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8\",\n \"deepseek-ai/DeepSeek-R1-0528\",\n \"deepseek-ai/DeepSeek-V3-0324\",\n \"deepseek-ai/DeepSeek-V3.1\",\n \"openai/gpt-oss-120b\",\n \"zai-org/GLM-4.5-Air\",\n \"zai-org/GLM-4.5-FP8\"\n ],\n \"requesty\": [\n \"anthropic/claude-3-7-sonnet\",\n \"anthropic/claude-haiku-4-5\",\n \"anthropic/claude-opus-4\",\n \"anthropic/claude-opus-4-1\",\n \"anthropic/claude-opus-4-5\",\n \"anthropic/claude-opus-4-6\",\n \"anthropic/claude-sonnet-4\",\n \"anthropic/claude-sonnet-4-5\",\n \"anthropic/claude-sonnet-4-6\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3-pro-preview\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4o-mini\",\n \"openai/gpt-5\",\n \"openai/gpt-5-chat\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5-image\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5-pro\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.1-chat\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-max\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-chat\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-5.3-codex\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-pro\",\n \"openai/o4-mini\",\n \"xai/grok-4\",\n \"xai/grok-4-fast\"\n ],\n \"zai\": [\n \"glm-4.5\",\n \"glm-4.5-air\",\n \"glm-4.5-flash\",\n \"glm-4.5v\",\n \"glm-4.6\",\n \"glm-4.6v\",\n \"glm-4.7\",\n \"glm-4.7-flash\",\n \"glm-4.7-flashx\",\n \"glm-5\",\n \"glm-5-turbo\",\n \"glm-5.1\",\n \"glm-5v-turbo\"\n ],\n \"zai-coding-plan\": [\"glm-4.5-air\", \"glm-4.7\", \"glm-5-turbo\", \"glm-5.1\", \"glm-5v-turbo\"],\n \"deepinfra\": [\n \"MiniMaxAI/MiniMax-M2\",\n \"MiniMaxAI/MiniMax-M2.1\",\n \"MiniMaxAI/MiniMax-M2.5\",\n \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n \"Qwen/Qwen3-Coder-480B-A35B-Instruct-Turbo\",\n \"Qwen/Qwen3.5-35B-A3B\",\n \"Qwen/Qwen3.5-397B-A17B\",\n \"Qwen/Qwen3.6-35B-A3B\",\n \"anthropic/claude-3-7-sonnet-latest\",\n \"anthropic/claude-4-opus\",\n \"deepseek-ai/DeepSeek-R1-0528\",\n \"deepseek-ai/DeepSeek-V3.2\",\n \"deepseek-ai/DeepSeek-V4-Flash\",\n \"deepseek-ai/DeepSeek-V4-Pro\",\n \"google/gemma-4-26B-A4B-it\",\n \"google/gemma-4-31B-it\",\n \"meta-llama/Llama-3.1-70B-Instruct\",\n \"meta-llama/Llama-3.1-70B-Instruct-Turbo\",\n \"meta-llama/Llama-3.1-8B-Instruct\",\n \"meta-llama/Llama-3.1-8B-Instruct-Turbo\",\n \"meta-llama/Llama-3.3-70B-Instruct-Turbo\",\n \"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\",\n \"meta-llama/Llama-4-Scout-17B-16E-Instruct\",\n \"moonshotai/Kimi-K2-Instruct\",\n \"moonshotai/Kimi-K2-Instruct-0905\",\n \"moonshotai/Kimi-K2-Thinking\",\n \"moonshotai/Kimi-K2.5\",\n \"moonshotai/Kimi-K2.6\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"xiaomi/mimo-v2.5\",\n \"xiaomi/mimo-v2.5-pro\",\n \"zai-org/GLM-4.6\",\n \"zai-org/GLM-4.6V\",\n \"zai-org/GLM-4.7\",\n \"zai-org/GLM-4.7-Flash\",\n \"zai-org/GLM-5\",\n \"zai-org/GLM-5.1\"\n ],\n \"clarifai\": [\n \"arcee_ai/AFM/models/trinity-mini\",\n \"clarifai/main/models/mm-poly-8b\",\n \"deepseek-ai/deepseek-ocr/models/DeepSeek-OCR\",\n \"minimaxai/chat-completion/models/MiniMax-M2_5-high-throughput\",\n \"mistralai/completion/models/Ministral-3-14B-Reasoning-2512\",\n \"mistralai/completion/models/Ministral-3-3B-Reasoning-2512\",\n \"moonshotai/chat-completion/models/Kimi-K2_6\",\n \"openai/chat-completion/models/gpt-oss-120b-high-throughput\",\n \"openai/chat-completion/models/gpt-oss-20b\",\n \"qwen/qwenCoder/models/Qwen3-Coder-30B-A3B-Instruct\",\n \"qwen/qwenLM/models/Qwen3-30B-A3B-Instruct-2507\",\n \"qwen/qwenLM/models/Qwen3-30B-A3B-Thinking-2507\"\n ],\n \"moark\": [\"GLM-4.7\", \"MiniMax-M2.1\"],\n \"frogbot\": [\n \"claude-haiku-4-5\",\n \"claude-opus-4-6\",\n \"claude-opus-4-7\",\n \"claude-sonnet-4-6\",\n \"deepseek-v4-pro\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-pro\",\n \"gemini-3-1-pro-preview\",\n \"gemini-3-flash-preview\",\n \"gpt-4o\",\n \"gpt-5-3-codex\",\n \"gpt-5-4-mini\",\n \"gpt-5-4-nano\",\n \"gpt-5-5\",\n \"gpt-oss-120b\",\n \"gpt-oss-20b\",\n \"grok-4-1-fast-non-reasoning\",\n \"grok-4-1-fast-reasoning\",\n \"grok-4-3\",\n \"grok-code-fast-1\",\n \"kimi-k2-6\",\n \"kimi-k2.5\",\n \"minimax-m2-5\",\n \"minimax-m2-7\",\n \"qwen-3-6-plus\",\n \"zai-glm-5-1\"\n ],\n \"wandb\": [\n \"MiniMaxAI/MiniMax-M2.5\",\n \"OpenPipe/Qwen3-14B-Instruct\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n \"deepseek-ai/DeepSeek-V3.1\",\n \"meta-llama/Llama-3.1-70B-Instruct\",\n \"meta-llama/Llama-3.1-8B-Instruct\",\n \"meta-llama/Llama-3.3-70B-Instruct\",\n \"meta-llama/Llama-4-Scout-17B-16E-Instruct\",\n \"microsoft/Phi-4-mini-instruct\",\n \"moonshotai/Kimi-K2.5\",\n \"nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-FP8\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"zai-org/GLM-5-FP8\",\n \"zai-org/GLM-5.1\"\n ],\n \"gmicloud\": [\n \"anthropic/claude-opus-4.6\",\n \"anthropic/claude-opus-4.7\",\n \"anthropic/claude-sonnet-4.6\",\n \"deepseek-ai/DeepSeek-V4-Flash\",\n \"deepseek-ai/DeepSeek-V4-Pro\",\n \"moonshotai/Kimi-K2.6\",\n \"zai-org/GLM-5-FP8\",\n \"zai-org/GLM-5.1-FP8\"\n ],\n \"crof\": [\n \"deepseek-v3.2\",\n \"deepseek-v4-flash\",\n \"deepseek-v4-pro\",\n \"deepseek-v4-pro-precision\",\n \"gemma-4-31b-it\",\n \"glm-4.7\",\n \"glm-4.7-flash\",\n \"glm-5\",\n \"glm-5.1\",\n \"glm-5.1-precision\",\n \"greg\",\n \"kimi-k2.5\",\n \"kimi-k2.5-lightning\",\n \"kimi-k2.6\",\n \"kimi-k2.6-precision\",\n \"mimo-v2.5-pro\",\n \"mimo-v2.5-pro-precision\",\n \"minimax-m2.5\",\n \"qwen3.5-397b-a17b\",\n \"qwen3.5-9b\",\n \"qwen3.6-27b\"\n ],\n \"ambient\": [\"moonshotai/kimi-k2.6\", \"zai-org/GLM-5.1-FP8\"],\n \"routing-run\": [\n \"route/deepseek-v3.2\",\n \"route/deepseek-v4-flash\",\n \"route/deepseek-v4-flash-6bit\",\n \"route/deepseek-v4-pro\",\n \"route/deepseek-v4-pro-6bit\",\n \"route/gemma-4-31b-it\",\n \"route/glm-5.1\",\n \"route/glm-5.1-6bit\",\n \"route/kimi-k2.5\",\n \"route/kimi-k2.6\",\n \"route/kimi-k2.6-6bit\",\n \"route/mimo-v2.5-pro\",\n \"route/mimo-v2.5-pro-6bit\",\n \"route/minimax-m2.5\",\n \"route/minimax-m2.5-highspeed\",\n \"route/minimax-m2.7\",\n \"route/minimax-m2.7-highspeed\",\n \"route/mistral-large-3\",\n \"route/mistral-medium-2505\",\n \"route/mistral-small-2503\",\n \"route/qwen3.6-27b\",\n \"route/step-3.5-flash\",\n \"route/step-3.5-flash-2603\",\n \"route/stepfun-3.5-flash\"\n ],\n \"the-grid-ai\": [\n \"agent-max\",\n \"agent-prime\",\n \"agent-standard\",\n \"code-max\",\n \"code-prime\",\n \"code-standard\",\n \"text-max\",\n \"text-prime\",\n \"text-standard\"\n ],\n \"fastrouter\": [\n \"anthropic/claude-opus-4.1\",\n \"anthropic/claude-sonnet-4\",\n \"deepseek-ai/deepseek-r1-distill-llama-70b\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-pro\",\n \"moonshotai/kimi-k2\",\n \"openai/gpt-4.1\",\n \"openai/gpt-5\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"qwen/qwen3-coder\",\n \"x-ai/grok-4\",\n \"z-ai/glm-5\"\n ],\n \"tencent-coding-plan\": [\n \"glm-5\",\n \"hunyuan-2.0-instruct\",\n \"hunyuan-2.0-thinking\",\n \"hunyuan-t1\",\n \"hunyuan-turbos\",\n \"kimi-k2.5\",\n \"minimax-m2.5\",\n \"tc-code-latest\"\n ],\n \"cortecs\": [\n \"claude-4-5-sonnet\",\n \"claude-4-6-sonnet\",\n \"claude-haiku-4-5\",\n \"claude-opus4-5\",\n \"claude-opus4-6\",\n \"claude-opus4-7\",\n \"claude-sonnet-4\",\n \"codestral-2508\",\n \"deepseek-r1-0528\",\n \"deepseek-v3-0324\",\n \"deepseek-v3.2\",\n \"deepseek-v4-flash\",\n \"deepseek-v4-pro\",\n \"devstral-2512\",\n \"devstral-small-2512\",\n \"gemini-2.5-pro\",\n \"glm-4.5\",\n \"glm-4.5-air\",\n \"glm-4.7\",\n \"glm-4.7-flash\",\n \"glm-5\",\n \"glm-5.1\",\n \"gpt-4.1\",\n \"gpt-oss-120b\",\n \"hermes-4-70b\",\n \"intellect-3\",\n \"kimi-k2-instruct\",\n \"kimi-k2-thinking\",\n \"kimi-k2.5\",\n \"kimi-k2.6\",\n \"llama-3.1-405b-instruct\",\n \"llama-3.3-70b-instruct\",\n \"minimax-m2\",\n \"minimax-m2.1\",\n \"minimax-m2.5\",\n \"minimax-m2.7\",\n \"mistral-large-2512\",\n \"mixtral-8x7B-instruct-v0.1\",\n \"nemotron-3-super-120b-a12b\",\n \"nova-pro-v1\",\n \"qwen-2.5-72b-instruct\",\n \"qwen3-235b-a22b-instruct-2507\",\n \"qwen3-32b\",\n \"qwen3-coder-30b-a3b-instruct\",\n \"qwen3-coder-480b-a35b-instruct\",\n \"qwen3-coder-next\",\n \"qwen3-next-80b-a3b-thinking\",\n \"qwen3.5-122b-a10b\",\n \"qwen3.5-397b-a17b\"\n ],\n \"baseten\": [\n \"MiniMaxAI/MiniMax-M2.5\",\n \"deepseek-ai/DeepSeek-V3-0324\",\n \"deepseek-ai/DeepSeek-V3.1\",\n \"deepseek-ai/DeepSeek-V4-Pro\",\n \"moonshotai/Kimi-K2.5\",\n \"moonshotai/Kimi-K2.6\",\n \"nvidia/Nemotron-120B-A12B\",\n \"openai/gpt-oss-120b\",\n \"zai-org/GLM-4.6\",\n \"zai-org/GLM-4.7\",\n \"zai-org/GLM-5\"\n ],\n \"llama\": [\n \"cerebras-llama-4-maverick-17b-128e-instruct\",\n \"cerebras-llama-4-scout-17b-16e-instruct\",\n \"groq-llama-4-maverick-17b-128e-instruct\",\n \"llama-3.3-70b-instruct\",\n \"llama-3.3-8b-instruct\",\n \"llama-4-maverick-17b-128e-instruct-fp8\",\n \"llama-4-scout-17b-16e-instruct-fp8\"\n ],\n \"novita-ai\": [\n \"baichuan/baichuan-m2-32b\",\n \"baidu/ernie-4.5-21B-a3b\",\n \"baidu/ernie-4.5-21B-a3b-thinking\",\n \"baidu/ernie-4.5-300b-a47b-paddle\",\n \"baidu/ernie-4.5-vl-28b-a3b\",\n \"baidu/ernie-4.5-vl-28b-a3b-thinking\",\n \"baidu/ernie-4.5-vl-424b-a47b\",\n \"deepseek/deepseek-ocr\",\n \"deepseek/deepseek-ocr-2\",\n \"deepseek/deepseek-prover-v2-671b\",\n \"deepseek/deepseek-r1-0528\",\n \"deepseek/deepseek-r1-0528-qwen3-8b\",\n \"deepseek/deepseek-r1-distill-llama-70b\",\n \"deepseek/deepseek-r1-distill-qwen-14b\",\n \"deepseek/deepseek-r1-distill-qwen-32b\",\n \"deepseek/deepseek-r1-turbo\",\n \"deepseek/deepseek-v3-0324\",\n \"deepseek/deepseek-v3-turbo\",\n \"deepseek/deepseek-v3.1\",\n \"deepseek/deepseek-v3.1-terminus\",\n \"deepseek/deepseek-v3.2\",\n \"deepseek/deepseek-v3.2-exp\",\n \"deepseek/deepseek-v4-flash\",\n \"deepseek/deepseek-v4-pro\",\n \"google/gemma-3-12b-it\",\n \"google/gemma-3-27b-it\",\n \"google/gemma-4-26b-a4b-it\",\n \"google/gemma-4-31b-it\",\n \"gryphe/mythomax-l2-13b\",\n \"inclusionai/ling-2.6-1t\",\n \"inclusionai/ling-2.6-flash\",\n \"kwaipilot/kat-coder-pro\",\n \"meta-llama/llama-3-70b-instruct\",\n \"meta-llama/llama-3-8b-instruct\",\n \"meta-llama/llama-3.1-8b-instruct\",\n \"meta-llama/llama-3.2-3b-instruct\",\n \"meta-llama/llama-3.3-70b-instruct\",\n \"meta-llama/llama-4-maverick-17b-128e-instruct-fp8\",\n \"meta-llama/llama-4-scout-17b-16e-instruct\",\n \"microsoft/wizardlm-2-8x22b\",\n \"minimax/minimax-m2\",\n \"minimax/minimax-m2.1\",\n \"minimax/minimax-m2.5\",\n \"minimax/minimax-m2.5-highspeed\",\n \"minimax/minimax-m2.7\",\n \"minimaxai/minimax-m1-80k\",\n \"mistralai/mistral-nemo\",\n \"moonshotai/kimi-k2-0905\",\n \"moonshotai/kimi-k2-instruct\",\n \"moonshotai/kimi-k2-thinking\",\n \"moonshotai/kimi-k2.5\",\n \"moonshotai/kimi-k2.6\",\n \"nousresearch/hermes-2-pro-llama-3-8b\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"paddlepaddle/paddleocr-vl\",\n \"qwen/qwen-2.5-72b-instruct\",\n \"qwen/qwen-mt-plus\",\n \"qwen/qwen2.5-7b-instruct\",\n \"qwen/qwen2.5-vl-72b-instruct\",\n \"qwen/qwen3-235b-a22b-fp8\",\n \"qwen/qwen3-235b-a22b-instruct-2507\",\n \"qwen/qwen3-235b-a22b-thinking-2507\",\n \"qwen/qwen3-30b-a3b-fp8\",\n \"qwen/qwen3-32b-fp8\",\n \"qwen/qwen3-4b-fp8\",\n \"qwen/qwen3-8b-fp8\",\n \"qwen/qwen3-coder-30b-a3b-instruct\",\n \"qwen/qwen3-coder-480b-a35b-instruct\",\n \"qwen/qwen3-coder-next\",\n \"qwen/qwen3-max\",\n \"qwen/qwen3-next-80b-a3b-instruct\",\n \"qwen/qwen3-next-80b-a3b-thinking\",\n \"qwen/qwen3-omni-30b-a3b-instruct\",\n \"qwen/qwen3-omni-30b-a3b-thinking\",\n \"qwen/qwen3-vl-235b-a22b-instruct\",\n \"qwen/qwen3-vl-235b-a22b-thinking\",\n \"qwen/qwen3-vl-30b-a3b-instruct\",\n \"qwen/qwen3-vl-30b-a3b-thinking\",\n \"qwen/qwen3-vl-8b-instruct\",\n \"qwen/qwen3.5-122b-a10b\",\n \"qwen/qwen3.5-27b\",\n \"qwen/qwen3.5-35b-a3b\",\n \"qwen/qwen3.5-397b-a17b\",\n \"sao10K/L3-8B-stheno-v3.2\",\n \"sao10K/l3-70b-euryale-v2.1\",\n \"sao10K/l3-8b-lunaris\",\n \"sao10K/l31-70b-euryale-v2.2\",\n \"xiaomimimo/mimo-v2-flash\",\n \"zai-org/autoglm-phone-9b-multilingual\",\n \"zai-org/glm-4.5\",\n \"zai-org/glm-4.5-air\",\n \"zai-org/glm-4.5v\",\n \"zai-org/glm-4.6\",\n \"zai-org/glm-4.6v\",\n \"zai-org/glm-4.7\",\n \"zai-org/glm-4.7-flash\",\n \"zai-org/glm-5\",\n \"zai-org/glm-5.1\"\n ],\n \"digitalocean\": [\n \"alibaba-qwen3-32b\",\n \"all-mini-lm-l6-v2\",\n \"anthropic-claude-4.1-opus\",\n \"anthropic-claude-4.5-haiku\",\n \"anthropic-claude-4.5-sonnet\",\n \"anthropic-claude-4.6-sonnet\",\n \"anthropic-claude-haiku-4.5\",\n \"anthropic-claude-opus-4\",\n \"anthropic-claude-opus-4.5\",\n \"anthropic-claude-opus-4.6\",\n \"anthropic-claude-opus-4.7\",\n \"anthropic-claude-sonnet-4\",\n \"arcee-trinity-large-thinking\",\n \"bge-m3\",\n \"bge-reranker-v2-m3\",\n \"deepseek-3.2\",\n \"deepseek-r1-distill-llama-70b\",\n \"deepseek-v3\",\n \"deepseek-v4-pro\",\n \"e5-large-v2\",\n \"fal-ai/elevenlabs/tts/multilingual-v2\",\n \"fal-ai/fast-sdxl\",\n \"fal-ai/flux/schnell\",\n \"fal-ai/stable-audio-25/text-to-audio\",\n \"gemma-4-31B-it\",\n \"glm-5\",\n \"gte-large-en-v1.5\",\n \"kimi-k2.5\",\n \"kimi-k2.6\",\n \"llama-4-maverick\",\n \"llama3-8b-instruct\",\n \"llama3.3-70b-instruct\",\n \"minimax-m2.5\",\n \"ministral-3-8b-instruct-2512\",\n \"mistral-3-14B\",\n \"mistral-7b-instruct-v0.3\",\n \"multi-qa-mpnet-base-dot-v1\",\n \"nemotron-3-nano-30b\",\n \"nemotron-3-nano-omni\",\n \"nemotron-nano-12b-v2-vl\",\n \"nvidia-nemotron-3-super-120b\",\n \"openai-gpt-4.1\",\n \"openai-gpt-4o\",\n \"openai-gpt-4o-mini\",\n \"openai-gpt-5\",\n \"openai-gpt-5-mini\",\n \"openai-gpt-5-nano\",\n \"openai-gpt-5.1-codex-max\",\n \"openai-gpt-5.2\",\n \"openai-gpt-5.2-pro\",\n \"openai-gpt-5.3-codex\",\n \"openai-gpt-5.4\",\n \"openai-gpt-5.4-mini\",\n \"openai-gpt-5.4-nano\",\n \"openai-gpt-5.4-pro\",\n \"openai-gpt-5.5\",\n \"openai-gpt-image-1\",\n \"openai-gpt-image-1.5\",\n \"openai-gpt-image-2\",\n \"openai-gpt-oss-120b\",\n \"openai-gpt-oss-20b\",\n \"openai-o1\",\n \"openai-o3\",\n \"openai-o3-mini\",\n \"qwen-2.5-14b-instruct\",\n \"qwen3-coder-flash\",\n \"qwen3-embedding-0.6b\",\n \"qwen3-tts-voicedesign\",\n \"qwen3.5-397b-a17b\",\n \"stable-diffusion-3.5-large\",\n \"wan2-2-t2v-a14b\"\n ],\n \"moonshotai\": [\n \"kimi-k2-0711-preview\",\n \"kimi-k2-0905-preview\",\n \"kimi-k2-thinking\",\n \"kimi-k2-thinking-turbo\",\n \"kimi-k2-turbo-preview\",\n \"kimi-k2.5\",\n \"kimi-k2.6\"\n ],\n \"mistral\": [\n \"codestral-latest\",\n \"devstral-2512\",\n \"devstral-medium-2507\",\n \"devstral-medium-latest\",\n \"devstral-small-2505\",\n \"devstral-small-2507\",\n \"labs-devstral-small-2512\",\n \"magistral-medium-latest\",\n \"magistral-small\",\n \"ministral-3b-latest\",\n \"ministral-8b-latest\",\n \"mistral-embed\",\n \"mistral-large-2411\",\n \"mistral-large-2512\",\n \"mistral-large-latest\",\n \"mistral-medium-2505\",\n \"mistral-medium-2508\",\n \"mistral-medium-2604\",\n \"mistral-medium-latest\",\n \"mistral-nemo\",\n \"mistral-small-2506\",\n \"mistral-small-2603\",\n \"mistral-small-latest\",\n \"open-mistral-7b\",\n \"open-mixtral-8x22b\",\n \"open-mixtral-8x7b\",\n \"pixtral-12b\",\n \"pixtral-large-latest\"\n ],\n \"kilo\": [\n \"ai21/jamba-large-1.7\",\n \"aion-labs/aion-1.0\",\n \"aion-labs/aion-1.0-mini\",\n \"aion-labs/aion-2.0\",\n \"aion-labs/aion-rp-llama-3.1-8b\",\n \"alfredpros/codellama-7b-instruct-solidity\",\n \"alibaba/tongyi-deepresearch-30b-a3b\",\n \"allenai/olmo-3-32b-think\",\n \"amazon/nova-2-lite-v1\",\n \"amazon/nova-lite-v1\",\n \"amazon/nova-micro-v1\",\n \"amazon/nova-premier-v1\",\n \"amazon/nova-pro-v1\",\n \"anthracite-org/magnum-v4-72b\",\n \"anthropic/claude-3-haiku\",\n \"anthropic/claude-3.5-haiku\",\n \"anthropic/claude-haiku-4.5\",\n \"anthropic/claude-opus-4\",\n \"anthropic/claude-opus-4.1\",\n \"anthropic/claude-opus-4.5\",\n \"anthropic/claude-opus-4.6\",\n \"anthropic/claude-opus-4.6-fast\",\n \"anthropic/claude-opus-4.7\",\n \"anthropic/claude-opus-4.7-fast\",\n \"anthropic/claude-sonnet-4\",\n \"anthropic/claude-sonnet-4.5\",\n \"anthropic/claude-sonnet-4.6\",\n \"arcee-ai/coder-large\",\n \"arcee-ai/maestro-reasoning\",\n \"arcee-ai/spotlight\",\n \"arcee-ai/trinity-large-preview\",\n \"arcee-ai/trinity-large-thinking\",\n \"arcee-ai/trinity-mini\",\n \"arcee-ai/virtuoso-large\",\n \"baidu/cobuddy:free\",\n \"baidu/ernie-4.5-21b-a3b\",\n \"baidu/ernie-4.5-21b-a3b-thinking\",\n \"baidu/ernie-4.5-300b-a47b\",\n \"baidu/ernie-4.5-vl-28b-a3b\",\n \"baidu/ernie-4.5-vl-424b-a47b\",\n \"baidu/qianfan-ocr-fast\",\n \"bytedance-seed/seed-1.6\",\n \"bytedance-seed/seed-1.6-flash\",\n \"bytedance-seed/seed-2.0-lite\",\n \"bytedance-seed/seed-2.0-mini\",\n \"bytedance/ui-tars-1.5-7b\",\n \"cohere/command-a\",\n \"cohere/command-r-08-2024\",\n \"cohere/command-r-plus-08-2024\",\n \"cohere/command-r7b-12-2024\",\n \"deepcogito/cogito-v2.1-671b\",\n \"deepseek/deepseek-chat\",\n \"deepseek/deepseek-chat-v3-0324\",\n \"deepseek/deepseek-chat-v3.1\",\n \"deepseek/deepseek-r1\",\n \"deepseek/deepseek-r1-0528\",\n \"deepseek/deepseek-r1-distill-llama-70b\",\n \"deepseek/deepseek-r1-distill-qwen-32b\",\n \"deepseek/deepseek-v3.1-terminus\",\n \"deepseek/deepseek-v3.2\",\n \"deepseek/deepseek-v3.2-exp\",\n \"deepseek/deepseek-v3.2-speciale\",\n \"deepseek/deepseek-v4-flash\",\n \"deepseek/deepseek-v4-flash:free\",\n \"deepseek/deepseek-v4-pro\",\n \"essentialai/rnj-1-instruct\",\n \"google/gemini-2.0-flash-001\",\n \"google/gemini-2.0-flash-lite-001\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-flash-image\",\n \"google/gemini-2.5-flash-lite\",\n \"google/gemini-2.5-flash-lite-preview-09-2025\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-2.5-pro-preview\",\n \"google/gemini-2.5-pro-preview-05-06\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3-pro-image-preview\",\n \"google/gemini-3.1-flash-image-preview\",\n \"google/gemini-3.1-flash-lite\",\n \"google/gemini-3.1-flash-lite-preview\",\n \"google/gemini-3.1-pro-preview\",\n \"google/gemini-3.1-pro-preview-customtools\",\n \"google/gemma-2-27b-it\",\n \"google/gemma-3-12b-it\",\n \"google/gemma-3-27b-it\",\n \"google/gemma-3-4b-it\",\n \"google/gemma-3n-e4b-it\",\n \"google/gemma-4-26b-a4b-it\",\n \"google/gemma-4-31b-it\",\n \"google/lyria-3-clip-preview\",\n \"google/lyria-3-pro-preview\",\n \"gryphe/mythomax-l2-13b\",\n \"ibm-granite/granite-4.0-h-micro\",\n \"ibm-granite/granite-4.1-8b\",\n \"inception/mercury-2\",\n \"inclusionai/ling-2.6-1t\",\n \"inclusionai/ling-2.6-flash\",\n \"inclusionai/ring-2.6-1t\",\n \"inflection/inflection-3-pi\",\n \"inflection/inflection-3-productivity\",\n \"kilo-auto/balanced\",\n \"kilo-auto/free\",\n \"kilo-auto/frontier\",\n \"kilo-auto/small\",\n \"kwaipilot/kat-coder-pro-v2\",\n \"liquid/lfm-2-24b-a2b\",\n \"mancer/weaver\",\n \"meta-llama/llama-3-70b-instruct\",\n \"meta-llama/llama-3-8b-instruct\",\n \"meta-llama/llama-3.1-70b-instruct\",\n \"meta-llama/llama-3.1-8b-instruct\",\n \"meta-llama/llama-3.2-11b-vision-instruct\",\n \"meta-llama/llama-3.2-1b-instruct\",\n \"meta-llama/llama-3.2-3b-instruct\",\n \"meta-llama/llama-3.3-70b-instruct\",\n \"meta-llama/llama-4-maverick\",\n \"meta-llama/llama-4-scout\",\n \"meta-llama/llama-guard-3-8b\",\n \"meta-llama/llama-guard-4-12b\",\n \"microsoft/phi-4\",\n \"microsoft/phi-4-mini-instruct\",\n \"microsoft/wizardlm-2-8x22b\",\n \"minimax/minimax-01\",\n \"minimax/minimax-m1\",\n \"minimax/minimax-m2\",\n \"minimax/minimax-m2-her\",\n \"minimax/minimax-m2.1\",\n \"minimax/minimax-m2.5\",\n \"minimax/minimax-m2.7\",\n \"mistralai/codestral-2508\",\n \"mistralai/devstral-2512\",\n \"mistralai/devstral-medium\",\n \"mistralai/devstral-small\",\n \"mistralai/ministral-14b-2512\",\n \"mistralai/ministral-3b-2512\",\n \"mistralai/ministral-8b-2512\",\n \"mistralai/mistral-7b-instruct-v0.1\",\n \"mistralai/mistral-large\",\n \"mistralai/mistral-large-2407\",\n \"mistralai/mistral-large-2411\",\n \"mistralai/mistral-large-2512\",\n \"mistralai/mistral-medium-3\",\n \"mistralai/mistral-medium-3-5\",\n \"mistralai/mistral-medium-3.1\",\n \"mistralai/mistral-nemo\",\n \"mistralai/mistral-saba\",\n \"mistralai/mistral-small-24b-instruct-2501\",\n \"mistralai/mistral-small-2603\",\n \"mistralai/mistral-small-3.1-24b-instruct\",\n \"mistralai/mistral-small-3.2-24b-instruct\",\n \"mistralai/mixtral-8x22b-instruct\",\n \"mistralai/pixtral-large-2411\",\n \"mistralai/voxtral-small-24b-2507\",\n \"moonshotai/kimi-k2\",\n \"moonshotai/kimi-k2-0905\",\n \"moonshotai/kimi-k2-thinking\",\n \"moonshotai/kimi-k2.5\",\n \"moonshotai/kimi-k2.6\",\n \"morph/morph-v3-fast\",\n \"morph/morph-v3-large\",\n \"nex-agi/deepseek-v3.1-nex-n1\",\n \"nousresearch/hermes-2-pro-llama-3-8b\",\n \"nousresearch/hermes-3-llama-3.1-405b\",\n \"nousresearch/hermes-3-llama-3.1-70b\",\n \"nousresearch/hermes-4-405b\",\n \"nousresearch/hermes-4-70b\",\n \"nvidia/llama-3.3-nemotron-super-49b-v1.5\",\n \"nvidia/nemotron-3-nano-30b-a3b\",\n \"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free\",\n \"nvidia/nemotron-3-super-120b-a12b\",\n \"nvidia/nemotron-3-super-120b-a12b:free\",\n \"nvidia/nemotron-nano-9b-v2\",\n \"openai/gpt-3.5-turbo\",\n \"openai/gpt-3.5-turbo-0613\",\n \"openai/gpt-3.5-turbo-16k\",\n \"openai/gpt-3.5-turbo-instruct\",\n \"openai/gpt-4\",\n \"openai/gpt-4-0314\",\n \"openai/gpt-4-1106-preview\",\n \"openai/gpt-4-turbo\",\n \"openai/gpt-4-turbo-preview\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-4o\",\n \"openai/gpt-4o-2024-05-13\",\n \"openai/gpt-4o-2024-08-06\",\n \"openai/gpt-4o-2024-11-20\",\n \"openai/gpt-4o-audio-preview\",\n \"openai/gpt-4o-mini\",\n \"openai/gpt-4o-mini-2024-07-18\",\n \"openai/gpt-4o-mini-search-preview\",\n \"openai/gpt-4o-search-preview\",\n \"openai/gpt-5\",\n \"openai/gpt-5-chat\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5-image\",\n \"openai/gpt-5-image-mini\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5-pro\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.1-chat\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-max\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-chat\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-5.3-chat\",\n \"openai/gpt-5.3-codex\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-image-2\",\n \"openai/gpt-5.4-mini\",\n \"openai/gpt-5.4-nano\",\n \"openai/gpt-5.4-pro\",\n \"openai/gpt-5.5\",\n \"openai/gpt-5.5-pro\",\n \"openai/gpt-audio\",\n \"openai/gpt-audio-mini\",\n \"openai/gpt-chat-latest\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"openai/gpt-oss-safeguard-20b\",\n \"openai/o1\",\n \"openai/o1-pro\",\n \"openai/o3\",\n \"openai/o3-deep-research\",\n \"openai/o3-mini\",\n \"openai/o3-mini-high\",\n \"openai/o3-pro\",\n \"openai/o4-mini\",\n \"openai/o4-mini-deep-research\",\n \"openai/o4-mini-high\",\n \"openrouter/auto\",\n \"openrouter/bodybuilder\",\n \"openrouter/free\",\n \"openrouter/owl-alpha\",\n \"openrouter/pareto-code\",\n \"perceptron/perceptron-mk1\",\n \"perplexity/sonar\",\n \"perplexity/sonar-deep-research\",\n \"perplexity/sonar-pro\",\n \"perplexity/sonar-pro-search\",\n \"perplexity/sonar-reasoning-pro\",\n \"poolside/laguna-m.1:free\",\n \"poolside/laguna-xs.2:free\",\n \"prime-intellect/intellect-3\",\n \"qwen/qwen-2.5-72b-instruct\",\n \"qwen/qwen-2.5-7b-instruct\",\n \"qwen/qwen-2.5-coder-32b-instruct\",\n \"qwen/qwen-plus\",\n \"qwen/qwen-plus-2025-07-28\",\n \"qwen/qwen-plus-2025-07-28:thinking\",\n \"qwen/qwen2.5-vl-72b-instruct\",\n \"qwen/qwen3-14b\",\n \"qwen/qwen3-235b-a22b\",\n \"qwen/qwen3-235b-a22b-2507\",\n \"qwen/qwen3-235b-a22b-thinking-2507\",\n \"qwen/qwen3-30b-a3b\",\n \"qwen/qwen3-30b-a3b-instruct-2507\",\n \"qwen/qwen3-30b-a3b-thinking-2507\",\n \"qwen/qwen3-32b\",\n \"qwen/qwen3-8b\",\n \"qwen/qwen3-coder\",\n \"qwen/qwen3-coder-30b-a3b-instruct\",\n \"qwen/qwen3-coder-flash\",\n \"qwen/qwen3-coder-next\",\n \"qwen/qwen3-coder-plus\",\n \"qwen/qwen3-max\",\n \"qwen/qwen3-max-thinking\",\n \"qwen/qwen3-next-80b-a3b-instruct\",\n \"qwen/qwen3-next-80b-a3b-thinking\",\n \"qwen/qwen3-vl-235b-a22b-instruct\",\n \"qwen/qwen3-vl-235b-a22b-thinking\",\n \"qwen/qwen3-vl-30b-a3b-instruct\",\n \"qwen/qwen3-vl-30b-a3b-thinking\",\n \"qwen/qwen3-vl-32b-instruct\",\n \"qwen/qwen3-vl-8b-instruct\",\n \"qwen/qwen3-vl-8b-thinking\",\n \"qwen/qwen3.5-122b-a10b\",\n \"qwen/qwen3.5-27b\",\n \"qwen/qwen3.5-35b-a3b\",\n \"qwen/qwen3.5-397b-a17b\",\n \"qwen/qwen3.5-9b\",\n \"qwen/qwen3.5-flash-02-23\",\n \"qwen/qwen3.5-plus-02-15\",\n \"qwen/qwen3.5-plus-20260420\",\n \"qwen/qwen3.6-27b\",\n \"qwen/qwen3.6-35b-a3b\",\n \"qwen/qwen3.6-flash\",\n \"qwen/qwen3.6-max-preview\",\n \"qwen/qwen3.6-plus\",\n \"rekaai/reka-edge\",\n \"rekaai/reka-flash-3\",\n \"relace/relace-apply-3\",\n \"relace/relace-search\",\n \"sao10k/l3-euryale-70b\",\n \"sao10k/l3-lunaris-8b\",\n \"sao10k/l3.1-70b-hanami-x1\",\n \"sao10k/l3.1-euryale-70b\",\n \"sao10k/l3.3-euryale-70b\",\n \"stepfun/step-3.5-flash\",\n \"stepfun/step-3.5-flash:free\",\n \"switchpoint/router\",\n \"tencent/hunyuan-a13b-instruct\",\n \"tencent/hy3-preview\",\n \"thedrummer/cydonia-24b-v4.1\",\n \"thedrummer/rocinante-12b\",\n \"thedrummer/skyfall-36b-v2\",\n \"thedrummer/unslopnemo-12b\",\n \"undi95/remm-slerp-l2-13b\",\n \"upstage/solar-pro-3\",\n \"writer/palmyra-x5\",\n \"x-ai/grok-4.20\",\n \"x-ai/grok-4.20-multi-agent\",\n \"x-ai/grok-4.3\",\n \"x-ai/grok-code-fast-1:optimized:free\",\n \"xiaomi/mimo-v2-flash\",\n \"xiaomi/mimo-v2-omni\",\n \"xiaomi/mimo-v2-pro\",\n \"xiaomi/mimo-v2.5\",\n \"xiaomi/mimo-v2.5-pro\",\n \"z-ai/glm-4-32b\",\n \"z-ai/glm-4.5\",\n \"z-ai/glm-4.5-air\",\n \"z-ai/glm-4.5v\",\n \"z-ai/glm-4.6\",\n \"z-ai/glm-4.6v\",\n \"z-ai/glm-4.7\",\n \"z-ai/glm-4.7-flash\",\n \"z-ai/glm-5\",\n \"z-ai/glm-5-turbo\",\n \"z-ai/glm-5.1\",\n \"z-ai/glm-5v-turbo\",\n \"~anthropic/claude-haiku-latest\",\n \"~anthropic/claude-opus-latest\",\n \"~anthropic/claude-sonnet-latest\",\n \"~google/gemini-flash-latest\",\n \"~google/gemini-pro-latest\",\n \"~moonshotai/kimi-latest\",\n \"~openai/gpt-latest\",\n \"~openai/gpt-mini-latest\"\n ],\n \"cloudflare-workers-ai\": [\n \"@cf/aisingapore/gemma-sea-lion-v4-27b-it\",\n \"@cf/deepseek-ai/deepseek-r1-distill-qwen-32b\",\n \"@cf/google/gemma-3-12b-it\",\n \"@cf/google/gemma-4-26b-a4b-it\",\n \"@cf/ibm-granite/granite-4.0-h-micro\",\n \"@cf/meta/llama-2-7b-chat-fp16\",\n \"@cf/meta/llama-3-8b-instruct\",\n \"@cf/meta/llama-3-8b-instruct-awq\",\n \"@cf/meta/llama-3.1-8b-instruct-awq\",\n \"@cf/meta/llama-3.1-8b-instruct-fp8\",\n \"@cf/meta/llama-3.2-11b-vision-instruct\",\n \"@cf/meta/llama-3.2-1b-instruct\",\n \"@cf/meta/llama-3.2-3b-instruct\",\n \"@cf/meta/llama-3.3-70b-instruct-fp8-fast\",\n \"@cf/meta/llama-4-scout-17b-16e-instruct\",\n \"@cf/meta/llama-guard-3-8b\",\n \"@cf/mistral/mistral-7b-instruct-v0.1\",\n \"@cf/mistralai/mistral-small-3.1-24b-instruct\",\n \"@cf/moonshotai/kimi-k2.5\",\n \"@cf/moonshotai/kimi-k2.6\",\n \"@cf/nvidia/nemotron-3-120b-a12b\",\n \"@cf/openai/gpt-oss-120b\",\n \"@cf/openai/gpt-oss-20b\",\n \"@cf/qwen/qwen2.5-coder-32b-instruct\",\n \"@cf/qwen/qwen3-30b-a3b-fp8\",\n \"@cf/qwen/qwq-32b\",\n \"@cf/zai-org/glm-4.7-flash\"\n ],\n \"lmstudio\": [\"openai/gpt-oss-20b\", \"qwen/qwen3-30b-a3b-2507\", \"qwen/qwen3-coder-30b\"],\n \"xiaomi-token-plan-cn\": [\n \"mimo-v2-flash\",\n \"mimo-v2-omni\",\n \"mimo-v2-pro\",\n \"mimo-v2-tts\",\n \"mimo-v2.5\",\n \"mimo-v2.5-pro\"\n ],\n \"morph\": [\"auto\", \"morph-v3-fast\", \"morph-v3-large\"],\n \"nearai\": [\n \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n \"Qwen/Qwen3-Embedding-0.6B\",\n \"Qwen/Qwen3-Reranker-0.6B\",\n \"Qwen/Qwen3-VL-30B-A3B-Instruct\",\n \"Qwen/Qwen3.5-122B-A10B\",\n \"anthropic/claude-haiku-4-5\",\n \"anthropic/claude-opus-4-6\",\n \"anthropic/claude-opus-4-7\",\n \"anthropic/claude-sonnet-4-5\",\n \"anthropic/claude-sonnet-4-6\",\n \"black-forest-labs/FLUX.2-klein-4B\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-flash-lite\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-3.1-flash-lite\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-5\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-mini\",\n \"openai/gpt-5.4-nano\",\n \"openai/gpt-5.5\",\n \"openai/gpt-oss-120b\",\n \"openai/o3\",\n \"openai/o3-mini\",\n \"openai/o4-mini\",\n \"openai/whisper-large-v3\",\n \"zai-org/GLM-5.1-FP8\"\n ],\n \"abacus\": [\n \"Qwen/QwQ-32B\",\n \"Qwen/Qwen2.5-72B-Instruct\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"Qwen/Qwen3-32B\",\n \"Qwen/qwen3-coder-480b-a35b-instruct\",\n \"claude-3-7-sonnet-20250219\",\n \"claude-haiku-4-5-20251001\",\n \"claude-opus-4-1-20250805\",\n \"claude-opus-4-20250514\",\n \"claude-opus-4-5-20251101\",\n \"claude-opus-4-6\",\n \"claude-sonnet-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-sonnet-4-6\",\n \"deepseek-ai/DeepSeek-R1\",\n \"deepseek-ai/DeepSeek-V3.1-Terminus\",\n \"deepseek-ai/DeepSeek-V3.2\",\n \"deepseek/deepseek-v3.1\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-pro\",\n \"gemini-3-flash-preview\",\n \"gemini-3.1-flash-lite-preview\",\n \"gemini-3.1-pro-preview\",\n \"gpt-4.1\",\n \"gpt-4.1-mini\",\n \"gpt-4.1-nano\",\n \"gpt-4o-2024-11-20\",\n \"gpt-4o-mini\",\n \"gpt-5\",\n \"gpt-5-codex\",\n \"gpt-5-mini\",\n \"gpt-5-nano\",\n \"gpt-5.1\",\n \"gpt-5.1-chat-latest\",\n \"gpt-5.1-codex\",\n \"gpt-5.1-codex-max\",\n \"gpt-5.2\",\n \"gpt-5.2-chat-latest\",\n \"gpt-5.2-codex\",\n \"gpt-5.3-chat-latest\",\n \"gpt-5.3-codex\",\n \"gpt-5.3-codex-xhigh\",\n \"gpt-5.4\",\n \"grok-4-0709\",\n \"grok-4-1-fast-non-reasoning\",\n \"grok-4-fast-non-reasoning\",\n \"grok-code-fast-1\",\n \"kimi-k2-turbo-preview\",\n \"kimi-k2.5\",\n \"llama-3.3-70b-versatile\",\n \"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\",\n \"meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo\",\n \"meta-llama/Meta-Llama-3.1-8B-Instruct\",\n \"o3\",\n \"o3-mini\",\n \"o3-pro\",\n \"o4-mini\",\n \"openai/gpt-oss-120b\",\n \"qwen-2.5-coder-32b\",\n \"qwen3-max\",\n \"route-llm\",\n \"zai-org/glm-4.5\",\n \"zai-org/glm-4.6\",\n \"zai-org/glm-4.7\",\n \"zai-org/glm-5\"\n ],\n \"privatemode-ai\": [\"gemma-3-27b\", \"gpt-oss-120b\", \"qwen3-coder-30b-a3b\", \"qwen3-embedding-4b\", \"whisper-large-v3\"],\n \"minimax-cn-coding-plan\": [\n \"MiniMax-M2\",\n \"MiniMax-M2.1\",\n \"MiniMax-M2.5\",\n \"MiniMax-M2.5-highspeed\",\n \"MiniMax-M2.7\",\n \"MiniMax-M2.7-highspeed\"\n ],\n \"xiaomi-token-plan-ams\": [\n \"mimo-v2-flash\",\n \"mimo-v2-omni\",\n \"mimo-v2-pro\",\n \"mimo-v2-tts\",\n \"mimo-v2.5\",\n \"mimo-v2.5-pro\"\n ],\n \"cloudferro-sherlock\": [\n \"MiniMaxAI/MiniMax-M2.5\",\n \"meta-llama/Llama-3.3-70B-Instruct\",\n \"openai/gpt-oss-120b\",\n \"speakleash/Bielik-11B-v2.6-Instruct\",\n \"speakleash/Bielik-11B-v3.0-Instruct\"\n ],\n \"openai\": [\n \"chatgpt-image-latest\",\n \"gpt-3.5-turbo\",\n \"gpt-4\",\n \"gpt-4-turbo\",\n \"gpt-4.1\",\n \"gpt-4.1-mini\",\n \"gpt-4.1-nano\",\n \"gpt-4o\",\n \"gpt-4o-2024-05-13\",\n \"gpt-4o-2024-08-06\",\n \"gpt-4o-2024-11-20\",\n \"gpt-4o-mini\",\n \"gpt-5\",\n \"gpt-5-chat-latest\",\n \"gpt-5-codex\",\n \"gpt-5-mini\",\n \"gpt-5-nano\",\n \"gpt-5-pro\",\n \"gpt-5.1\",\n \"gpt-5.1-chat-latest\",\n \"gpt-5.1-codex\",\n \"gpt-5.1-codex-max\",\n \"gpt-5.1-codex-mini\",\n \"gpt-5.2\",\n \"gpt-5.2-chat-latest\",\n \"gpt-5.2-codex\",\n \"gpt-5.2-pro\",\n \"gpt-5.3-chat-latest\",\n \"gpt-5.3-codex\",\n \"gpt-5.3-codex-spark\",\n \"gpt-5.4\",\n \"gpt-5.4-mini\",\n \"gpt-5.4-nano\",\n \"gpt-5.4-pro\",\n \"gpt-5.5\",\n \"gpt-5.5-pro\",\n \"gpt-image-1\",\n \"gpt-image-1-mini\",\n \"gpt-image-1.5\",\n \"o1\",\n \"o1-mini\",\n \"o1-preview\",\n \"o1-pro\",\n \"o3\",\n \"o3-deep-research\",\n \"o3-mini\",\n \"o3-pro\",\n \"o4-mini\",\n \"o4-mini-deep-research\",\n \"text-embedding-3-large\",\n \"text-embedding-3-small\",\n \"text-embedding-ada-002\"\n ],\n \"dinference\": [\"glm-4.7\", \"glm-5\", \"glm-5.1\", \"gpt-oss-120b\", \"minimax-m2.5\"],\n \"vivgrid\": [\n \"deepseek-v3.2\",\n \"deepseek-v4-pro\",\n \"gemini-3.1-flash-lite-preview\",\n \"gemini-3.1-pro-preview\",\n \"gpt-5-mini\",\n \"gpt-5.1-codex\",\n \"gpt-5.1-codex-max\",\n \"gpt-5.2-codex\",\n \"gpt-5.3-codex\",\n \"gpt-5.4\",\n \"gpt-5.4-mini\",\n \"gpt-5.4-nano\",\n \"gpt-5.5\"\n ],\n \"cerebras\": [\"gpt-oss-120b\", \"llama3.1-8b\", \"qwen-3-235b-a22b-instruct-2507\", \"zai-glm-4.7\"],\n \"vultr\": [\"DeepSeek-V3.2\", \"GLM-5-FP8\", \"Kimi-K2.5\", \"MiniMax-M2.5\", \"gpt-oss-120b\"],\n \"kuae-cloud-coding-plan\": [\"GLM-4.7\"],\n \"modelscope\": [\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n \"Qwen/Qwen3-30B-A3B-Thinking-2507\",\n \"Qwen/Qwen3-Coder-30B-A3B-Instruct\",\n \"ZhipuAI/GLM-4.5\",\n \"ZhipuAI/GLM-4.6\"\n ],\n \"kimi-for-coding\": [\"k2p5\", \"k2p6\", \"kimi-k2-thinking\"],\n \"lucidquery\": [\"lucidnova-rf1-100b\", \"lucidquery-nexus-coder\"],\n \"neuralwatt\": [\n \"MiniMaxAI/MiniMax-M2.5\",\n \"Qwen/Qwen3.5-397B-A17B-FP8\",\n \"Qwen/Qwen3.6-35B-A3B\",\n \"glm-5-fast\",\n \"glm-5.1-fast\",\n \"kimi-k2.5-fast\",\n \"kimi-k2.6-fast\",\n \"mistralai/Devstral-Small-2-24B-Instruct-2512\",\n \"moonshotai/Kimi-K2.5\",\n \"moonshotai/Kimi-K2.6\",\n \"openai/gpt-oss-20b\",\n \"qwen3.5-397b-fast\",\n \"qwen3.6-35b-fast\",\n \"zai-org/GLM-5.1-FP8\"\n ],\n \"jiekou\": [\n \"baidu/ernie-4.5-300b-a47b-paddle\",\n \"baidu/ernie-4.5-vl-424b-a47b\",\n \"claude-haiku-4-5-20251001\",\n \"claude-opus-4-1-20250805\",\n \"claude-opus-4-20250514\",\n \"claude-opus-4-5-20251101\",\n \"claude-opus-4-6\",\n \"claude-sonnet-4-20250514\",\n \"claude-sonnet-4-5-20250929\",\n \"deepseek/deepseek-r1-0528\",\n \"deepseek/deepseek-v3-0324\",\n \"deepseek/deepseek-v3.1\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-flash-lite\",\n \"gemini-2.5-flash-lite-preview-06-17\",\n \"gemini-2.5-flash-lite-preview-09-2025\",\n \"gemini-2.5-flash-preview-05-20\",\n \"gemini-2.5-pro\",\n \"gemini-2.5-pro-preview-06-05\",\n \"gemini-3-flash-preview\",\n \"gemini-3-pro-preview\",\n \"gpt-5-chat-latest\",\n \"gpt-5-codex\",\n \"gpt-5-mini\",\n \"gpt-5-nano\",\n \"gpt-5-pro\",\n \"gpt-5.1\",\n \"gpt-5.1-codex\",\n \"gpt-5.1-codex-max\",\n \"gpt-5.1-codex-mini\",\n \"gpt-5.2\",\n \"gpt-5.2-codex\",\n \"gpt-5.2-pro\",\n \"grok-4-0709\",\n \"grok-4-1-fast-non-reasoning\",\n \"grok-4-1-fast-reasoning\",\n \"grok-4-fast-non-reasoning\",\n \"grok-4-fast-reasoning\",\n \"grok-code-fast-1\",\n \"minimax/minimax-m2.1\",\n \"minimaxai/minimax-m1-80k\",\n \"moonshotai/kimi-k2-0905\",\n \"moonshotai/kimi-k2-instruct\",\n \"moonshotai/kimi-k2.5\",\n \"o3\",\n \"o3-mini\",\n \"o4-mini\",\n \"qwen/qwen3-235b-a22b-fp8\",\n \"qwen/qwen3-235b-a22b-instruct-2507\",\n \"qwen/qwen3-235b-a22b-thinking-2507\",\n \"qwen/qwen3-30b-a3b-fp8\",\n \"qwen/qwen3-32b-fp8\",\n \"qwen/qwen3-coder-480b-a35b-instruct\",\n \"qwen/qwen3-coder-next\",\n \"qwen/qwen3-next-80b-a3b-instruct\",\n \"qwen/qwen3-next-80b-a3b-thinking\",\n \"xiaomimimo/mimo-v2-flash\",\n \"zai-org/glm-4.5\",\n \"zai-org/glm-4.5v\",\n \"zai-org/glm-4.7\",\n \"zai-org/glm-4.7-flash\"\n ],\n \"ovhcloud\": [\n \"gpt-oss-120b\",\n \"gpt-oss-20b\",\n \"llama-3.1-8b-instruct\",\n \"meta-llama-3_3-70b-instruct\",\n \"mistral-7b-instruct-v0.3\",\n \"mistral-nemo-instruct-2407\",\n \"mistral-small-3.2-24b-instruct-2506\",\n \"qwen2.5-vl-72b-instruct\",\n \"qwen3-32b\",\n \"qwen3-coder-30b-a3b-instruct\",\n \"qwen3.5-9b\"\n ],\n \"friendli\": [\n \"MiniMaxAI/MiniMax-M2.5\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"meta-llama/Llama-3.1-8B-Instruct\",\n \"meta-llama/Llama-3.3-70B-Instruct\",\n \"zai-org/GLM-5\",\n \"zai-org/GLM-5.1\"\n ],\n \"openrouter\": [\n \"ai21/jamba-large-1.7\",\n \"aion-labs/aion-1.0\",\n \"aion-labs/aion-1.0-mini\",\n \"aion-labs/aion-2.0\",\n \"aion-labs/aion-rp-llama-3.1-8b\",\n \"alfredpros/codellama-7b-instruct-solidity\",\n \"alibaba/tongyi-deepresearch-30b-a3b\",\n \"allenai/olmo-3-32b-think\",\n \"amazon/nova-2-lite-v1\",\n \"amazon/nova-lite-v1\",\n \"amazon/nova-micro-v1\",\n \"amazon/nova-premier-v1\",\n \"amazon/nova-pro-v1\",\n \"anthracite-org/magnum-v4-72b\",\n \"anthropic/claude-3-haiku\",\n \"anthropic/claude-3.5-haiku\",\n \"anthropic/claude-haiku-4.5\",\n \"anthropic/claude-opus-4\",\n \"anthropic/claude-opus-4.1\",\n \"anthropic/claude-opus-4.5\",\n \"anthropic/claude-opus-4.6\",\n \"anthropic/claude-opus-4.6-fast\",\n \"anthropic/claude-opus-4.7\",\n \"anthropic/claude-opus-4.7-fast\",\n \"anthropic/claude-sonnet-4\",\n \"anthropic/claude-sonnet-4.5\",\n \"anthropic/claude-sonnet-4.6\",\n \"arcee-ai/coder-large\",\n \"arcee-ai/maestro-reasoning\",\n \"arcee-ai/spotlight\",\n \"arcee-ai/trinity-large-thinking\",\n \"arcee-ai/trinity-large-thinking:free\",\n \"arcee-ai/trinity-mini\",\n \"arcee-ai/virtuoso-large\",\n \"baidu/cobuddy:free\",\n \"baidu/ernie-4.5-21b-a3b\",\n \"baidu/ernie-4.5-21b-a3b-thinking\",\n \"baidu/ernie-4.5-300b-a47b\",\n \"baidu/ernie-4.5-vl-28b-a3b\",\n \"baidu/ernie-4.5-vl-424b-a47b\",\n \"baidu/qianfan-ocr-fast\",\n \"bytedance-seed/seed-1.6\",\n \"bytedance-seed/seed-1.6-flash\",\n \"bytedance-seed/seed-2.0-lite\",\n \"bytedance-seed/seed-2.0-mini\",\n \"bytedance/ui-tars-1.5-7b\",\n \"cognitivecomputations/dolphin-mistral-24b-venice-edition:free\",\n \"cohere/command-a\",\n \"cohere/command-r-08-2024\",\n \"cohere/command-r-plus-08-2024\",\n \"cohere/command-r7b-12-2024\",\n \"deepcogito/cogito-v2.1-671b\",\n \"deepseek/deepseek-chat\",\n \"deepseek/deepseek-chat-v3-0324\",\n \"deepseek/deepseek-chat-v3.1\",\n \"deepseek/deepseek-r1\",\n \"deepseek/deepseek-r1-0528\",\n \"deepseek/deepseek-r1-distill-llama-70b\",\n \"deepseek/deepseek-r1-distill-qwen-32b\",\n \"deepseek/deepseek-v3.1-terminus\",\n \"deepseek/deepseek-v3.2\",\n \"deepseek/deepseek-v3.2-exp\",\n \"deepseek/deepseek-v3.2-speciale\",\n \"deepseek/deepseek-v4-flash\",\n \"deepseek/deepseek-v4-flash:free\",\n \"deepseek/deepseek-v4-pro\",\n \"essentialai/rnj-1-instruct\",\n \"google/gemini-2.0-flash-001\",\n \"google/gemini-2.0-flash-lite-001\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-flash-image\",\n \"google/gemini-2.5-flash-lite\",\n \"google/gemini-2.5-flash-lite-preview-09-2025\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-2.5-pro-preview\",\n \"google/gemini-2.5-pro-preview-05-06\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3-pro-image-preview\",\n \"google/gemini-3.1-flash-image-preview\",\n \"google/gemini-3.1-flash-lite\",\n \"google/gemini-3.1-flash-lite-preview\",\n \"google/gemini-3.1-pro-preview\",\n \"google/gemini-3.1-pro-preview-customtools\",\n \"google/gemini-3.5-flash\",\n \"google/gemma-2-27b-it\",\n \"google/gemma-3-12b-it\",\n \"google/gemma-3-27b-it\",\n \"google/gemma-3-4b-it\",\n \"google/gemma-3n-e4b-it\",\n \"google/gemma-4-26b-a4b-it\",\n \"google/gemma-4-26b-a4b-it:free\",\n \"google/gemma-4-31b-it\",\n \"google/gemma-4-31b-it:free\",\n \"google/lyria-3-clip-preview\",\n \"google/lyria-3-pro-preview\",\n \"gryphe/mythomax-l2-13b\",\n \"ibm-granite/granite-4.0-h-micro\",\n \"ibm-granite/granite-4.1-8b\",\n \"inception/mercury-2\",\n \"inclusionai/ling-2.6-1t\",\n \"inclusionai/ling-2.6-flash\",\n \"inclusionai/ring-2.6-1t\",\n \"inflection/inflection-3-pi\",\n \"inflection/inflection-3-productivity\",\n \"kwaipilot/kat-coder-pro-v2\",\n \"liquid/lfm-2-24b-a2b\",\n \"liquid/lfm-2.5-1.2b-instruct:free\",\n \"liquid/lfm-2.5-1.2b-thinking:free\",\n \"mancer/weaver\",\n \"meta-llama/llama-3-70b-instruct\",\n \"meta-llama/llama-3-8b-instruct\",\n \"meta-llama/llama-3.1-70b-instruct\",\n \"meta-llama/llama-3.1-8b-instruct\",\n \"meta-llama/llama-3.2-11b-vision-instruct\",\n \"meta-llama/llama-3.2-1b-instruct\",\n \"meta-llama/llama-3.2-3b-instruct\",\n \"meta-llama/llama-3.2-3b-instruct:free\",\n \"meta-llama/llama-3.3-70b-instruct\",\n \"meta-llama/llama-3.3-70b-instruct:free\",\n \"meta-llama/llama-4-maverick\",\n \"meta-llama/llama-4-scout\",\n \"meta-llama/llama-guard-3-8b\",\n \"meta-llama/llama-guard-4-12b\",\n \"microsoft/phi-4\",\n \"microsoft/phi-4-mini-instruct\",\n \"microsoft/wizardlm-2-8x22b\",\n \"minimax/minimax-01\",\n \"minimax/minimax-m1\",\n \"minimax/minimax-m2\",\n \"minimax/minimax-m2-her\",\n \"minimax/minimax-m2.1\",\n \"minimax/minimax-m2.5\",\n \"minimax/minimax-m2.5:free\",\n \"minimax/minimax-m2.7\",\n \"mistralai/codestral-2508\",\n \"mistralai/devstral-2512\",\n \"mistralai/devstral-medium\",\n \"mistralai/devstral-small\",\n \"mistralai/ministral-14b-2512\",\n \"mistralai/ministral-3b-2512\",\n \"mistralai/ministral-8b-2512\",\n \"mistralai/mistral-7b-instruct-v0.1\",\n \"mistralai/mistral-large\",\n \"mistralai/mistral-large-2407\",\n \"mistralai/mistral-large-2411\",\n \"mistralai/mistral-large-2512\",\n \"mistralai/mistral-medium-3\",\n \"mistralai/mistral-medium-3-5\",\n \"mistralai/mistral-medium-3.1\",\n \"mistralai/mistral-nemo\",\n \"mistralai/mistral-saba\",\n \"mistralai/mistral-small-24b-instruct-2501\",\n \"mistralai/mistral-small-2603\",\n \"mistralai/mistral-small-3.1-24b-instruct\",\n \"mistralai/mistral-small-3.2-24b-instruct\",\n \"mistralai/mixtral-8x22b-instruct\",\n \"mistralai/pixtral-large-2411\",\n \"mistralai/voxtral-small-24b-2507\",\n \"moonshotai/kimi-k2\",\n \"moonshotai/kimi-k2-0905\",\n \"moonshotai/kimi-k2-thinking\",\n \"moonshotai/kimi-k2.5\",\n \"moonshotai/kimi-k2.6\",\n \"morph/morph-v3-fast\",\n \"morph/morph-v3-large\",\n \"nex-agi/deepseek-v3.1-nex-n1\",\n \"nousresearch/hermes-2-pro-llama-3-8b\",\n \"nousresearch/hermes-3-llama-3.1-405b\",\n \"nousresearch/hermes-3-llama-3.1-405b:free\",\n \"nousresearch/hermes-3-llama-3.1-70b\",\n \"nousresearch/hermes-4-405b\",\n \"nousresearch/hermes-4-70b\",\n \"nvidia/llama-3.3-nemotron-super-49b-v1.5\",\n \"nvidia/nemotron-3-nano-30b-a3b\",\n \"nvidia/nemotron-3-nano-30b-a3b:free\",\n \"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free\",\n \"nvidia/nemotron-3-super-120b-a12b\",\n \"nvidia/nemotron-3-super-120b-a12b:free\",\n \"nvidia/nemotron-nano-12b-v2-vl:free\",\n \"nvidia/nemotron-nano-9b-v2\",\n \"nvidia/nemotron-nano-9b-v2:free\",\n \"openai/gpt-3.5-turbo\",\n \"openai/gpt-3.5-turbo-0613\",\n \"openai/gpt-3.5-turbo-16k\",\n \"openai/gpt-3.5-turbo-instruct\",\n \"openai/gpt-4\",\n \"openai/gpt-4-0314\",\n \"openai/gpt-4-1106-preview\",\n \"openai/gpt-4-turbo\",\n \"openai/gpt-4-turbo-preview\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-4o\",\n \"openai/gpt-4o-2024-05-13\",\n \"openai/gpt-4o-2024-08-06\",\n \"openai/gpt-4o-2024-11-20\",\n \"openai/gpt-4o-audio-preview\",\n \"openai/gpt-4o-mini\",\n \"openai/gpt-4o-mini-2024-07-18\",\n \"openai/gpt-4o-mini-search-preview\",\n \"openai/gpt-4o-search-preview\",\n \"openai/gpt-5\",\n \"openai/gpt-5-chat\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5-image\",\n \"openai/gpt-5-image-mini\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5-pro\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.1-chat\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-max\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-chat\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-5.3-chat\",\n \"openai/gpt-5.3-codex\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-image-2\",\n \"openai/gpt-5.4-mini\",\n \"openai/gpt-5.4-nano\",\n \"openai/gpt-5.4-pro\",\n \"openai/gpt-5.5\",\n \"openai/gpt-5.5-pro\",\n \"openai/gpt-audio\",\n \"openai/gpt-audio-mini\",\n \"openai/gpt-chat-latest\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-120b:free\",\n \"openai/gpt-oss-20b\",\n \"openai/gpt-oss-20b:free\",\n \"openai/gpt-oss-safeguard-20b\",\n \"openai/o1\",\n \"openai/o1-pro\",\n \"openai/o3\",\n \"openai/o3-deep-research\",\n \"openai/o3-mini\",\n \"openai/o3-mini-high\",\n \"openai/o3-pro\",\n \"openai/o4-mini\",\n \"openai/o4-mini-deep-research\",\n \"openai/o4-mini-high\",\n \"openrouter/auto\",\n \"openrouter/bodybuilder\",\n \"openrouter/free\",\n \"openrouter/owl-alpha\",\n \"openrouter/pareto-code\",\n \"perceptron/perceptron-mk1\",\n \"perplexity/sonar\",\n \"perplexity/sonar-deep-research\",\n \"perplexity/sonar-pro\",\n \"perplexity/sonar-pro-search\",\n \"perplexity/sonar-reasoning-pro\",\n \"poolside/laguna-m.1:free\",\n \"poolside/laguna-xs.2:free\",\n \"prime-intellect/intellect-3\",\n \"qwen/qwen-2.5-72b-instruct\",\n \"qwen/qwen-2.5-7b-instruct\",\n \"qwen/qwen-2.5-coder-32b-instruct\",\n \"qwen/qwen-plus\",\n \"qwen/qwen-plus-2025-07-28\",\n \"qwen/qwen-plus-2025-07-28:thinking\",\n \"qwen/qwen2.5-vl-72b-instruct\",\n \"qwen/qwen3-14b\",\n \"qwen/qwen3-235b-a22b\",\n \"qwen/qwen3-235b-a22b-2507\",\n \"qwen/qwen3-235b-a22b-thinking-2507\",\n \"qwen/qwen3-30b-a3b\",\n \"qwen/qwen3-30b-a3b-instruct-2507\",\n \"qwen/qwen3-30b-a3b-thinking-2507\",\n \"qwen/qwen3-32b\",\n \"qwen/qwen3-8b\",\n \"qwen/qwen3-coder\",\n \"qwen/qwen3-coder-30b-a3b-instruct\",\n \"qwen/qwen3-coder-flash\",\n \"qwen/qwen3-coder-next\",\n \"qwen/qwen3-coder-plus\",\n \"qwen/qwen3-coder:free\",\n \"qwen/qwen3-max\",\n \"qwen/qwen3-max-thinking\",\n \"qwen/qwen3-next-80b-a3b-instruct\",\n \"qwen/qwen3-next-80b-a3b-instruct:free\",\n \"qwen/qwen3-next-80b-a3b-thinking\",\n \"qwen/qwen3-vl-235b-a22b-instruct\",\n \"qwen/qwen3-vl-235b-a22b-thinking\",\n \"qwen/qwen3-vl-30b-a3b-instruct\",\n \"qwen/qwen3-vl-30b-a3b-thinking\",\n \"qwen/qwen3-vl-32b-instruct\",\n \"qwen/qwen3-vl-8b-instruct\",\n \"qwen/qwen3-vl-8b-thinking\",\n \"qwen/qwen3.5-122b-a10b\",\n \"qwen/qwen3.5-27b\",\n \"qwen/qwen3.5-35b-a3b\",\n \"qwen/qwen3.5-397b-a17b\",\n \"qwen/qwen3.5-9b\",\n \"qwen/qwen3.5-flash-02-23\",\n \"qwen/qwen3.5-plus-02-15\",\n \"qwen/qwen3.5-plus-20260420\",\n \"qwen/qwen3.6-27b\",\n \"qwen/qwen3.6-35b-a3b\",\n \"qwen/qwen3.6-flash\",\n \"qwen/qwen3.6-max-preview\",\n \"qwen/qwen3.6-plus\",\n \"qwen/qwen3.7-max\",\n \"rekaai/reka-edge\",\n \"rekaai/reka-flash-3\",\n \"relace/relace-apply-3\",\n \"relace/relace-search\",\n \"sao10k/l3-euryale-70b\",\n \"sao10k/l3-lunaris-8b\",\n \"sao10k/l3.1-70b-hanami-x1\",\n \"sao10k/l3.1-euryale-70b\",\n \"sao10k/l3.3-euryale-70b\",\n \"stepfun/step-3.5-flash\",\n \"switchpoint/router\",\n \"tencent/hunyuan-a13b-instruct\",\n \"tencent/hy3-preview\",\n \"thedrummer/cydonia-24b-v4.1\",\n \"thedrummer/rocinante-12b\",\n \"thedrummer/skyfall-36b-v2\",\n \"thedrummer/unslopnemo-12b\",\n \"undi95/remm-slerp-l2-13b\",\n \"upstage/solar-pro-3\",\n \"writer/palmyra-x5\",\n \"x-ai/grok-4.20\",\n \"x-ai/grok-4.20-multi-agent\",\n \"x-ai/grok-4.3\",\n \"x-ai/grok-build-0.1\",\n \"xiaomi/mimo-v2-flash\",\n \"xiaomi/mimo-v2-omni\",\n \"xiaomi/mimo-v2-pro\",\n \"xiaomi/mimo-v2.5\",\n \"xiaomi/mimo-v2.5-pro\",\n \"z-ai/glm-4-32b\",\n \"z-ai/glm-4.5\",\n \"z-ai/glm-4.5-air\",\n \"z-ai/glm-4.5-air:free\",\n \"z-ai/glm-4.5v\",\n \"z-ai/glm-4.6\",\n \"z-ai/glm-4.6v\",\n \"z-ai/glm-4.7\",\n \"z-ai/glm-4.7-flash\",\n \"z-ai/glm-5\",\n \"z-ai/glm-5-turbo\",\n \"z-ai/glm-5.1\",\n \"z-ai/glm-5v-turbo\",\n \"~anthropic/claude-haiku-latest\",\n \"~anthropic/claude-opus-latest\",\n \"~anthropic/claude-sonnet-latest\",\n \"~google/gemini-flash-latest\",\n \"~google/gemini-pro-latest\",\n \"~moonshotai/kimi-latest\",\n \"~openai/gpt-latest\",\n \"~openai/gpt-mini-latest\"\n ],\n \"regolo-ai\": [\n \"gpt-oss-120b\",\n \"gpt-oss-20b\",\n \"llama-3.1-8b-instruct\",\n \"llama-3.3-70b-instruct\",\n \"minimax-m2.5\",\n \"mistral-small-4-119b\",\n \"mistral-small3.2\",\n \"qwen-image\",\n \"qwen3-coder-next\",\n \"qwen3-embedding-8b\",\n \"qwen3-reranker-4b\",\n \"qwen3.5-122b\",\n \"qwen3.5-9b\"\n ],\n \"claudinio\": [\"claudinio\"],\n \"orcarouter\": [\n \"anthropic/claude-haiku-4.5\",\n \"anthropic/claude-opus-4\",\n \"anthropic/claude-opus-4.1\",\n \"anthropic/claude-opus-4.5\",\n \"anthropic/claude-opus-4.6\",\n \"anthropic/claude-opus-4.7\",\n \"anthropic/claude-sonnet-4\",\n \"anthropic/claude-sonnet-4.5\",\n \"anthropic/claude-sonnet-4.6\",\n \"deepseek/deepseek-chat\",\n \"deepseek/deepseek-reasoner\",\n \"deepseek/deepseek-v4-flash\",\n \"deepseek/deepseek-v4-pro\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-flash-lite\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3-pro-preview\",\n \"google/gemini-3.1-flash-lite-preview\",\n \"google/gemini-3.1-pro-preview\",\n \"google/gemini-3.1-pro-preview-customtools\",\n \"google/gemini-flash-latest\",\n \"google/gemini-flash-lite-latest\",\n \"google/gemma-4-26b-a4b-it\",\n \"google/gemma-4-31b-it\",\n \"grok/grok-4.3\",\n \"kimi/kimi-k2.5\",\n \"kimi/kimi-k2.6\",\n \"minimax/minimax-m2.5\",\n \"minimax/minimax-m2.5-highspeed\",\n \"minimax/minimax-m2.7\",\n \"minimax/minimax-m2.7-highspeed\",\n \"openai/gpt-3.5-turbo\",\n \"openai/gpt-4\",\n \"openai/gpt-4-turbo\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-4o\",\n \"openai/gpt-4o-2024-05-13\",\n \"openai/gpt-4o-2024-08-06\",\n \"openai/gpt-4o-2024-11-20\",\n \"openai/gpt-4o-mini\",\n \"openai/gpt-5\",\n \"openai/gpt-5-chat-latest\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5-pro\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.1-chat-latest\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-max\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-chat-latest\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-5.3-chat-latest\",\n \"openai/gpt-5.3-codex\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-mini\",\n \"openai/gpt-5.4-nano\",\n \"openai/gpt-5.4-pro\",\n \"openai/gpt-5.5\",\n \"openai/gpt-5.5-pro\",\n \"orcarouter/auto\",\n \"qwen/qwen3-max\",\n \"qwen/qwen3.5-122b-a10b\",\n \"qwen/qwen3.5-27b\",\n \"qwen/qwen3.5-35b-a3b\",\n \"qwen/qwen3.5-397b-a17b\",\n \"qwen/qwen3.5-plus\",\n \"qwen/qwen3.6-35b-a3b\",\n \"qwen/qwen3.6-plus\",\n \"z-ai/glm-4.5\",\n \"z-ai/glm-4.5-air\",\n \"z-ai/glm-4.6\",\n \"z-ai/glm-4.7\",\n \"z-ai/glm-5\",\n \"z-ai/glm-5.1\"\n ],\n \"opencode-go\": [\n \"deepseek-v4-flash\",\n \"deepseek-v4-pro\",\n \"glm-5\",\n \"glm-5.1\",\n \"kimi-k2.5\",\n \"kimi-k2.6\",\n \"mimo-v2.5\",\n \"mimo-v2.5-pro\",\n \"minimax-m2.5\",\n \"minimax-m2.7\",\n \"qwen3.5-plus\",\n \"qwen3.6-plus\"\n ],\n \"llmgateway\": [\n \"auto\",\n \"claude-3-5-sonnet-20241022\",\n \"claude-3-7-sonnet\",\n \"claude-3-7-sonnet-20250219\",\n \"claude-3-opus\",\n \"claude-haiku-4-5\",\n \"claude-haiku-4-5-20251001\",\n \"claude-opus-4-1-20250805\",\n \"claude-opus-4-20250514\",\n \"claude-opus-4-5-20251101\",\n \"claude-opus-4-6\",\n \"claude-opus-4-7\",\n \"claude-sonnet-4-20250514\",\n \"claude-sonnet-4-5\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-sonnet-4-6\",\n \"codestral-2508\",\n \"custom\",\n \"deepseek-r1-0528\",\n \"deepseek-v3.1\",\n \"deepseek-v3.2\",\n \"deepseek-v4-flash\",\n \"deepseek-v4-pro\",\n \"devstral-2512\",\n \"devstral-small-2507\",\n \"gemini-2.0-flash\",\n \"gemini-2.0-flash-lite\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-flash-lite\",\n \"gemini-2.5-pro\",\n \"gemini-3-flash-preview\",\n \"gemini-3.1-flash-lite\",\n \"gemini-3.1-flash-lite-preview\",\n \"gemini-3.1-pro-preview\",\n \"gemini-3.5-flash\",\n \"gemini-pro-latest\",\n \"gemma-2-27b-it-together\",\n \"gemma-3-1b-it\",\n \"gemma-3-27b\",\n \"glm-4-32b-0414-128k\",\n \"glm-4.5\",\n \"glm-4.5-air\",\n \"glm-4.5-airx\",\n \"glm-4.5-flash\",\n \"glm-4.5-x\",\n \"glm-4.5v\",\n \"glm-4.6\",\n \"glm-4.6v\",\n \"glm-4.6v-flash\",\n \"glm-4.6v-flashx\",\n \"glm-4.7\",\n \"glm-4.7-flash\",\n \"glm-4.7-flashx\",\n \"glm-5\",\n \"glm-5.1\",\n \"gpt-3.5-turbo\",\n \"gpt-4\",\n \"gpt-4-turbo\",\n \"gpt-4.1\",\n \"gpt-4.1-mini\",\n \"gpt-4.1-nano\",\n \"gpt-4o\",\n \"gpt-4o-mini\",\n \"gpt-4o-mini-search-preview\",\n \"gpt-4o-search-preview\",\n \"gpt-5\",\n \"gpt-5-chat-latest\",\n \"gpt-5-mini\",\n \"gpt-5-nano\",\n \"gpt-5-pro\",\n \"gpt-5.1\",\n \"gpt-5.1-codex\",\n \"gpt-5.1-codex-mini\",\n \"gpt-5.2\",\n \"gpt-5.2-chat-latest\",\n \"gpt-5.2-codex\",\n \"gpt-5.2-pro\",\n \"gpt-5.3-chat-latest\",\n \"gpt-5.3-codex\",\n \"gpt-5.4\",\n \"gpt-5.4-mini\",\n \"gpt-5.4-nano\",\n \"gpt-5.4-pro\",\n \"gpt-5.5\",\n \"gpt-5.5-pro\",\n \"gpt-oss-120b\",\n \"gpt-oss-20b\",\n \"grok-4-0709\",\n \"grok-4-1-fast-reasoning\",\n \"grok-4-20-beta-0309-non-reasoning\",\n \"grok-4-20-beta-0309-reasoning\",\n \"grok-4-20-non-reasoning\",\n \"grok-4-20-reasoning\",\n \"grok-4-3\",\n \"grok-4-fast-reasoning\",\n \"hermes-2-pro-llama-3-8b\",\n \"kimi-k2\",\n \"kimi-k2-thinking\",\n \"kimi-k2-thinking-turbo\",\n \"kimi-k2.5\",\n \"kimi-k2.6\",\n \"llama-3-70b-instruct\",\n \"llama-3-8b-instruct\",\n \"llama-3.1-70b-instruct\",\n \"llama-3.1-8b-instruct\",\n \"llama-3.1-nemotron-ultra-253b\",\n \"llama-3.2-11b-instruct\",\n \"llama-3.2-3b-instruct\",\n \"llama-3.3-70b-instruct\",\n \"llama-4-maverick-17b-instruct\",\n \"llama-4-scout\",\n \"llama-4-scout-17b-instruct\",\n \"mimo-v2-flash\",\n \"mimo-v2-omni\",\n \"mimo-v2-pro\",\n \"mimo-v2.5\",\n \"mimo-v2.5-pro\",\n \"minimax-m2\",\n \"minimax-m2.1\",\n \"minimax-m2.1-lightning\",\n \"minimax-m2.5\",\n \"minimax-m2.5-highspeed\",\n \"minimax-m2.7\",\n \"minimax-m2.7-highspeed\",\n \"minimax-text-01\",\n \"ministral-14b-2512\",\n \"ministral-3b-2512\",\n \"ministral-8b-2512\",\n \"mistral-large-2512\",\n \"mistral-large-latest\",\n \"mistral-small-2506\",\n \"o1\",\n \"o3\",\n \"o3-mini\",\n \"o4-mini\",\n \"pixtral-large-latest\",\n \"qwen-coder-plus\",\n \"qwen-flash\",\n \"qwen-max\",\n \"qwen-max-latest\",\n \"qwen-omni-turbo\",\n \"qwen-plus\",\n \"qwen-plus-latest\",\n \"qwen-turbo\",\n \"qwen-vl-max\",\n \"qwen-vl-plus\",\n \"qwen2-5-vl-32b-instruct\",\n \"qwen2-5-vl-72b-instruct\",\n \"qwen25-coder-7b\",\n \"qwen3-235b-a22b-fp8\",\n \"qwen3-235b-a22b-instruct-2507\",\n \"qwen3-235b-a22b-thinking-2507\",\n \"qwen3-30b-a3b-fp8\",\n \"qwen3-30b-a3b-instruct-2507\",\n \"qwen3-30b-a3b-thinking-2507\",\n \"qwen3-32b\",\n \"qwen3-32b-fp8\",\n \"qwen3-4b-fp8\",\n \"qwen3-coder-30b-a3b-instruct\",\n \"qwen3-coder-480b-a35b-instruct\",\n \"qwen3-coder-flash\",\n \"qwen3-coder-next\",\n \"qwen3-coder-plus\",\n \"qwen3-max\",\n \"qwen3-max-2026-01-23\",\n \"qwen3-next-80b-a3b-instruct\",\n \"qwen3-next-80b-a3b-thinking\",\n \"qwen3-vl-235b-a22b-instruct\",\n \"qwen3-vl-235b-a22b-thinking\",\n \"qwen3-vl-30b-a3b-instruct\",\n \"qwen3-vl-30b-a3b-thinking\",\n \"qwen3-vl-8b-instruct\",\n \"qwen3-vl-flash\",\n \"qwen3-vl-plus\",\n \"qwen3.6-35b-a3b\",\n \"qwen3.6-max-preview\",\n \"qwen3.6-plus\",\n \"qwen35-397b-a17b\",\n \"qwen37-max\",\n \"qwq-plus\",\n \"seed-1-6-250615\",\n \"seed-1-6-250915\",\n \"seed-1-6-flash-250715\",\n \"seed-1-8-251228\",\n \"sonar\",\n \"sonar-pro\",\n \"sonar-reasoning-pro\"\n ],\n \"poe\": [\n \"anthropic/claude-haiku-3\",\n \"anthropic/claude-haiku-3.5\",\n \"anthropic/claude-haiku-4.5\",\n \"anthropic/claude-opus-4\",\n \"anthropic/claude-opus-4.1\",\n \"anthropic/claude-opus-4.5\",\n \"anthropic/claude-opus-4.6\",\n \"anthropic/claude-opus-4.7\",\n \"anthropic/claude-sonnet-3.7\",\n \"anthropic/claude-sonnet-4\",\n \"anthropic/claude-sonnet-4.5\",\n \"anthropic/claude-sonnet-4.6\",\n \"cerebras/gpt-oss-120b-cs\",\n \"cerebras/llama-3.1-8b-cs\",\n \"elevenlabs/elevenlabs-music\",\n \"elevenlabs/elevenlabs-v2.5-turbo\",\n \"elevenlabs/elevenlabs-v3\",\n \"empiriolabs/deepseek-v4-flash-el\",\n \"empiriolabs/deepseek-v4-pro-el\",\n \"fireworks-ai/kimi-k2.5-fw\",\n \"google/gemini-2.0-flash\",\n \"google/gemini-2.0-flash-lite\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-flash-lite\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-3-flash\",\n \"google/gemini-3.1-flash-lite\",\n \"google/gemini-3.1-pro\",\n \"google/gemini-3.5-flash\",\n \"google/gemma-4-31b\",\n \"google/imagen-3\",\n \"google/imagen-3-fast\",\n \"google/imagen-4\",\n \"google/imagen-4-fast\",\n \"google/imagen-4-ultra\",\n \"google/lyria\",\n \"google/nano-banana\",\n \"google/nano-banana-pro\",\n \"google/veo-2\",\n \"google/veo-3\",\n \"google/veo-3-fast\",\n \"google/veo-3.1\",\n \"google/veo-3.1-fast\",\n \"ideogramai/ideogram\",\n \"ideogramai/ideogram-v2\",\n \"ideogramai/ideogram-v2a\",\n \"ideogramai/ideogram-v2a-turbo\",\n \"lumalabs/ray2\",\n \"novita/deepseek-v3.2\",\n \"novita/glm-4.6\",\n \"novita/glm-4.6v\",\n \"novita/glm-4.7-flash\",\n \"novita/glm-4.7-n\",\n \"novita/glm-5\",\n \"novita/kimi-k2-thinking\",\n \"novita/kimi-k2.5\",\n \"novita/kimi-k2.6\",\n \"novita/minimax-m2.1\",\n \"openai/dall-e-3\",\n \"openai/gpt-3.5-turbo\",\n \"openai/gpt-3.5-turbo-instruct\",\n \"openai/gpt-3.5-turbo-raw\",\n \"openai/gpt-4-turbo\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-4o\",\n \"openai/gpt-4o-aug\",\n \"openai/gpt-4o-mini\",\n \"openai/gpt-4o-mini-search\",\n \"openai/gpt-4o-search\",\n \"openai/gpt-5\",\n \"openai/gpt-5-chat\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5-pro\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-max\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.1-instant\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-instant\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-5.3-codex\",\n \"openai/gpt-5.3-codex-spark\",\n \"openai/gpt-5.3-instant\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-mini\",\n \"openai/gpt-5.4-nano\",\n \"openai/gpt-5.4-pro\",\n \"openai/gpt-5.5\",\n \"openai/gpt-5.5-pro\",\n \"openai/gpt-image-1\",\n \"openai/gpt-image-1-mini\",\n \"openai/gpt-image-1.5\",\n \"openai/gpt-image-2\",\n \"openai/o1\",\n \"openai/o1-pro\",\n \"openai/o3\",\n \"openai/o3-deep-research\",\n \"openai/o3-mini\",\n \"openai/o3-mini-high\",\n \"openai/o3-pro\",\n \"openai/o4-mini\",\n \"openai/o4-mini-deep-research\",\n \"openai/sora-2\",\n \"openai/sora-2-pro\",\n \"poetools/claude-code\",\n \"runwayml/runway\",\n \"runwayml/runway-gen-4-turbo\",\n \"stabilityai/stablediffusionxl\",\n \"topazlabs-co/topazlabs\",\n \"trytako/tako\",\n \"xai/grok-3\",\n \"xai/grok-3-mini\",\n \"xai/grok-4\",\n \"xai/grok-4-fast-non-reasoning\",\n \"xai/grok-4-fast-reasoning\",\n \"xai/grok-4.1-fast-non-reasoning\",\n \"xai/grok-4.1-fast-reasoning\",\n \"xai/grok-4.20-multi-agent\",\n \"xai/grok-code-fast-1\"\n ],\n \"minimax\": [\n \"MiniMax-M2\",\n \"MiniMax-M2.1\",\n \"MiniMax-M2.5\",\n \"MiniMax-M2.5-highspeed\",\n \"MiniMax-M2.7\",\n \"MiniMax-M2.7-highspeed\"\n ],\n \"groq\": [\n \"allam-2-7b\",\n \"canopylabs/orpheus-arabic-saudi\",\n \"canopylabs/orpheus-v1-english\",\n \"groq/compound\",\n \"groq/compound-mini\",\n \"llama-3.1-8b-instant\",\n \"llama-3.3-70b-versatile\",\n \"meta-llama/llama-4-scout-17b-16e-instruct\",\n \"meta-llama/llama-prompt-guard-2-22m\",\n \"meta-llama/llama-prompt-guard-2-86m\",\n \"moonshotai/kimi-k2-instruct-0905\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"openai/gpt-oss-safeguard-20b\",\n \"qwen/qwen3-32b\",\n \"whisper-large-v3\",\n \"whisper-large-v3-turbo\"\n ],\n \"xiaomi-token-plan-sgp\": [\n \"mimo-v2-flash\",\n \"mimo-v2-omni\",\n \"mimo-v2-pro\",\n \"mimo-v2-tts\",\n \"mimo-v2.5\",\n \"mimo-v2.5-pro\"\n ],\n \"siliconflow\": [\n \"ByteDance-Seed/Seed-OSS-36B-Instruct\",\n \"MiniMaxAI/MiniMax-M2.1\",\n \"MiniMaxAI/MiniMax-M2.5\",\n \"Qwen/QwQ-32B\",\n \"Qwen/Qwen2.5-14B-Instruct\",\n \"Qwen/Qwen2.5-32B-Instruct\",\n \"Qwen/Qwen2.5-72B-Instruct\",\n \"Qwen/Qwen2.5-72B-Instruct-128K\",\n \"Qwen/Qwen2.5-7B-Instruct\",\n \"Qwen/Qwen2.5-Coder-32B-Instruct\",\n \"Qwen/Qwen2.5-VL-32B-Instruct\",\n \"Qwen/Qwen2.5-VL-72B-Instruct\",\n \"Qwen/Qwen2.5-VL-7B-Instruct\",\n \"Qwen/Qwen3-14B\",\n \"Qwen/Qwen3-235B-A22B\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n \"Qwen/Qwen3-30B-A3B-Thinking-2507\",\n \"Qwen/Qwen3-32B\",\n \"Qwen/Qwen3-8B\",\n \"Qwen/Qwen3-Coder-30B-A3B-Instruct\",\n \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n \"Qwen/Qwen3-Next-80B-A3B-Thinking\",\n \"Qwen/Qwen3-Omni-30B-A3B-Captioner\",\n \"Qwen/Qwen3-Omni-30B-A3B-Instruct\",\n \"Qwen/Qwen3-Omni-30B-A3B-Thinking\",\n \"Qwen/Qwen3-VL-235B-A22B-Instruct\",\n \"Qwen/Qwen3-VL-235B-A22B-Thinking\",\n \"Qwen/Qwen3-VL-30B-A3B-Instruct\",\n \"Qwen/Qwen3-VL-30B-A3B-Thinking\",\n \"Qwen/Qwen3-VL-32B-Instruct\",\n \"Qwen/Qwen3-VL-32B-Thinking\",\n \"Qwen/Qwen3-VL-8B-Instruct\",\n \"Qwen/Qwen3-VL-8B-Thinking\",\n \"THUDM/GLM-4-32B-0414\",\n \"THUDM/GLM-4-9B-0414\",\n \"THUDM/GLM-Z1-32B-0414\",\n \"THUDM/GLM-Z1-9B-0414\",\n \"baidu/ERNIE-4.5-300B-A47B\",\n \"deepseek-ai/DeepSeek-R1\",\n \"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B\",\n \"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B\",\n \"deepseek-ai/DeepSeek-V3\",\n \"deepseek-ai/DeepSeek-V3.1\",\n \"deepseek-ai/DeepSeek-V3.1-Terminus\",\n \"deepseek-ai/DeepSeek-V3.2\",\n \"deepseek-ai/DeepSeek-V3.2-Exp\",\n \"deepseek-ai/deepseek-v4-flash\",\n \"deepseek-ai/deepseek-v4-pro\",\n \"deepseek-ai/deepseek-vl2\",\n \"inclusionAI/Ling-flash-2.0\",\n \"inclusionAI/Ling-mini-2.0\",\n \"inclusionAI/Ring-flash-2.0\",\n \"meta-llama/Meta-Llama-3.1-8B-Instruct\",\n \"moonshotai/Kimi-K2-Instruct\",\n \"moonshotai/Kimi-K2-Instruct-0905\",\n \"moonshotai/Kimi-K2-Thinking\",\n \"moonshotai/Kimi-K2.5\",\n \"moonshotai/Kimi-K2.6\",\n \"nex-agi/DeepSeek-V3.1-Nex-N1\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"stepfun-ai/Step-3.5-Flash\",\n \"tencent/Hunyuan-A13B-Instruct\",\n \"tencent/Hunyuan-MT-7B\",\n \"zai-org/GLM-4.5\",\n \"zai-org/GLM-4.5-Air\",\n \"zai-org/GLM-4.5V\",\n \"zai-org/GLM-4.6\",\n \"zai-org/GLM-4.6V\",\n \"zai-org/GLM-4.7\",\n \"zai-org/GLM-5\",\n \"zai-org/GLM-5.1\",\n \"zai-org/GLM-5V-Turbo\"\n ],\n \"ollama-cloud\": [\n \"cogito-2.1:671b\",\n \"deepseek-v3.1:671b\",\n \"deepseek-v3.2\",\n \"deepseek-v4-flash\",\n \"deepseek-v4-pro\",\n \"devstral-2:123b\",\n \"devstral-small-2:24b\",\n \"gemini-3-flash-preview\",\n \"gemma3:12b\",\n \"gemma3:27b\",\n \"gemma3:4b\",\n \"gemma4:31b\",\n \"glm-4.6\",\n \"glm-4.7\",\n \"glm-5\",\n \"glm-5.1\",\n \"gpt-oss:120b\",\n \"gpt-oss:20b\",\n \"kimi-k2-thinking\",\n \"kimi-k2.5\",\n \"kimi-k2.6\",\n \"kimi-k2:1t\",\n \"minimax-m2\",\n \"minimax-m2.1\",\n \"minimax-m2.5\",\n \"minimax-m2.7\",\n \"ministral-3:14b\",\n \"ministral-3:3b\",\n \"ministral-3:8b\",\n \"mistral-large-3:675b\",\n \"nemotron-3-nano:30b\",\n \"nemotron-3-super\",\n \"qwen3-coder-next\",\n \"qwen3-coder:480b\",\n \"qwen3-next:80b\",\n \"qwen3-vl:235b\",\n \"qwen3-vl:235b-instruct\",\n \"qwen3.5:397b\",\n \"rnj-1:8b\"\n ],\n \"databricks\": [\n \"databricks-claude-haiku-4-5\",\n \"databricks-claude-opus-4-1\",\n \"databricks-claude-opus-4-5\",\n \"databricks-claude-opus-4-6\",\n \"databricks-claude-opus-4-7\",\n \"databricks-claude-sonnet-4\",\n \"databricks-claude-sonnet-4-5\",\n \"databricks-claude-sonnet-4-6\",\n \"databricks-gemini-2-5-flash\",\n \"databricks-gemini-2-5-pro\",\n \"databricks-gemini-3-1-flash-lite\",\n \"databricks-gemini-3-1-pro\",\n \"databricks-gemini-3-flash\",\n \"databricks-gemini-3-pro\",\n \"databricks-gpt-5\",\n \"databricks-gpt-5-1\",\n \"databricks-gpt-5-2\",\n \"databricks-gpt-5-4\",\n \"databricks-gpt-5-4-mini\",\n \"databricks-gpt-5-4-nano\",\n \"databricks-gpt-5-5\",\n \"databricks-gpt-5-mini\",\n \"databricks-gpt-5-nano\",\n \"databricks-gpt-oss-120b\",\n \"databricks-gpt-oss-20b\"\n ],\n \"berget\": [\n \"google/gemma-4-31B-it\",\n \"meta-llama/Llama-3.3-70B-Instruct\",\n \"mistralai/Mistral-Medium-3.5-128B\",\n \"mistralai/Mistral-Small-3.2-24B-Instruct-2506\",\n \"moonshotai/Kimi-K2.6\",\n \"openai/gpt-oss-120b\",\n \"zai-org/GLM-4.7\"\n ],\n \"moonshotai-cn\": [\n \"kimi-k2-0711-preview\",\n \"kimi-k2-0905-preview\",\n \"kimi-k2-thinking\",\n \"kimi-k2-thinking-turbo\",\n \"kimi-k2-turbo-preview\",\n \"kimi-k2.5\",\n \"kimi-k2.6\"\n ],\n \"alibaba-coding-plan-cn\": [\n \"MiniMax-M2.5\",\n \"glm-4.7\",\n \"glm-5\",\n \"kimi-k2.5\",\n \"qwen3-coder-next\",\n \"qwen3-coder-plus\",\n \"qwen3-max-2026-01-23\",\n \"qwen3.5-plus\",\n \"qwen3.6-plus\"\n ],\n \"minimax-cn\": [\n \"MiniMax-M2\",\n \"MiniMax-M2.1\",\n \"MiniMax-M2.5\",\n \"MiniMax-M2.5-highspeed\",\n \"MiniMax-M2.7\",\n \"MiniMax-M2.7-highspeed\"\n ],\n \"chutes\": [\n \"MiniMaxAI/MiniMax-M2.5-TEE\",\n \"NousResearch/DeepHermes-3-Mistral-24B-Preview\",\n \"NousResearch/Hermes-4-14B\",\n \"Qwen/Qwen2.5-72B-Instruct\",\n \"Qwen/Qwen2.5-Coder-32B-Instruct\",\n \"Qwen/Qwen2.5-VL-32B-Instruct\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507-TEE\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"Qwen/Qwen3-30B-A3B\",\n \"Qwen/Qwen3-32B-TEE\",\n \"Qwen/Qwen3-Coder-Next-TEE\",\n \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n \"Qwen/Qwen3.5-397B-A17B-TEE\",\n \"Qwen/Qwen3.6-27B-TEE\",\n \"Qwen/Qwen3Guard-Gen-0.6B\",\n \"XiaomiMiMo/MiMo-V2-Flash-TEE\",\n \"deepseek-ai/DeepSeek-R1-0528-TEE\",\n \"deepseek-ai/DeepSeek-R1-Distill-Llama-70B\",\n \"deepseek-ai/DeepSeek-V3-0324-TEE\",\n \"deepseek-ai/DeepSeek-V3.1-TEE\",\n \"deepseek-ai/DeepSeek-V3.2-TEE\",\n \"google/gemma-4-31B-turbo-TEE\",\n \"moonshotai/Kimi-K2.5-TEE\",\n \"moonshotai/Kimi-K2.6-TEE\",\n \"openai/gpt-oss-120b-TEE\",\n \"rednote-hilab/dots.ocr\",\n \"tngtech/DeepSeek-TNG-R1T2-Chimera-TEE\",\n \"unsloth/Llama-3.2-1B-Instruct\",\n \"unsloth/Llama-3.2-3B-Instruct\",\n \"unsloth/Mistral-Nemo-Instruct-2407\",\n \"unsloth/gemma-3-12b-it\",\n \"unsloth/gemma-3-27b-it\",\n \"unsloth/gemma-3-4b-it\",\n \"zai-org/GLM-4.6V\",\n \"zai-org/GLM-4.7-FP8\",\n \"zai-org/GLM-4.7-TEE\",\n \"zai-org/GLM-5-TEE\",\n \"zai-org/GLM-5-Turbo\",\n \"zai-org/GLM-5.1-TEE\"\n ],\n \"siliconflow-cn\": [\n \"ByteDance-Seed/Seed-OSS-36B-Instruct\",\n \"Kwaipilot/KAT-Dev\",\n \"PaddlePaddle/PaddleOCR-VL\",\n \"PaddlePaddle/PaddleOCR-VL-1.5\",\n \"Pro/MiniMaxAI/MiniMax-M2.1\",\n \"Pro/MiniMaxAI/MiniMax-M2.5\",\n \"Pro/deepseek-ai/DeepSeek-R1\",\n \"Pro/deepseek-ai/DeepSeek-V3\",\n \"Pro/deepseek-ai/DeepSeek-V3.1-Terminus\",\n \"Pro/deepseek-ai/DeepSeek-V3.2\",\n \"Pro/moonshotai/Kimi-K2-Instruct-0905\",\n \"Pro/moonshotai/Kimi-K2-Thinking\",\n \"Pro/moonshotai/Kimi-K2.5\",\n \"Pro/moonshotai/Kimi-K2.6\",\n \"Pro/zai-org/GLM-4.7\",\n \"Pro/zai-org/GLM-5\",\n \"Pro/zai-org/GLM-5.1\",\n \"Qwen/QwQ-32B\",\n \"Qwen/Qwen2.5-14B-Instruct\",\n \"Qwen/Qwen2.5-32B-Instruct\",\n \"Qwen/Qwen2.5-72B-Instruct\",\n \"Qwen/Qwen2.5-72B-Instruct-128K\",\n \"Qwen/Qwen2.5-7B-Instruct\",\n \"Qwen/Qwen2.5-Coder-32B-Instruct\",\n \"Qwen/Qwen2.5-VL-32B-Instruct\",\n \"Qwen/Qwen2.5-VL-72B-Instruct\",\n \"Qwen/Qwen3-14B\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n \"Qwen/Qwen3-30B-A3B-Thinking-2507\",\n \"Qwen/Qwen3-32B\",\n \"Qwen/Qwen3-8B\",\n \"Qwen/Qwen3-Coder-30B-A3B-Instruct\",\n \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n \"Qwen/Qwen3-Next-80B-A3B-Thinking\",\n \"Qwen/Qwen3-Omni-30B-A3B-Captioner\",\n \"Qwen/Qwen3-Omni-30B-A3B-Instruct\",\n \"Qwen/Qwen3-Omni-30B-A3B-Thinking\",\n \"Qwen/Qwen3-VL-235B-A22B-Instruct\",\n \"Qwen/Qwen3-VL-235B-A22B-Thinking\",\n \"Qwen/Qwen3-VL-30B-A3B-Instruct\",\n \"Qwen/Qwen3-VL-30B-A3B-Thinking\",\n \"Qwen/Qwen3-VL-32B-Instruct\",\n \"Qwen/Qwen3-VL-32B-Thinking\",\n \"Qwen/Qwen3-VL-8B-Instruct\",\n \"Qwen/Qwen3-VL-8B-Thinking\",\n \"Qwen/Qwen3.5-122B-A10B\",\n \"Qwen/Qwen3.5-27B\",\n \"Qwen/Qwen3.5-35B-A3B\",\n \"Qwen/Qwen3.5-397B-A17B\",\n \"Qwen/Qwen3.5-4B\",\n \"Qwen/Qwen3.5-9B\",\n \"Qwen/Qwen3.6-35B-A3B\",\n \"THUDM/GLM-4-32B-0414\",\n \"THUDM/GLM-4-9B-0414\",\n \"THUDM/GLM-Z1-32B-0414\",\n \"THUDM/GLM-Z1-9B-0414\",\n \"ascend-tribe/pangu-pro-moe\",\n \"baidu/ERNIE-4.5-300B-A47B\",\n \"deepseek-ai/DeepSeek-OCR\",\n \"deepseek-ai/DeepSeek-R1\",\n \"deepseek-ai/DeepSeek-R1-Distill-Qwen-14B\",\n \"deepseek-ai/DeepSeek-R1-Distill-Qwen-32B\",\n \"deepseek-ai/DeepSeek-V3\",\n \"deepseek-ai/DeepSeek-V3.1-Terminus\",\n \"deepseek-ai/DeepSeek-V3.2\",\n \"deepseek-ai/deepseek-vl2\",\n \"inclusionAI/Ling-flash-2.0\",\n \"inclusionAI/Ling-mini-2.0\",\n \"inclusionAI/Ring-flash-2.0\",\n \"moonshotai/Kimi-K2-Instruct-0905\",\n \"moonshotai/Kimi-K2-Thinking\",\n \"stepfun-ai/Step-3.5-Flash\",\n \"tencent/Hunyuan-A13B-Instruct\",\n \"tencent/Hunyuan-MT-7B\",\n \"zai-org/GLM-4.5-Air\",\n \"zai-org/GLM-4.5V\",\n \"zai-org/GLM-4.6\",\n \"zai-org/GLM-4.6V\"\n ],\n \"nvidia\": [\n \"abacusai/dracarys-llama-3_1-70b-instruct\",\n \"baai/bge-m3\",\n \"black-forest-labs/flux.1-dev\",\n \"black-forest-labs/flux_1-kontext-dev\",\n \"black-forest-labs/flux_1-schnell\",\n \"black-forest-labs/flux_2-klein-4b\",\n \"bytedance/seed-oss-36b-instruct\",\n \"deepseek-ai/deepseek-v3.1-terminus\",\n \"deepseek-ai/deepseek-v3.2\",\n \"deepseek-ai/deepseek-v4-flash\",\n \"deepseek-ai/deepseek-v4-pro\",\n \"google/gemma-2-2b-it\",\n \"google/gemma-3-27b-it\",\n \"google/gemma-3n-e2b-it\",\n \"google/gemma-3n-e4b-it\",\n \"google/gemma-4-31b-it\",\n \"google/google-paligemma\",\n \"meta/esm2-650m\",\n \"meta/esmfold\",\n \"meta/llama-3.1-70b-instruct\",\n \"meta/llama-3.1-8b-instruct\",\n \"meta/llama-3.2-11b-vision-instruct\",\n \"meta/llama-3.2-1b-instruct\",\n \"meta/llama-3.2-3b-instruct\",\n \"meta/llama-3.2-90b-vision-instruct\",\n \"meta/llama-3.3-70b-instruct\",\n \"meta/llama-4-maverick-17b-128e-instruct\",\n \"meta/llama-guard-4-12b\",\n \"microsoft/phi-4-mini-instruct\",\n \"microsoft/phi-4-multimodal-instruct\",\n \"minimaxai/minimax-m2.5\",\n \"minimaxai/minimax-m2.7\",\n \"mistralai/devstral-2-123b-instruct-2512\",\n \"mistralai/magistral-small-2506\",\n \"mistralai/mistral-7b-instruct-v03\",\n \"mistralai/mistral-large-3-675b-instruct-2512\",\n \"mistralai/mistral-medium-3-instruct\",\n \"mistralai/mistral-nemotron\",\n \"mistralai/mistral-small-4-119b-2603\",\n \"mistralai/mixtral-8x22b-instruct\",\n \"mistralai/mixtral-8x7b-instruct\",\n \"moonshotai/kimi-k2-instruct\",\n \"moonshotai/kimi-k2-instruct-0905\",\n \"moonshotai/kimi-k2-thinking\",\n \"moonshotai/kimi-k2.6\",\n \"nvidia/active-speaker-detection\",\n \"nvidia/bevformer\",\n \"nvidia/cosmos-predict1-5b\",\n \"nvidia/cosmos-transfer1-7b\",\n \"nvidia/cosmos-transfer2_5-2b\",\n \"nvidia/gliner-pii\",\n \"nvidia/llama-3_1-nemotron-safety-guard-8b-v3\",\n \"nvidia/llama-3_2-nemoretriever-300m-embed-v1\",\n \"nvidia/llama-3_3-nemotron-super-49b-v1\",\n \"nvidia/llama-3_3-nemotron-super-49b-v1_5\",\n \"nvidia/llama-nemotron-embed-vl-1b-v2\",\n \"nvidia/llama-nemotron-rerank-vl-1b-v2\",\n \"nvidia/magpie-tts-zeroshot\",\n \"nvidia/nemotron-3-content-safety\",\n \"nvidia/nemotron-3-nano-30b-a3b\",\n \"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning\",\n \"nvidia/nemotron-3-super-120b-a12b\",\n \"nvidia/nemotron-content-safety-reasoning-4b\",\n \"nvidia/nemotron-mini-4b-instruct\",\n \"nvidia/nemotron-voicechat\",\n \"nvidia/nv-embed-v1\",\n \"nvidia/nv-embedcode-7b-v1\",\n \"nvidia/nvidia-nemotron-nano-9b-v2\",\n \"nvidia/rerank-qa-mistral-4b\",\n \"nvidia/riva-translate-4b-instruct-v1_1\",\n \"nvidia/sparsedrive\",\n \"nvidia/streampetr\",\n \"nvidia/studiovoice\",\n \"nvidia/synthetic-video-detector\",\n \"nvidia/usdcode\",\n \"nvidia/usdvalidate\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"openai/whisper-large-v3\",\n \"qwen/qwen-image\",\n \"qwen/qwen-image-edit\",\n \"qwen/qwen2.5-coder-32b-instruct\",\n \"qwen/qwen3-coder-480b-a35b-instruct\",\n \"qwen/qwen3-next-80b-a3b-instruct\",\n \"qwen/qwen3-next-80b-a3b-thinking\",\n \"qwen/qwen3.5-122b-a10b\",\n \"qwen/qwen3.5-397b-a17b\",\n \"sarvamai/sarvam-m\",\n \"stepfun-ai/step-3.5-flash\",\n \"upstage/solar-10_7b-instruct\",\n \"z-ai/glm-5.1\",\n \"z-ai/glm4.7\"\n ],\n \"anthropic\": [\n \"claude-3-5-haiku-20241022\",\n \"claude-3-5-haiku-latest\",\n \"claude-3-5-sonnet-20240620\",\n \"claude-3-5-sonnet-20241022\",\n \"claude-3-7-sonnet-20250219\",\n \"claude-3-haiku-20240307\",\n \"claude-3-opus-20240229\",\n \"claude-3-sonnet-20240229\",\n \"claude-haiku-4-5\",\n \"claude-haiku-4-5-20251001\",\n \"claude-opus-4-0\",\n \"claude-opus-4-1\",\n \"claude-opus-4-1-20250805\",\n \"claude-opus-4-20250514\",\n \"claude-opus-4-5\",\n \"claude-opus-4-5-20251101\",\n \"claude-opus-4-6\",\n \"claude-opus-4-7\",\n \"claude-sonnet-4-0\",\n \"claude-sonnet-4-20250514\",\n \"claude-sonnet-4-5\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-sonnet-4-6\"\n ],\n \"zhipuai-coding-plan\": [\"glm-4.5-air\", \"glm-4.7\", \"glm-5-turbo\", \"glm-5.1\", \"glm-5v-turbo\"],\n \"atomic-chat\": [\n \"Meta-Llama-3_1-8B-Instruct-GGUF\",\n \"Qwen3_5-9B-MLX-4bit\",\n \"Qwen3_5-9B-Q4_K_M\",\n \"gemma-4-E4B-it-IQ4_XS\",\n \"gemma-4-E4B-it-MLX-4bit\"\n ],\n \"github-models\": [\n \"ai21-labs/ai21-jamba-1.5-large\",\n \"ai21-labs/ai21-jamba-1.5-mini\",\n \"cohere/cohere-command-a\",\n \"cohere/cohere-command-r\",\n \"cohere/cohere-command-r-08-2024\",\n \"cohere/cohere-command-r-plus\",\n \"cohere/cohere-command-r-plus-08-2024\",\n \"core42/jais-30b-chat\",\n \"deepseek/deepseek-r1\",\n \"deepseek/deepseek-r1-0528\",\n \"deepseek/deepseek-v3-0324\",\n \"meta/llama-3.2-11b-vision-instruct\",\n \"meta/llama-3.2-90b-vision-instruct\",\n \"meta/llama-3.3-70b-instruct\",\n \"meta/llama-4-maverick-17b-128e-instruct-fp8\",\n \"meta/llama-4-scout-17b-16e-instruct\",\n \"meta/meta-llama-3-70b-instruct\",\n \"meta/meta-llama-3-8b-instruct\",\n \"meta/meta-llama-3.1-405b-instruct\",\n \"meta/meta-llama-3.1-70b-instruct\",\n \"meta/meta-llama-3.1-8b-instruct\",\n \"microsoft/mai-ds-r1\",\n \"microsoft/phi-3-medium-128k-instruct\",\n \"microsoft/phi-3-medium-4k-instruct\",\n \"microsoft/phi-3-mini-128k-instruct\",\n \"microsoft/phi-3-mini-4k-instruct\",\n \"microsoft/phi-3-small-128k-instruct\",\n \"microsoft/phi-3-small-8k-instruct\",\n \"microsoft/phi-3.5-mini-instruct\",\n \"microsoft/phi-3.5-moe-instruct\",\n \"microsoft/phi-3.5-vision-instruct\",\n \"microsoft/phi-4\",\n \"microsoft/phi-4-mini-instruct\",\n \"microsoft/phi-4-mini-reasoning\",\n \"microsoft/phi-4-multimodal-instruct\",\n \"microsoft/phi-4-reasoning\",\n \"mistral-ai/codestral-2501\",\n \"mistral-ai/ministral-3b\",\n \"mistral-ai/mistral-large-2411\",\n \"mistral-ai/mistral-medium-2505\",\n \"mistral-ai/mistral-nemo\",\n \"mistral-ai/mistral-small-2503\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-4o\",\n \"openai/gpt-4o-mini\",\n \"openai/o1\",\n \"openai/o1-mini\",\n \"openai/o1-preview\",\n \"openai/o3\",\n \"openai/o3-mini\",\n \"openai/o4-mini\",\n \"xai/grok-3\",\n \"xai/grok-3-mini\"\n ],\n \"qiniu-ai\": [\n \"MiniMax-M1\",\n \"claude-3.5-haiku\",\n \"claude-3.5-sonnet\",\n \"claude-3.7-sonnet\",\n \"claude-4.0-opus\",\n \"claude-4.0-sonnet\",\n \"claude-4.1-opus\",\n \"claude-4.5-haiku\",\n \"claude-4.5-opus\",\n \"claude-4.5-sonnet\",\n \"deepseek-r1\",\n \"deepseek-r1-0528\",\n \"deepseek-v3\",\n \"deepseek-v3-0324\",\n \"deepseek-v3.1\",\n \"deepseek/deepseek-math-v2\",\n \"deepseek/deepseek-v3.1-terminus\",\n \"deepseek/deepseek-v3.1-terminus-thinking\",\n \"deepseek/deepseek-v3.2-251201\",\n \"deepseek/deepseek-v3.2-exp\",\n \"deepseek/deepseek-v3.2-exp-thinking\",\n \"doubao-1.5-pro-32k\",\n \"doubao-1.5-thinking-pro\",\n \"doubao-1.5-vision-pro\",\n \"doubao-seed-1.6\",\n \"doubao-seed-1.6-flash\",\n \"doubao-seed-1.6-thinking\",\n \"doubao-seed-2.0-code\",\n \"doubao-seed-2.0-lite\",\n \"doubao-seed-2.0-mini\",\n \"doubao-seed-2.0-pro\",\n \"gemini-2.0-flash\",\n \"gemini-2.0-flash-lite\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-flash-image\",\n \"gemini-2.5-flash-lite\",\n \"gemini-2.5-pro\",\n \"gemini-3.0-flash-preview\",\n \"gemini-3.0-pro-image-preview\",\n \"gemini-3.0-pro-preview\",\n \"glm-4.5\",\n \"glm-4.5-air\",\n \"gpt-oss-120b\",\n \"gpt-oss-20b\",\n \"kimi-k2\",\n \"kling-v2-6\",\n \"meituan/longcat-flash-chat\",\n \"meituan/longcat-flash-lite\",\n \"mimo-v2-flash\",\n \"minimax/minimax-m2\",\n \"minimax/minimax-m2.1\",\n \"minimax/minimax-m2.5\",\n \"minimax/minimax-m2.5-highspeed\",\n \"moonshotai/kimi-k2-0905\",\n \"moonshotai/kimi-k2-thinking\",\n \"moonshotai/kimi-k2.5\",\n \"openai/gpt-5\",\n \"openai/gpt-5.2\",\n \"qwen-max-2025-01-25\",\n \"qwen-turbo\",\n \"qwen-vl-max-2025-01-25\",\n \"qwen2.5-vl-72b-instruct\",\n \"qwen2.5-vl-7b-instruct\",\n \"qwen3-235b-a22b\",\n \"qwen3-235b-a22b-instruct-2507\",\n \"qwen3-235b-a22b-thinking-2507\",\n \"qwen3-30b-a3b\",\n \"qwen3-30b-a3b-instruct-2507\",\n \"qwen3-30b-a3b-thinking-2507\",\n \"qwen3-32b\",\n \"qwen3-coder-480b-a35b-instruct\",\n \"qwen3-max\",\n \"qwen3-max-preview\",\n \"qwen3-next-80b-a3b-instruct\",\n \"qwen3-next-80b-a3b-thinking\",\n \"qwen3-vl-30b-a3b-thinking\",\n \"qwen3.5-397b-a17b\",\n \"stepfun-ai/gelab-zero-4b-preview\",\n \"stepfun/step-3.5-flash\",\n \"x-ai/grok-4-fast\",\n \"x-ai/grok-4-fast-non-reasoning\",\n \"x-ai/grok-4-fast-reasoning\",\n \"x-ai/grok-4.1-fast\",\n \"x-ai/grok-4.1-fast-non-reasoning\",\n \"x-ai/grok-4.1-fast-reasoning\",\n \"x-ai/grok-code-fast-1\",\n \"xiaomi/mimo-v2-flash\",\n \"z-ai/autoglm-phone-9b\",\n \"z-ai/glm-4.6\",\n \"z-ai/glm-4.7\",\n \"z-ai/glm-5\"\n ],\n \"google\": [\n \"gemini-2.0-flash\",\n \"gemini-2.0-flash-lite\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-flash-image\",\n \"gemini-2.5-flash-lite\",\n \"gemini-2.5-flash-preview-tts\",\n \"gemini-2.5-pro\",\n \"gemini-2.5-pro-preview-tts\",\n \"gemini-3-flash-preview\",\n \"gemini-3-pro-preview\",\n \"gemini-3.1-flash-image-preview\",\n \"gemini-3.1-flash-lite\",\n \"gemini-3.1-flash-lite-preview\",\n \"gemini-3.1-pro-preview\",\n \"gemini-3.1-pro-preview-customtools\",\n \"gemini-3.5-flash\",\n \"gemini-embedding-001\",\n \"gemini-flash-latest\",\n \"gemini-flash-lite-latest\",\n \"gemma-4-26b-a4b-it\",\n \"gemma-4-31b-it\"\n ],\n \"scaleway\": [\n \"bge-multilingual-gemma2\",\n \"deepseek-r1-distill-llama-70b\",\n \"devstral-2-123b-instruct-2512\",\n \"gemma-3-27b-it\",\n \"gpt-oss-120b\",\n \"llama-3.1-8b-instruct\",\n \"llama-3.3-70b-instruct\",\n \"mistral-medium-3.5-128b\",\n \"mistral-nemo-instruct-2407\",\n \"mistral-small-3.2-24b-instruct-2506\",\n \"pixtral-12b-2409\",\n \"qwen3-235b-a22b-instruct-2507\",\n \"qwen3-coder-30b-a3b-instruct\",\n \"qwen3-embedding-8b\",\n \"qwen3.5-397b-a17b\",\n \"voxtral-small-24b-2507\",\n \"whisper-large-v3\"\n ],\n \"opencode\": [\n \"big-pickle\",\n \"claude-haiku-4-5\",\n \"claude-opus-4-1\",\n \"claude-opus-4-5\",\n \"claude-opus-4-6\",\n \"claude-opus-4-7\",\n \"claude-sonnet-4\",\n \"claude-sonnet-4-5\",\n \"claude-sonnet-4-6\",\n \"deepseek-v4-flash-free\",\n \"gemini-3-flash\",\n \"gemini-3.1-pro\",\n \"gemini-3.5-flash\",\n \"glm-5\",\n \"glm-5.1\",\n \"gpt-5\",\n \"gpt-5-codex\",\n \"gpt-5-nano\",\n \"gpt-5.1\",\n \"gpt-5.1-codex\",\n \"gpt-5.1-codex-max\",\n \"gpt-5.1-codex-mini\",\n \"gpt-5.2\",\n \"gpt-5.2-codex\",\n \"gpt-5.3-codex\",\n \"gpt-5.3-codex-spark\",\n \"gpt-5.4\",\n \"gpt-5.4-mini\",\n \"gpt-5.4-nano\",\n \"gpt-5.4-pro\",\n \"gpt-5.5\",\n \"gpt-5.5-pro\",\n \"grok-build-0.1\",\n \"kimi-k2.5\",\n \"kimi-k2.6\",\n \"minimax-m2.5\",\n \"minimax-m2.7\",\n \"nemotron-3-super-free\",\n \"qwen3.5-plus\",\n \"qwen3.6-plus\"\n ],\n \"mixlayer\": [\n \"qwen/qwen3.5-122b-a10b\",\n \"qwen/qwen3.5-27b\",\n \"qwen/qwen3.5-35b-a3b\",\n \"qwen/qwen3.5-397b-a17b\",\n \"qwen/qwen3.5-9b\"\n ],\n \"zenmux\": [\n \"anthropic/claude-3.5-haiku\",\n \"anthropic/claude-3.7-sonnet\",\n \"anthropic/claude-haiku-4.5\",\n \"anthropic/claude-opus-4\",\n \"anthropic/claude-opus-4.1\",\n \"anthropic/claude-opus-4.5\",\n \"anthropic/claude-opus-4.6\",\n \"anthropic/claude-opus-4.7\",\n \"anthropic/claude-sonnet-4\",\n \"anthropic/claude-sonnet-4.5\",\n \"anthropic/claude-sonnet-4.6\",\n \"baidu/ernie-5.0-thinking-preview\",\n \"deepseek/deepseek-chat\",\n \"deepseek/deepseek-v3.2\",\n \"deepseek/deepseek-v3.2-exp\",\n \"deepseek/deepseek-v4-flash\",\n \"deepseek/deepseek-v4-pro\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-flash-lite\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3.1-flash-lite-preview\",\n \"google/gemini-3.1-pro-preview\",\n \"inclusionai/ling-1t\",\n \"inclusionai/ring-1t\",\n \"kuaishou/kat-coder-pro-v2\",\n \"minimax/minimax-m2\",\n \"minimax/minimax-m2.1\",\n \"minimax/minimax-m2.5\",\n \"minimax/minimax-m2.5-lightning\",\n \"minimax/minimax-m2.7\",\n \"minimax/minimax-m2.7-highspeed\",\n \"moonshotai/kimi-k2-0905\",\n \"moonshotai/kimi-k2-thinking\",\n \"moonshotai/kimi-k2-thinking-turbo\",\n \"moonshotai/kimi-k2.5\",\n \"moonshotai/kimi-k2.6\",\n \"openai/gpt-5\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.1-chat\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-5.3-chat\",\n \"openai/gpt-5.3-codex\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-mini\",\n \"openai/gpt-5.4-nano\",\n \"openai/gpt-5.4-pro\",\n \"openai/gpt-5.5\",\n \"openai/gpt-5.5-pro\",\n \"qwen/qwen3-coder-plus\",\n \"qwen/qwen3-max\",\n \"qwen/qwen3.5-flash\",\n \"qwen/qwen3.5-plus\",\n \"qwen/qwen3.6-plus\",\n \"sapiens-ai/agnes-1.5-lite\",\n \"sapiens-ai/agnes-1.5-pro\",\n \"stepfun/step-3\",\n \"stepfun/step-3.5-flash\",\n \"stepfun/step-3.5-flash-free\",\n \"tencent/hy3-preview\",\n \"volcengine/doubao-seed-1.8\",\n \"volcengine/doubao-seed-2.0-code\",\n \"volcengine/doubao-seed-2.0-lite\",\n \"volcengine/doubao-seed-2.0-mini\",\n \"volcengine/doubao-seed-2.0-pro\",\n \"volcengine/doubao-seed-code\",\n \"x-ai/grok-4\",\n \"x-ai/grok-4-fast\",\n \"x-ai/grok-4.1-fast\",\n \"x-ai/grok-4.1-fast-non-reasoning\",\n \"x-ai/grok-4.2-fast\",\n \"x-ai/grok-4.2-fast-non-reasoning\",\n \"x-ai/grok-code-fast-1\",\n \"xiaomi/mimo-v2-flash\",\n \"xiaomi/mimo-v2-omni\",\n \"xiaomi/mimo-v2-pro\",\n \"xiaomi/mimo-v2.5\",\n \"xiaomi/mimo-v2.5-pro\",\n \"z-ai/glm-4.5\",\n \"z-ai/glm-4.5-air\",\n \"z-ai/glm-4.6\",\n \"z-ai/glm-4.6v\",\n \"z-ai/glm-4.6v-flash\",\n \"z-ai/glm-4.6v-flash-free\",\n \"z-ai/glm-4.7\",\n \"z-ai/glm-4.7-flash-free\",\n \"z-ai/glm-4.7-flashx\",\n \"z-ai/glm-5\",\n \"z-ai/glm-5-turbo\",\n \"z-ai/glm-5.1\",\n \"z-ai/glm-5v-turbo\"\n ],\n \"perplexity-agent\": [\n \"anthropic/claude-haiku-4-5\",\n \"anthropic/claude-opus-4-5\",\n \"anthropic/claude-opus-4-6\",\n \"anthropic/claude-opus-4-7\",\n \"anthropic/claude-sonnet-4-5\",\n \"anthropic/claude-sonnet-4-6\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-3-flash-preview\",\n \"google/gemini-3.1-pro-preview\",\n \"nvidia/nemotron-3-super-120b-a12b\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.5\",\n \"perplexity/sonar\",\n \"xai/grok-4-1-fast-non-reasoning\"\n ],\n \"alibaba-coding-plan\": [\n \"MiniMax-M2.5\",\n \"glm-4.7\",\n \"glm-5\",\n \"kimi-k2.5\",\n \"qwen3-coder-next\",\n \"qwen3-coder-plus\",\n \"qwen3-max-2026-01-23\",\n \"qwen3.5-plus\",\n \"qwen3.6-plus\"\n ],\n \"meganova\": [\n \"MiniMaxAI/MiniMax-M2.1\",\n \"MiniMaxAI/MiniMax-M2.5\",\n \"Qwen/Qwen2.5-VL-32B-Instruct\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"Qwen/Qwen3.5-Plus\",\n \"XiaomiMiMo/MiMo-V2-Flash\",\n \"deepseek-ai/DeepSeek-R1-0528\",\n \"deepseek-ai/DeepSeek-V3-0324\",\n \"deepseek-ai/DeepSeek-V3.1\",\n \"deepseek-ai/DeepSeek-V3.2\",\n \"deepseek-ai/DeepSeek-V3.2-Exp\",\n \"meta-llama/Llama-3.3-70B-Instruct\",\n \"mistralai/Mistral-Nemo-Instruct-2407\",\n \"mistralai/Mistral-Small-3.2-24B-Instruct-2506\",\n \"moonshotai/Kimi-K2-Thinking\",\n \"moonshotai/Kimi-K2.5\",\n \"zai-org/GLM-4.6\",\n \"zai-org/GLM-4.7\",\n \"zai-org/GLM-5\"\n ],\n \"synthetic\": [\n \"hf:MiniMaxAI/MiniMax-M2\",\n \"hf:MiniMaxAI/MiniMax-M2.1\",\n \"hf:MiniMaxAI/MiniMax-M2.5\",\n \"hf:Qwen/Qwen2.5-Coder-32B-Instruct\",\n \"hf:Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"hf:Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"hf:Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n \"hf:Qwen/Qwen3.5-397B-A17B\",\n \"hf:deepseek-ai/DeepSeek-R1\",\n \"hf:deepseek-ai/DeepSeek-R1-0528\",\n \"hf:deepseek-ai/DeepSeek-V3\",\n \"hf:deepseek-ai/DeepSeek-V3-0324\",\n \"hf:deepseek-ai/DeepSeek-V3.1\",\n \"hf:deepseek-ai/DeepSeek-V3.1-Terminus\",\n \"hf:deepseek-ai/DeepSeek-V3.2\",\n \"hf:meta-llama/Llama-3.1-405B-Instruct\",\n \"hf:meta-llama/Llama-3.1-70B-Instruct\",\n \"hf:meta-llama/Llama-3.1-8B-Instruct\",\n \"hf:meta-llama/Llama-3.3-70B-Instruct\",\n \"hf:meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\",\n \"hf:meta-llama/Llama-4-Scout-17B-16E-Instruct\",\n \"hf:moonshotai/Kimi-K2-Instruct-0905\",\n \"hf:moonshotai/Kimi-K2-Thinking\",\n \"hf:moonshotai/Kimi-K2.5\",\n \"hf:moonshotai/Kimi-K2.6\",\n \"hf:nvidia/Kimi-K2.5-NVFP4\",\n \"hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4\",\n \"hf:openai/gpt-oss-120b\",\n \"hf:zai-org/GLM-4.6\",\n \"hf:zai-org/GLM-4.7\",\n \"hf:zai-org/GLM-4.7-Flash\",\n \"hf:zai-org/GLM-5\",\n \"hf:zai-org/GLM-5.1\"\n ],\n \"inceptron\": [\n \"MiniMaxAI/MiniMax-M2.5\",\n \"moonshotai/Kimi-K2.6\",\n \"nvidia/llama-3.3-70b-instruct-fp8\",\n \"zai-org/GLM-5.1-FP8\"\n ],\n \"minimax-coding-plan\": [\n \"MiniMax-M2\",\n \"MiniMax-M2.1\",\n \"MiniMax-M2.5\",\n \"MiniMax-M2.5-highspeed\",\n \"MiniMax-M2.7\",\n \"MiniMax-M2.7-highspeed\"\n ],\n \"upstage\": [\"solar-mini\", \"solar-pro2\", \"solar-pro3\"],\n \"vercel\": [\n \"alibaba/qwen-3-14b\",\n \"alibaba/qwen-3-235b\",\n \"alibaba/qwen-3-30b\",\n \"alibaba/qwen-3-32b\",\n \"alibaba/qwen-3.6-max-preview\",\n \"alibaba/qwen3-235b-a22b-thinking\",\n \"alibaba/qwen3-coder\",\n \"alibaba/qwen3-coder-30b-a3b\",\n \"alibaba/qwen3-coder-next\",\n \"alibaba/qwen3-coder-plus\",\n \"alibaba/qwen3-embedding-0.6b\",\n \"alibaba/qwen3-embedding-4b\",\n \"alibaba/qwen3-embedding-8b\",\n \"alibaba/qwen3-max\",\n \"alibaba/qwen3-max-preview\",\n \"alibaba/qwen3-max-thinking\",\n \"alibaba/qwen3-next-80b-a3b-instruct\",\n \"alibaba/qwen3-next-80b-a3b-thinking\",\n \"alibaba/qwen3-vl-235b-a22b-instruct\",\n \"alibaba/qwen3-vl-instruct\",\n \"alibaba/qwen3-vl-thinking\",\n \"alibaba/qwen3.5-flash\",\n \"alibaba/qwen3.5-plus\",\n \"alibaba/qwen3.6-27b\",\n \"alibaba/qwen3.6-plus\",\n \"alibaba/qwen3.7-max\",\n \"amazon/nova-2-lite\",\n \"amazon/nova-lite\",\n \"amazon/nova-micro\",\n \"amazon/nova-pro\",\n \"amazon/titan-embed-text-v2\",\n \"anthropic/claude-3-haiku\",\n \"anthropic/claude-3-opus\",\n \"anthropic/claude-3.5-haiku\",\n \"anthropic/claude-3.5-sonnet\",\n \"anthropic/claude-3.5-sonnet-20240620\",\n \"anthropic/claude-3.7-sonnet\",\n \"anthropic/claude-haiku-4.5\",\n \"anthropic/claude-opus-4\",\n \"anthropic/claude-opus-4.1\",\n \"anthropic/claude-opus-4.5\",\n \"anthropic/claude-opus-4.6\",\n \"anthropic/claude-opus-4.7\",\n \"anthropic/claude-sonnet-4\",\n \"anthropic/claude-sonnet-4.5\",\n \"anthropic/claude-sonnet-4.6\",\n \"arcee-ai/trinity-large-preview\",\n \"arcee-ai/trinity-large-thinking\",\n \"arcee-ai/trinity-mini\",\n \"bfl/flux-kontext-max\",\n \"bfl/flux-kontext-pro\",\n \"bfl/flux-pro-1.0-fill\",\n \"bfl/flux-pro-1.1\",\n \"bfl/flux-pro-1.1-ultra\",\n \"bytedance/seed-1.6\",\n \"bytedance/seed-1.8\",\n \"cohere/command-a\",\n \"cohere/embed-v4.0\",\n \"deepseek/deepseek-r1\",\n \"deepseek/deepseek-v3\",\n \"deepseek/deepseek-v3.1\",\n \"deepseek/deepseek-v3.1-terminus\",\n \"deepseek/deepseek-v3.2\",\n \"deepseek/deepseek-v3.2-exp\",\n \"deepseek/deepseek-v3.2-thinking\",\n \"deepseek/deepseek-v4-flash\",\n \"deepseek/deepseek-v4-pro\",\n \"google/gemini-2.0-flash\",\n \"google/gemini-2.0-flash-lite\",\n \"google/gemini-2.5-flash\",\n \"google/gemini-2.5-flash-image\",\n \"google/gemini-2.5-flash-image-preview\",\n \"google/gemini-2.5-flash-lite\",\n \"google/gemini-2.5-flash-lite-preview-09-2025\",\n \"google/gemini-2.5-flash-preview-09-2025\",\n \"google/gemini-2.5-pro\",\n \"google/gemini-3-flash\",\n \"google/gemini-3-pro-image\",\n \"google/gemini-3-pro-preview\",\n \"google/gemini-3.1-flash-image-preview\",\n \"google/gemini-3.1-flash-lite\",\n \"google/gemini-3.1-flash-lite-preview\",\n \"google/gemini-3.1-pro-preview\",\n \"google/gemini-3.5-flash\",\n \"google/gemini-embedding-001\",\n \"google/gemini-embedding-2\",\n \"google/gemma-4-26b-a4b-it\",\n \"google/gemma-4-31b-it\",\n \"google/imagen-4.0-fast-generate-001\",\n \"google/imagen-4.0-generate-001\",\n \"google/imagen-4.0-ultra-generate-001\",\n \"google/text-embedding-005\",\n \"google/text-multilingual-embedding-002\",\n \"inception/mercury-2\",\n \"inception/mercury-coder-small\",\n \"inception/mercury-edit-2\",\n \"interfaze/interfaze-beta\",\n \"kwaipilot/kat-coder-pro-v1\",\n \"kwaipilot/kat-coder-pro-v2\",\n \"meituan/longcat-flash-chat\",\n \"meituan/longcat-flash-thinking\",\n \"meituan/longcat-flash-thinking-2601\",\n \"meta/llama-3.1-70b\",\n \"meta/llama-3.1-8b\",\n \"meta/llama-3.2-11b\",\n \"meta/llama-3.2-1b\",\n \"meta/llama-3.2-3b\",\n \"meta/llama-3.2-90b\",\n \"meta/llama-3.3-70b\",\n \"meta/llama-4-maverick\",\n \"meta/llama-4-scout\",\n \"minimax/minimax-m2\",\n \"minimax/minimax-m2.1\",\n \"minimax/minimax-m2.1-lightning\",\n \"minimax/minimax-m2.5\",\n \"minimax/minimax-m2.5-highspeed\",\n \"minimax/minimax-m2.7\",\n \"minimax/minimax-m2.7-highspeed\",\n \"mistral/codestral\",\n \"mistral/codestral-embed\",\n \"mistral/devstral-2\",\n \"mistral/devstral-small\",\n \"mistral/devstral-small-2\",\n \"mistral/magistral-medium\",\n \"mistral/magistral-small\",\n \"mistral/ministral-14b\",\n \"mistral/ministral-3b\",\n \"mistral/ministral-8b\",\n \"mistral/mistral-embed\",\n \"mistral/mistral-large-3\",\n \"mistral/mistral-medium\",\n \"mistral/mistral-medium-3.5\",\n \"mistral/mistral-nemo\",\n \"mistral/mistral-small\",\n \"mistral/mixtral-8x22b-instruct\",\n \"mistral/pixtral-12b\",\n \"mistral/pixtral-large\",\n \"moonshotai/kimi-k2-0905\",\n \"moonshotai/kimi-k2-thinking\",\n \"moonshotai/kimi-k2-thinking-turbo\",\n \"moonshotai/kimi-k2-turbo\",\n \"moonshotai/kimi-k2.5\",\n \"moonshotai/kimi-k2.6\",\n \"morph/morph-v3-fast\",\n \"morph/morph-v3-large\",\n \"nvidia/nemotron-3-nano-30b-a3b\",\n \"nvidia/nemotron-3-super-120b-a12b\",\n \"nvidia/nemotron-nano-12b-v2-vl\",\n \"nvidia/nemotron-nano-9b-v2\",\n \"openai/codex-mini\",\n \"openai/gpt-3.5-turbo\",\n \"openai/gpt-3.5-turbo-instruct\",\n \"openai/gpt-4-turbo\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-4o\",\n \"openai/gpt-4o-mini\",\n \"openai/gpt-4o-mini-search-preview\",\n \"openai/gpt-5\",\n \"openai/gpt-5-chat\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5-pro\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-max\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.1-instant\",\n \"openai/gpt-5.1-thinking\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-chat\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-5.3-chat\",\n \"openai/gpt-5.3-codex\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-mini\",\n \"openai/gpt-5.4-nano\",\n \"openai/gpt-5.4-pro\",\n \"openai/gpt-5.5\",\n \"openai/gpt-5.5-pro\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-20b\",\n \"openai/gpt-oss-safeguard-20b\",\n \"openai/o1\",\n \"openai/o3\",\n \"openai/o3-deep-research\",\n \"openai/o3-mini\",\n \"openai/o3-pro\",\n \"openai/o4-mini\",\n \"openai/text-embedding-3-large\",\n \"openai/text-embedding-3-small\",\n \"openai/text-embedding-ada-002\",\n \"perplexity/sonar\",\n \"perplexity/sonar-pro\",\n \"perplexity/sonar-reasoning\",\n \"perplexity/sonar-reasoning-pro\",\n \"prime-intellect/intellect-3\",\n \"recraft/recraft-v2\",\n \"recraft/recraft-v3\",\n \"vercel/v0-1.0-md\",\n \"vercel/v0-1.5-md\",\n \"voyage/voyage-3-large\",\n \"voyage/voyage-3.5\",\n \"voyage/voyage-3.5-lite\",\n \"voyage/voyage-4\",\n \"voyage/voyage-4-large\",\n \"voyage/voyage-4-lite\",\n \"voyage/voyage-code-2\",\n \"voyage/voyage-code-3\",\n \"voyage/voyage-finance-2\",\n \"voyage/voyage-law-2\",\n \"xai/grok-4-fast-reasoning\",\n \"xai/grok-4.1-fast-non-reasoning\",\n \"xai/grok-4.1-fast-reasoning\",\n \"xai/grok-4.20-multi-agent\",\n \"xai/grok-4.20-multi-agent-beta\",\n \"xai/grok-4.20-non-reasoning\",\n \"xai/grok-4.20-non-reasoning-beta\",\n \"xai/grok-4.20-reasoning\",\n \"xai/grok-4.20-reasoning-beta\",\n \"xai/grok-4.3\",\n \"xai/grok-build-0.1\",\n \"xai/grok-imagine-image\",\n \"xai/grok-imagine-image-pro\",\n \"xiaomi/mimo-v2-flash\",\n \"xiaomi/mimo-v2-pro\",\n \"xiaomi/mimo-v2.5\",\n \"xiaomi/mimo-v2.5-pro\",\n \"zai/glm-4.5\",\n \"zai/glm-4.5-air\",\n \"zai/glm-4.5v\",\n \"zai/glm-4.6\",\n \"zai/glm-4.6v\",\n \"zai/glm-4.6v-flash\",\n \"zai/glm-4.7\",\n \"zai/glm-4.7-flash\",\n \"zai/glm-4.7-flashx\",\n \"zai/glm-5\",\n \"zai/glm-5-turbo\",\n \"zai/glm-5.1\",\n \"zai/glm-5v-turbo\"\n ],\n \"abliteration-ai\": [\"abliterated-model\"],\n \"deepseek\": [\"deepseek-chat\", \"deepseek-reasoner\", \"deepseek-v4-flash\", \"deepseek-v4-pro\"],\n \"perplexity\": [\"sonar\", \"sonar-deep-research\", \"sonar-pro\", \"sonar-reasoning-pro\"],\n \"iflowcn\": [\n \"deepseek-r1\",\n \"deepseek-v3\",\n \"deepseek-v3.2\",\n \"glm-4.6\",\n \"kimi-k2\",\n \"kimi-k2-0905\",\n \"qwen3-235b\",\n \"qwen3-235b-a22b-instruct\",\n \"qwen3-235b-a22b-thinking-2507\",\n \"qwen3-32b\",\n \"qwen3-coder-plus\",\n \"qwen3-max\",\n \"qwen3-max-preview\",\n \"qwen3-vl-plus\"\n ],\n \"stackit\": [\n \"Qwen/Qwen3-VL-235B-A22B-Instruct-FP8\",\n \"Qwen/Qwen3-VL-Embedding-8B\",\n \"cortecs/Llama-3.3-70B-Instruct-FP8-Dynamic\",\n \"google/gemma-3-27b-it\",\n \"intfloat/e5-mistral-7b-instruct\",\n \"neuralmagic/Meta-Llama-3.1-8B-Instruct-FP8\",\n \"neuralmagic/Mistral-Nemo-Instruct-2407-FP8\",\n \"openai/gpt-oss-120b\"\n ],\n \"wafer.ai\": [\"GLM-5.1\", \"Qwen3.5-397B-A17B\"],\n \"evroc\": [\n \"KBLab/kb-whisper-large\",\n \"Qwen/Qwen3-30B-A3B-Instruct-2507-FP8\",\n \"Qwen/Qwen3-Embedding-8B\",\n \"Qwen/Qwen3-VL-30B-A3B-Instruct\",\n \"intfloat/multilingual-e5-large-instruct\",\n \"microsoft/Phi-4-multimodal-instruct\",\n \"mistralai/Magistral-Small-2509\",\n \"mistralai/Voxtral-Small-24B-2507\",\n \"mistralai/devstral-small-2-24b-instruct-2512\",\n \"moonshotai/Kimi-K2.5\",\n \"nvidia/Llama-3.3-70B-Instruct-FP8\",\n \"openai/gpt-oss-120b\",\n \"openai/whisper-large-v3\"\n ],\n \"nova\": [\"nova-2-lite-v1\", \"nova-2-pro-v1\"],\n \"fireworks-ai\": [\n \"accounts/fireworks/models/deepseek-v3p1\",\n \"accounts/fireworks/models/deepseek-v3p2\",\n \"accounts/fireworks/models/deepseek-v4-flash\",\n \"accounts/fireworks/models/deepseek-v4-pro\",\n \"accounts/fireworks/models/glm-4p5\",\n \"accounts/fireworks/models/glm-4p5-air\",\n \"accounts/fireworks/models/glm-4p7\",\n \"accounts/fireworks/models/glm-5\",\n \"accounts/fireworks/models/glm-5p1\",\n \"accounts/fireworks/models/gpt-oss-120b\",\n \"accounts/fireworks/models/gpt-oss-20b\",\n \"accounts/fireworks/models/kimi-k2-instruct\",\n \"accounts/fireworks/models/kimi-k2-thinking\",\n \"accounts/fireworks/models/kimi-k2p5\",\n \"accounts/fireworks/models/kimi-k2p6\",\n \"accounts/fireworks/models/minimax-m2p1\",\n \"accounts/fireworks/models/minimax-m2p5\",\n \"accounts/fireworks/models/minimax-m2p7\",\n \"accounts/fireworks/models/qwen3p6-plus\",\n \"accounts/fireworks/routers/kimi-k2p5-turbo\"\n ],\n \"alibaba\": [\n \"qvq-max\",\n \"qwen-flash\",\n \"qwen-max\",\n \"qwen-mt-plus\",\n \"qwen-mt-turbo\",\n \"qwen-omni-turbo\",\n \"qwen-omni-turbo-realtime\",\n \"qwen-plus\",\n \"qwen-plus-character-ja\",\n \"qwen-turbo\",\n \"qwen-vl-max\",\n \"qwen-vl-ocr\",\n \"qwen-vl-plus\",\n \"qwen2-5-14b-instruct\",\n \"qwen2-5-32b-instruct\",\n \"qwen2-5-72b-instruct\",\n \"qwen2-5-7b-instruct\",\n \"qwen2-5-omni-7b\",\n \"qwen2-5-vl-72b-instruct\",\n \"qwen2-5-vl-7b-instruct\",\n \"qwen3-14b\",\n \"qwen3-235b-a22b\",\n \"qwen3-32b\",\n \"qwen3-8b\",\n \"qwen3-asr-flash\",\n \"qwen3-coder-30b-a3b-instruct\",\n \"qwen3-coder-480b-a35b-instruct\",\n \"qwen3-coder-flash\",\n \"qwen3-coder-plus\",\n \"qwen3-livetranslate-flash-realtime\",\n \"qwen3-max\",\n \"qwen3-next-80b-a3b-instruct\",\n \"qwen3-next-80b-a3b-thinking\",\n \"qwen3-omni-flash\",\n \"qwen3-omni-flash-realtime\",\n \"qwen3-vl-235b-a22b\",\n \"qwen3-vl-30b-a3b\",\n \"qwen3-vl-plus\",\n \"qwen3.5-122b-a10b\",\n \"qwen3.5-27b\",\n \"qwen3.5-35b-a3b\",\n \"qwen3.5-397b-a17b\",\n \"qwen3.5-plus\",\n \"qwen3.6-27b\",\n \"qwen3.6-35b-a3b\",\n \"qwen3.6-max-preview\",\n \"qwen3.6-plus\",\n \"qwen3.7-max\",\n \"qwq-plus\"\n ],\n \"302ai\": [\n \"MiniMax-M1\",\n \"MiniMax-M2\",\n \"MiniMax-M2.1\",\n \"MiniMax-M2.7\",\n \"MiniMax-M2.7-highspeed\",\n \"chatgpt-4o-latest\",\n \"claude-3-5-haiku-20241022\",\n \"claude-3-5-haiku-latest\",\n \"claude-haiku-4-5\",\n \"claude-haiku-4-5-20251001\",\n \"claude-opus-4-1-20250805\",\n \"claude-opus-4-1-20250805-thinking\",\n \"claude-opus-4-20250514\",\n \"claude-opus-4-5\",\n \"claude-opus-4-5-20251101\",\n \"claude-opus-4-5-20251101-thinking\",\n \"claude-opus-4-6\",\n \"claude-opus-4-6-thinking\",\n \"claude-opus-4-7\",\n \"claude-sonnet-4-20250514\",\n \"claude-sonnet-4-5\",\n \"claude-sonnet-4-5-20250929\",\n \"claude-sonnet-4-5-20250929-thinking\",\n \"claude-sonnet-4-6\",\n \"claude-sonnet-4-6-thinking\",\n \"deepseek-chat\",\n \"deepseek-reasoner\",\n \"deepseek-v3.2\",\n \"deepseek-v3.2-thinking\",\n \"doubao-seed-1-6-thinking-250715\",\n \"doubao-seed-1-6-vision-250815\",\n \"doubao-seed-1-8-251215\",\n \"doubao-seed-code-preview-251028\",\n \"gemini-2.0-flash-lite\",\n \"gemini-2.5-flash\",\n \"gemini-2.5-flash-image\",\n \"gemini-2.5-flash-lite-preview-09-2025\",\n \"gemini-2.5-flash-nothink\",\n \"gemini-2.5-flash-preview-09-2025\",\n \"gemini-2.5-pro\",\n \"gemini-3-flash-preview\",\n \"gemini-3-pro-image-preview\",\n \"gemini-3-pro-preview\",\n \"gemini-3.1-flash-image-preview\",\n \"glm-4.5\",\n \"glm-4.5-air\",\n \"glm-4.5-airx\",\n \"glm-4.5-x\",\n \"glm-4.5v\",\n \"glm-4.6\",\n \"glm-4.6v\",\n \"glm-4.7\",\n \"glm-4.7-flashx\",\n \"glm-5\",\n \"glm-5-turbo\",\n \"glm-5.1\",\n \"glm-5v-turbo\",\n \"glm-for-coding\",\n \"gpt-4.1\",\n \"gpt-4.1-mini\",\n \"gpt-4.1-nano\",\n \"gpt-4o\",\n \"gpt-5\",\n \"gpt-5-mini\",\n \"gpt-5-pro\",\n \"gpt-5-thinking\",\n \"gpt-5.1\",\n \"gpt-5.1-chat-latest\",\n \"gpt-5.2\",\n \"gpt-5.2-chat-latest\",\n \"gpt-5.4\",\n \"gpt-5.4-mini\",\n \"gpt-5.4-mini-2026-03-17\",\n \"gpt-5.4-nano\",\n \"gpt-5.4-nano-2026-03-17\",\n \"gpt-5.4-pro\",\n \"grok-4-1-fast-non-reasoning\",\n \"grok-4-1-fast-reasoning\",\n \"grok-4-fast-non-reasoning\",\n \"grok-4-fast-reasoning\",\n \"grok-4.1\",\n \"grok-4.20-beta-0309-non-reasoning\",\n \"grok-4.20-beta-0309-reasoning\",\n \"grok-4.20-multi-agent-beta-0309\",\n \"kimi-k2-0905-preview\",\n \"kimi-k2-thinking\",\n \"kimi-k2-thinking-turbo\",\n \"ministral-14b-2512\",\n \"mistral-large-2512\",\n \"qwen-flash\",\n \"qwen-max-latest\",\n \"qwen-plus\",\n \"qwen3-235b-a22b\",\n \"qwen3-235b-a22b-instruct-2507\",\n \"qwen3-30b-a3b\",\n \"qwen3-coder-480b-a35b-instruct\",\n \"qwen3-max-2025-09-23\"\n ],\n \"xpersona\": [\"xpersona-frieren-coder\"],\n \"stepfun\": [\"step-1-32k\", \"step-2-16k\", \"step-3.5-flash\", \"step-3.5-flash-2603\"],\n \"xai\": [\n \"grok-4.20-0309-non-reasoning\",\n \"grok-4.20-0309-reasoning\",\n \"grok-4.20-multi-agent-0309\",\n \"grok-4.3\",\n \"grok-build-0.1\",\n \"grok-imagine-image\",\n \"grok-imagine-image-quality\",\n \"grok-imagine-video\"\n ],\n \"sarvam\": [\"sarvam-105b\", \"sarvam-30b\"],\n \"zhipuai\": [\n \"glm-4.5\",\n \"glm-4.5-air\",\n \"glm-4.5-flash\",\n \"glm-4.5v\",\n \"glm-4.6\",\n \"glm-4.6v\",\n \"glm-4.7\",\n \"glm-4.7-flash\",\n \"glm-4.7-flashx\",\n \"glm-5\",\n \"glm-5.1\",\n \"glm-5v-turbo\"\n ],\n \"bailing\": [\"Ling-1T\", \"Ring-1T\"],\n \"qihang-ai\": [\n \"claude-haiku-4-5-20251001\",\n \"claude-opus-4-5-20251101\",\n \"claude-sonnet-4-5-20250929\",\n \"gemini-2.5-flash\",\n \"gemini-3-flash-preview\",\n \"gemini-3-pro-preview\",\n \"gpt-5-mini\",\n \"gpt-5.2\",\n \"gpt-5.2-codex\"\n ],\n \"lilac\": [\"google/gemma-4-31b-it\", \"minimaxai/minimax-m2.7\", \"moonshotai/kimi-k2.6\", \"zai-org/glm-5.1\"],\n \"alibaba-cn\": [\n \"MiniMax-M2.5\",\n \"MiniMax/MiniMax-M2.7\",\n \"deepseek-r1\",\n \"deepseek-r1-0528\",\n \"deepseek-r1-distill-llama-70b\",\n \"deepseek-r1-distill-llama-8b\",\n \"deepseek-r1-distill-qwen-1-5b\",\n \"deepseek-r1-distill-qwen-14b\",\n \"deepseek-r1-distill-qwen-32b\",\n \"deepseek-r1-distill-qwen-7b\",\n \"deepseek-v3\",\n \"deepseek-v3-1\",\n \"deepseek-v3-2-exp\",\n \"deepseek-v4-flash\",\n \"deepseek-v4-pro\",\n \"glm-5\",\n \"glm-5.1\",\n \"kimi-k2-thinking\",\n \"kimi-k2.5\",\n \"kimi-k2.6\",\n \"kimi/kimi-k2.5\",\n \"moonshot-kimi-k2-instruct\",\n \"qvq-max\",\n \"qwen-deep-research\",\n \"qwen-doc-turbo\",\n \"qwen-flash\",\n \"qwen-long\",\n \"qwen-math-plus\",\n \"qwen-math-turbo\",\n \"qwen-max\",\n \"qwen-mt-plus\",\n \"qwen-mt-turbo\",\n \"qwen-omni-turbo\",\n \"qwen-omni-turbo-realtime\",\n \"qwen-plus\",\n \"qwen-plus-character\",\n \"qwen-turbo\",\n \"qwen-vl-max\",\n \"qwen-vl-ocr\",\n \"qwen-vl-plus\",\n \"qwen2-5-14b-instruct\",\n \"qwen2-5-32b-instruct\",\n \"qwen2-5-72b-instruct\",\n \"qwen2-5-7b-instruct\",\n \"qwen2-5-coder-32b-instruct\",\n \"qwen2-5-coder-7b-instruct\",\n \"qwen2-5-math-72b-instruct\",\n \"qwen2-5-math-7b-instruct\",\n \"qwen2-5-omni-7b\",\n \"qwen2-5-vl-72b-instruct\",\n \"qwen2-5-vl-7b-instruct\",\n \"qwen3-14b\",\n \"qwen3-235b-a22b\",\n \"qwen3-32b\",\n \"qwen3-8b\",\n \"qwen3-asr-flash\",\n \"qwen3-coder-30b-a3b-instruct\",\n \"qwen3-coder-480b-a35b-instruct\",\n \"qwen3-coder-flash\",\n \"qwen3-coder-plus\",\n \"qwen3-max\",\n \"qwen3-next-80b-a3b-instruct\",\n \"qwen3-next-80b-a3b-thinking\",\n \"qwen3-omni-flash\",\n \"qwen3-omni-flash-realtime\",\n \"qwen3-vl-235b-a22b\",\n \"qwen3-vl-30b-a3b\",\n \"qwen3-vl-plus\",\n \"qwen3.5-397b-a17b\",\n \"qwen3.5-flash\",\n \"qwen3.5-plus\",\n \"qwen3.6-max-preview\",\n \"qwen3.6-plus\",\n \"qwq-32b\",\n \"qwq-plus\",\n \"siliconflow/deepseek-r1-0528\",\n \"siliconflow/deepseek-v3-0324\",\n \"siliconflow/deepseek-v3.1-terminus\",\n \"siliconflow/deepseek-v3.2\",\n \"tongyi-intent-detect-v3\"\n ],\n \"drun\": [\"public/deepseek-r1\", \"public/deepseek-v3\", \"public/minimax-m25\"],\n \"huggingface\": [\n \"MiniMaxAI/MiniMax-M2.1\",\n \"MiniMaxAI/MiniMax-M2.5\",\n \"MiniMaxAI/MiniMax-M2.7\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507\",\n \"Qwen/Qwen3-Coder-480B-A35B-Instruct\",\n \"Qwen/Qwen3-Coder-Next\",\n \"Qwen/Qwen3-Embedding-4B\",\n \"Qwen/Qwen3-Embedding-8B\",\n \"Qwen/Qwen3-Next-80B-A3B-Instruct\",\n \"Qwen/Qwen3-Next-80B-A3B-Thinking\",\n \"Qwen/Qwen3.5-397B-A17B\",\n \"XiaomiMiMo/MiMo-V2-Flash\",\n \"deepseek-ai/DeepSeek-R1-0528\",\n \"deepseek-ai/DeepSeek-V3.2\",\n \"deepseek-ai/DeepSeek-V4-Pro\",\n \"moonshotai/Kimi-K2-Instruct\",\n \"moonshotai/Kimi-K2-Instruct-0905\",\n \"moonshotai/Kimi-K2-Thinking\",\n \"moonshotai/Kimi-K2.5\",\n \"moonshotai/Kimi-K2.6\",\n \"zai-org/GLM-4.7\",\n \"zai-org/GLM-4.7-Flash\",\n \"zai-org/GLM-5\",\n \"zai-org/GLM-5.1\"\n ],\n \"umans-ai-coding-plan\": [\"umans-coder\", \"umans-flash\", \"umans-glm-5.1\", \"umans-kimi-k2.6\", \"umans-qwen3.6-35b-a3b\"],\n \"tencent-tokenhub\": [\"hy3-preview\"],\n \"nebius\": [\n \"MiniMaxAI/MiniMax-M2.5\",\n \"MiniMaxAI/MiniMax-M2.5-fast\",\n \"NousResearch/Hermes-4-405B\",\n \"NousResearch/Hermes-4-70B\",\n \"PrimeIntellect/INTELLECT-3\",\n \"Qwen/Qwen2.5-VL-72B-Instruct\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507\",\n \"Qwen/Qwen3-235B-A22B-Thinking-2507-fast\",\n \"Qwen/Qwen3-30B-A3B-Instruct-2507\",\n \"Qwen/Qwen3-32B\",\n \"Qwen/Qwen3-Embedding-8B\",\n \"Qwen/Qwen3-Next-80B-A3B-Thinking\",\n \"Qwen/Qwen3-Next-80B-A3B-Thinking-fast\",\n \"Qwen/Qwen3.5-397B-A17B\",\n \"Qwen/Qwen3.5-397B-A17B-fast\",\n \"deepseek-ai/DeepSeek-V3.2\",\n \"deepseek-ai/DeepSeek-V3.2-fast\",\n \"deepseek-ai/DeepSeek-V4-Pro\",\n \"google/gemma-2-2b-it\",\n \"google/gemma-3-27b-it\",\n \"meta-llama/Llama-3.3-70B-Instruct\",\n \"meta-llama/Meta-Llama-3.1-8B-Instruct\",\n \"moonshotai/Kimi-K2.5\",\n \"moonshotai/Kimi-K2.5-fast\",\n \"nvidia/Llama-3_1-Nemotron-Ultra-253B-v1\",\n \"nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B\",\n \"nvidia/Nemotron-3-Nano-Omni\",\n \"nvidia/nemotron-3-super-120b-a12b\",\n \"openai/gpt-oss-120b\",\n \"openai/gpt-oss-120b-fast\",\n \"zai-org/GLM-5\"\n ],\n \"hpc-ai\": [\"minimax/minimax-m2.5\", \"moonshotai/kimi-k2.5\", \"zai-org/glm-5.1\"],\n \"xiaomi\": [\"mimo-v2-flash\", \"mimo-v2-omni\", \"mimo-v2-pro\", \"mimo-v2.5\", \"mimo-v2.5-pro\"],\n \"togetherai\": [\n \"MiniMaxAI/MiniMax-M2.5\",\n \"MiniMaxAI/MiniMax-M2.7\",\n \"Qwen/Qwen3-235B-A22B-Instruct-2507-tput\",\n \"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8\",\n \"Qwen/Qwen3-Coder-Next-FP8\",\n \"Qwen/Qwen3.5-397B-A17B\",\n \"Qwen/Qwen3.6-Plus\",\n \"deepseek-ai/DeepSeek-R1\",\n \"deepseek-ai/DeepSeek-V3\",\n \"deepseek-ai/DeepSeek-V3-1\",\n \"deepseek-ai/DeepSeek-V4-Pro\",\n \"essentialai/Rnj-1-Instruct\",\n \"google/gemma-4-31B-it\",\n \"meta-llama/Llama-3.3-70B-Instruct-Turbo\",\n \"moonshotai/Kimi-K2.5\",\n \"moonshotai/Kimi-K2.6\",\n \"openai/gpt-oss-120b\",\n \"zai-org/GLM-5.1\"\n ],\n \"stepfun-ai\": [\"step-3.5-flash\", \"step-3.5-flash-2603\"],\n \"inference\": [\n \"google/gemma-3\",\n \"meta/llama-3.1-8b-instruct\",\n \"meta/llama-3.2-11b-vision-instruct\",\n \"meta/llama-3.2-1b-instruct\",\n \"meta/llama-3.2-3b-instruct\",\n \"mistral/mistral-nemo-12b-instruct\",\n \"osmosis/osmosis-structure-0.6b\",\n \"qwen/qwen-2.5-7b-vision-instruct\",\n \"qwen/qwen3-embedding-4b\"\n ],\n \"netlify\": [\n \"anthropic/claude-haiku-4-5\",\n \"anthropic/claude-haiku-4-5-20251001\",\n \"anthropic/claude-opus-4-1-20250805\",\n \"anthropic/claude-opus-4-20250514\",\n \"anthropic/claude-opus-4-5\",\n \"anthropic/claude-opus-4-5-20251101\",\n \"anthropic/claude-opus-4-6\",\n \"anthropic/claude-opus-4-7\",\n \"anthropic/claude-sonnet-4-0\",\n \"anthropic/claude-sonnet-4-20250514\",\n \"anthropic/claude-sonnet-4-5\",\n \"anthropic/claude-sonnet-4-5-20250929\",\n \"anthropic/claude-sonnet-4-6\",\n \"gemini/gemini-2.0-flash\",\n \"gemini/gemini-2.0-flash-lite\",\n \"gemini/gemini-2.5-flash\",\n \"gemini/gemini-2.5-flash-image\",\n \"gemini/gemini-2.5-flash-lite\",\n \"gemini/gemini-2.5-pro\",\n \"gemini/gemini-3-flash-preview\",\n \"gemini/gemini-3-pro-image-preview\",\n \"gemini/gemini-3.1-flash-image-preview\",\n \"gemini/gemini-3.1-flash-lite\",\n \"gemini/gemini-3.1-flash-lite-preview\",\n \"gemini/gemini-3.1-pro-preview\",\n \"gemini/gemini-3.1-pro-preview-customtools\",\n \"gemini/gemini-3.5-flash\",\n \"gemini/gemini-flash-latest\",\n \"gemini/gemini-flash-lite-latest\",\n \"openai/chat-latest\",\n \"openai/gpt-4.1\",\n \"openai/gpt-4.1-mini\",\n \"openai/gpt-4.1-nano\",\n \"openai/gpt-4o\",\n \"openai/gpt-4o-mini\",\n \"openai/gpt-5\",\n \"openai/gpt-5-2025-08-07\",\n \"openai/gpt-5-codex\",\n \"openai/gpt-5-mini\",\n \"openai/gpt-5-mini-2025-08-07\",\n \"openai/gpt-5-nano\",\n \"openai/gpt-5-pro\",\n \"openai/gpt-5.1\",\n \"openai/gpt-5.1-2025-11-13\",\n \"openai/gpt-5.1-codex\",\n \"openai/gpt-5.1-codex-max\",\n \"openai/gpt-5.1-codex-mini\",\n \"openai/gpt-5.2\",\n \"openai/gpt-5.2-2025-12-11\",\n \"openai/gpt-5.2-codex\",\n \"openai/gpt-5.2-pro\",\n \"openai/gpt-5.2-pro-2025-12-11\",\n \"openai/gpt-5.3-chat-latest\",\n \"openai/gpt-5.3-codex\",\n \"openai/gpt-5.4\",\n \"openai/gpt-5.4-2026-03-05\",\n \"openai/gpt-5.4-mini\",\n \"openai/gpt-5.4-mini-2026-03-17\",\n \"openai/gpt-5.4-nano\",\n \"openai/gpt-5.4-nano-2026-03-17\",\n \"openai/gpt-5.4-pro\",\n \"openai/gpt-5.4-pro-2026-03-05\",\n \"openai/gpt-5.5\",\n \"openai/gpt-5.5-2026-04-23\",\n \"openai/gpt-5.5-pro\",\n \"openai/gpt-5.5-pro-2026-04-23\",\n \"openai/o3\",\n \"openai/o3-mini\",\n \"openai/o4-mini\"\n ]\n },\n \"version\": \"1.0.0\"\n}\n","/**\n * Runtime provider registry loader\n * Loads provider data from JSON file and exports typed interfaces\n */\n\nimport fs from 'node:fs';\nimport { createRequire } from 'node:module';\nimport os from 'node:os';\nimport path from 'node:path';\nimport type { ProviderConfig, MastraModelGatewayInterface } from './gateways/base.js';\nimport { getGatewayId, shouldEnableGateway } from './gateways/index.js';\nimport { MastraGateway } from './gateways/mastra.js';\nimport { ModelsDevGateway } from './gateways/models-dev.js';\nimport { NetlifyGateway } from './gateways/netlify.js';\nimport staticRegistry from './provider-registry.json';\nimport type { Provider, ModelForProvider, ModelRouterModelId, ProviderModels } from './provider-types.generated.js';\n\n// Re-export types for convenience\nexport type { Provider, ModelForProvider, ModelRouterModelId, ProviderModels };\nexport type { AttachmentCapabilities } from './gateways/base.js';\n\ninterface RegistryData {\n providers: Record;\n models: Record;\n version: string;\n}\n\n/**\n * Check if running in offline/air-gapped mode.\n * When MASTRA_OFFLINE is set to 'true' or '1', all network fetches for provider data are skipped.\n */\nexport function isOfflineMode(): boolean {\n const value = process.env.MASTRA_OFFLINE;\n return value === 'true' || value === '1';\n}\n\nfunction getEnabledGatewayIds(gateways: MastraModelGatewayInterface[]): Set {\n const enabledGatewayIds = new Set();\n\n for (const gateway of gateways) {\n const enabled = shouldEnableGateway(gateway);\n if (enabled) {\n enabledGatewayIds.add(getGatewayId(gateway));\n }\n }\n\n return enabledGatewayIds;\n}\n\nfunction sanitizeRegistryDataForRuntime(data: RegistryData, enabledGatewayIds: Set): RegistryData {\n const providers = Object.fromEntries(\n Object.entries(data.providers).filter(([, config]) => enabledGatewayIds.has(config.gateway)),\n );\n\n const models = Object.fromEntries(Object.entries(data.models).filter(([providerId]) => providerId in providers));\n\n return {\n ...data,\n providers,\n models,\n };\n}\n\n// In-memory cache for dynamic loading mode\nlet registryData: RegistryData | null = null;\n\n// Cache file helpers (dev mode only)\n// Use functions so we don't call os.homedir() at top level, which\n// causes an error in sandboxed environments when you merely\n// import @mastra/core. In those sandboxes, if you just don't use these\n// functions then you don't hit these errors.\nconst CACHE_DIR = () => path.join(os.homedir(), '.cache', 'mastra');\nconst CACHE_FILE = () => path.join(CACHE_DIR(), 'gateway-refresh-time');\nconst GLOBAL_PROVIDER_REGISTRY_JSON = () => path.join(CACHE_DIR(), 'provider-registry.json');\nconst GLOBAL_PROVIDER_TYPES_DTS = () => path.join(CACHE_DIR(), 'provider-types.generated.d.ts');\nconst GLOBAL_CAPABILITIES_DIR = () => path.join(CACHE_DIR(), 'capabilities');\n\nlet modelRouterCacheFailed = false;\n\n/**\n * Write a file atomically using the write-to-temp-then-rename pattern (synchronous version).\n * This prevents file corruption when multiple processes write to the same file concurrently.\n *\n * @param filePath - The target file path\n * @param content - The content to write\n * @param encoding - The encoding to use (default: 'utf-8')\n */\nfunction atomicWriteFileSync(filePath: string, content: string, encoding: BufferEncoding = 'utf-8'): void {\n // Use random suffix to avoid collisions between concurrent writes\n const randomSuffix = Math.random().toString(36).substring(2, 15);\n const tempPath = `${filePath}.${process.pid}.${Date.now()}.${randomSuffix}.tmp`;\n\n try {\n fs.writeFileSync(tempPath, content, encoding);\n fs.renameSync(tempPath, filePath);\n } catch (error) {\n try {\n fs.unlinkSync(tempPath);\n } catch {\n // Ignore cleanup errors\n }\n throw error;\n }\n}\n\n/**\n * Syncs provider files from global cache to local dist/ directory if needed.\n * Compares file contents to determine if copy is necessary.\n * Validates JSON before copying to prevent propagating corrupted files.\n */\nfunction syncGlobalCacheToLocal(): void {\n try {\n // Check if global cache files exist\n const globalJsonExists = fs.existsSync(GLOBAL_PROVIDER_REGISTRY_JSON());\n const globalDtsExists = fs.existsSync(GLOBAL_PROVIDER_TYPES_DTS());\n\n if (!globalJsonExists && !globalDtsExists) {\n // No global cache, nothing to sync\n return;\n }\n\n // Use getPackageRoot() to find the correct location in node_modules or local dev\n const packageRoot = getPackageRoot();\n const localJsonPath = path.join(packageRoot, 'dist', 'provider-registry.json');\n const localDtsPath = path.join(packageRoot, 'dist', 'llm', 'model', 'provider-types.generated.d.ts');\n\n // Ensure local dist directory exists\n fs.mkdirSync(path.dirname(localJsonPath), { recursive: true });\n fs.mkdirSync(path.dirname(localDtsPath), { recursive: true });\n\n // Sync JSON file if global exists and differs from local\n if (globalJsonExists) {\n const globalJsonContent = fs.readFileSync(GLOBAL_PROVIDER_REGISTRY_JSON(), 'utf-8');\n\n // Validate JSON before copying to prevent propagating corrupted files.\n // Silently delete on corruption — the next gateway sync will rewrite a\n // valid file, so logging here just creates noise when an older mastra\n // version (without the digit-quoting fix) shares the global cache.\n try {\n JSON.parse(globalJsonContent);\n } catch {\n try {\n fs.unlinkSync(GLOBAL_PROVIDER_REGISTRY_JSON());\n } catch {\n // Ignore deletion errors\n }\n return;\n }\n\n let shouldCopyJson = true;\n\n if (fs.existsSync(localJsonPath)) {\n const localJsonContent = fs.readFileSync(localJsonPath, 'utf-8');\n shouldCopyJson = globalJsonContent !== localJsonContent;\n }\n\n if (shouldCopyJson) {\n // Use atomic write to prevent corruption from concurrent writes\n atomicWriteFileSync(localJsonPath, globalJsonContent, 'utf-8');\n }\n }\n\n // Capabilities are loaded lazily per-provider by loadProviderAttachmentModels().\n // The global cache dir is included in findCapabilitiesDirs() so no bulk sync is needed.\n\n // Sync .d.ts file if global exists and differs from local\n if (globalDtsExists) {\n const globalDtsContent = fs.readFileSync(GLOBAL_PROVIDER_TYPES_DTS(), 'utf-8');\n\n // Validate .d.ts content: check for unquoted provider names that start with a digit\n // (e.g. \"readonly 302ai:\" instead of \"readonly '302ai':\"), which produces invalid TypeScript.\n // This can happen if the global cache was written by an older version without the quoting fix.\n // Silently delete on corruption — the next gateway sync will rewrite a valid file.\n if (/readonly\\s+\\d/.test(globalDtsContent)) {\n try {\n fs.unlinkSync(GLOBAL_PROVIDER_TYPES_DTS());\n } catch {\n // Ignore deletion errors\n }\n // Don't sync corrupted .d.ts file; fall through to keep existing local file\n } else {\n let shouldCopyDts = true;\n\n if (fs.existsSync(localDtsPath)) {\n const localDtsContent = fs.readFileSync(localDtsPath, 'utf-8');\n shouldCopyDts = globalDtsContent !== localDtsContent;\n }\n\n if (shouldCopyDts) {\n // Use atomic write to prevent corruption from concurrent writes\n atomicWriteFileSync(localDtsPath, globalDtsContent, 'utf-8');\n }\n }\n }\n } catch {\n // Silent fail - fall back to existing files. Sync errors are recoverable\n // on the next call and don't need to be surfaced to users.\n }\n}\n\nfunction getLastRefreshTimeFromDisk(): Date | null {\n try {\n if (!fs.existsSync(CACHE_FILE())) {\n return null;\n }\n const timestamp = fs.readFileSync(CACHE_FILE(), 'utf-8').trim();\n return new Date(parseInt(timestamp, 10));\n } catch (err) {\n console.warn('[GatewayRegistry] Failed to read cache file:', err);\n modelRouterCacheFailed = true;\n return null;\n }\n}\n\nfunction saveLastRefreshTimeToDisk(date: Date): void {\n try {\n if (!fs.existsSync(CACHE_DIR())) {\n fs.mkdirSync(CACHE_DIR(), { recursive: true });\n }\n fs.writeFileSync(CACHE_FILE(), date.getTime().toString(), 'utf-8');\n } catch (err) {\n modelRouterCacheFailed = true;\n console.warn('[GatewayRegistry] Failed to write cache file:', err);\n }\n}\n\nfunction getPackageRoot(): string {\n try {\n // Use require.resolve to find the package root reliably\n const require = createRequire(import.meta.url || 'file://');\n const packageJsonPath = require.resolve('@mastra/core/package.json');\n return path.dirname(packageJsonPath);\n } catch {\n // Fallback to cwd if we can't resolve the package\n return process.cwd();\n }\n}\n\nfunction loadRegistry(useDynamicLoading: boolean, customGateways: MastraModelGatewayInterface[] = []): RegistryData {\n const enabledGatewayIds = getEnabledGatewayIds([\n new ModelsDevGateway({}),\n new NetlifyGateway(),\n new MastraGateway(),\n ...customGateways,\n ]);\n\n // Production: use static import (bundled at build time)\n if (!useDynamicLoading) {\n return sanitizeRegistryDataForRuntime(staticRegistry, enabledGatewayIds);\n }\n\n // Dynamic loading mode: sync global cache to local before loading\n syncGlobalCacheToLocal();\n\n // Dynamic loading mode: check in-memory cache first\n if (registryData) {\n return registryData;\n }\n\n // Dynamic loading mode: load from file system for live updates\n const packageRoot = getPackageRoot();\n const possiblePaths: string[] = [\n // Built: in dist/ relative to package root (first priority - what gets distributed)\n path.join(packageRoot, 'dist', 'provider-registry.json'),\n // Development: in src/ relative to package root\n path.join(packageRoot, 'src', 'llm', 'model', 'provider-registry.json'),\n // Fallback: relative to cwd (for monorepo setups)\n path.join(process.cwd(), 'packages/core/src/llm/model/provider-registry.json'),\n path.join(process.cwd(), 'src/llm/model/provider-registry.json'),\n ];\n\n const errors: string[] = [];\n\n for (const jsonPath of possiblePaths) {\n try {\n const content = fs.readFileSync(jsonPath, 'utf-8');\n const parsed = JSON.parse(content) as RegistryData;\n registryData = sanitizeRegistryDataForRuntime(parsed, enabledGatewayIds);\n return registryData!;\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n errors.push(`${jsonPath}: ${errorMessage}`);\n\n // If the file exists but has corrupted JSON (not ENOENT), delete it and fall back to static registry\n // This handles cases where concurrent writes corrupted the file before the atomic write fix\n const isFileNotFound = err instanceof Error && 'code' in err && (err as NodeJS.ErrnoException).code === 'ENOENT';\n const isJsonParseError = err instanceof SyntaxError;\n\n if (!isFileNotFound && isJsonParseError) {\n console.warn(\n `[GatewayRegistry] Detected corrupted provider-registry.json at ${jsonPath}. ` +\n `Deleting corrupted file and falling back to static registry.`,\n );\n try {\n fs.unlinkSync(jsonPath);\n } catch {\n // Ignore deletion errors\n }\n // Fall back to static registry (bundled at build time)\n registryData = sanitizeRegistryDataForRuntime(staticRegistry, enabledGatewayIds);\n return registryData;\n }\n\n continue;\n }\n }\n\n // If all paths failed, fall back to static registry instead of throwing\n // This provides a more graceful degradation\n console.warn(\n `[GatewayRegistry] Could not load provider registry from any path. Falling back to static registry.\\n` +\n `Tried paths:\\n${errors.join('\\n')}`,\n );\n registryData = sanitizeRegistryDataForRuntime(staticRegistry, enabledGatewayIds);\n return registryData;\n}\n\n// Export registry data via Proxy for lazy loading\nexport const PROVIDER_REGISTRY = new Proxy({} as Record, {\n get(_target, prop: string) {\n const registry = GatewayRegistry.getInstance();\n const providers = registry.getProviders();\n return providers[prop];\n },\n ownKeys() {\n const registry = GatewayRegistry.getInstance();\n const providers = registry.getProviders();\n return Object.keys(providers);\n },\n has(_target, prop: string) {\n const registry = GatewayRegistry.getInstance();\n const providers = registry.getProviders();\n return prop in providers;\n },\n getOwnPropertyDescriptor(_target, prop) {\n const registry = GatewayRegistry.getInstance();\n const providers = registry.getProviders();\n if (prop in providers) {\n return {\n enumerable: true,\n configurable: true,\n };\n }\n return undefined;\n },\n}) as Record;\n\nexport const PROVIDER_MODELS = new Proxy({} as ProviderModels, {\n get(_target, prop: string) {\n const registry = GatewayRegistry.getInstance();\n const models = registry.getModels();\n return models[prop];\n },\n ownKeys() {\n const registry = GatewayRegistry.getInstance();\n const models = registry.getModels();\n return Object.keys(models);\n },\n has(_target, prop: string) {\n const registry = GatewayRegistry.getInstance();\n const models = registry.getModels();\n return prop in models;\n },\n getOwnPropertyDescriptor(_target, prop) {\n const registry = GatewayRegistry.getInstance();\n const models = registry.getModels();\n if (prop in models) {\n return {\n enumerable: true,\n configurable: true,\n };\n }\n return undefined;\n },\n});\n\n/**\n * Parse a model string to extract provider and model ID\n * Examples:\n * \"openai/gpt-4o\" -> { provider: \"openai\", modelId: \"gpt-4o\" }\n * \"fireworks/accounts/etc/model\" -> { provider: \"fireworks\", modelId: \"accounts/etc/model\" }\n * \"gpt-4o\" -> { provider: null, modelId: \"gpt-4o\" }\n */\nexport function parseModelString(modelString: string): { provider: string | null; modelId: string } {\n const firstSlashIndex = modelString.indexOf('/');\n\n if (firstSlashIndex !== -1) {\n // Has at least one slash - extract everything before first slash as provider\n const provider = modelString.substring(0, firstSlashIndex);\n const modelId = modelString.substring(firstSlashIndex + 1);\n\n if (provider && modelId) {\n return {\n provider,\n modelId,\n };\n }\n }\n\n // No slash or invalid format\n return {\n provider: null,\n modelId: modelString,\n };\n}\n\n/**\n * Get provider configuration by provider ID\n */\nexport function getProviderConfig(providerId: string): ProviderConfig | undefined {\n const registry = GatewayRegistry.getInstance();\n return registry.getProviderConfig(providerId);\n}\n\n/**\n * Check if a provider is registered\n */\nexport function isProviderRegistered(providerId: string): boolean {\n const registry = GatewayRegistry.getInstance();\n return registry.isProviderRegistered(providerId);\n}\n\n/**\n * Get all registered provider IDs\n */\nexport function getRegisteredProviders(): string[] {\n const registry = GatewayRegistry.getInstance();\n const providers = registry.getProviders();\n return Object.keys(providers);\n}\n\n// ---------------------------------------------------------------------------\n// Provider capabilities (per-model attachment / modality metadata)\n// ---------------------------------------------------------------------------\n\ninterface ProviderCapabilityFile {\n attachment: string[];\n}\n\nconst providerCapCache = new Map();\n\nfunction isDirectory(dir: string): boolean {\n try {\n return fs.existsSync(dir) && fs.statSync(dir).isDirectory();\n } catch {\n return false;\n }\n}\n\nfunction findCapabilitiesDirs(useDynamicLoading: boolean): string[] {\n const packageRoot = getPackageRoot();\n const distCapabilitiesDir = path.join(packageRoot, 'dist', 'capabilities');\n const sourceCapabilitiesDir = path.join(packageRoot, 'src', 'llm', 'model', 'capabilities');\n const workspaceSourceCapabilitiesDir = path.join(process.cwd(), 'packages/core/src/llm/model/capabilities');\n\n const dirs: string[] = [];\n\n // In dynamic mode, prefer the global cache so fresher gateway-synced data wins.\n if (useDynamicLoading) {\n const globalCapDir = GLOBAL_CAPABILITIES_DIR();\n if (isDirectory(globalCapDir)) dirs.push(globalCapDir);\n }\n\n if (isDirectory(distCapabilitiesDir)) dirs.push(distCapabilitiesDir);\n\n // Published packages only include dist/. Source fallbacks are for local workspace/dev\n // runs where @mastra/core may resolve through a stale partial dist while checked-in\n // source capability files are available.\n if (isDirectory(sourceCapabilitiesDir)) dirs.push(sourceCapabilitiesDir);\n if (workspaceSourceCapabilitiesDir !== sourceCapabilitiesDir && isDirectory(workspaceSourceCapabilitiesDir)) {\n dirs.push(workspaceSourceCapabilitiesDir);\n }\n\n return dirs;\n}\n\nlet capabilitiesDirCache: string[] | undefined;\n\nfunction loadProviderAttachmentModels(provider: string, useDynamicLoading: boolean): string[] | null {\n if (providerCapCache.has(provider)) return providerCapCache.get(provider)!;\n\n if (capabilitiesDirCache === undefined) {\n capabilitiesDirCache = findCapabilitiesDirs(useDynamicLoading);\n }\n\n for (const capabilitiesDir of capabilitiesDirCache) {\n const filePath = path.join(capabilitiesDir, `${provider}.json`);\n try {\n const content = fs.readFileSync(filePath, 'utf-8');\n const data = JSON.parse(content) as ProviderCapabilityFile;\n providerCapCache.set(provider, data.attachment);\n return data.attachment;\n } catch {\n continue;\n }\n }\n\n providerCapCache.set(provider, null);\n return null;\n}\n\n/**\n * Check whether a model supports image/file attachments.\n * Reads only the per-provider capability file for the given model's provider.\n * Returns `true` if the model is listed, `false` if the provider is known but\n * the model isn't listed, or `undefined` when no data exists for the provider.\n */\nfunction getProviderAttachmentSupport(\n provider: string,\n modelId: string,\n useDynamicLoading: boolean,\n): boolean | undefined {\n const models = loadProviderAttachmentModels(provider, useDynamicLoading);\n if (!models) return undefined;\n return models.includes(modelId);\n}\n\nexport function modelSupportsAttachments(modelRouterId: string): boolean | undefined {\n const { provider, modelId } = parseModelString(modelRouterId);\n if (!provider) return undefined;\n\n const registry = GatewayRegistry.getInstance();\n const useDynamicLoading = registry['useDynamicLoading'];\n const directSupport = getProviderAttachmentSupport(provider, modelId, useDynamicLoading);\n if (directSupport !== undefined) return directSupport;\n\n const nestedProviderDelimiter = modelId.indexOf('/');\n if (nestedProviderDelimiter !== -1) {\n const nestedProvider = modelId.substring(0, nestedProviderDelimiter);\n const nestedModelId = modelId.substring(nestedProviderDelimiter + 1);\n if (nestedProvider && nestedModelId) {\n const nestedSupport = getProviderAttachmentSupport(nestedProvider, nestedModelId, useDynamicLoading);\n if (nestedSupport !== undefined) return nestedSupport;\n }\n }\n\n return directSupport;\n}\n\n/**\n * Type guard to check if a string is a valid OpenAI-compatible model ID\n */\nexport function isValidModelId(modelId: string): modelId is ModelRouterModelId {\n const { provider } = parseModelString(modelId);\n return provider !== null && isProviderRegistered(provider);\n}\n\nexport interface GatewayRegistryOptions {\n /**\n * Enable dynamic loading from file system instead of using static bundled registry.\n * Required for syncGateways() and auto-refresh to work.\n * Defaults to true when MASTRA_DEV=true, false otherwise.\n */\n useDynamicLoading?: boolean;\n}\n\n/**\n * GatewayRegistry - Manages dynamic loading and refreshing of provider data from gateways\n * Singleton class that handles runtime updates to the provider registry\n */\nexport class GatewayRegistry {\n private static instance: GatewayRegistry | null = null;\n private lastRefreshTime: Date | null = null;\n private refreshInterval: NodeJS.Timeout | null = null;\n private isRefreshing = false;\n private useDynamicLoading: boolean;\n private customGateways: MastraModelGatewayInterface[] = [];\n\n private constructor(options: GatewayRegistryOptions = {}) {\n const isDev = process.env.MASTRA_DEV === 'true' || process.env.MASTRA_DEV === '1';\n this.useDynamicLoading = options.useDynamicLoading ?? isDev;\n }\n\n /**\n * Get the singleton instance\n */\n static getInstance(options?: GatewayRegistryOptions): GatewayRegistry {\n if (!GatewayRegistry.instance) {\n GatewayRegistry.instance = new GatewayRegistry(options);\n return GatewayRegistry.instance;\n }\n\n if (options?.useDynamicLoading === true) {\n GatewayRegistry.instance.useDynamicLoading = true;\n }\n\n return GatewayRegistry.instance;\n }\n\n /**\n * Register custom gateways for type generation\n * @param gateways - Array of custom gateway instances\n */\n registerCustomGateways(gateways: MastraModelGatewayInterface[]): void {\n this.customGateways = gateways;\n }\n\n /**\n * Get all registered custom gateways\n */\n getCustomGateways(): MastraModelGatewayInterface[] {\n return this.customGateways;\n }\n\n /**\n * Sync providers from all gateways\n * Requires dynamic loading to be enabled (useDynamicLoading=true).\n * @param forceRefresh - Force refresh even if recently synced\n * @param writeToSrc - Write to src/ directory in addition to dist/ (useful for manual generation in repo)\n */\n async syncGateways(forceRefresh = false, writeToSrc = false): Promise {\n // Only allow sync when dynamic loading is enabled or when explicitly writing to src (build script)\n if (!this.useDynamicLoading && !writeToSrc) {\n // console.debug('[GatewayRegistry] Skipping sync (dynamic loading disabled, registry is static)');\n return;\n }\n\n // Skip all network fetches when running in offline/air-gapped mode\n if (isOfflineMode()) {\n return;\n }\n\n if (this.isRefreshing && !forceRefresh) {\n // console.debug('[GatewayRegistry] Sync already in progress, skipping...');\n return;\n }\n\n this.isRefreshing = true;\n\n try {\n // console.debug('[GatewayRegistry] Starting gateway sync...');\n\n // Import gateway classes and generation functions\n const { ModelsDevGateway } = await import('./gateways/models-dev.js');\n const { NetlifyGateway } = await import('./gateways/netlify.js');\n const { MastraGateway } = await import('./gateways/mastra.js');\n const { fetchProvidersFromGateways, writeRegistryFiles } = await import('./registry-generator.js');\n\n // Initialize default gateways. Mastra Gateway is dynamic-only and should not be written into checked-in static artifacts.\n const defaultGateways = [\n new ModelsDevGateway({}),\n new NetlifyGateway(),\n ...(writeToSrc ? [] : [new MastraGateway()]),\n ];\n\n // Combine default and custom gateways\n const gateways = [...defaultGateways, ...this.customGateways];\n\n // Fetch provider data\n const { providers, models, attachmentCapabilities } = await fetchProvidersFromGateways(gateways);\n\n // Get package root for file paths\n const packageRoot = getPackageRoot();\n\n // Write to global cache first (so all projects can benefit)\n try {\n fs.mkdirSync(CACHE_DIR(), { recursive: true });\n await writeRegistryFiles(\n GLOBAL_PROVIDER_REGISTRY_JSON(),\n GLOBAL_PROVIDER_TYPES_DTS(),\n providers,\n models,\n attachmentCapabilities,\n );\n // console.debug(`[GatewayRegistry] ✅ Updated global cache at ${CACHE_DIR()}`);\n } catch (error) {\n console.warn('[GatewayRegistry] Failed to write to global cache:', error);\n }\n\n // Write to dist/ (the bundled location that gets distributed)\n const distJsonPath = path.join(packageRoot, 'dist', 'provider-registry.json');\n const distTypesPath = path.join(packageRoot, 'dist', 'llm', 'model', 'provider-types.generated.d.ts');\n\n await writeRegistryFiles(distJsonPath, distTypesPath, providers, models, attachmentCapabilities);\n // console.debug(`[GatewayRegistry] ✅ Updated registry files in dist/`);\n\n // Copy to src/ only when explicitly requested (e.g., running the generation script)\n const shouldWriteToSrc = writeToSrc;\n if (shouldWriteToSrc) {\n const srcJsonPath = path.join(packageRoot, 'src', 'llm', 'model', 'provider-registry.json');\n const srcTypesPath = path.join(packageRoot, 'src', 'llm', 'model', 'provider-types.generated.d.ts');\n\n // Copy the already-generated files\n await fs.promises.copyFile(distJsonPath, srcJsonPath);\n await fs.promises.copyFile(distTypesPath, srcTypesPath);\n\n const distCapDir = path.join(packageRoot, 'dist', 'capabilities');\n const srcCapDir = path.join(packageRoot, 'src', 'llm', 'model', 'capabilities');\n if (fs.existsSync(distCapDir)) {\n await fs.promises.mkdir(srcCapDir, { recursive: true });\n const capFiles = fs.readdirSync(distCapDir).filter(f => f.endsWith('.json'));\n for (const file of capFiles) {\n await fs.promises.copyFile(path.join(distCapDir, file), path.join(srcCapDir, file));\n }\n }\n // console.debug(`[GatewayRegistry] ✅ Copied registry files to src/ (${writeToSrc ? 'manual' : 'dynamic loading'})`);\n }\n\n // Clear the in-memory cache to force reload (dynamic loading only)\n if (this.useDynamicLoading) {\n registryData = null;\n providerCapCache.clear();\n capabilitiesDirCache = undefined;\n }\n\n this.lastRefreshTime = new Date();\n saveLastRefreshTimeToDisk(this.lastRefreshTime);\n // console.debug(`[GatewayRegistry] ✅ Gateway sync completed at ${this.lastRefreshTime.toISOString()}`);\n } catch {\n // Silently ignore — the bundled registry already contains all\n // model data so a failed sync is non-critical.\n } finally {\n this.isRefreshing = false;\n }\n }\n\n /**\n * Get the last refresh time (from memory or disk cache)\n */\n getLastRefreshTime(): Date | null {\n return this.lastRefreshTime || getLastRefreshTimeFromDisk();\n }\n\n /**\n * Start auto-refresh on an interval\n * Requires dynamic loading to be enabled (useDynamicLoading=true).\n * @param intervalMs - Interval in milliseconds (default: 1 hour)\n */\n startAutoRefresh(intervalMs = 60 * 60 * 1000): void {\n // Only allow auto-refresh when dynamic loading is enabled\n if (!this.useDynamicLoading) {\n // console.debug('[GatewayRegistry] Skipping auto-refresh (dynamic loading disabled, registry is static)');\n return;\n }\n\n // Skip auto-refresh when running in offline/air-gapped mode\n if (isOfflineMode()) {\n return;\n }\n\n if (this.refreshInterval) {\n // console.debug('[GatewayRegistry] Auto-refresh already running');\n return;\n }\n\n // console.debug(`[GatewayRegistry] Starting auto-refresh (interval: ${intervalMs}ms)`);\n\n // Check if we need to run an immediate sync\n const lastRefresh = getLastRefreshTimeFromDisk();\n const now = Date.now();\n const shouldRefresh = !modelRouterCacheFailed && (!lastRefresh || now - lastRefresh.getTime() > intervalMs);\n\n if (shouldRefresh) {\n this.syncGateways().catch(() => {});\n }\n\n this.refreshInterval = setInterval(() => {\n if (modelRouterCacheFailed && this.refreshInterval) {\n clearInterval(this.refreshInterval);\n this.refreshInterval = null;\n return;\n }\n this.syncGateways().catch(() => {});\n }, intervalMs);\n\n // Prevent the interval from keeping the process alive\n if (this.refreshInterval.unref) {\n this.refreshInterval.unref();\n }\n }\n\n /**\n * Stop auto-refresh\n */\n stopAutoRefresh(): void {\n if (this.refreshInterval) {\n clearInterval(this.refreshInterval);\n this.refreshInterval = null;\n // console.debug('[GatewayRegistry] Auto-refresh stopped');\n }\n }\n\n /**\n * Get provider configuration by ID\n */\n getProviderConfig(providerId: string): ProviderConfig | undefined {\n const data = loadRegistry(this.useDynamicLoading, this.customGateways);\n return data.providers[providerId];\n }\n\n /**\n * Check if a provider is registered\n */\n isProviderRegistered(providerId: string): boolean {\n const data = loadRegistry(this.useDynamicLoading, this.customGateways);\n return providerId in data.providers;\n }\n\n /**\n * Get all registered providers\n */\n getProviders(): Record {\n const data = loadRegistry(this.useDynamicLoading, this.customGateways);\n return data.providers;\n }\n\n /**\n * Get all models\n */\n getModels(): Record {\n return loadRegistry(this.useDynamicLoading, this.customGateways).models;\n }\n}\n\n// Auto-start refresh if enabled\n// Defaults to enabled when MASTRA_DEV=true (which enables dynamic loading by default)\n// Disabled entirely when MASTRA_OFFLINE is set (air-gapped/offline environments)\nconst isDev = process.env.MASTRA_DEV === 'true' || process.env.MASTRA_DEV === '1';\nconst autoRefreshEnabled =\n !isOfflineMode() &&\n (process.env.MASTRA_AUTO_REFRESH_PROVIDERS === 'true' ||\n (process.env.MASTRA_AUTO_REFRESH_PROVIDERS !== 'false' && isDev));\n\nif (autoRefreshEnabled) {\n // console.debug('[GatewayRegistry] Auto-refresh enabled');\n GatewayRegistry.getInstance({ useDynamicLoading: isDev }).startAutoRefresh();\n}\n"]}