[
 {
  "id": "gemini-3.8-flash",
  "displayName": "Gemini 3.8 Flash",
  "family": "gemini-3.x-flash",
  "contextTokens": 1048576,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "active",
  "capabilities": {
   "text": true,
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": true,
   "structuredOutput": true,
   "streaming": true,
   "files": true,
   "webSearch": true
  },
  "pricing": {
   "inputPerMillion": 0.75,
   "cachedInputPerMillion": 0.075,
   "outputPerMillion": 3.75
  },
  "pricingNote": "introductory through 2026-12-31; from 2027-01-01: 1.50 / 0.15 / 7.50. >200k-token prompts not tiered.",
  "thinkingProfile": {
   "mode": "level",
   "levels": [
    "low",
    "medium",
    "high"
   ],
   "none": null
  },
  "chat": true,
  "notes": "Stable, released 2026-09-02. Probed: generateContent+systemInstruction OK, vision OK (2x2 PNG = 1089 image tokens), temperature 0/1.5/2 OK, candidateCount=2 -> 400, logprobs -> 400. Default thinkingLevel medium; 'minimal' returns an error (docs). Free tier: 20 requests/day (quotaValue=20 seen in 429"
 },
 {
  "id": "gemini-3.7-flash",
  "displayName": "Gemini 3.7 Flash",
  "family": "gemini-3.x-flash",
  "contextTokens": 1048576,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "active",
  "capabilities": {
   "text": true,
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": true,
   "structuredOutput": true,
   "streaming": true,
   "files": true,
   "webSearch": true
  },
  "pricing": {
   "inputPerMillion": 0.75,
   "cachedInputPerMillion": 0.075,
   "outputPerMillion": 3.75
  },
  "pricingNote": "same as 3.8 Flash: introductory through 2026-12-31, then 1.50 / 0.15 / 7.50",
  "thinkingProfile": {
   "mode": "level",
   "levels": [
    "low",
    "medium",
    "high"
   ],
   "none": null
  },
  "chat": true,
  "notes": "Stable, Aug 2026. Probed: generateContent+systemInstruction OK; stream 3 chunks with full usageMetadata on every chunk; function call round trip OK; thought signature on functionCall part is MANDATORY (400 'Function call is missing a thought_signature in functionCall parts...' when omitted; dummy 's"
 },
 {
  "id": "gemini-3.6-flash",
  "displayName": "Gemini 3.6 Flash",
  "family": "gemini-3.x-flash",
  "contextTokens": 1048576,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "active",
  "capabilities": {
   "text": true,
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": true,
   "structuredOutput": true,
   "streaming": true,
   "files": true,
   "webSearch": true
  },
  "pricing": {
   "inputPerMillion": 0.75,
   "cachedInputPerMillion": 0.075,
   "outputPerMillion": 3.75
  },
  "pricingNote": "same as 3.8 Flash: introductory through 2026-12-31, then 1.50 / 0.15 / 7.50",
  "thinkingProfile": {
   "mode": "level",
   "levels": [
    "minimal",
    "low",
    "medium",
    "high"
   ],
   "none": "MINIMAL"
  },
  "chat": true,
  "notes": "Stable, July 2026. Probed: generateContent OK; stream 4 chunks (thought summary chunk first when includeThoughts, last chunk = empty text part carrying thoughtSignature + finishReason STOP); function call streaming (1 chunk with functionCall+thoughtSignature+id, then final empty chunk) and round tri"
 },
 {
  "id": "gemini-3.5-flash",
  "displayName": "Gemini 3.5 Flash",
  "family": "gemini-3.x-flash",
  "contextTokens": 1048576,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "active",
  "capabilities": {
   "text": true,
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": true,
   "structuredOutput": true,
   "streaming": true,
   "files": true,
   "webSearch": true
  },
  "pricing": {
   "inputPerMillion": 1.5,
   "cachedInputPerMillion": 0.15,
   "outputPerMillion": 9.0
  },
  "pricingNote": null,
  "thinkingProfile": {
   "mode": "level",
   "levels": [
    "minimal",
    "low",
    "medium",
    "high"
   ],
   "none": "budget0"
  },
  "chat": true,
  "notes": "GA May 2026; current target of gemini-flash-latest per changelog. Probed: systemInstruction OK, stream 3 chunks (first chunk usage has only promptTokenCount; later chunks full), includeThoughts -> parts with thought:true, function call streaming + round trip OK (functionCall has id 'call_...'), resp"
 },
 {
  "id": "gemini-3.5-flash-lite",
  "displayName": "Gemini 3.5 Flash-Lite",
  "family": "gemini-3.x-flash-lite",
  "contextTokens": 1048576,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "active",
  "capabilities": {
   "text": true,
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": true,
   "structuredOutput": true,
   "streaming": true,
   "files": true,
   "webSearch": true
  },
  "pricing": {
   "inputPerMillion": 0.3,
   "cachedInputPerMillion": 0.03,
   "outputPerMillion": 2.5
  },
  "pricingNote": null,
  "thinkingProfile": {
   "mode": "level",
   "levels": [
    "minimal",
    "low",
    "medium",
    "high"
   ],
   "none": "omit"
  },
  "chat": true,
  "notes": "Stable, July 2026; default thinking OFF (thoughtsTokenCount 0 unless thinkingLevel/thinkingBudget set). Full param matrix probed: all thinkingLevel values OK (minimal=0 thoughts), thinkingLevel+thinkingBudget together -> 400 'You can only set only one of thinking budget and thinking level.', penalti"
 },
 {
  "id": "gemini-3.1-flash-lite",
  "displayName": "Gemini 3.1 Flash-Lite",
  "family": "gemini-3.x-flash-lite",
  "contextTokens": 1048576,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "active",
  "capabilities": {
   "text": true,
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": true,
   "structuredOutput": true,
   "streaming": true,
   "files": true,
   "webSearch": true
  },
  "pricing": {
   "inputPerMillion": 0.25,
   "cachedInputPerMillion": null,
   "outputPerMillion": 1.5
  },
  "pricingNote": "audio input 0.50/M; cached price not listed on pricing page",
  "thinkingProfile": {
   "mode": "level",
   "levels": [
    "minimal",
    "low",
    "medium",
    "high"
   ],
   "none": "budget0"
  },
  "chat": true,
  "notes": "GA May 2026; default thinkingLevel minimal (thinking off). Full param matrix probed: same acceptance pattern as 3.5-flash-lite except thinkingBudget 0 is accepted. Function calling + responseJsonSchema OK. gemini-3.1-flash-lite-preview alias still answers and reports modelVersion gemini-3.1-flash-li"
 },
 {
  "id": "gemini-3-flash-preview",
  "displayName": "Gemini 3 Flash Preview",
  "family": "gemini-3.x-flash",
  "contextTokens": 1048576,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "preview",
  "capabilities": {
   "text": true,
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": true,
   "structuredOutput": true,
   "streaming": true,
   "files": true,
   "webSearch": true
  },
  "pricing": {
   "inputPerMillion": 0.5,
   "cachedInputPerMillion": null,
   "outputPerMillion": 3.0
  },
  "pricingNote": "audio input 1.00/M",
  "thinkingProfile": {
   "mode": "level",
   "levels": [
    "minimal",
    "low",
    "medium",
    "high"
   ],
   "none": "budget0"
  },
  "chat": true,
  "notes": "Dec 2025 preview; superseded by gemini-3.5-flash (stable). Default thinking high (dynamic). Param matrix probed except thinkingLevel low / logprobs (429). No shutdown date published."
 },
 {
  "id": "gemini-3.1-pro-preview",
  "displayName": "Gemini 3.1 Pro Preview",
  "family": "gemini-3.x-pro",
  "contextTokens": 1048576,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "preview",
  "capabilities": {
   "text": true,
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": true,
   "structuredOutput": true,
   "streaming": true,
   "files": true,
   "webSearch": true
  },
  "pricing": {
   "inputPerMillion": 2.0,
   "cachedInputPerMillion": 0.2,
   "outputPerMillion": 12.0
  },
  "pricingNote": ">200k prompt: 4.00 in / 0.40 cached / 18.00 out; storage 4.50/M/hr",
  "thinkingProfile": {
   "mode": "level",
   "levels": [
    "low",
    "medium",
    "high"
   ],
   "none": null
  },
  "chat": true,
  "notes": "PAID TIER ONLY: free-tier quota is 0 (429 RESOURCE_EXHAUSTED 'limit: 0', quotaId GenerateRequestsPerDayPerProjectPerModel-FreeTier). Not probed beyond that. Default thinkingLevel high. gemini-pro-latest currently resolves here (also 429 limit 0 on free tier). Google's recommended replacement for gem"
 },
 {
  "id": "gemini-3.1-pro-preview-customtools",
  "displayName": "Gemini 3.1 Pro Preview (custom tools)",
  "family": "gemini-3.x-pro",
  "contextTokens": 1048576,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "preview",
  "capabilities": {
   "text": true,
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": true,
   "structuredOutput": true,
   "streaming": true,
   "files": true,
   "webSearch": true
  },
  "pricing": {
   "inputPerMillion": 2.0,
   "cachedInputPerMillion": 0.2,
   "outputPerMillion": 12.0
  },
  "pricingNote": "assumed same as gemini-3.1-pro-preview (not separately listed)",
  "thinkingProfile": {
   "mode": "level",
   "levels": [
    "low",
    "medium",
    "high"
   ],
   "none": null
  },
  "chat": true,
  "notes": "Variant that prioritises custom (function) tools over built-ins in agentic/bash workflows; 'may see quality fluctuations'. Paid tier only (429 limit 0 on free tier). Not probed."
 },
 {
  "id": "gemini-2.5-pro",
  "displayName": "Gemini 2.5 Pro",
  "family": "gemini-2.5",
  "contextTokens": 1048576,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "deprecated",
  "capabilities": {
   "text": true,
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": true,
   "structuredOutput": true,
   "streaming": true,
   "files": true,
   "webSearch": true
  },
  "pricing": {
   "inputPerMillion": 1.25,
   "cachedInputPerMillion": 0.125,
   "outputPerMillion": 10.0
  },
  "pricingNote": ">200k prompt: 2.50 / 0.25 / 15.00; paid tier only",
  "thinkingProfile": {
   "mode": "budget"
  },
  "chat": true,
  "notes": "LISTED by /v1beta/models but generateContent returns 404 NOT_FOUND: 'This model models/gemini-2.5-pro is no longer available to new users. Please update your code to use models/gemini-3.1-pro-preview ... We recommend you to use the Interactions API.' Only pre-existing users can call it. Knowledge cu"
 },
 {
  "id": "gemini-2.5-flash",
  "displayName": "Gemini 2.5 Flash",
  "family": "gemini-2.5",
  "contextTokens": 1048576,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "deprecated",
  "capabilities": {
   "text": true,
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": true,
   "structuredOutput": true,
   "streaming": true,
   "files": true,
   "webSearch": true
  },
  "pricing": {
   "inputPerMillion": 0.3,
   "cachedInputPerMillion": 0.03,
   "outputPerMillion": 2.5
  },
  "pricingNote": "audio input 1.00/M, cached audio 0.10/M",
  "thinkingProfile": {
   "mode": "budget"
  },
  "chat": true,
  "notes": "LISTED by /v1beta/models but generateContent, streamGenerateContent, cachedContents.create all return 404 'no longer available to new users' -> use gemini-3.6-flash. Only grandfathered keys can use it. Knowledge cutoff Jan 2025."
 },
 {
  "id": "gemini-2.5-flash-lite",
  "displayName": "Gemini 2.5 Flash-Lite",
  "family": "gemini-2.5",
  "contextTokens": 1048576,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "deprecated",
  "capabilities": {
   "text": true,
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": true,
   "structuredOutput": true,
   "streaming": true,
   "files": true,
   "webSearch": true
  },
  "pricing": {
   "inputPerMillion": 0.1,
   "cachedInputPerMillion": 0.01,
   "outputPerMillion": 0.4
  },
  "pricingNote": "audio input 0.30/M",
  "thinkingProfile": {
   "mode": "budget"
  },
  "chat": true,
  "notes": "LISTED but 404 'no longer available to new users' -> use gemini-3.5-flash-lite (probed via chats + safetySettings probes)."
 },
 {
  "id": "gemini-flash-latest",
  "displayName": "Gemini Flash (latest alias)",
  "family": "alias",
  "contextTokens": 1048576,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "active",
  "capabilities": {
   "text": true,
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": true,
   "structuredOutput": true,
   "streaming": true,
   "files": true,
   "webSearch": true
  },
  "pricing": {
   "inputPerMillion": 1.5,
   "cachedInputPerMillion": 0.15,
   "outputPerMillion": 9.0
  },
  "pricingNote": "billed as the model it resolves to (currently gemini-3.5-flash per changelog May 2026); not listed on pricing page",
  "thinkingProfile": {
   "mode": "level",
   "levels": [
    "minimal",
    "low",
    "medium",
    "high"
   ],
   "none": "budget0"
  },
  "chat": true,
  "notes": "Hot-swapped alias; Google gives 2 weeks' email notice before re-pointing. Probe returned 503 'high demand' (transient) so resolution not confirmed live; changelog says gemini-3.5-flash. Avoid as default in a registry: pin explicit ids and show alias as convenience."
 },
 {
  "id": "gemini-flash-lite-latest",
  "displayName": "Gemini Flash-Lite (latest alias)",
  "family": "alias",
  "contextTokens": 1048576,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "active",
  "capabilities": {
   "text": true,
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": true,
   "structuredOutput": true,
   "streaming": true,
   "files": true,
   "webSearch": true
  },
  "pricing": {
   "inputPerMillion": 0.3,
   "cachedInputPerMillion": 0.03,
   "outputPerMillion": 2.5
  },
  "pricingNote": "billed as gemini-3.5-flash-lite (probe modelVersion = gemini-3.5-flash-lite)",
  "thinkingProfile": {
   "mode": "level",
   "levels": [
    "minimal",
    "low",
    "medium",
    "high"
   ],
   "none": "omit"
  },
  "chat": true,
  "notes": "Probed: resolves to gemini-3.5-flash-lite (modelVersion). Used for the raw REST SSE probe (works)."
 },
 {
  "id": "gemini-pro-latest",
  "displayName": "Gemini Pro (latest alias)",
  "family": "alias",
  "contextTokens": 1048576,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "active",
  "capabilities": {
   "text": true,
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": true,
   "structuredOutput": true,
   "streaming": true,
   "files": true,
   "webSearch": true
  },
  "pricing": {
   "inputPerMillion": 2.0,
   "cachedInputPerMillion": 0.2,
   "outputPerMillion": 12.0
  },
  "pricingNote": "billed as the resolved model (429 quota dimension showed model=gemini-3.1-pro -> resolves to 3.1 Pro preview)",
  "thinkingProfile": {
   "mode": "level",
   "levels": [
    "low",
    "medium",
    "high"
   ],
   "none": null
  },
  "chat": true,
  "notes": "Paid tier only (free-tier 429 limit 0, quota dimension model=gemini-3.1-pro)."
 },
 {
  "id": "gemma-4-31b-it",
  "displayName": "Gemma 4 31B (instruction-tuned)",
  "family": "gemma-4",
  "contextTokens": 262144,
  "maxOutputTokens": 32768,
  "thinking": true,
  "status": "active",
  "capabilities": {
   "text": true,
   "vision": "docs: image/video/audio input supported by Gemma 4; not probed on the API",
   "audioInput": null,
   "audioOutput": false,
   "imageGeneration": false,
   "video": null,
   "reasoning": true,
   "tools": "docs: yes; not probed",
   "structuredOutput": true,
   "streaming": true,
   "files": null,
   "webSearch": false
  },
  "pricing": {
   "inputPerMillion": 0,
   "cachedInputPerMillion": null,
   "outputPerMillion": 0
  },
  "pricingNote": "Free tier: 'Free of charge' (data used for product improvement). Paid tier: 'Not available'.",
  "thinkingProfile": {
   "mode": "none"
  },
  "chat": true,
  "notes": "Open model served on Gemini API. Thinks by default (thoughtsTokenCount 47-430) but thinkingConfig is rejected: thinkingBudget -> 400 'Thinking budget is not supported for this model.'; thinkingLevel -> 400 'Thinking level is not supported for this model.' responseSchema / responseJsonSchema / text/x"
 },
 {
  "id": "gemma-4-26b-a4b-it",
  "displayName": "Gemma 4 26B A4B (MoE, instruction-tuned)",
  "family": "gemma-4",
  "contextTokens": 262144,
  "maxOutputTokens": 32768,
  "thinking": true,
  "status": "active",
  "capabilities": {
   "text": true,
   "vision": null,
   "audioInput": null,
   "audioOutput": false,
   "imageGeneration": false,
   "video": null,
   "reasoning": true,
   "tools": null,
   "structuredOutput": null,
   "streaming": true,
   "files": null,
   "webSearch": false
  },
  "pricing": {
   "inputPerMillion": 0,
   "cachedInputPerMillion": null,
   "outputPerMillion": 0
  },
  "pricingNote": "free tier only",
  "thinkingProfile": {
   "mode": "none"
  },
  "chat": true,
  "notes": "Probed once: 'pong' OK with 58 thought tokens. Assume same behaviour as gemma-4-31b-it (unknowns = null)."
 },
 {
  "id": "gemini-omni-1.1-flash",
  "displayName": "Gemini Omni 1.1 Flash",
  "family": "gemini-omni",
  "contextTokens": 131072,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "active",
  "capabilities": {
   "text": "docs: text output priced (9.00/M) but model card says output = video only",
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": null,
   "structuredOutput": null,
   "streaming": null,
   "files": null,
   "webSearch": false
  },
  "pricing": {
   "inputPerMillion": 1.5,
   "cachedInputPerMillion": null,
   "outputPerMillion": 9.0
  },
  "pricingNote": "video output 17.50/M (~0.10/s); paid tier only",
  "thinkingProfile": {
   "mode": "none"
  },
  "chat": false,
  "notes": "Video-generation model (GA Aug 2026; 3-10 s clips, 360p-4K). Models endpoint says inputTokenLimit 131072 (model card says 1,048,576 \u2014 endpoint value preferred). PAID TIER ONLY: free tier 429 'limit: 0'. Not usable for chat; exclude from the chat model picker or gate behind paid-tier detection."
 },
 {
  "id": "gemini-omni-flash-preview",
  "displayName": "Gemini Omni Flash Preview",
  "family": "gemini-omni",
  "contextTokens": 131072,
  "maxOutputTokens": 65536,
  "thinking": true,
  "status": "preview",
  "capabilities": {
   "text": null,
   "vision": true,
   "audioInput": true,
   "audioOutput": false,
   "imageGeneration": false,
   "video": true,
   "reasoning": true,
   "tools": null,
   "structuredOutput": null,
   "streaming": null,
   "files": null,
   "webSearch": false
  },
  "pricing": {
   "inputPerMillion": 1.5,
   "cachedInputPerMillion": null,
   "outputPerMillion": 9.0
  },
  "pricingNote": "video output 17.50/M; paid tier only",
  "thinkingProfile": {
   "mode": "none"
  },
  "chat": false,
  "notes": "Preview predecessor of gemini-omni-1.1-flash (June 2026). Free tier 429 'limit: 0'. Not a chat model."
 }
]