[
  {
    "id": "grok-4.6",
    "displayName": "Grok 4.6",
    "family": "grok-4.6",
    "contextTokens": 500000,
    "maxOutputTokens": 128000,
    "capabilities": {
      "text": true,
      "vision": true,
      "audioInput": false,
      "audioOutput": false,
      "imageGeneration": false,
      "video": false,
      "reasoning": true,
      "tools": true,
      "structuredOutput": true,
      "streaming": true,
      "files": true,
      "webSearch": true
    },
    "parameters": {
      "temperature": true,
      "topP": true,
      "topK": "accepted-on-chat-completions-undocumented",
      "maxTokens": true,
      "reasoningEffort": ["low", "medium", "high", "xhigh"],
      "thinkingBudget": false,
      "stop": false,
      "seed": true,
      "frequencyPenalty": false,
      "presencePenalty": false
    },
    "pricing": {
      "inputPerMillion": 2.0,
      "cachedInputPerMillion": 0.5,
      "outputPerMillion": 6.0,
      "longContextThresholdTokens": 200000,
      "longContextInputPerMillion": 4.0,
      "longContextCachedInputPerMillion": 1.0,
      "longContextOutputPerMillion": 12.0,
      "imageInputPerMillionTokens": 2.0
    },
    "status": "active",
    "aliases": [],
    "notes": "Flagship (Aug 2026). Always-reasoning; reasoning_effort default high, 'none' rejected ('This model does not support `reasoning_effort` value `none`'). reasoning_content returned in chat completions (plain text, also streamed as delta.reasoning_content). Knowledge cutoff 2026-02-01. Docs: 'no text output limit'; API default cap max_completion_tokens=128000. Large hidden system prompt (~640 prompt tokens on an empty request). Supports web_search/x_search/code_interpreter/mcp/file tools on /v1/responses. Rate-limit headers observed: 7200 req / 50M tokens per window."
  },
  {
    "id": "grok-4.5",
    "displayName": "Grok 4.5",
    "family": "grok-4.5",
    "contextTokens": 500000,
    "maxOutputTokens": 128000,
    "capabilities": {
      "text": true,
      "vision": true,
      "audioInput": false,
      "audioOutput": false,
      "imageGeneration": false,
      "video": false,
      "reasoning": true,
      "tools": true,
      "structuredOutput": true,
      "streaming": true,
      "files": true,
      "webSearch": true
    },
    "parameters": {
      "temperature": true,
      "topP": true,
      "topK": "accepted-on-chat-completions-undocumented",
      "maxTokens": true,
      "reasoningEffort": ["low", "medium", "high"],
      "thinkingBudget": false,
      "stop": false,
      "seed": true,
      "frequencyPenalty": false,
      "presencePenalty": false
    },
    "pricing": {
      "inputPerMillion": 2.0,
      "cachedInputPerMillion": 0.3,
      "outputPerMillion": 6.0,
      "longContextThresholdTokens": 200000,
      "longContextInputPerMillion": 4.0,
      "longContextCachedInputPerMillion": 0.6,
      "longContextOutputPerMillion": 12.0,
      "imageInputPerMillionTokens": 2.0
    },
    "status": "active",
    "aliases": ["grok-4.5-latest", "grok-build-latest"],
    "notes": "Coding/agentic model (Jul 2026). Always-reasoning; 'none' rejected; 'xhigh' accepted by the API but docs say it is treated as 'high' on models that do not support it. Very few reasoning tokens on trivial prompts (~13-50). reasoning_content returned. Note the alias 'grok-build-latest' points here, not to grok-build-0.1."
  },
  {
    "id": "grok-4.3",
    "displayName": "Grok 4.3",
    "family": "grok-4.3",
    "contextTokens": 1000000,
    "maxOutputTokens": 128000,
    "capabilities": {
      "text": true,
      "vision": true,
      "audioInput": false,
      "audioOutput": false,
      "imageGeneration": false,
      "video": false,
      "reasoning": true,
      "tools": true,
      "structuredOutput": true,
      "streaming": true,
      "files": true,
      "webSearch": true
    },
    "parameters": {
      "temperature": true,
      "topP": true,
      "topK": "accepted-on-chat-completions-undocumented",
      "maxTokens": true,
      "reasoningEffort": ["none", "low", "medium", "high"],
      "thinkingBudget": false,
      "stop": false,
      "seed": true,
      "frequencyPenalty": false,
      "presencePenalty": false
    },
    "pricing": {
      "inputPerMillion": 1.25,
      "cachedInputPerMillion": 0.2,
      "outputPerMillion": 2.5,
      "longContextThresholdTokens": 200000,
      "longContextInputPerMillion": 2.5,
      "longContextCachedInputPerMillion": 0.4,
      "longContextOutputPerMillion": 5.0,
      "imageInputPerMillionTokens": 1.25
    },
    "status": "active",
    "aliases": ["grok-4.3-latest"],
    "notes": "Best value general model; 1M context. The ONLY probed model that accepts reasoning_effort 'none' (reasoning_tokens=0 -> effectively a non-reasoning mode). 'xhigh' accepted (docs/AI SDK say not supported -> treated as high). Retired May-15-2026 slugs (grok-3, grok-4-0709, grok-4-fast-*, grok-4-1-fast-*) are transparently served by grok-4.3 (response.model = 'grok-4.3'). Retired non-reasoning slugs map to effort 'none', reasoning slugs to 'low'. reasoning_content returned. Batch API 20% discount."
  },
  {
    "id": "grok-4.20-0309-reasoning",
    "displayName": "Grok 4.20 Reasoning (0309)",
    "family": "grok-4.20",
    "contextTokens": 1000000,
    "maxOutputTokens": 128000,
    "capabilities": {
      "text": true,
      "vision": true,
      "audioInput": false,
      "audioOutput": false,
      "imageGeneration": false,
      "video": false,
      "reasoning": true,
      "tools": true,
      "structuredOutput": true,
      "streaming": true,
      "files": true,
      "webSearch": true
    },
    "parameters": {
      "temperature": true,
      "topP": true,
      "topK": "accepted-on-chat-completions-undocumented",
      "maxTokens": true,
      "reasoningEffort": false,
      "thinkingBudget": false,
      "stop": false,
      "seed": true,
      "frequencyPenalty": false,
      "presencePenalty": false
    },
    "pricing": {
      "inputPerMillion": 1.25,
      "cachedInputPerMillion": 0.2,
      "outputPerMillion": 2.5,
      "longContextThresholdTokens": 200000,
      "longContextInputPerMillion": 2.5,
      "longContextCachedInputPerMillion": 0.4,
      "longContextOutputPerMillion": 5.0,
      "imageInputPerMillionTokens": 1.25
    },
    "status": "active",
    "aliases": [
      "grok-4.20-reasoning-latest",
      "grok-4.20",
      "grok-4.20-reasoning",
      "grok-4.20-0309",
      "grok-4.20-beta-0309-reasoning",
      "grok-4.20-beta",
      "grok-4.20-beta-0309",
      "grok-4.20-beta-latest",
      "grok-4.20-beta-latest-reasoning",
      "grok-4.20-beta-reasoning",
      "grok-4.20-experimental-beta-0304-reasoning",
      "grok-4.20-experimental-beta-0304",
      "grok-4.20-experimental-beta-reasoning-latest",
      "grok-4.20-experimental-beta-latest",
      "grok-4.20-reasoning-gv2"
    ],
    "notes": "Always-reasoning, fixed depth: ANY reasoning_effort value (incl. 'none') is rejected with 400 'Model grok-4.20-0309-reasoning does not support parameter reasoningEffort.' (both chat completions and /v1/responses reasoning.effort). reasoning_content returned. Occasionally emits stray '\\\\confidence{NN}' tokens after the answer on trivial prompts (observed with top_k/logprobs). Batch API 20% discount."
  },
  {
    "id": "grok-4.20-0309-non-reasoning",
    "displayName": "Grok 4.20 Non-Reasoning (0309)",
    "family": "grok-4.20",
    "contextTokens": 1000000,
    "maxOutputTokens": 128000,
    "capabilities": {
      "text": true,
      "vision": true,
      "audioInput": false,
      "audioOutput": false,
      "imageGeneration": false,
      "video": false,
      "reasoning": false,
      "tools": true,
      "structuredOutput": true,
      "streaming": true,
      "files": true,
      "webSearch": true
    },
    "parameters": {
      "temperature": true,
      "topP": true,
      "topK": "accepted-on-chat-completions-undocumented",
      "maxTokens": true,
      "reasoningEffort": false,
      "thinkingBudget": false,
      "stop": true,
      "seed": true,
      "frequencyPenalty": false,
      "presencePenalty": false
    },
    "pricing": {
      "inputPerMillion": 1.25,
      "cachedInputPerMillion": 0.2,
      "outputPerMillion": 2.5,
      "longContextThresholdTokens": 200000,
      "longContextInputPerMillion": 2.5,
      "longContextCachedInputPerMillion": 0.4,
      "longContextOutputPerMillion": 5.0,
      "imageInputPerMillionTokens": 1.25
    },
    "status": "active",
    "aliases": [
      "grok-4.20-non-reasoning",
      "grok-4.20-non-reasoning-latest",
      "grok-4.20-beta-non-reasoning",
      "grok-4.20-beta-latest-non-reasoning",
      "grok-4.20-experimental-beta-0304-non-reasoning",
      "grok-4.20-experimental-beta-non-reasoning-latest",
      "grok-4.20-beta-0309-non-reasoning",
      "grok-4.20-non-reasoning-gv2"
    ],
    "notes": "The only true non-reasoning model in the lineup (fastest TTFT, reasoning_tokens always 0, no reasoning_content). The ONLY model that accepts `stop`. reasoning_effort rejected. frequency/presence_penalty still rejected (400). Good default for cheap/fast chat. Batch API 20% discount."
  },
  {
    "id": "grok-4.20-multi-agent-0309",
    "displayName": "Grok 4.20 Multi-Agent (0309, beta)",
    "family": "grok-4.20",
    "contextTokens": 1000000,
    "maxOutputTokens": null,
    "capabilities": {
      "text": true,
      "vision": true,
      "audioInput": false,
      "audioOutput": false,
      "imageGeneration": false,
      "video": false,
      "reasoning": true,
      "tools": "server-side-only",
      "structuredOutput": null,
      "streaming": true,
      "files": true,
      "webSearch": true
    },
    "parameters": {
      "temperature": null,
      "topP": null,
      "topK": null,
      "maxTokens": false,
      "reasoningEffort": ["low", "medium", "high", "xhigh"],
      "thinkingBudget": false,
      "stop": false,
      "seed": null,
      "frequencyPenalty": false,
      "presencePenalty": false
    },
    "pricing": {
      "inputPerMillion": 1.25,
      "cachedInputPerMillion": 0.2,
      "outputPerMillion": 2.5,
      "longContextThresholdTokens": 200000,
      "longContextInputPerMillion": 2.5,
      "longContextCachedInputPerMillion": 0.4,
      "longContextOutputPerMillion": 5.0,
      "imageInputPerMillionTokens": 1.25
    },
    "status": "beta",
    "aliases": [
      "grok-4.20-multi-agent",
      "grok-4.20-multi-agent-latest",
      "grok-4.20-multi-agent-beta-latest",
      "grok-4.20-multi-agent-experimental-beta-0304",
      "grok-4.20-multi-agent-experimental-beta-latest",
      "grok-4.20-multi-agent-beta-0309"
    ],
    "notes": "/v1/responses ONLY: chat completions returns 400 'Multi Agent requests are not allowed on chat completions' (probed). reasoning.effort selects agent count (low/medium = 4 agents, high/xhigh = 16), not depth. No client-side function tools, no max_tokens. All leader + sub-agent tokens billed -> expensive; lower rate limits (T0 9 RPS / 2.5M TPM). Not probed for generation (cost). Deliberately NOT recommended as a default chat model in PolyLLM."
  },
  {
    "id": "grok-build-0.1",
    "displayName": "Grok Build 0.1",
    "family": "grok-build",
    "contextTokens": 256000,
    "maxOutputTokens": 128000,
    "capabilities": {
      "text": true,
      "vision": true,
      "audioInput": false,
      "audioOutput": false,
      "imageGeneration": false,
      "video": false,
      "reasoning": true,
      "tools": true,
      "structuredOutput": true,
      "streaming": true,
      "files": null,
      "webSearch": null
    },
    "parameters": {
      "temperature": true,
      "topP": true,
      "topK": "accepted-on-chat-completions-undocumented",
      "maxTokens": true,
      "reasoningEffort": false,
      "thinkingBudget": false,
      "stop": false,
      "seed": true,
      "frequencyPenalty": false,
      "presencePenalty": false
    },
    "pricing": {
      "inputPerMillion": 1.0,
      "cachedInputPerMillion": 0.2,
      "outputPerMillion": 2.0,
      "longContextThresholdTokens": 200000,
      "longContextInputPerMillion": 2.0,
      "longContextCachedInputPerMillion": 0.4,
      "longContextOutputPerMillion": 4.0,
      "imageInputPerMillionTokens": 1.0
    },
    "status": "active",
    "aliases": ["grok-code-fast-1", "grok-code-fast", "grok-code-fast-1-0825"],
    "notes": "Cheapest text model; successor of grok-code-fast-1 (those slugs alias here). Always-reasoning with fixed depth: every reasoning_effort value rejected (400 'does not support parameter reasoningEffort'). Tends to spend many reasoning tokens even on trivial prompts (300-650). reasoning_content returned. Coding-oriented; image input accepted (image_tokens billed)."
  }
]
