SPB Git forge

spb/doc-api

Public
2commits 1branches 0releases
15.7 MBsize
maindefault branch
13 days agolast push
Python 88.3% TypeScript 7.6% Shell 4.1%
257.2 KB · 8,017 lines json
Raw Blame History
1{2 "record_type": "cross_provider_feature_matrix",3 "generated_at": "2026-09-18",4 "providers": [5  "openai",6  "anthropic",7  "xai",8  "gemini"9 ],10 "description": "Feature-by-feature comparison of the OpenAI, Anthropic, xAI and Gemini public APIs. Each provider object: supported (bool), how (free text), endpoint (canonical METHOD /path or empty), params (parameter paths as used in generated/parameters.json), status (atlas status vocabulary), notes. providers_supporting = providers with supported=true; portable = the same task is expressible on every provider that offers it (never true for single-provider features). ref = generated file / docs page the row was derived from.",11 "status_vocabulary": [12  "DOCUMENTED",13  "LIVE_DISCOVERED",14  "LIVE_VERIFIED",15  "BETA",16  "PREVIEW",17  "GA",18  "LEGACY",19  "DEPRECATED",20  "RETIRED",21  "ACCOUNT_RESTRICTED",22  "UNVERIFIED",23  "FAILED_VERIFICATION",24  "DOCUMENTATION_INCOMPLETE"25 ],26 "human_twin": "docs/comparisons/features.md",27 "counts": {28  "features": 125,29  "on_all_four": 45,30  "on_three": 34,31  "on_two": 16,32  "on_one": 26,33  "on_none": 4,34  "portable": 86,35  "unique": {36   "openai": [37    "Legacy completion (prompt-in / text-out) endpoint",38    "Output verbosity control",39    "Log probabilities",40    "Free-form / grammar-constrained custom tools",41    "Tool namespaces",42    "Built-in SaaS connectors",43    "Full-duplex voice with backend delegation (Live) / voice agents",44    "Moderation endpoint",45    "Content provenance",46    "Embeddable chat UI & workspace agents",47    "Fine-tuning / tuning",48    "Evals",49    "Graders (standalone)",50    "Stored completions / distillation",51    "Reusable prompt templates"52   ],53   "anthropic": [54    "Assistant prefill (continue a partial assistant turn)",55    "Server-side model fallback on refusal",56    "Memory tool (client-side persistent memory)",57    "Browser use toolset",58    "Advisor (consult a stronger model mid-response)",59    "Server-side context editing (clear old tool results / thinking)",60    "Outcome grading (define outcome + rubric)",61    "Server-side memory stores"62   ],63   "xai": [64    "Per-request dollar cost in the response",65    "Retired model ids keep resolving (redirect aliases)"66   ],67   "gemini": [68    "Music generation"69   ]70  },71  "combinations": {72   "openai+xai+gemini": [73    "Legacy / secondary chat endpoint",74    "Response storage, retrieval, deletion",75    "Background / deferred (async) execution",76    "JSON mode (valid JSON, no schema)",77    "File search / managed RAG",78    "Image generation as a tool / modality inside a text call",79    "Text-to-speech",80    "Speech-to-text / transcription",81    "Realtime speech-to-speech (WebSocket / WebRTC / SIP)",82    "Image generation API",83    "Video generation API",84    "Multipart / resumable upload",85    "Pro / extended-compute mode",86    "OpenAI-compatibility layer"87   ],88   "anthropic+xai": [89    "Anthropic-compatible Messages endpoint"90   ],91   "openai+gemini": [92    "Configurable safety thresholds",93    "Async tools (model continues while a tool runs)",94    "Container management API",95    "Audio / video input (understanding)",96    "Embeddings"97   ],98   "openai+anthropic+xai": [99    "Deferred tool loading / tool search",100    "Shell execution",101    "Skills (packaged instructions + files)",102    "Stand-alone compaction request",103    "Rate-limit headers",104    "Request correlation",105    "Administration API",106    "Audit / compliance data access",107    "Spend limits",108    "Data residency",109    "Self-hosted execution",110    "Multi-agent / subagents"111   ],112   "openai+anthropic": [113    "Programmatic tool calling (model writes code that calls tools)",114    "File editing tool",115    "Cache diagnostics",116    "Change effort mid-conversation without breaking the cache",117    "Mid-conversation tool add/remove (cache-preserving)",118    "Beta opt-in header"119   ],120   "openai+anthropic+gemini": [121    "Computer use",122    "Private-network MCP (tunnels) / agent credentials",123    "Server-side compaction (in-flight)",124    "Hosted sandbox",125    "Credential vaults / secrets",126    "Artifacts / deliverables"127   ],128   "xai+gemini": [129    "Social / vertical search (X posts, Google Maps)"130   ],131   "anthropic+gemini": [132    "Web fetch / URL context (retrieve specific URLs)",133    "API version header / path version",134    "Scheduled runs"135   ],136   "anthropic+xai+gemini": [137    "Task-wide token budget (advisory)",138    "Session budgets"139   ]140  },141  "per_provider_supported": {142   "openai": 103,143   "anthropic": 83,144   "xai": 77,145   "gemini": 77146  }147 },148 "records": [149  {150   "section": "Core generation",151   "feature": "Primary text/multimodal generation endpoint",152   "openai": {153    "supported": true,154    "how": "Responses API: `input` (string or Item[]), `output[]` items",155    "endpoint": "POST /v1/responses",156    "params": [157     "model",158     "input",159     "instructions",160     "tools",161     "text",162     "reasoning"163    ],164    "status": [165     "DOCUMENTED",166     "LIVE_VERIFIED"167    ],168    "notes": "stored by default (`store:true`, 30 days)"169   },170   "anthropic": {171    "supported": true,172    "how": "Messages API: `messages[]` of content blocks, `content[]` blocks out",173    "endpoint": "POST /v1/messages",174    "params": [175     "model",176     "messages",177     "system",178     "max_tokens",179     "tools",180     "output_config",181     "thinking"182    ],183    "status": [184     "DOCUMENTED",185     "LIVE_VERIFIED"186    ],187    "notes": "stateless; `max_tokens` required (400 if missing)"188   },189   "xai": {190    "supported": true,191    "how": "Responses API clone: same `input` items / `output[]` items as OpenAI (`message`, `reasoning`, `function_call`, `web_search_call`, `code_interpreter_call`, `mcp_call`…); xAI extras `max_turns`, `top_k`, `min_p`, `reasoning_effort`; `usage.cost_in_usd_ticks`",192    "endpoint": "POST /v1/responses",193    "params": [194     "model",195     "input",196     "instructions",197     "tools",198     "text",199     "reasoning",200     "max_turns",201     "store"202    ],203    "status": [204     "DOCUMENTED",205     "LIVE_VERIFIED"206    ],207    "notes": "stored by default (30 days); `background` → 400; `metadata` → 400; every Grok call bills reasoning tokens"208   },209   "gemini": {210    "supported": true,211    "how": "`generateContent`: `contents[] {role: user|model, parts[]}` → `candidates[].content.parts[]`; `generationConfig` holds every knob; Google calls it 'legacy' since June 2026 in favour of the **Interactions API** (`POST /v1beta/interactions`, snake_case, `model` or `agent`, `input`, `steps[]` out)",212    "endpoint": "POST /v1beta/models/{model}:generateContent",213    "params": [214     "contents",215     "systemInstruction",216     "generationConfig",217     "tools",218     "toolConfig",219     "safetySettings",220     "cachedContent"221    ],222    "status": [223     "DOCUMENTED",224     "LIVE_VERIFIED"225    ],226    "notes": "`/v1` stable twin exists for generateContent; Interactions `/v1beta` BETA + LIVE_VERIFIED, `/v1` GA but UNVERIFIED"227   },228   "providers_supporting": [229    "openai",230    "anthropic",231    "xai",232    "gemini"233   ],234   "provider_count": 4,235   "portable": true,236   "notes": "Four envelopes, two shapes: OpenAI and xAI share the **items** model (xAI reimplements the Responses API); Anthropic uses **content blocks**; Gemini uses **parts** inside `contents[]` with `generationConfig`. Required fields differ: Anthropic needs `max_tokens`; Gemini needs the last turn to be `user`; xAI rejects `background`/`metadata`.",237   "ref": "docs/openai/responses.md · docs/anthropic/messages-api.md · docs/xai/responses.md · docs/gemini/generate-content.md · docs/gemini/interactions-api.md"238  },239  {240   "section": "Core generation",241   "feature": "Legacy / secondary chat endpoint",242   "openai": {243    "supported": true,244    "how": "Chat Completions (`messages[]`, `choices[]`), still GA and maintained",245    "endpoint": "POST /v1/chat/completions",246    "params": [247     "messages",248     "response_format",249     "reasoning_effort",250     "web_search_options"251    ],252    "status": [253     "DOCUMENTED",254     "LIVE_VERIFIED"255    ],256    "notes": "no hosted tools except search models; list/retrieve/update/delete of stored completions"257   },258   "anthropic": {259    "supported": false,260    "how": "not offered",261    "endpoint": "",262    "params": [],263    "status": [264     "DOCUMENTED"265    ],266    "notes": "none — Messages is the only chat surface"267   },268   "xai": {269    "supported": true,270    "how": "Chat Completions, OpenAI-compatible; xAI calls it the **legacy predecessor** of `/v1/responses` (new features land on Responses first); only `function` tools; `deferred:true` + `GET /v1/chat/deferred-completion/{id}`; `reasoning_content` field",271    "endpoint": "POST /v1/chat/completions",272    "params": [273     "messages",274     "reasoning_effort",275     "response_format",276     "deferred",277     "prompt_cache_key",278     "max_completion_tokens"279    ],280    "status": [281     "DOCUMENTED",282     "LEGACY",283     "LIVE_VERIFIED"284    ],285    "notes": "`file` parts → 400 (use Responses); server tools → 422; Live Search params → 410"286   },287   "gemini": {288    "supported": true,289    "how": "OpenAI-compatibility layer `POST /v1beta/openai/chat/completions` (Bearer key required; `extra_body.google.thinking_config`, `cached_content`; unknown params silently ignored); native `generateContent` itself is now labelled legacy vs Interactions",290    "endpoint": "POST /v1beta/openai/chat/completions",291    "params": [292     "messages",293     "reasoning_effort",294     "response_format",295     "extra_body.google"296    ],297    "status": [298     "DOCUMENTED",299     "BETA",300     "LIVE_VERIFIED"301    ],302    "notes": "no Responses / Assistants / audio routes on the compat layer"303   },304   "providers_supporting": [305    "openai",306    "xai",307    "gemini"308   ],309   "provider_count": 3,310   "portable": true,311   "notes": "OpenAI, xAI and Gemini all expose an OpenAI-shaped `chat/completions`; Anthropic has none. Only OpenAI's is a first-class, fully featured surface.",312   "ref": "docs/comparisons/responses-vs-chat-completions.md · docs/xai/chat-completions.md · docs/gemini/openai-compatibility.md"313  },314  {315   "section": "Core generation",316   "feature": "Anthropic-compatible Messages endpoint",317   "openai": {318    "supported": false,319    "how": "not offered",320    "endpoint": "",321    "params": [],322    "status": [323     "UNVERIFIED"324    ],325    "notes": "no equivalent surface in the documented API"326   },327   "anthropic": {328    "supported": true,329    "how": "the native surface",330    "endpoint": "POST /v1/messages",331    "params": [332     "messages",333     "system",334     "max_tokens",335     "tools"336    ],337    "status": [338     "DOCUMENTED",339     "LIVE_VERIFIED"340    ],341    "notes": ""342   },343   "xai": {344    "supported": true,345    "how": "`POST /v1/messages` accepting Anthropic shapes (`system`, `messages`, `tools[{name,description,input_schema}]`, `tool_choice {auto|any|tool}`, `thinking` blocks with empty `signature`) — **fully deprecated** by xAI ('migrate to Responses or gRPC'); Bearer auth, `anthropic-version` ignored; `/v1/complete` twin RETIRED (400)",346    "endpoint": "POST /v1/messages",347    "params": [348     "messages",349     "system",350     "max_tokens",351     "tools",352     "tool_choice"353    ],354    "status": [355     "DOCUMENTED",356     "DEPRECATED",357     "LIVE_VERIFIED"358    ],359    "notes": "`top_k` 400, `stop_sequences` 400 on reasoning models, `document` blocks 422, no count_tokens (404), no batches, `cache_control` ignored"360   },361   "gemini": {362    "supported": false,363    "how": "not offered",364    "endpoint": "",365    "params": [],366    "status": [367     "UNVERIFIED"368    ],369    "notes": "no equivalent surface in the documented API"370   },371   "providers_supporting": [372    "anthropic",373    "xai"374   ],375   "provider_count": 2,376   "portable": true,377   "notes": "xAI is the only third party exposing the Anthropic Messages wire format, and is retiring it.",378   "ref": "docs/xai/messages-compat.md · parameters.json (xai POST /v1/messages)"379  },380  {381   "section": "Core generation",382   "feature": "Legacy completion (prompt-in / text-out) endpoint",383   "openai": {384    "supported": true,385    "how": "`gpt-3.5-turbo-instruct`, `davinci-002`, `babbage-002` only; shutdowns 2026-09-28",386    "endpoint": "POST /v1/completions",387    "params": [388     "prompt",389     "suffix",390     "max_tokens"391    ],392    "status": [393     "DOCUMENTED",394     "LEGACY",395     "LIVE_VERIFIED"396    ],397    "notes": ""398   },399   "anthropic": {400    "supported": false,401    "how": "documented as Legacy but every live call returns 400 'has been deprecated'",402    "endpoint": "POST /v1/complete",403    "params": [404     "prompt",405     "max_tokens_to_sample"406    ],407    "status": [408     "DOCUMENTED",409     "LEGACY",410     "DEPRECATED",411     "FAILED_VERIFICATION"412    ],413    "notes": "removed from Python SDK v1"414   },415   "xai": {416    "supported": false,417    "how": "`POST /v1/completions` (OpenAI shape) and `POST /v1/complete` (Anthropic shape) both answer 400 'Raw sampling is not supported for reasoning models' for every live model, incl. the non-reasoning grok-4.20",418    "endpoint": "POST /v1/completions",419    "params": [420     "prompt",421     "max_tokens"422    ],423    "status": [424     "DOCUMENTED",425     "LEGACY",426     "RETIRED"427    ],428    "notes": "gRPC `Sample` service still lists raw sampling"429   },430   "gemini": {431    "supported": false,432    "how": "PaLM-era `:generateText` / `:generateMessage` remain in the v1beta discovery document but return 404 / 501; only `models/aqa:generateAnswer` still answers",433    "endpoint": "POST /v1beta/models/{model}:generateText",434    "params": [],435    "status": [436     "DOCUMENTED",437     "LEGACY",438     "FAILED_VERIFICATION"439    ],440    "notes": "`legacy-palm` family: 7 endpoints"441   },442   "providers_supporting": [443    "openai"444   ],445   "provider_count": 1,446   "portable": false,447   "notes": "Every provider still documents a prompt-completion route; only OpenAI's answers, and it shuts down 2026-09-28.",448   "ref": "docs/openai/completions-legacy.md · docs/anthropic/text-completions-legacy.md · docs/xai/legacy-completions.md · docs/gemini/legacy-palm-methods.md"449  },450  {451   "section": "Core generation",452   "feature": "System / developer prompt",453   "openai": {454    "supported": true,455    "how": "`instructions` (per request, not carried by `previous_response_id`) or `developer`/`system` role message items",456    "endpoint": "POST /v1/responses",457    "params": [458     "instructions",459     "input[](message).role"460    ],461    "status": [462     "DOCUMENTED",463     "LIVE_VERIFIED"464    ],465    "notes": "`instructions` participate in the cache prefix"466   },467   "anthropic": {468    "supported": true,469    "how": "top-level `system` (string or text blocks with `cache_control`/`citations`); mid-conversation `role:system` messages for tool changes/effort (beta)",470    "endpoint": "POST /v1/messages",471    "params": [472     "system",473     "system[].cache_control",474     "messages[].output_config.effort"475    ],476    "status": [477     "DOCUMENTED",478     "LIVE_VERIFIED"479    ],480    "notes": "schema lists a `system` role but docs say use the top-level field"481   },482   "xai": {483    "supported": true,484    "how": "`instructions` (Responses) **or** a `system` / `developer` role message; Chat: `system` role; `/v1/messages`: `system` string or text blocks",485    "endpoint": "POST /v1/responses",486    "params": [487     "instructions",488     "input[](message).role"489    ],490    "status": [491     "DOCUMENTED",492     "LIVE_VERIFIED"493    ],494    "notes": "`instructions` + `previous_response_id` → 400 (the previous system prompt is reused)"495   },496   "gemini": {497    "supported": true,498    "how": "`systemInstruction` (Content, text parts only, role ignored) — not a turn; Interactions: `system_instruction` string (must be resent when chaining)",499    "endpoint": "POST /v1beta/models/{model}:generateContent",500    "params": [501     "systemInstruction"502    ],503    "status": [504     "DOCUMENTED",505     "LIVE_VERIFIED"506    ],507    "notes": "counted in `promptTokenCount`; cacheable inside `cachedContents`"508   },509   "providers_supporting": [510    "openai",511    "anthropic",512    "xai",513    "gemini"514   ],515   "provider_count": 4,516   "portable": true,517   "notes": "All four keep the system prompt outside the turn list. OpenAI/xAI accept it either as a field or as a role item; Anthropic and Gemini only as a field.",518   "ref": "parameters.json (instructions / system / systemInstruction)"519  },520  {521   "section": "Core generation",522   "feature": "Message roles",523   "openai": {524    "supported": true,525    "how": "`user`, `assistant`, `system`, `developer` (+ `phase: commentary|final_answer` on assistant)",526    "endpoint": "POST /v1/responses",527    "params": [528     "input[](message).role",529     "input[](message).phase"530    ],531    "status": [532     "DOCUMENTED",533     "LIVE_VERIFIED"534    ],535    "notes": ""536   },537   "anthropic": {538    "supported": true,539    "how": "`user`, `assistant`; consecutive same-role turns are merged; ≤100,000 messages",540    "endpoint": "POST /v1/messages",541    "params": [542     "messages[].role"543    ],544    "status": [545     "DOCUMENTED",546     "LIVE_VERIFIED"547    ],548    "notes": "`system` role reserved for beta mid-conversation blocks"549   },550   "xai": {551    "supported": true,552    "how": "`user`, `assistant`, `system`, `developer` (Responses); Chat adds `tool` (`tool_call_id`) and legacy `function`; no ordering constraint",553    "endpoint": "POST /v1/responses",554    "params": [555     "input[](message).role",556     "messages[].role"557    ],558    "status": [559     "DOCUMENTED",560     "LIVE_VERIFIED"561    ],562    "notes": "`developer` accepted live on Chat although not in the spec"563   },564   "gemini": {565    "supported": true,566    "how": "`user`, `model` only (omitted role = user); **last turn must be `user`** (400 'Requests ending with a model turn are not supported'); function results go in a `user` Content of `functionResponse` parts",567    "endpoint": "POST /v1beta/models/{model}:generateContent",568    "params": [569     "contents[].role"570    ],571    "status": [572     "DOCUMENTED",573     "LIVE_VERIFIED"574    ],575    "notes": "Interactions steps use `role: user|model` too"576   },577   "providers_supporting": [578    "openai",579    "anthropic",580    "xai",581    "gemini"582   ],583   "provider_count": 4,584   "portable": true,585   "notes": "The assistant role is spelled `model` on Gemini; Anthropic enforces alternation by merging; Gemini enforces a trailing user turn; OpenAI/xAI accept any order.",586   "ref": "docs/anthropic/messages-api.md §1 · docs/gemini/generate-content.md"587  },588  {589   "section": "Core generation",590   "feature": "Assistant prefill (continue a partial assistant turn)",591   "openai": {592    "supported": false,593    "how": "no prefill semantics; an assistant item is history only",594    "endpoint": "POST /v1/responses",595    "params": [],596    "status": [597     "DOCUMENTED"598    ],599    "notes": ""600   },601   "anthropic": {602    "supported": true,603    "how": "end `messages` with an `assistant` turn → model continues it. **Deprecated**: 400 on Claude 4.6+ / Fable / Mythos, incompatible with thinking and structured outputs",604    "endpoint": "POST /v1/messages",605    "params": [606     "messages[].content[] (assistant prefill)"607    ],608    "status": [609     "DOCUMENTED",610     "DEPRECATED",611     "LIVE_VERIFIED"612    ],613    "notes": "live: Haiku 4.5 OK, Sonnet 5 → 400"614   },615   "xai": {616    "supported": false,617    "how": "assistant history items / `assistant` role accepted, but no documented continuation semantics",618    "endpoint": "POST /v1/responses",619    "params": [],620    "status": [621     "DOCUMENTED"622    ],623    "notes": ""624   },625   "gemini": {626    "supported": false,627    "how": "impossible: a request ending with a `model` turn is rejected (400)",628    "endpoint": "POST /v1beta/models/{model}:generateContent",629    "params": [],630    "status": [631     "DOCUMENTED",632     "LIVE_VERIFIED"633    ],634    "notes": ""635   },636   "providers_supporting": [637    "anthropic"638   ],639   "provider_count": 1,640   "portable": false,641   "notes": "Only Anthropic ever offered prefill, and only its 4.5 models still honour it; Gemini rejects the pattern outright.",642   "ref": "docs/anthropic/messages-api.md · deprecations.json · docs/gemini/generate-content.md"643  },644  {645   "section": "Core generation",646   "feature": "Multi-turn conversation",647   "openai": {648    "supported": true,649    "how": "three modes: manual replay of `output[]` items, `previous_response_id` (server keeps chain), `conversation` (Conversations API)",650    "endpoint": "POST /v1/responses",651    "params": [652     "previous_response_id",653     "conversation",654     "store"655    ],656    "status": [657     "DOCUMENTED",658     "LIVE_VERIFIED"659    ],660    "notes": "`previous_response_id` and `conversation` are mutually exclusive"661   },662   "anthropic": {663    "supported": true,664    "how": "manual replay only: resend full `messages[]` each call (incl. `thinking`/`tool_use`/`tool_result` blocks)",665    "endpoint": "POST /v1/messages",666    "params": [667     "messages"668    ],669    "status": [670     "DOCUMENTED",671     "LIVE_VERIFIED"672    ],673    "notes": "server-side state exists only in Managed Agents sessions"674   },675   "xai": {676    "supported": true,677    "how": "manual replay **or** `previous_response_id` (server rehydrates the whole agentic trajectory incl. reasoning and tool outputs; follow-ups may change tools/model); Chat: replay incl. `reasoning_content`",678    "endpoint": "POST /v1/responses",679    "params": [680     "previous_response_id",681     "store",682     "input"683    ],684    "status": [685     "DOCUMENTED",686     "LIVE_VERIFIED"687    ],688    "notes": "no Conversations API; `x-grok-conv-id` / `prompt_cache_key` are cache-routing keys, not stored conversations"689   },690   "gemini": {691    "supported": true,692    "how": "`generateContent`: manual replay of `contents[]` (echo `thoughtSignature` on Gemini 3 function calls); **Interactions**: `previous_interaction_id` chains stored interactions (`store:true` default; only history is carried — resend tools/system/config)",693    "endpoint": "POST /v1beta/models/{model}:generateContent",694    "params": [695     "contents",696     "previous_interaction_id",697     "store"698    ],699    "status": [700     "DOCUMENTED",701     "LIVE_VERIFIED"702    ],703    "notes": "chaining on an `in_progress` interaction → 400"704   },705   "providers_supporting": [706    "openai",707    "anthropic",708    "xai",709    "gemini"710   ],711   "provider_count": 4,712   "portable": true,713   "notes": "Portable pattern = manual replay everywhere; OpenAI, xAI and Gemini (Interactions) add server-side chaining by id.",714   "ref": "docs/comparisons/state-management.md"715  },716  {717   "section": "Core generation",718   "feature": "Response storage, retrieval, deletion",719   "openai": {720    "supported": true,721    "how": "`store:true` default → `GET/DELETE /v1/responses/{id}`, `GET …/input_items`; 30-day retention",722    "endpoint": "GET /v1/responses/{response_id}",723    "params": [724     "store",725     "include"726    ],727    "status": [728     "DOCUMENTED",729     "LIVE_VERIFIED"730    ],731    "notes": "`store:false` → 404 on retrieve, reasoning returned as `encrypted_content`"732   },733   "anthropic": {734    "supported": false,735    "how": "no response store; nothing to retrieve after the HTTP response",736    "endpoint": "",737    "params": [],738    "status": [739     "DOCUMENTED"740    ],741    "notes": "Batches results are retrievable 29 days"742   },743   "xai": {744    "supported": true,745    "how": "`store:true` default → `GET/DELETE /v1/responses/{id}`, `GET …/input_items` (limit 1–100, order, after); 30-day retention; ZDR teams cannot store",746    "endpoint": "GET /v1/responses/{response_id}",747    "params": [748     "store"749    ],750    "status": [751     "DOCUMENTED",752     "LIVE_VERIFIED",753     "LIVE_DISCOVERED"754    ],755    "notes": "LIVE_DISCOVERED: GET still 200 for a `store:false` id"756   },757   "gemini": {758    "supported": true,759    "how": "Interactions: `store:true` default → `GET /v1beta/interactions/{id}` (full timeline incl. `user_input`), `DELETE`, `POST …/cancel`; retention 55 days paid (AI Studio 7/14/28/55), 1 day free; `store:false` → no `id`, stateless. `generateContent` stores nothing (per-request `store` logging flag LIVE_DISCOVERED)",760    "endpoint": "GET /v1beta/interactions/{id}",761    "params": [762     "store"763    ],764    "status": [765     "DOCUMENTED",766     "BETA",767     "LIVE_VERIFIED"768    ],769    "notes": "`GET /v1beta/interactions` (list) → 404"770   },771   "providers_supporting": [772    "openai",773    "xai",774    "gemini"775   ],776   "provider_count": 3,777   "portable": true,778   "notes": "Three stateful-by-default surfaces (OpenAI Responses, xAI Responses, Gemini Interactions) vs Anthropic's stateless Messages.",779   "ref": "docs/openai/responses.md §1 · docs/xai/responses.md · docs/gemini/interactions-api.md"780  },781  {782   "section": "Core generation",783   "feature": "Background / deferred (async) execution",784   "openai": {785    "supported": true,786    "how": "`background:true` → `status:queued`, poll `GET`, `POST …/cancel`, resumable stream `?stream=true&starting_after=N`",787    "endpoint": "POST /v1/responses",788    "params": [789     "background"790    ],791    "status": [792     "DOCUMENTED",793     "LIVE_VERIFIED"794    ],795    "notes": "not available over WebSocket; not in EU region"796   },797   "anthropic": {798    "supported": false,799    "how": "no per-request background mode; use Message Batches (≤24 h) or Managed Agents sessions",800    "endpoint": "POST /v1/messages/batches",801    "params": [],802    "status": [803     "DOCUMENTED"804    ],805    "notes": ""806   },807   "xai": {808    "supported": true,809    "how": "Chat Completions only: `deferred:true` → `{request_id}`; `GET /v1/chat/deferred-completion/{request_id}` → 202 while pending, 200 when done (docs: retrievable once within 24 h; live: second GET also 200)",810    "endpoint": "GET /v1/chat/deferred-completion/{request_id}",811    "params": [812     "deferred"813    ],814    "status": [815     "DOCUMENTED",816     "LIVE_VERIFIED"817    ],818    "notes": "Responses `background` → 400 'Argument not supported'"819   },820   "gemini": {821    "supported": true,822    "how": "Interactions `background:true` (requires `store`) → `queued`/`in_progress`; poll `GET /v1beta/interactions/{id}` or resume the stream with `?stream=true&last_event_id=`; `POST …/cancel`; mandatory for Deep Research (≤60 min); `webhook_config` for completion callbacks",823    "endpoint": "POST /v1beta/interactions",824    "params": [825     "background",826     "stream",827     "webhook_config"828    ],829    "status": [830     "DOCUMENTED",831     "BETA",832     "LIVE_VERIFIED"833    ],834    "notes": "Veo/Batch use long-running `Operation`s instead"835   },836   "providers_supporting": [837    "openai",838    "xai",839    "gemini"840   ],841   "provider_count": 3,842   "portable": true,843   "notes": "OpenAI, xAI (Chat only) and Gemini (Interactions) offer per-request async; Anthropic only batches.",844   "ref": "docs/openai/responses.md §5 · docs/xai/deferred-completions.md · docs/gemini/interactions-api.md"845  },846  {847   "section": "Core generation",848   "feature": "Token counting",849   "openai": {850    "supported": true,851    "how": "count input tokens of a Responses payload (free)",852    "endpoint": "POST /v1/responses/input_tokens",853    "params": [854     "model",855     "input",856     "tools",857     "instructions"858    ],859    "status": [860     "DOCUMENTED",861     "LIVE_VERIFIED"862    ],863    "notes": "supports images/files"864   },865   "anthropic": {866    "supported": true,867    "how": "count tokens of a Messages payload (free; separate RPM bucket 5k/10k/20k)",868    "endpoint": "POST /v1/messages/count_tokens",869    "params": [870     "model",871     "messages",872     "system",873     "tools",874     "thinking",875     "output_config.format"876    ],877    "status": [878     "DOCUMENTED",879     "LIVE_VERIFIED"880    ],881    "notes": "server tools other than advisor → 400; `mcp_servers` rejected"882   },883   "xai": {884    "supported": true,885    "how": "`POST /v1/tokenize-text {model, text}` → `token_ids[{token_id, string_token, token_bytes}]` (tokenizer, not a request counter); free",886    "endpoint": "POST /v1/tokenize-text",887    "params": [888     "model",889     "text"890    ],891    "status": [892     "DOCUMENTED",893     "LIVE_VERIFIED"894    ],895    "notes": "no per-request counter; `/v1/messages/count_tokens` → 404"896   },897   "gemini": {898    "supported": true,899    "how": "`:countTokens` with `{contents}` or `{generateContentRequest:{model, contents, systemInstruction, tools, cachedContent, generationConfig}}` → `totalTokens`, `promptTokensDetails[]`, `cachedContentTokenCount`; free",900    "endpoint": "POST /v1beta/models/{model}:countTokens",901    "params": [902     "contents",903     "generateContentRequest"904    ],905    "status": [906     "DOCUMENTED",907     "LIVE_VERIFIED"908    ],909    "notes": "SDKs refuse `system_instruction`/`tools` here although REST accepts them"910   },911   "providers_supporting": [912    "openai",913    "anthropic",914    "xai",915    "gemini"916   ],917   "provider_count": 4,918   "portable": true,919   "notes": "Free everywhere; xAI tokenises raw text only (no tools/images), the other three count a full request.",920   "ref": "docs/anthropic/token-counting.md · docs/openai/multimodal-input.md · docs/xai/index.md · docs/gemini/token-counting.md"921  },922  {923   "section": "Core generation",924   "feature": "Model listing / catalogue",925   "openai": {926    "supported": true,927    "how": "list/retrieve (`shutdown_date` field on deprecated ids); some aliases (e.g. `gpt-5.6`) 404 on GET but work on POST",928    "endpoint": "GET /v1/models",929    "params": [],930    "status": [931     "DOCUMENTED",932     "LIVE_VERIFIED"933    ],934    "notes": "136 ids live"935   },936   "anthropic": {937    "supported": true,938    "how": "list/retrieve with `capabilities` block (thinking, effort, structured_outputs, context_management…)",939    "endpoint": "GET /v1/models",940    "params": [941     "limit",942     "before_id",943     "after_id"944    ],945    "status": [946     "DOCUMENTED",947     "LIVE_VERIFIED"948    ],949    "notes": "11 ids live; invite-only Mythos ids → 404"950   },951   "xai": {952    "supported": true,953    "how": "`GET /v1/models` (OpenAI shape, 12 ids) plus typed catalogues `GET /v1/language-models`, `/v1/image-generation-models`, `/v1/video-generation-models`, `/v1/embedding-models` with **live price ticks**, aliases, `input_modalities`, fingerprint; retired slugs redirect (`grok-3` → grok-4.3 object)",954    "endpoint": "GET /v1/language-models",955    "params": [],956    "status": [957     "DOCUMENTED",958     "LIVE_VERIFIED"959    ],960    "notes": "voice models absent from the catalogue; `/v1/embedding-models` → `{models: []}` for this team"961   },962   "gemini": {963    "supported": true,964    "how": "`GET /v1beta/models` (58 ids: `inputTokenLimit`, `outputTokenLimit`, `supportedGenerationMethods`, `thinking`, `temperature`/`topP`/`topK` defaults, `version`) and `GET /v1beta/models/{model}`; `/v1/models` lists only 22 stable ids",965    "endpoint": "GET /v1beta/models",966    "params": [967     "pageSize",968     "pageToken"969    ],970    "status": [971     "DOCUMENTED",972     "LIVE_VERIFIED"973    ],974    "notes": "agents (deep-research, antigravity) appear as models; shut-down previews still listed"975   },976   "providers_supporting": [977    "openai",978    "anthropic",979    "xai",980    "gemini"981   ],982   "provider_count": 4,983   "portable": true,984   "notes": "xAI publishes prices in the catalogue, Anthropic publishes capability flags, Gemini publishes token limits and generation methods, OpenAI publishes shutdown dates.",985   "ref": "sources/*/models-api-raw.json"986  },987  {988   "section": "Structured output & sampling",989   "feature": "Structured outputs (JSON Schema constrained)",990   "openai": {991    "supported": true,992    "how": "`text.format {type:json_schema, name, schema, strict, description}` (flat)",993    "endpoint": "POST /v1/responses",994    "params": [995     "text.format",996     "text.format(json_schema).strict"997    ],998    "status": [999     "DOCUMENTED",1000     "LIVE_VERIFIED"1001    ],1002    "notes": "Chat: `response_format.json_schema{…}` wrapper; refusal → `refusal` content part"1003   },1004   "anthropic": {1005    "supported": true,1006    "how": "`output_config.format {type:json_schema, schema}` (GA, no beta header; legacy `output_format` → 400)",1007    "endpoint": "POST /v1/messages",1008    "params": [1009     "output_config.format",1010     "output_config.format.schema"1011    ],1012    "status": [1013     "DOCUMENTED",1014     "LIVE_VERIFIED"1015    ],1016    "notes": "grammar compiled once (24 h cache), first call slower; `stop_reason: refusal` possible"1017   },1018   "xai": {1019    "supported": true,1020    "how": "`text.format {type:json_schema, name, schema, strict, description}` (Responses) / `response_format {type:json_schema, json_schema:{name, strict, schema}}` (Chat); Draft 2020-12 preferred; `additionalProperties` defaults false; formats date/time/email/uuid/uri enforced; `pattern` ECMA subset",1021    "endpoint": "POST /v1/responses",1022    "params": [1023     "text.format",1024     "response_format"1025    ],1026    "status": [1027     "DOCUMENTED",1028     "LIVE_VERIFIED"1029    ],1030    "notes": "`strict` accepted and ignored (always strict); all Grok 4 models"1031   },1032   "gemini": {1033    "supported": true,1034    "how": "`generationConfig.responseMimeType: application/json` + `responseJsonSchema` (JSON Schema) or legacy `responseSchema` (OpenAPI subset, `propertyOrdering`); new canonical `responseFormat.text {mimeType: APPLICATION_JSON, schema}`; enum mode `text/x.enum`; XML/YAML mime types accepted; Interactions `response_format {type:text, mime_type, schema}`",1035    "endpoint": "POST /v1beta/models/{model}:generateContent",1036    "params": [1037     "generationConfig.responseMimeType",1038     "generationConfig.responseJsonSchema",1039     "generationConfig.responseSchema",1040     "generationConfig.responseFormat"1041    ],1042    "status": [1043     "DOCUMENTED",1044     "LIVE_VERIFIED"1045    ],1046    "notes": "values are syntactically valid but not semantically validated; `maxOutputTokens` can truncate the JSON; SO + tools = Gemini 3 preview"1047   },1048   "providers_supporting": [1049    "openai",1050    "anthropic",1051    "xai",1052    "gemini"1053   ],1054   "provider_count": 4,1055   "portable": true,1056   "notes": "Same task on all four. Schema dialects differ: OpenAI/xAI require `additionalProperties:false` semantics (xAI defaults it), Anthropic rejects numeric/string constraints, Gemini ignores unsupported keywords silently and offers an OpenAPI-style alternative.",1057   "ref": "docs/openai/structured-outputs.md · docs/anthropic/structured-outputs.md · docs/xai/structured-outputs.md · docs/gemini/structured-outputs.md"1058  },1059  {1060   "section": "Structured output & sampling",1061   "feature": "Strict tool arguments",1062   "openai": {1063    "supported": true,1064    "how": "`tools[type=function].strict:true` (Responses omits → tries strict then falls back)",1065    "endpoint": "POST /v1/responses",1066    "params": [1067     "tools[type=function].strict"1068    ],1069    "status": [1070     "DOCUMENTED",1071     "LIVE_VERIFIED"1072    ],1073    "notes": ""1074   },1075   "anthropic": {1076    "supported": true,1077    "how": "`tools[].strict:true` grammar-constrained `tool_use.input`; ≤20 strict tools/request",1078    "endpoint": "POST /v1/messages",1079    "params": [1080     "tools[].strict"1081    ],1082    "status": [1083     "DOCUMENTED",1084     "LIVE_VERIFIED"1085    ],1086    "notes": "not on toolsets / mcp_toolset / programmatic callers"1087   },1088   "xai": {1089    "supported": true,1090    "how": "tool `parameters` are **always** strictly enforced ('strict flag implicitly true'); explicit `strict` accepted and ignored",1091    "endpoint": "POST /v1/responses",1092    "params": [1093     "tools[].strict"1094    ],1095    "status": [1096     "DOCUMENTED",1097     "LIVE_VERIFIED"1098    ],1099    "notes": ""1100   },1101   "gemini": {1102    "supported": true,1103    "how": "`toolConfig.functionCallingConfig.mode: VALIDATED` (schema-validated constrained decoding; default when built-ins or structured output are combined) or `ANY` (forced, constrained)",1104    "endpoint": "POST /v1beta/models/{model}:generateContent",1105    "params": [1106     "toolConfig.functionCallingConfig.mode"1107    ],1108    "status": [1109     "DOCUMENTED",1110     "LIVE_VERIFIED"1111    ],1112    "notes": "no per-tool flag; `ANY` may reject very large/deep schemas"1113   },1114   "providers_supporting": [1115    "openai",1116    "anthropic",1117    "xai",1118    "gemini"1119   ],1120   "provider_count": 4,1121   "portable": true,1122   "notes": "Per-tool flag on OpenAI/Anthropic, always-on on xAI, a request-level mode on Gemini.",1123   "ref": "tools.json · docs/tools/gemini/function-calling.md"1124  },1125  {1126   "section": "Structured output & sampling",1127   "feature": "JSON mode (valid JSON, no schema)",1128   "openai": {1129    "supported": true,1130    "how": "`text.format {type:json_object}`; prompt must mention JSON (400 otherwise)",1131    "endpoint": "POST /v1/responses",1132    "params": [1133     "text.format(json_object)"1134    ],1135    "status": [1136     "DOCUMENTED",1137     "LIVE_VERIFIED"1138    ],1139    "notes": "legacy"1140   },1141   "anthropic": {1142    "supported": false,1143    "how": "not offered",1144    "endpoint": "",1145    "params": [],1146    "status": [1147     "UNVERIFIED"1148    ],1149    "notes": "no equivalent surface in the documented API"1150   },1151   "xai": {1152    "supported": true,1153    "how": "`text.format {type:json_object}` / `response_format {type:json_object}`",1154    "endpoint": "POST /v1/responses",1155    "params": [1156     "text.format(json_object)"1157    ],1158    "status": [1159     "DOCUMENTED",1160     "LIVE_VERIFIED"1161    ],1162    "notes": ""1163   },1164   "gemini": {1165    "supported": true,1166    "how": "`responseMimeType: application/json` without a schema",1167    "endpoint": "POST /v1beta/models/{model}:generateContent",1168    "params": [1169     "generationConfig.responseMimeType"1170    ],1171    "status": [1172     "DOCUMENTED",1173     "LIVE_VERIFIED"1174    ],1175    "notes": ""1176   },1177   "providers_supporting": [1178    "openai",1179    "xai",1180    "gemini"1181   ],1182   "provider_count": 3,1183   "portable": true,1184   "notes": "Anthropic only offers schema-constrained output.",1185   "ref": "docs/openai/structured-outputs.md · docs/gemini/structured-outputs.md"1186  },1187  {1188   "section": "Structured output & sampling",1189   "feature": "Output verbosity control",1190   "openai": {1191    "supported": true,1192    "how": "`text.verbosity: low|medium|high`",1193    "endpoint": "POST /v1/responses",1194    "params": [1195     "text.verbosity"1196    ],1197    "status": [1198     "DOCUMENTED",1199     "LIVE_VERIFIED"1200    ],1201    "notes": ""1202   },1203   "anthropic": {1204    "supported": false,1205    "how": "no direct knob; `output_config.effort` shapes length indirectly",1206    "endpoint": "",1207    "params": [],1208    "status": [1209     "DOCUMENTED"1210    ],1211    "notes": ""1212   },1213   "xai": {1214    "supported": false,1215    "how": "no verbosity parameter (`text.format` only)",1216    "endpoint": "",1217    "params": [],1218    "status": [1219     "DOCUMENTED"1220    ],1221    "notes": ""1222   },1223   "gemini": {1224    "supported": false,1225    "how": "no verbosity parameter; `thinkingLevel` and `maxOutputTokens` only",1226    "endpoint": "",1227    "params": [],1228    "status": [1229     "DOCUMENTED"1230    ],1231    "notes": ""1232   },1233   "providers_supporting": [1234    "openai"1235   ],1236   "provider_count": 1,1237   "portable": false,1238   "notes": "OpenAI-only knob.",1239   "ref": "parameters.json"1240  },1241  {1242   "section": "Structured output & sampling",1243   "feature": "Sampling parameters (temperature / top_p / top_k)",1244   "openai": {1245    "supported": true,1246    "how": "`temperature` 0–2, `top_p`; rejected by reasoning models",1247    "endpoint": "POST /v1/responses",1248    "params": [1249     "temperature",1250     "top_p"1251    ],1252    "status": [1253     "DOCUMENTED",1254     "LIVE_VERIFIED"1255    ],1256    "notes": "no `top_k`"1257   },1258   "anthropic": {1259    "supported": true,1260    "how": "`temperature` 0–1, `top_p`, `top_k` — **DEPRECATED**: 400 when non-default on Claude 4.7+ / Fable / Mythos; Python SDK v1 removed the kwargs",1261    "endpoint": "POST /v1/messages",1262    "params": [1263     "temperature",1264     "top_p",1265     "top_k"1266    ],1267    "status": [1268     "DOCUMENTED",1269     "DEPRECATED",1270     "LIVE_VERIFIED"1271    ],1272    "notes": ""1273   },1274   "xai": {1275    "supported": true,1276    "how": "`temperature` 0–2, `top_p`, plus xAI-specific `top_k` (≥1) and `min_p` (0–1); accepted on reasoning models (echo 0.7/0.95); Chat `seed` → `system_fingerprint`",1277    "endpoint": "POST /v1/responses",1278    "params": [1279     "temperature",1280     "top_p",1281     "top_k",1282     "min_p",1283     "seed"1284    ],1285    "status": [1286     "DOCUMENTED",1287     "LIVE_VERIFIED"1288    ],1289    "notes": "`presence_penalty`/`frequency_penalty`/`stop` → 400 on reasoning models"1290   },1291   "gemini": {1292    "supported": true,1293    "how": "`generationConfig.temperature` 0–2 (default 1.0), `topP` (0.95), `topK` (64), `seed`; **DEPRECATED** guidance since 2026-07-21: keep defaults on Gemini 3.x (temperature < 1 can cause looping); `presencePenalty`/`frequencyPenalty` → 400 'not enabled'",1294    "endpoint": "POST /v1beta/models/{model}:generateContent",1295    "params": [1296     "generationConfig.temperature",1297     "generationConfig.topP",1298     "generationConfig.topK",1299     "generationConfig.seed"1300    ],1301    "status": [1302     "DOCUMENTED",1303     "DEPRECATED",1304     "LIVE_VERIFIED"1305    ],1306    "notes": "`candidateCount` > 1 → 400 on 3.x"1307   },1308   "providers_supporting": [1309    "openai",1310    "anthropic",1311    "xai",1312    "gemini"1313   ],1314   "provider_count": 4,1315   "portable": true,1316   "notes": "Sampling knobs are shrinking on all frontier lines: rejected by OpenAI reasoning models and Claude 4.7+, deprecated-by-guidance on Gemini 3.x, still fully accepted on Grok.",1317   "ref": "deprecations.json (anthropic, gemini api_features) · parameters.json"1318  },1319  {1320   "section": "Structured output & sampling",1321   "feature": "Stop sequences",1322   "openai": {1323    "supported": true,1324    "how": "Chat Completions `stop` (≤4); **not** a Responses parameter",1325    "endpoint": "POST /v1/chat/completions",1326    "params": [1327     "stop"1328    ],1329    "status": [1330     "DOCUMENTED"1331    ],1332    "notes": ""1333   },1334   "anthropic": {1335    "supported": true,1336    "how": "`stop_sequences[]` → `stop_reason: stop_sequence` + `stop_sequence`",1337    "endpoint": "POST /v1/messages",1338    "params": [1339     "stop_sequences"1340    ],1341    "status": [1342     "DOCUMENTED",1343     "LIVE_VERIFIED"1344    ],1345    "notes": ""1346   },1347   "xai": {1348    "supported": true,1349    "how": "Chat `stop` (≤4) and `/v1/messages` `stop_sequences` — **400 on reasoning models**; not on Responses",1350    "endpoint": "POST /v1/chat/completions",1351    "params": [1352     "stop",1353     "stop_sequences"1354    ],1355    "status": [1356     "DOCUMENTED",1357     "LIVE_VERIFIED"1358    ],1359    "notes": "usable only on grok-4.20-0309-non-reasoning"1360   },1361   "gemini": {1362    "supported": true,1363    "how": "`generationConfig.stopSequences[]` (≤5; 6 → 400); Interactions `generation_config.stop_sequences`",1364    "endpoint": "POST /v1beta/models/{model}:generateContent",1365    "params": [1366     "generationConfig.stopSequences"1367    ],1368    "status": [1369     "DOCUMENTED",1370     "LIVE_VERIFIED"1371    ],1372    "notes": ""1373   },1374   "providers_supporting": [1375    "openai",1376    "anthropic",1377    "xai",1378    "gemini"1379   ],1380   "provider_count": 4,1381   "portable": true,1382   "notes": "Absent from both Responses APIs; Gemini allows 5, the others 4.",1383   "ref": "parameters.json"1384  },1385  {1386   "section": "Structured output & sampling",1387   "feature": "Log probabilities",1388   "openai": {1389    "supported": true,1390    "how": "`top_logprobs` + `include: [\"message.output_text.logprobs\"]`",1391    "endpoint": "POST /v1/responses",1392    "params": [1393     "top_logprobs",1394     "include"1395    ],1396    "status": [1397     "DOCUMENTED"1398    ],1399    "notes": ""1400   },1401   "anthropic": {1402    "supported": false,1403    "how": "not offered",1404    "endpoint": "",1405    "params": [],1406    "status": [1407     "UNVERIFIED"1408    ],1409    "notes": "no equivalent surface in the documented API"1410   },1411   "xai": {1412    "supported": false,1413    "how": "`logprobs`/`top_logprobs` (0–8) accepted but **silently ignored** on grok-4.20 and newer (DEPRECATED); `include: message.output_text.logprobs` ignored",1414    "endpoint": "POST /v1/chat/completions",1415    "params": [1416     "logprobs",1417     "top_logprobs"1418    ],1419    "status": [1420     "DOCUMENTED",1421     "DEPRECATED",1422     "LIVE_VERIFIED"1423    ],1424    "notes": ""1425   },1426   "gemini": {1427    "supported": false,1428    "how": "`responseLogprobs` / `logprobs` (0–20) in the schema but `400 Logprobs is not enabled for this model` on every current model",1429    "endpoint": "POST /v1beta/models/{model}:generateContent",1430    "params": [1431     "generationConfig.responseLogprobs",1432     "generationConfig.logprobs"1433    ],1434    "status": [1435     "DOCUMENTED",1436     "FAILED_VERIFICATION"1437    ],1438    "notes": ""1439   },1440   "providers_supporting": [1441    "openai"1442   ],1443   "provider_count": 1,1444   "portable": false,1445   "notes": "Only OpenAI still returns logprobs; xAI and Gemini keep the parameters as dead compatibility fields.",1446   "ref": "parameters.json"1447  },1448  {1449   "section": "Structured output & sampling",1450   "feature": "Refusal / safety signalling in-band",1451   "openai": {1452    "supported": true,1453    "how": "`output[].content[] {type: refusal}` (structured outputs) / `status: incomplete` + `incomplete_details.reason: content_filter`; HTTP 403 `misalignment_policy_violation`, `cyber_policy`",1454    "endpoint": "POST /v1/responses",1455    "params": [],1456    "status": [1457     "DOCUMENTED"1458    ],1459    "notes": ""1460   },1461   "anthropic": {1462    "supported": true,1463    "how": "HTTP 200 with `stop_reason: refusal` + `stop_details {category, explanation}`; beta `fallbacks` re-runs on another model",1464    "endpoint": "POST /v1/messages",1465    "params": [1466     "fallbacks",1467     "fallback_credit_token"1468    ],1469    "status": [1470     "DOCUMENTED",1471     "BETA"1472    ],1473    "notes": "categories: cyber, bio, frontier_llm, reasoning_extraction, general_harms"1474   },1475   "xai": {1476    "supported": true,1477    "how": "Chat `message.refusal` field; `respect_moderation` flag on image/video results; usage-guideline violations are **billed** (+ $0.05 fee when caught pre-generation on Responses); no error code catalogue for refusals",1478    "endpoint": "POST /v1/chat/completions",1479    "params": [],1480    "status": [1481     "DOCUMENTED"1482    ],1483    "notes": ""1484   },1485   "gemini": {1486    "supported": true,1487    "how": "HTTP 200 with **no candidates** + `promptFeedback.blockReason` (SAFETY|OTHER|BLOCKLIST|PROHIBITED_CONTENT|IMAGE_SAFETY) for prompt blocks; `candidates[].finishReason` SAFETY|RECITATION|SPII|IMAGE_SAFETY|… (21 values) + `safetyRatings[]` for output blocks; thresholds via `safetySettings[]`",1488    "endpoint": "POST /v1beta/models/{model}:generateContent",1489    "params": [1490     "safetySettings",1491     "candidates[].finishReason",1492     "promptFeedback.blockReason"1493    ],1494    "status": [1495     "DOCUMENTED",1496     "LIVE_VERIFIED"1497    ],1498    "notes": "Interactions mirror finishReason as snake_case error codes"1499   },1500   "providers_supporting": [1501    "openai",1502    "anthropic",1503    "xai",1504    "gemini"1505   ],1506   "provider_count": 4,1507   "portable": true,1508   "notes": "All four signal in-band with different shapes; only Gemini lets the caller tune thresholds; only xAI charges for violating requests.",1509   "ref": "docs/anthropic/stop-reasons.md · docs/openai/safety.md · docs/gemini/safety.md · docs/xai/pricing.md §5"1510  },1511  {1512   "section": "Structured output & sampling",1513   "feature": "Server-side model fallback on refusal",1514   "openai": {1515    "supported": false,1516    "how": "not offered",1517    "endpoint": "",1518    "params": [],1519    "status": [1520     "UNVERIFIED"1521    ],1522    "notes": "no equivalent surface in the documented API"1523   },1524   "anthropic": {1525    "supported": true,1526    "how": "`fallbacks` parameter (+ `fallback_credit_token` billing credit)",1527    "endpoint": "POST /v1/messages",1528    "params": [1529     "fallbacks",1530     "fallback_credit_token"1531    ],1532    "status": [1533     "DOCUMENTED",1534     "BETA"1535    ],1536    "notes": "beta `server-side-fallback-2026-07-01`, `fallback-credit-2026-07-01`"1537   },1538   "xai": {1539    "supported": false,1540    "how": "not offered",1541    "endpoint": "",1542    "params": [],1543    "status": [1544     "UNVERIFIED"1545    ],1546    "notes": "no equivalent surface in the documented API"1547   },1548   "gemini": {1549    "supported": false,1550    "how": "not offered",1551    "endpoint": "",1552    "params": [],1553    "status": [1554     "UNVERIFIED"1555    ],1556    "notes": "no equivalent surface in the documented API"1557   },1558   "providers_supporting": [1559    "anthropic"1560   ],1561   "provider_count": 1,1562   "portable": false,1563   "notes": "Anthropic-only.",1564   "ref": "generated/fragments/headers/anthropic-beta-headers.json"1565  },1566  {1567   "section": "Structured output & sampling",1568   "feature": "Configurable safety thresholds",1569   "openai": {1570    "supported": true,1571    "how": "inline `moderation {model, policy}` on Responses/Chat (policy selection, not thresholds)",1572    "endpoint": "POST /v1/responses",1573    "params": [1574     "moderation"1575    ],1576    "status": [1577     "DOCUMENTED"1578    ],1579    "notes": ""1580   },1581   "anthropic": {1582    "supported": false,1583    "how": "not offered",1584    "endpoint": "",1585    "params": [],1586    "status": [1587     "UNVERIFIED"1588    ],1589    "notes": "no equivalent surface in the documented API"1590   },1591   "xai": {1592    "supported": false,1593    "how": "not offered",1594    "endpoint": "",1595    "params": [],1596    "status": [1597     "UNVERIFIED"1598    ],1599    "notes": "no equivalent surface in the documented API"1600   },1601   "gemini": {1602    "supported": true,1603    "how": "`safetySettings[] {category: HARM_CATEGORY_HARASSMENT|HATE_SPEECH|SEXUALLY_EXPLICIT|DANGEROUS_CONTENT|JAILBREAK (CIVIC_INTEGRITY deprecated → `enableEnhancedCivicAnswers`), threshold: OFF|BLOCK_NONE|BLOCK_ONLY_HIGH|BLOCK_MEDIUM_AND_ABOVE|BLOCK_LOW_AND_ABOVE}`; default Off on 2.5/3.x; `safetyRatings[]` returned when a threshold is set",1604    "endpoint": "POST /v1beta/models/{model}:generateContent",1605    "params": [1606     "safetySettings"1607    ],1608    "status": [1609     "DOCUMENTED",1610     "LIVE_VERIFIED"1611    ],1612    "notes": "Interactions: custom safety settings not supported"1613   },1614   "providers_supporting": [1615    "openai",1616    "gemini"1617   ],1618   "provider_count": 2,1619   "portable": false,1620   "notes": "Only Gemini exposes per-category blocking thresholds; OpenAI selects a moderation policy.",1621   "ref": "docs/gemini/safety.md · docs/openai/moderation.md"1622  },1623  {1624   "section": "Tools — client side",1625   "feature": "Function / custom tools (you execute)",1626   "openai": {1627    "supported": true,1628    "how": "`tools[type=function] {name, description, parameters, strict, output_schema, async, defer_loading, allowed_callers}` → `function_call` item → you reply `function_call_output {call_id, output}`",1629    "endpoint": "POST /v1/responses",1630    "params": [1631     "tools[type=function]",1632     "input[](function_call_output)"1633    ],1634    "status": [1635     "DOCUMENTED",1636     "LIVE_VERIFIED"1637    ],1638    "notes": "38 compatible models listed"1639   },1640   "anthropic": {1641    "supported": true,1642    "how": "`tools[] {name, description, input_schema, strict, input_examples, cache_control, defer_loading, allowed_callers}` → `tool_use` block → you reply user message of `tool_result {tool_use_id, content, is_error}`",1643    "endpoint": "POST /v1/messages",1644    "params": [1645     "tools",1646     "messages[].content[] (tool_result)"1647    ],1648    "status": [1649     "DOCUMENTED",1650     "LIVE_VERIFIED"1651    ],1652    "notes": "13 compatible models"1653   },1654   "xai": {1655    "supported": true,1656    "how": "Responses `tools[type=function] {name, description, parameters}` → `function_call {call_id: call-…, name, arguments}` → `function_call_output`; Chat `tools[{type:function, function:{…}}]` → `message.tool_calls[]` → `{role: tool, tool_call_id}`; ≤350 tools; parameters always strict; a client-side call ends the agentic request (fresh `max_turns` budget on the follow-up)",1657    "endpoint": "POST /v1/responses",1658    "params": [1659     "tools[type=function]",1660     "input[](function_call_output)",1661     "parallel_tool_calls"1662    ],1663    "status": [1664     "DOCUMENTED",1665     "LIVE_VERIFIED"1666    ],1667    "notes": "all 7 Grok text models; also inside the voice session and `/v1/messages`"1668   },1669   "gemini": {1670    "supported": true,1671    "how": "`tools[].functionDeclarations[] {name, description, parameters | parametersJsonSchema, response | responseJsonSchema, behavior}` → `parts[].functionCall {name, args, id}` (+ mandatory `thoughtSignature` on Gemini 3) → you reply a `user` Content of `functionResponse {name, id, response, parts[] (multimodal)}`; max 512 declarations",1672    "endpoint": "POST /v1beta/models/{model}:generateContent",1673    "params": [1674     "tools[].functionDeclarations",1675     "contents[].parts[].functionResponse",1676     "toolConfig.functionCallingConfig"1677    ],1678    "status": [1679     "DOCUMENTED",1680     "LIVE_VERIFIED"1681    ],1682    "notes": "Interactions: `{type: function, name, description, parameters}` + `function_call`/`function_result` steps; Live: `toolCall`/`toolResponse` messages"1683   },1684   "providers_supporting": [1685    "openai",1686    "anthropic",1687    "xai",1688    "gemini"1689   ],1690   "provider_count": 4,1691   "portable": true,1692   "notes": "Same loop on all four. Arguments are a JSON **string** on OpenAI/xAI and an **object** on Anthropic (`input`) and Gemini (`args`); results are a top-level item (OpenAI/xAI), a leading `tool_result` block in a user turn (Anthropic) or `functionResponse` parts in a user Content (Gemini). Gemini 3 additionally requires echoing the `thoughtSignature` of the first call of each step (400 / `MISSING_THOUGHT_SIGNATURE`).",1693   "ref": "docs/comparisons/tool-execution.md · docs/tools/xai/function-calling.md · docs/tools/gemini/function-calling.md"1694  },1695  {1696   "section": "Tools — client side",1697   "feature": "Free-form / grammar-constrained custom tools",1698   "openai": {1699    "supported": true,1700    "how": "`tools[type=custom] {format: {type:text} | {type:grammar, syntax: lark|regex, definition}}`",1701    "endpoint": "POST /v1/responses",1702    "params": [1703     "tools[type=custom].format"1704    ],1705    "status": [1706     "DOCUMENTED",1707     "LIVE_VERIFIED"1708    ],1709    "notes": ""1710   },1711   "anthropic": {1712    "supported": false,1713    "how": "not offered",1714    "endpoint": "",1715    "params": [],1716    "status": [1717     "UNVERIFIED"1718    ],1719    "notes": "no equivalent surface in the documented API"1720   },1721   "xai": {1722    "supported": false,1723    "how": "no `custom` tool type in the deserializer (422 'unknown variant'); no grammar mode",1724    "endpoint": "POST /v1/responses",1725    "params": [],1726    "status": [1727     "DOCUMENTED"1728    ],1729    "notes": ""1730   },1731   "gemini": {1732    "supported": false,1733    "how": "not offered",1734    "endpoint": "",1735    "params": [],1736    "status": [1737     "UNVERIFIED"1738    ],1739    "notes": "no equivalent surface in the documented API"1740   },1741   "providers_supporting": [1742    "openai"1743   ],1744   "provider_count": 1,1745   "portable": false,1746   "notes": "OpenAI-only.",1747   "ref": "tools.json · docs/xai/structured-outputs.md"1748  },1749  {1750   "section": "Tools — client side",1751   "feature": "Tool choice",1752   "openai": {1753    "supported": true,1754    "how": "`tool_choice`: `auto|none|required` string, `{type:function,name}`, hosted `{type:web_search|mcp|shell|apply_patch|…}`, `{type:allowed_tools, mode, tools[]}`",1755    "endpoint": "POST /v1/responses",1756    "params": [1757     "tool_choice",1758     "tool_choice(allowed_tools)"1759    ],1760    "status": [1761     "DOCUMENTED",1762     "LIVE_VERIFIED"1763    ],1764    "notes": ""1765   },1766   "anthropic": {1767    "supported": true,1768    "how": "`tool_choice {type: auto|any|tool|none, name?, disable_parallel_tool_use?}`",1769    "endpoint": "POST /v1/messages",1770    "params": [1771     "tool_choice.type",1772     "tool_choice.disable_parallel_tool_use"1773    ],1774    "status": [1775     "DOCUMENTED",1776     "LIVE_VERIFIED"1777    ],1778    "notes": "`any`/`tool` → 400 on Fable 5.1 / Mythos 5.1 and with manual thinking"1779   },1780   "xai": {1781    "supported": true,1782    "how": "`tool_choice`: `auto|none|required` or `{type:function, name}` (Responses) / `{type:function, function:{name}}` (Chat); `/v1/messages`: `{type: auto|any|tool}` (`disable_parallel_tool_use` → 400); no `allowed_tools`, no forcing of server tools",1783    "endpoint": "POST /v1/responses",1784    "params": [1785     "tool_choice",1786     "tool_choice.type",1787     "tool_choice.name"1788    ],1789    "status": [1790     "DOCUMENTED",1791     "LIVE_VERIFIED"1792    ],1793    "notes": ""1794   },1795   "gemini": {1796    "supported": true,1797    "how": "`toolConfig.functionCallingConfig {mode: AUTO|ANY|NONE|VALIDATED, allowedFunctionNames[]}` (ANY + names = forced subset); Interactions `generation_config.tool_choice: auto|any|none|validated` or `{allowed_tools:{mode, tools[]}}`; built-in tools cannot be forced",1798    "endpoint": "POST /v1beta/models/{model}:generateContent",1799    "params": [1800     "toolConfig.functionCallingConfig.mode",1801     "toolConfig.functionCallingConfig.allowedFunctionNames"1802    ],1803    "status": [1804     "DOCUMENTED",1805     "LIVE_VERIFIED"1806    ],1807    "notes": "Live `setup.toolConfig` → close 1007"1808   },1809   "providers_supporting": [1810    "openai",1811    "anthropic",1812    "xai",1813    "gemini"1814   ],1815   "provider_count": 4,1816   "portable": true,1817   "notes": "`required` ≈ `any` ≈ `ANY`; only OpenAI and Gemini (`allowedFunctionNames` / Interactions `allowed_tools`) can restrict to a subset; only OpenAI can force a hosted tool.",1818   "ref": "parameters.json"1819  },1820  {1821   "section": "Tools — client side",1822   "feature": "Parallel tool calls",1823   "openai": {1824    "supported": true,1825    "how": "`parallel_tool_calls` (default true); hosted tools never batched with functions",1826    "endpoint": "POST /v1/responses",1827    "params": [1828     "parallel_tool_calls"1829    ],1830    "status": [1831     "DOCUMENTED",1832     "LIVE_VERIFIED"1833    ],1834    "notes": ""1835   },1836   "anthropic": {1837    "supported": true,1838    "how": "default on (Claude 4+); `tool_choice.disable_parallel_tool_use:true` to force ≤1; all results in one user message",1839    "endpoint": "POST /v1/messages",1840    "params": [1841     "tool_choice.disable_parallel_tool_use"1842    ],1843    "status": [1844     "DOCUMENTED",1845     "LIVE_VERIFIED"1846    ],1847    "notes": ""1848   },1849   "xai": {1850    "supported": true,1851    "how": "`parallel_tool_calls` (default true; `false` = at most one call) on Chat and Responses",1852    "endpoint": "POST /v1/responses",1853    "params": [1854     "parallel_tool_calls"1855    ],1856    "status": [1857     "DOCUMENTED",1858     "LIVE_VERIFIED"1859    ],1860    "notes": "`/v1/messages` `disable_parallel_tool_use` → 400"1861   },1862   "gemini": {1863    "supported": true,1864    "how": "several `functionCall` parts in one `model` Content; answer **all** of them in one `user` Content (interleaving FC1,FR1,FC2 → 400); only the first call carries the thought signature; no on/off switch",1865    "endpoint": "POST /v1beta/models/{model}:generateContent",1866    "params": [1867     "contents[].parts[].functionCall"1868    ],1869    "status": [1870     "DOCUMENTED",1871     "LIVE_VERIFIED"1872    ],1873    "notes": "`compositional_function_calling` chains calls across turns"1874   },1875   "providers_supporting": [1876    "openai",1877    "anthropic",1878    "xai",1879    "gemini"1880   ],1881   "provider_count": 4,1882   "portable": true,1883   "notes": "Default-on everywhere; Gemini has no switch to disable it.",1884   "ref": "docs/openai/tool-loop.md · docs/tools/anthropic/tool-use-loop.md · docs/tools/gemini/function-calling.md"1885  },1886  {1887   "section": "Tools — client side",1888   "feature": "Tool namespaces",1889   "openai": {1890    "supported": true,1891    "how": "`tools[type=namespace] {name, description, tools[]}`; calls carry `namespace`",1892    "endpoint": "POST /v1/responses",1893    "params": [1894     "tools[type=namespace]"1895    ],1896    "status": [1897     "DOCUMENTED",1898     "LIVE_VERIFIED"1899    ],1900    "notes": ""1901   },1902   "anthropic": {1903    "supported": false,1904    "how": "no namespaces; toolsets (`computer_toolset_20260801`, `mcp_toolset`) group Anthropic-defined members only",1905    "endpoint": "",1906    "params": [],1907    "status": [1908     "DOCUMENTED"1909    ],1910    "notes": ""1911   },1912   "xai": {1913    "supported": false,1914    "how": "not offered",1915    "endpoint": "",1916    "params": [],1917    "status": [1918     "UNVERIFIED"1919    ],1920    "notes": "no equivalent surface in the documented API"1921   },1922   "gemini": {1923    "supported": false,1924    "how": "not offered",1925    "endpoint": "",1926    "params": [],1927    "status": [1928     "UNVERIFIED"1929    ],1930    "notes": "no equivalent surface in the documented API"1931   },1932   "providers_supporting": [1933    "openai"1934   ],1935   "provider_count": 1,1936   "portable": false,1937   "notes": "OpenAI-only.",1938   "ref": "tools.json"1939  },1940  {1941   "section": "Tools — client side",1942   "feature": "Deferred tool loading / tool search",1943   "openai": {1944    "supported": true,1945    "how": "`tools[type=tool_search] {execution: server|client}` + `defer_loading:true` on function/custom/mcp; `tool_search_call`/`tool_search_output` items; `additional_tools` input item",1946    "endpoint": "POST /v1/responses",1947    "params": [1948     "tools[type=tool_search]",1949     "tools[type=function].defer_loading"1950    ],1951    "status": [1952     "DOCUMENTED",1953     "LIVE_VERIFIED"1954    ],1955    "notes": "gpt-5.4+ only; gpt-5.4-nano lacks it"1956   },1957   "anthropic": {1958    "supported": true,1959    "how": "`tool_search_tool_regex_20251119` / `tool_search_tool_bm25_20251119` (server) + `defer_loading:true` (≤10,000 tools); `tool_reference` blocks expanded server-side; client-side search via `tool_reference` in `tool_result`",1960    "endpoint": "POST /v1/messages",1961    "params": [1962     "tools[].defer_loading",1963     "tools[].type"1964    ],1965    "status": [1966     "DOCUMENTED",1967     "LIVE_VERIFIED"1968    ],1969    "notes": "GA no header; not cacheable together with `cache_control`"1970   },1971   "xai": {1972    "supported": true,1973    "how": "`tools[type=tool_search] {execution}` + `defer_loading:true` on function/mcp tools → `tool_search_call {arguments:{query, limit}}` / `tool_search_output {tools[]}` — **alpha**: 403 'only available for alpha users'",1974    "endpoint": "POST /v1/responses",1975    "params": [1976     "tools[type=tool_search]",1977     "tools[].defer_loading"1978    ],1979    "status": [1980     "DOCUMENTED",1981     "ACCOUNT_RESTRICTED"1982    ],1983    "notes": "listed as compatible with all 7 text models"1984   },1985   "gemini": {1986    "supported": false,1987    "how": "not offered",1988    "endpoint": "",1989    "params": [],1990    "status": [1991     "UNVERIFIED"1992    ],1993    "notes": "no equivalent surface in the documented API"1994   },1995   "providers_supporting": [1996    "openai",1997    "anthropic",1998    "xai"1999   ],2000   "provider_count": 3,2001   "portable": true,2002   "notes": "OpenAI-shaped on xAI (gated), two algorithms on Anthropic; Gemini has no deferred loading (best practice: keep 10–20 active declarations).",2003   "ref": "docs/tools/openai/tool-search.md · docs/tools/anthropic/tool-search.md · tools.json (xai tool_search)"2004  },2005  {2006   "section": "Tools — client side",2007   "feature": "Programmatic tool calling (model writes code that calls tools)",2008   "openai": {2009    "supported": true,2010    "how": "`tools[type=programmatic_tool_calling]` + `allowed_callers:[\"programmatic\"]`; `program`/`program_output` items; nested calls `caller.type: program`; JavaScript in isolated V8",2011    "endpoint": "POST /v1/responses",2012    "params": [2013     "tools[type=programmatic_tool_calling]",2014     "tools[type=function].allowed_callers"2015    ],2016    "status": [2017     "DOCUMENTED",2018     "UNVERIFIED"2019    ],2020    "notes": "no compatible model list in tools.json"2021   },2022   "anthropic": {2023    "supported": true,2024    "how": "`code_execution_20260120+` + `allowed_callers:[\"code_execution_20260120\"]`; Python `await tool({...})` in the sandbox; `caller {type, tool_id}`; reply requires top-level `container`",2025    "endpoint": "POST /v1/messages",2026    "params": [2027     "tools[].allowed_callers",2028     "container"2029    ],2030    "status": [2031     "DOCUMENTED",2032     "LIVE_VERIFIED"2033    ],2034    "notes": "not Haiku 4.5 (400)"2035   },2036   "xai": {2037    "supported": false,2038    "how": "not offered",2039    "endpoint": "",2040    "params": [],2041    "status": [2042     "UNVERIFIED"2043    ],2044    "notes": "no equivalent surface in the documented API"2045   },2046   "gemini": {2047    "supported": false,2048    "how": "not a generateContent feature; nearest: compositional function calling (chained calls across turns) and code execution over `functionResponse` data; Antigravity agents script tools inside their sandbox",2049    "endpoint": "POST /v1beta/models/{model}:generateContent",2050    "params": [],2051    "status": [2052     "DOCUMENTED"2053    ],2054    "notes": ""2055   },2056   "providers_supporting": [2057    "openai",2058    "anthropic"2059   ],2060   "provider_count": 2,2061   "portable": true,2062   "notes": "OpenAI and Anthropic only (JS vs Python).",2063   "ref": "docs/tools/anthropic/programmatic-tool-calling.md · docs/openai/tool-loop.md §6 · docs/tools/gemini/function-calling.md"2064  },2065  {2066   "section": "Tools — client side",2067   "feature": "Async tools (model continues while a tool runs)",2068   "openai": {2069    "supported": true,2070    "how": "`tools[type=function].async:true` + wait tool / task handles (GPT-6 Astra+)",2071    "endpoint": "POST /v1/responses",2072    "params": [2073     "tools[type=function].async",2074     "input[](function_call).async"2075    ],2076    "status": [2077     "DOCUMENTED"2078    ],2079    "notes": ""2080   },2081   "anthropic": {2082    "supported": false,2083    "how": "not offered",2084    "endpoint": "",2085    "params": [],2086    "status": [2087     "UNVERIFIED"2088    ],2089    "notes": "no equivalent surface in the documented API"2090   },2091   "xai": {2092    "supported": false,2093    "how": "not offered",2094    "endpoint": "",2095    "params": [],2096    "status": [2097     "UNVERIFIED"2098    ],2099    "notes": "no equivalent surface in the documented API"2100   },2101   "gemini": {2102    "supported": true,2103    "how": "Live API only: `functionDeclarations[].behavior: NON_BLOCKING` (default on gemini-3.8-live) + `toolResponse.functionResponses[].scheduling: INTERRUPT|WHEN_IDLE|SILENT`, `willContinue`; `generateContent` → 400",2104    "endpoint": "WSS BidiGenerateContent",2105    "params": [2106     "setup.tools[].functionDeclarations[].behavior",2107     "toolResponse.functionResponses[].scheduling"2108    ],2109    "status": [2110     "DOCUMENTED",2111     "LIVE_VERIFIED"2112    ],2113    "notes": "gemini-3.8-live-extended-thinking: async only"2114   },2115   "providers_supporting": [2116    "openai",2117    "gemini"2118   ],2119   "provider_count": 2,2120   "portable": true,2121   "notes": "Different scopes: OpenAI in text Responses, Gemini in the voice Live session.",2122   "ref": "parameters.json · docs/gemini/live-api.md"2123  },2124  {2125   "section": "Tools — client side",2126   "feature": "Shell execution",2127   "openai": {2128    "supported": true,2129    "how": "`tools[type=shell]` hosted (`environment.type: container_auto|container_reference`) **or** local (`type: local` — you run commands); legacy `local_shell` → 400",2130    "endpoint": "POST /v1/responses",2131    "params": [2132     "tools[type=shell].environment"2133    ],2134    "status": [2135     "DOCUMENTED",2136     "LIVE_VERIFIED"2137    ],2138    "notes": "gpt-5.2+, codex, gpt-6-astra"2139   },2140   "anthropic": {2141    "supported": true,2142    "how": "`bash_20250124` client tool (you run a persistent bash) **or** server `bash_code_execution` sub-tool of `code_execution_20250825+`",2143    "endpoint": "POST /v1/messages",2144    "params": [2145     "tools[].type"2146    ],2147    "status": [2148     "DOCUMENTED",2149     "LIVE_VERIFIED"2150    ],2151    "notes": "all current models"2152   },2153   "xai": {2154    "supported": true,2155    "how": "`tools[type=shell] {environment:{type: local, skills:[{name, description, path}]}}` → `shell_call` → you reply `shell_call_output {stdout, stderr, outcome}`; **local only** (no hosted container variant); hosted Python via `code_interpreter`",2156    "endpoint": "POST /v1/responses",2157    "params": [2158     "tools[type=shell].environment",2159     "input[](shell_call_output)"2160    ],2161    "status": [2162     "DOCUMENTED",2163     "LIVE_VERIFIED"2164    ],2165    "notes": "accepted live, not invoked; Grok Build CLI runs its own sandbox"2166   },2167   "gemini": {2168    "supported": false,2169    "how": "no shell tool on `generateContent`; the **Antigravity** managed agent runs bash/python/node `code_execution` and file tools inside its Linux sandbox (Interactions API only, PREVIEW)",2170    "endpoint": "POST /v1beta/interactions",2171    "params": [2172     "agent_config(antigravity)"2173    ],2174    "status": [2175     "DOCUMENTED",2176     "PREVIEW"2177    ],2178    "notes": "`gemini-3.1-pro-preview-customtools` is tuned for bash-style custom tools you define yourself"2179   },2180   "providers_supporting": [2181    "openai",2182    "anthropic",2183    "xai"2184   ],2185   "provider_count": 3,2186   "portable": true,2187   "notes": "OpenAI has hosted + local, Anthropic hosted (code execution) + local (bash), xAI local only, Gemini only inside its managed agent.",2188   "ref": "docs/tools/openai/shell.md · docs/tools/anthropic/bash.md · docs/xai/skills-api.md · docs/gemini/interactions-api.md"2189  },2190  {2191   "section": "Tools — client side",2192   "feature": "File editing tool",2193   "openai": {2194    "supported": true,2195    "how": "`tools[type=apply_patch]` → `apply_patch_call {operation: create_file|update_file|delete_file, diff}`; you reply `apply_patch_call_output`",2196    "endpoint": "POST /v1/responses",2197    "params": [2198     "tools[type=apply_patch]"2199    ],2200    "status": [2201     "DOCUMENTED",2202     "LIVE_VERIFIED"2203    ],2204    "notes": "undocumented SSE events `response.apply_patch_call_operation_diff.*` (LIVE_DISCOVERED)"2205   },2206   "anthropic": {2207    "supported": true,2208    "how": "`text_editor_20250728` (`name: str_replace_based_edit_tool`, `max_characters`) → commands view/str_replace/create/insert; server variant `text_editor_code_execution`",2209    "endpoint": "POST /v1/messages",2210    "params": [2211     "tools[].max_characters"2212    ],2213    "status": [2214     "DOCUMENTED",2215     "LIVE_VERIFIED"2216    ],2217    "notes": "older 20250429/20250124 → 400 on current models"2218   },2219   "xai": {2220    "supported": false,2221    "how": "not offered",2222    "endpoint": "",2223    "params": [],2224    "status": [2225     "UNVERIFIED"2226    ],2227    "notes": "no equivalent surface in the documented API"2228   },2229   "gemini": {2230    "supported": false,2231    "how": "no editor tool on `generateContent`; Antigravity 09-2026 built-ins `write_to_file`, `replace_file_content`, `view_file`, `list_dir`, `find_by_name`, `grep_search` (agent sandbox only)",2232    "endpoint": "POST /v1beta/interactions",2233    "params": [],2234    "status": [2235     "DOCUMENTED",2236     "PREVIEW"2237    ],2238    "notes": "05-2026 tool names deprecated → 2026-10-05"2239   },2240   "providers_supporting": [2241    "openai",2242    "anthropic"2243   ],2244   "provider_count": 2,2245   "portable": true,2246   "notes": "Diff-based (OpenAI) vs command-based (Anthropic); Gemini only inside Antigravity; none on xAI.",2247   "ref": "docs/tools/openai/apply-patch.md · docs/tools/anthropic/text-editor.md · docs/gemini/interactions-api.md"2248  },2249  {2250   "section": "Tools — client side",2251   "feature": "Memory tool (client-side persistent memory)",2252   "openai": {2253    "supported": false,2254    "how": "none in Responses; Agents API sessions persist items but no memory tool",2255    "endpoint": "",2256    "params": [],2257    "status": [2258     "DOCUMENTED"2259    ],2260    "notes": ""2261   },2262   "anthropic": {2263    "supported": true,2264    "how": "`memory_20250818` client tool (you store files under `/memories`)",2265    "endpoint": "POST /v1/messages",2266    "params": [2267     "tools[].type"2268    ],2269    "status": [2270     "DOCUMENTED",2271     "LIVE_VERIFIED"2272    ],2273    "notes": "Managed Agents add server-side memory stores"2274   },2275   "xai": {2276    "supported": false,2277    "how": "not offered",2278    "endpoint": "",2279    "params": [],2280    "status": [2281     "UNVERIFIED"2282    ],2283    "notes": "no equivalent surface in the documented API"2284   },2285   "gemini": {2286    "supported": false,2287    "how": "not offered",2288    "endpoint": "",2289    "params": [],2290    "status": [2291     "UNVERIFIED"2292    ],2293    "notes": "no equivalent surface in the documented API"2294   },2295   "providers_supporting": [2296    "anthropic"2297   ],2298   "provider_count": 1,2299   "portable": false,2300   "notes": "Anthropic-only.",2301   "ref": "docs/tools/anthropic/memory.md"2302  },2303  {2304   "section": "Tools — client side",2305   "feature": "Computer use",2306   "openai": {2307    "supported": true,2308    "how": "`tools[type=computer]` (current, gpt-5.4+/gpt-6) or `computer_use_preview` (+ `computer-use-preview` model, RETIRED); `computer_call {action|actions[], pending_safety_checks}` → `computer_call_output {computer_screenshot, acknowledged_safety_checks}`",2309    "endpoint": "POST /v1/responses",2310    "params": [2311     "tools[type=computer]",2312     "tools[type=computer_use_preview]"2313    ],2314    "status": [2315     "DOCUMENTED",2316     "PREVIEW",2317     "ACCOUNT_RESTRICTED"2318    ],2319    "notes": "`computer` UNVERIFIED live"2320   },2321   "anthropic": {2322    "supported": true,2323    "how": "`computer_toolset_20260801` (GA, no header, Fable/Mythos/Opus 5/Sonnet 5/Opus 4.8) or beta `computer_20251124` (`computer-use-2025-11-24`) / `computer_20250124`; member tools screenshot/zoom/click…; batch actions",2324    "endpoint": "POST /v1/messages",2325    "params": [2326     "tools[].display_width_px",2327     "tools[].enable_zoom",2328     "tools[].configs"2329    ],2330    "status": [2331     "DOCUMENTED",2332     "LIVE_VERIFIED",2333     "BETA"2334    ],2335    "notes": "~4,500-token toolset definition"2336   },2337   "xai": {2338    "supported": false,2339    "how": "not offered",2340    "endpoint": "",2341    "params": [],2342    "status": [2343     "UNVERIFIED"2344    ],2345    "notes": "no equivalent surface in the documented API"2346   },2347   "gemini": {2348    "supported": true,2349    "how": "`tools[].computerUse {environment: ENVIRONMENT_BROWSER|MOBILE|DESKTOP, excludedPredefinedFunctions[], enablePromptInjectionDetection, disabledSafetyPolicies[]}` → predefined `functionCall`s (`click`, `type`, `scroll`, `navigate`, `open_app`…; coordinates 0–999) → you reply `functionResponse` with a screenshot; `safety_decision: require_confirmation` → `safety_acknowledgement`; Interactions `{type: computer_use, environment: browser}`",2350    "endpoint": "POST /v1beta/models/{model}:generateContent",2351    "params": [2352     "tools[].computerUse",2353     "tools[].computerUse.environment"2354    ],2355    "status": [2356     "DOCUMENTED",2357     "PREVIEW",2358     "ACCOUNT_RESTRICTED"2359    ],2360    "notes": "gemini-3.8-flash recommended; legacy `gemini-2.5-computer-use-preview-10-2025` browser-only; no free tier"2361   },2362   "providers_supporting": [2363    "openai",2364    "anthropic",2365    "gemini"2366   ],2367   "provider_count": 3,2368   "portable": true,2369   "notes": "Three client-executed screenshot loops (OpenAI, Anthropic, Gemini); none on xAI. Gemini normalises coordinates to 0–999 and adds mobile/desktop environments.",2370   "ref": "docs/tools/openai/computer-use.md · docs/tools/anthropic/computer-use.md · docs/tools/gemini/computer-use.md"2371  },2372  {2373   "section": "Tools — client side",2374   "feature": "Browser use toolset",2375   "openai": {2376    "supported": false,2377    "how": "not offered",2378    "endpoint": "",2379    "params": [],2380    "status": [2381     "UNVERIFIED"2382    ],2383    "notes": "no equivalent surface in the documented API"2384   },2385   "anthropic": {2386    "supported": true,2387    "how": "`browser_toolset_20260801` (client toolset, `browser_state` result blocks)",2388    "endpoint": "POST /v1/messages",2389    "params": [2390     "tools[].type"2391    ],2392    "status": [2393     "DOCUMENTED",2394     "LIVE_VERIFIED"2395    ],2396    "notes": "≈6,600-token definition; 7 models"2397   },2398   "xai": {2399    "supported": false,2400    "how": "not offered",2401    "endpoint": "",2402    "params": [],2403    "status": [2404     "UNVERIFIED"2405    ],2406    "notes": "no equivalent surface in the documented API"2407   },2408   "gemini": {2409    "supported": false,2410    "how": "browser is an `environment` of the computer-use tool, not a separate toolset",2411    "endpoint": "POST /v1beta/models/{model}:generateContent",2412    "params": [],2413    "status": [2414     "DOCUMENTED"2415    ],2416    "notes": ""2417   },2418   "providers_supporting": [2419    "anthropic"2420   ],2421   "provider_count": 1,2422   "portable": false,2423   "notes": "Anthropic-only as a dedicated toolset.",2424   "ref": "tools.json"2425  },2426  {2427   "section": "Tools — server side / hosted",2428   "feature": "Web search",2429   "openai": {2430    "supported": true,2431    "how": "`tools[type=web_search] {search_context_size, user_location, filters.allowed_domains, external_web_access, return_token_budget, search_content_types}`; `web_search_call` item + `url_citation` annotations; $10/1k calls",2432    "endpoint": "POST /v1/responses",2433    "params": [2434     "tools[type=web_search]"2435    ],2436    "status": [2437     "DOCUMENTED",2438     "LIVE_VERIFIED"2439    ],2440    "notes": "Chat: search models + `web_search_options`; preview variants LEGACY"2441   },2442   "anthropic": {2443    "supported": true,2444    "how": "`web_search_20260318|20260209|20250305 {max_uses, allowed_domains XOR blocked_domains, user_location}`; `server_tool_use` + `web_search_tool_result` blocks, `web_search_result_location` citations; $10/1k searches; dynamic filtering via code execution (20260209+)",2445    "endpoint": "POST /v1/messages",2446    "params": [2447     "tools[].max_uses",2448     "tools[].allowed_domains",2449     "tools[].blocked_domains",2450     "tools[].user_location"2451    ],2452    "status": [2453     "DOCUMENTED",2454     "LIVE_VERIFIED"2455    ],2456    "notes": "13 models; `pause_turn` after 10 iterations"2457   },2458   "xai": {2459    "supported": true,2460    "how": "`tools[type=web_search] {allowed_domains ≤5 XOR excluded_domains ≤5, enable_image_understanding, enable_image_search}` → `web_search_call {action: search|open_page|find_in_page}` + `url_citation` annotations + inline `[[N]](url)` (disable via `include: no_inline_citations`); **$5/1k successful calls**; `search_context_size` → 400",2461    "endpoint": "POST /v1/responses",2462    "params": [2463     "tools[type=web_search]",2464     "tools[].allowed_domains",2465     "tools[].excluded_domains",2466     "tools[].enable_image_search"2467    ],2468    "status": [2469     "DOCUMENTED",2470     "LIVE_VERIFIED"2471    ],2472    "notes": "Responses only; Chat Live Search → 410; usage `server_side_tool_usage_details.web_search_calls`"2473   },2474   "gemini": {2475    "supported": true,2476    "how": "`tools[{googleSearch: {timeRangeFilter?, searchTypes?{webSearch, imageSearch}}}]` → `groundingMetadata {webSearchQueries, searchEntryPoint (must be displayed — ToS), groundingChunks[].web, groundingSupports}`; Gemini 3.x **5,000 free queries/month then $14/1k queries**, 2.5: 1,500 RPD free then $35/1k grounded prompts; legacy `googleSearchRetrieval` (dynamic retrieval) DEPRECATED",2477    "endpoint": "POST /v1beta/models/{model}:generateContent",2478    "params": [2479     "tools[].googleSearch",2480     "tools[].googleSearch.searchTypes",2481     "tools[].googleSearchRetrieval"2482    ],2483    "status": [2484     "DOCUMENTED",2485     "ACCOUNT_RESTRICTED"2486    ],2487    "notes": "429 `limit: 0` on this free-tier key; Interactions `{type: google_search}`; the only tool allowed with functions in the Live API"2488   },2489   "providers_supporting": [2490    "openai",2491    "anthropic",2492    "xai",2493    "gemini"2494   ],2495   "provider_count": 4,2496   "portable": true,2497   "notes": "Same task on all four with four price models ($10 / $10 / $5 per 1k calls; Gemini per query with a free monthly quota). Domain filters exist on OpenAI, Anthropic and xAI; Gemini offers time-range and image-search filters instead.",2498   "ref": "docs/tools/openai/web-search.md · docs/tools/anthropic/web-search.md · docs/tools/xai/web-search.md · docs/tools/gemini/google-search-grounding.md"2499  },2500  {2501   "section": "Tools — server side / hosted",2502   "feature": "Social / vertical search (X posts, Google Maps)",2503   "openai": {2504    "supported": false,2505    "how": "not offered",2506    "endpoint": "",2507    "params": [],2508    "status": [2509     "UNVERIFIED"2510    ],2511    "notes": "no equivalent surface in the documented API"2512   },2513   "anthropic": {2514    "supported": false,2515    "how": "not offered",2516    "endpoint": "",2517    "params": [],2518    "status": [2519     "UNVERIFIED"2520    ],2521    "notes": "no equivalent surface in the documented API"2522   },2523   "xai": {2524    "supported": true,2525    "how": "`tools[type=x_search] {allowed_x_handles ≤10 XOR excluded_x_handles, from_date, to_date, enable_image_understanding, enable_video_understanding}` → live item `custom_tool_call` named `x_keyword_search`/`x_semantic_search` (docs: `x_search_call`) + `url_citation` to x.com posts; $5/1k calls until **2026-09-21**, then $5/1k posts + $10/1k profiles fetched",2526    "endpoint": "POST /v1/responses",2527    "params": [2528     "tools[type=x_search]",2529     "tools[].allowed_x_handles",2530     "tools[].from_date",2531     "tools[].to_date"2532    ],2533    "status": [2534     "DOCUMENTED",2535     "LIVE_VERIFIED",2536     "LIVE_DISCOVERED"2537    ],2538    "notes": "also in the voice session"2539   },2540   "gemini": {2541    "supported": true,2542    "how": "`tools[{googleMaps: {enableWidget?}}]` + `toolConfig.retrievalConfig {latLng, languageCode}` → `groundingChunks[].maps {uri, title, placeId, text, placeAnswerSources}`; GA; text only; not in Live; Gemini 3.x $14/1k queries after 5,000/month (tools table: $25/1k grounded prompts, 1,500 RPD free)",2543    "endpoint": "POST /v1beta/models/{model}:generateContent",2544    "params": [2545     "tools[].googleMaps",2546     "toolConfig.retrievalConfig.latLng"2547    ],2548    "status": [2549     "DOCUMENTED",2550     "GA",2551     "LIVE_VERIFIED"2552    ],2553    "notes": "pricing inconsistency flagged (`DOCUMENTATION_INCOMPLETE`)"2554   },2555   "providers_supporting": [2556    "xai",2557    "gemini"2558   ],2559   "provider_count": 2,2560   "portable": false,2561   "notes": "Provider-specific data sources; no equivalent on OpenAI/Anthropic.",2562   "ref": "docs/tools/xai/x-search.md · docs/tools/gemini/google-maps-grounding.md"2563  },2564  {2565   "section": "Tools — server side / hosted",2566   "feature": "Web fetch / URL context (retrieve specific URLs)",2567   "openai": {2568    "supported": false,2569    "how": "no dedicated fetch tool; web search may open pages; `input_file.file_url` fetches PDFs only",2570    "endpoint": "",2571    "params": [],2572    "status": [2573     "DOCUMENTED"2574    ],2575    "notes": ""2576   },2577   "anthropic": {2578    "supported": true,2579    "how": "`web_fetch_20260318|20260309|20260209|20250910 {max_uses, allowed_domains, citations, max_content_tokens, use_cache, url_sources}`; only URLs already in context; free (tokens only)",2580    "endpoint": "POST /v1/messages",2581    "params": [2582     "tools[].max_content_tokens",2583     "tools[].url_sources",2584     "tools[].use_cache"2585    ],2586    "status": [2587     "DOCUMENTED",2588     "LIVE_VERIFIED"2589    ],2590    "notes": "`url_not_in_prior_context` error"2591   },2592   "xai": {2593    "supported": false,2594    "how": "no fetch tool; `web_search_call.action.type: open_page|find_in_page` shows the search tool opening pages; `input_file.file_url` attaches a remote file (attachment search)",2595    "endpoint": "POST /v1/responses",2596    "params": [],2597    "status": [2598     "DOCUMENTED"2599    ],2600    "notes": ""2601   },2602   "gemini": {2603    "supported": true,2604    "how": "`tools[{urlContext: {}}]` (no options): ≤20 public URLs per request, ≤34 MB each (HTML/JSON/text/CSV/RTF/PNG/JPEG/PDF; no YouTube/Workspace/paywalls) → `urlContextMetadata.urlMetadata[] {retrievedUrl, urlRetrievalStatus}`; free tool, content billed as input (`toolUsePromptTokenCount`)",2605    "endpoint": "POST /v1beta/models/{model}:generateContent",2606    "params": [2607     "tools[].urlContext"2608    ],2609    "status": [2610     "DOCUMENTED",2611     "GA",2612     "LIVE_VERIFIED"2613    ],2614    "notes": "Interactions `{type: url_context}`; combinable with search/code exec/functions"2615   },2616   "providers_supporting": [2617    "anthropic",2618    "gemini"2619   ],2620   "provider_count": 2,2621   "portable": true,2622   "notes": "Anthropic and Gemini offer a fetch tool; Anthropic restricts to URLs already in context, Gemini to any public URL you name.",2623   "ref": "docs/tools/anthropic/web-fetch.md · docs/tools/gemini/url-context.md"2624  },2625  {2626   "section": "Tools — server side / hosted",2627   "feature": "File search / managed RAG",2628   "openai": {2629    "supported": true,2630    "how": "Vector Stores API (create, files, file_batches, search) + `tools[type=file_search] {vector_store_ids, max_num_results, filters, ranking_options}`; $2.50/1k calls + $0.10/GB/day",2631    "endpoint": "POST /v1/vector_stores · POST /v1/responses",2632    "params": [2633     "tools[type=file_search]"2634    ],2635    "status": [2636     "DOCUMENTED",2637     "LIVE_VERIFIED"2638    ],2639    "notes": "16 endpoints"2640   },2641   "anthropic": {2642    "supported": false,2643    "how": "no vector store; patterns: `search_result` blocks (your RAG, citable), `document` blocks from Files API, code execution over uploaded files",2644    "endpoint": "POST /v1/messages",2645    "params": [2646     "messages[].content[] {type:'search_result'}",2647     "messages[].content[] {type:'document'}"2648    ],2649    "status": [2650     "DOCUMENTED",2651     "LIVE_VERIFIED"2652    ],2653    "notes": ""2654   },2655   "xai": {2656    "supported": true,2657    "how": "**Collections API** (`/v1/collections`, documents added from Files ids, `index_configuration.model_name: grok-embedding-small`, `chunk_configuration`, `POST /v1/documents/search {query, retrieval_mode: hybrid|semantic|keyword}`) + `tools[type=file_search|collections_search] {vector_store_ids (= collection ids), max_num_results, filters, ranking_options}` → `file_search_call {queries, results[{file_id, filename, score, text}]}`; $2.50/1k calls + $0.10/GiB/day; implicit `attachment_search` over `input_file` parts $10/1k",2658    "endpoint": "POST /v1/responses",2659    "params": [2660     "tools[type=file_search]",2661     "tools[].vector_store_ids"2662    ],2663    "status": [2664     "DOCUMENTED",2665     "LIVE_VERIFIED",2666     "ACCOUNT_RESTRICTED"2667    ],2668    "notes": "13 collection endpoints; documented on management-api.x.ai but working on api.x.ai (LIVE_DISCOVERED); search 404 while indexing"2669   },2670   "gemini": {2671    "supported": true,2672    "how": "**File Search stores** (`/v1beta/fileSearchStores`, `:uploadToFileSearchStore` resumable ≤100 MB, `:importFile`, documents, `chunkingConfig`, `customMetadata[]`; embedding model fixed at creation) + `tools[{fileSearch: {fileSearchStoreNames[], metadataFilter (AIP-160), topK}}]` → `groundingChunks[].retrievedContext {title, text, pageNumber, customMetadata}`; indexing $0.15/1M tokens once, storage + queries free; store quota 1 GB (free) … 1 TB (Tier 3)",2673    "endpoint": "POST /v1beta/models/{model}:generateContent",2674    "params": [2675     "tools[].fileSearch",2676     "tools[].fileSearch.fileSearchStoreNames",2677     "tools[].fileSearch.metadataFilter"2678    ],2679    "status": [2680     "DOCUMENTED",2681     "PREVIEW",2682     "LIVE_VERIFIED"2683    ],2684    "notes": "12 endpoints; not combinable with Search/URL context; not in Live"2685   },2686   "providers_supporting": [2687    "openai",2688    "xai",2689    "gemini"2690   ],2691   "provider_count": 3,2692   "portable": true,2693   "notes": "Three hosted stores (OpenAI vector stores, xAI collections, Gemini file-search stores) with different billing (per call / per call + storage / per indexed token); Anthropic supplies citation plumbing instead of storage.",2694   "ref": "docs/openai/vector-stores.md · docs/anthropic/citations.md · docs/xai/collections.md · docs/tools/gemini/file-search.md"2695  },2696  {2697   "section": "Tools — server side / hosted",2698   "feature": "Code execution (sandboxed Python)",2699   "openai": {2700    "supported": true,2701    "how": "`tools[type=code_interpreter] {container: auto|cntr_id, file_ids, memory_limit 1g–64g, network_policy}`; `code_interpreter_call {code, outputs}`; $0.03–$1.92 per 20-min session (per-minute since 2026-06-02)",2702    "endpoint": "POST /v1/responses",2703    "params": [2704     "tools[type=code_interpreter].container"2705    ],2706    "status": [2707     "DOCUMENTED",2708     "LIVE_VERIFIED"2709    ],2710    "notes": "36 models"2711   },2712   "anthropic": {2713    "supported": true,2714    "how": "`code_execution_20260521|20260120|20250825` (bash + text editor sub-tools, Python 3.11, 5 GiB RAM, no internet); `container {id, skills}` reuse (30-day state); 1,550 free container-hours/org/month then $0.05/h; free with web_search/fetch 20260209+",2715    "endpoint": "POST /v1/messages",2716    "params": [2717     "tools[].type",2718     "container"2719    ],2720    "status": [2721     "DOCUMENTED",2722     "LIVE_VERIFIED"2723    ],2724    "notes": "13 models; usage counter `code_execution_requests` missing live"2725   },2726   "xai": {2727    "supported": true,2728    "how": "`tools[type=code_interpreter]` (alias `code_execution`) → `code_interpreter_call {code, outputs[{type: logs, logs: <JSON string stdout/stderr/exit_code>} | {type: image, url}]}` (outputs only with `include: code_interpreter_call.outputs`); Python + NumPy/Pandas/Matplotlib/SciPy, no network; **$5/1k calls** + tokens; no container object",2729    "endpoint": "POST /v1/responses",2730    "params": [2731     "tools[type=code_interpreter]",2732     "include"2733    ],2734    "status": [2735     "DOCUMENTED",2736     "LIVE_VERIFIED"2737    ],2738    "notes": "all 7 text models; gRPC rejects the `code_interpreter` alias"2739   },2740   "gemini": {2741    "supported": true,2742    "how": "`tools[{codeExecution: {}}]` → parts `executableCode {language: PYTHON, code}` + `codeExecutionResult {outcome, output}` (+ `inlineData` PNG for matplotlib); Python ≥3.10, fixed library set, 30 s per run, ≤5 retries, no pip/network; **no fee** — code and results billed as output then input tokens",2743    "endpoint": "POST /v1beta/models/{model}:generateContent",2744    "params": [2745     "tools[].codeExecution"2746    ],2747    "status": [2748     "DOCUMENTED",2749     "LIVE_VERIFIED"2750    ],2751    "notes": "12 models; Interactions `{type: code_execution}`; not in Live"2752   },2753   "providers_supporting": [2754    "openai",2755    "anthropic",2756    "xai",2757    "gemini"2758   ],2759   "provider_count": 4,2760   "portable": true,2761   "notes": "Four sandboxes, four price models: per container-session (OpenAI), per container-hour with a free tier (Anthropic), per call (xAI), tokens only (Gemini). Only OpenAI/Anthropic expose a reusable container object.",2762   "ref": "docs/tools/openai/code-interpreter.md · docs/tools/anthropic/code-execution.md · docs/tools/xai/code-execution.md · docs/tools/gemini/code-execution.md"2763  },2764  {2765   "section": "Tools — server side / hosted",2766   "feature": "Container management API",2767   "openai": {2768    "supported": true,2769    "how": "CRUD containers and container files, download outputs",2770    "endpoint": "GET/POST/DELETE /v1/containers[/{id}/files]",2771    "params": [],2772    "status": [2773     "DOCUMENTED",2774     "LIVE_VERIFIED"2775    ],2776    "notes": "9 endpoints; auto containers expire 20 min after last activity"2777   },2778   "anthropic": {2779    "supported": false,2780    "how": "no container endpoints; container id returned on the message (`container.id`, `expires_at`) and reused via the `container` param; outputs via Files API",2781    "endpoint": "POST /v1/messages · GET /v1/files/{id}/content",2782    "params": [2783     "container"2784    ],2785    "status": [2786     "DOCUMENTED",2787     "LIVE_VERIFIED"2788    ],2789    "notes": ""2790   },2791   "xai": {2792    "supported": false,2793    "how": "no container object; `container` param accepted for OpenAI compatibility, not needed",2794    "endpoint": "POST /v1/responses",2795    "params": [],2796    "status": [2797     "DOCUMENTED"2798    ],2799    "notes": ""2800   },2801   "gemini": {2802    "supported": true,2803    "how": "**Environments API** for Interactions agents (`POST/GET/DELETE /v1beta/environments`, files `GET …/files/{path}`, `PUT /upload/v1beta/environments/{env}/files/{path}`; sources repository/GCS/inline; network allowlist; idle 15 min, deleted after 7 days) — not usable by `codeExecution`",2804    "endpoint": "POST /v1beta/environments",2805    "params": [2806     "environment",2807     "sources",2808     "network"2809    ],2810    "status": [2811     "DOCUMENTED",2812     "BETA",2813     "PREVIEW",2814     "LIVE_VERIFIED"2815    ],2816    "notes": "7 endpoints; sandbox compute unbilled during preview"2817   },2818   "providers_supporting": [2819    "openai",2820    "gemini"2821   ],2822   "provider_count": 2,2823   "portable": true,2824   "notes": "OpenAI containers and Gemini environments are both first-class resources but serve different tools (code interpreter vs managed agents).",2825   "ref": "docs/openai/containers.md · docs/tools/anthropic/code-execution.md · docs/gemini/interactions-api.md"2826  },2827  {2828   "section": "Tools — server side / hosted",2829   "feature": "Image generation as a tool / modality inside a text call",2830   "openai": {2831    "supported": true,2832    "how": "`tools[type=image_generation] {model, quality, size, background, input_fidelity, partial_images, moderation}`; `image_generation_call` item; streaming partials",2833    "endpoint": "POST /v1/responses",2834    "params": [2835     "tools[type=image_generation]"2836    ],2837    "status": [2838     "DOCUMENTED",2839     "LIVE_VERIFIED"2840    ],2841    "notes": "31 models"2842   },2843   "anthropic": {2844    "supported": false,2845    "how": "not offered",2846    "endpoint": "",2847    "params": [],2848    "status": [2849     "UNVERIFIED"2850    ],2851    "notes": "no equivalent surface in the documented API"2852   },2853   "xai": {2854    "supported": true,2855    "how": "`tools[type=image_generation]` → `image_generation_call` billed at Imagine per-image rates (no call fee); accepted live, not invoked",2856    "endpoint": "POST /v1/responses",2857    "params": [2858     "tools[type=image_generation]"2859    ],2860    "status": [2861     "DOCUMENTED",2862     "LIVE_VERIFIED"2863    ],2864    "notes": "all 7 text models listed"2865   },2866   "gemini": {2867    "supported": true,2868    "how": "not a tool: `generationConfig.responseModalities: [TEXT, IMAGE]` + `imageConfig {aspectRatio, imageSize 512|1K|2K|4K}` on image models (`gemini-3.1-flash-image`, `-lite-image`, `gemini-3-pro-image`); Interactions `response_format {type: image}`",2869    "endpoint": "POST /v1beta/models/{model}:generateContent",2870    "params": [2871     "generationConfig.responseModalities",2872     "generationConfig.imageConfig"2873    ],2874    "status": [2875     "DOCUMENTED",2876     "ACCOUNT_RESTRICTED"2877    ],2878    "notes": "no free tier (`limit: 0` here); text models ignore IMAGE modality"2879   },2880   "providers_supporting": [2881    "openai",2882    "xai",2883    "gemini"2884   ],2885   "provider_count": 3,2886   "portable": true,2887   "notes": "Tool item on OpenAI/xAI, output modality on Gemini; Claude outputs text only.",2888   "ref": "tools.json · docs/gemini/image-generation.md · docs/xai/images.md"2889  },2890  {2891   "section": "Tools — server side / hosted",2892   "feature": "Remote MCP servers",2893   "openai": {2894    "supported": true,2895    "how": "`tools[type=mcp] {server_label, server_url|connector_id|tunnel_id, authorization, headers, allowed_tools, require_approval (default always), defer_loading, allowed_callers}`; `mcp_list_tools`, `mcp_call`, `mcp_approval_request/response` items; no beta header",2896    "endpoint": "POST /v1/responses",2897    "params": [2898     "tools[type=mcp]"2899    ],2900    "status": [2901     "DOCUMENTED",2902     "LIVE_VERIFIED"2903    ],2904    "notes": "42 models; also Realtime and Agents API"2905   },2906   "anthropic": {2907    "supported": true,2908    "how": "`mcp_servers[] {type:url, url, name, authorization_token}` (≤20) + `tools[type=mcp_toolset] {mcp_server_name, default_config, configs}`; `mcp_tool_use`/`mcp_tool_result` blocks; **beta header `mcp-client-2025-11-20`**",2909    "endpoint": "POST /v1/messages",2910    "params": [2911     "mcp_servers",2912     "tools[].mcp_server_name",2913     "tools[].default_config",2914     "tools[].configs"2915    ],2916    "status": [2917     "DOCUMENTED",2918     "BETA",2919     "LIVE_VERIFIED"2920    ],2921    "notes": "no approvals in Messages; the error text advertises `mcp-client-2026-09-15` which is rejected (inconsistency)"2922   },2923   "xai": {2924    "supported": true,2925    "how": "`tools[type=mcp] {server_url, server_label (required), server_description, allowed_tools[], authorization, headers}` → `mcp_call {server_label, name, arguments, output, error}`; tokens only; **no approval round-trip** (`require_approval` silently accepted); also inside the voice session",2926    "endpoint": "POST /v1/responses",2927    "params": [2928     "tools[type=mcp]",2929     "tools[].server_url",2930     "tools[].server_label",2931     "tools[].allowed_tools"2932    ],2933    "status": [2934     "DOCUMENTED",2935     "LIVE_VERIFIED"2936    ],2937    "notes": "LIVE_VERIFIED with DeepWiki; `connector_id` unsupported"2938   },2939   "gemini": {2940    "supported": true,2941    "how": "server-side `tools[].mcpServers[] {name, streamableHttpTransport {url, headers, timeout}}` in the discovery schema (UNVERIFIED, no guide) and Interactions `{type: mcp_server, name, url, headers, allowed_tools}` (documented; not on Gemini 3 per the overview); SDK-side MCP (`mcpToTool()`, Python `ClientSession` in `tools`) runs the calls in **your** process (BETA)",2942    "endpoint": "POST /v1beta/interactions",2943    "params": [2944     "tools[].mcpServers",2945     "tools[](mcp_server)"2946    ],2947    "status": [2948     "DOCUMENTED",2949     "DOCUMENTATION_INCOMPLETE",2950     "UNVERIFIED"2951    ],2952    "notes": "Streamable HTTP only; server names must not contain '-'"2953   },2954   "providers_supporting": [2955    "openai",2956    "anthropic",2957    "xai",2958    "gemini"2959   ],2960   "provider_count": 4,2961   "portable": true,2962   "notes": "OpenAI GA with approvals; xAI GA without approvals; Anthropic beta without approvals; Gemini server-side MCP is documented but unverified — its verified path is SDK-side execution.",2963   "ref": "docs/tools/openai/mcp-and-connectors.md · docs/tools/anthropic/mcp-connector.md · docs/tools/xai/mcp.md · docs/tools/gemini/mcp.md"2964  },2965  {2966   "section": "Tools — server side / hosted",2967   "feature": "Built-in SaaS connectors",2968   "openai": {2969    "supported": true,2970    "how": "`connector_id`: dropbox, gmail, googlecalendar, googledrive, microsoftteams, outlookcalendar, outlookemail, sharepoint (+ OAuth `authorization`) — **deprecated** for models after 2025-09-01",2971    "endpoint": "POST /v1/responses",2972    "params": [2973     "tools[type=mcp].connector_id"2974    ],2975    "status": [2976     "DOCUMENTED",2977     "DEPRECATED"2978    ],2979    "notes": ""2980   },2981   "anthropic": {2982    "supported": false,2983    "how": "not offered",2984    "endpoint": "",2985    "params": [],2986    "status": [2987     "UNVERIFIED"2988    ],2989    "notes": "no equivalent surface in the documented API"2990   },2991   "xai": {2992    "supported": false,2993    "how": "`connector_id` documented as unsupported",2994    "endpoint": "POST /v1/responses",2995    "params": [],2996    "status": [2997     "DOCUMENTED"2998    ],2999    "notes": ""3000   },3001   "gemini": {3002    "supported": false,3003    "how": "not offered",3004    "endpoint": "",3005    "params": [],3006    "status": [3007     "UNVERIFIED"3008    ],3009    "notes": "no equivalent surface in the documented API"3010   },3011   "providers_supporting": [3012    "openai"3013   ],3014   "provider_count": 1,3015   "portable": false,3016   "notes": "OpenAI-only (deprecated).",3017   "ref": "docs/tools/openai/mcp-and-connectors.md"3018  },3019  {3020   "section": "Tools — server side / hosted",3021   "feature": "Private-network MCP (tunnels) / agent credentials",3022   "openai": {3023    "supported": true,3024    "how": "Secure MCP Tunnel: outbound `tunnel-client`, `tools[type=mcp].tunnel_id` (`tunnel_[a-z0-9]{32}`)",3025    "endpoint": "POST /v1/responses",3026    "params": [3027     "tools[type=mcp].tunnel_id"3028    ],3029    "status": [3030     "DOCUMENTED"3031    ],3032    "notes": ""3033   },3034   "anthropic": {3035    "supported": true,3036    "how": "MCP tunnels API (`/v1/tunnels`, certificates, tokens) + tunnel agent; header `mcp-tunnels-2026-06-22`; WIF bearer with `workspace:manage_tunnels`",3037    "endpoint": "GET/POST /v1/tunnels",3038    "params": [],3039    "status": [3040     "DOCUMENTED",3041     "BETA",3042     "PREVIEW",3043     "ACCOUNT_RESTRICTED"3044    ],3045    "notes": "10 endpoints; older `/v1/organizations/tunnels` deprecated"3046   },3047   "xai": {3048    "supported": false,3049    "how": "not offered",3050    "endpoint": "",3051    "params": [],3052    "status": [3053     "UNVERIFIED"3054    ],3055    "notes": "no equivalent surface in the documented API"3056   },3057   "gemini": {3058    "supported": true,3059    "how": "no tunnels; **Credentials API** (`/v1beta/credentials`: `bearer_token`, `oauth2`, `environment_variable` with `injection_location` and `trusted_domains`; secrets write-only) referenced from environment network allowlists",3060    "endpoint": "POST /v1beta/credentials",3061    "params": [],3062    "status": [3063     "DOCUMENTED",3064     "BETA",3065     "PREVIEW"3066    ],3067    "notes": "5 endpoints, not tested"3068   },3069   "providers_supporting": [3070    "openai",3071    "anthropic",3072    "gemini"3073   ],3074   "provider_count": 3,3075   "portable": false,3076   "notes": "Tunnels on OpenAI/Anthropic; Gemini solves the secret-injection half with credentials; nothing on xAI.",3077   "ref": "endpoints.json (managed-agents tunnels, gemini credentials) · docs/tools/openai/mcp-and-connectors.md"3078  },3079  {3080   "section": "Tools — server side / hosted",3081   "feature": "Skills (packaged instructions + files)",3082   "openai": {3083    "supported": true,3084    "how": "Skills API (`POST /v1/skills`, versions, content zip) referenced from `tools[type=shell].environment.skills[]`, containers, Agents sessions; ≤500 files, ≤25 MB",3085    "endpoint": "POST /v1/skills",3086    "params": [3087     "tools[type=shell].environment.skills"3088    ],3089    "status": [3090     "DOCUMENTED",3091     "LIVE_VERIFIED",3092     "FAILED_VERIFICATION"3093    ],3094    "notes": "version-by-number endpoints returned 404 live; lists returned empty"3095   },3096   "anthropic": {3097    "supported": true,3098    "how": "Skills API (`/v1/skills`, versions, content; GA no header) + Anthropic skills (pptx, xlsx, docx, pdf); used via `container.skills[]` with code execution and on Managed Agents",3099    "endpoint": "POST /v1/skills",3100    "params": [3101     "container.skills"3102    ],3103    "status": [3104     "DOCUMENTED",3105     "LIVE_VERIFIED"3106    ],3107    "notes": "9 endpoints all LIVE_VERIFIED"3108   },3109   "xai": {3110    "supported": true,3111    "how": "Skills API `GET/POST /v1/skills`, `GET/DELETE /v1/skills/{id}`, `GET …/content` (zip; `SKILL.md` frontmatter `name`, `description`, `when-to-use`, `paths`, `allowed-tools`) — **all 404 for this team** (ACCOUNT_RESTRICTED); reach inference only via `shell.environment.skills[]`; Grok Build CLI also loads skills locally",3112    "endpoint": "POST /v1/skills",3113    "params": [3114     "tools[type=shell].environment.skills"3115    ],3116    "status": [3117     "DOCUMENTED",3118     "ACCOUNT_RESTRICTED"3119    ],3120    "notes": "5 endpoints, OpenAPI only"3121   },3122   "gemini": {3123    "supported": false,3124    "how": "no Skills API; custom Interactions agents mount `.agents/skills/<name>/SKILL.md` from their environment sources",3125    "endpoint": "POST /v1beta/interactions",3126    "params": [],3127    "status": [3128     "DOCUMENTED",3129     "PREVIEW"3130    ],3131    "notes": ""3132   },3133   "providers_supporting": [3134    "openai",3135    "anthropic",3136    "xai"3137   ],3138   "provider_count": 3,3139   "portable": true,3140   "notes": "Same `SKILL.md` bundle model on OpenAI, Anthropic and xAI (xAI gated); Gemini uses environment files.",3141   "ref": "docs/openai/skills-api.md · docs/anthropic/skills-api.md · docs/xai/skills-api.md · docs/gemini/interactions-api.md"3142  },3143  {3144   "section": "Tools — server side / hosted",3145   "feature": "Advisor (consult a stronger model mid-response)",3146   "openai": {3147    "supported": false,3148    "how": "not offered",3149    "endpoint": "",3150    "params": [],3151    "status": [3152     "UNVERIFIED"3153    ],3154    "notes": "no equivalent surface in the documented API"3155   },3156   "anthropic": {3157    "supported": true,3158    "how": "`advisor_20260301 {model, max_tokens, caching}` server tool, beta `advisor-tool-2026-03-01`",3159    "endpoint": "POST /v1/messages",3160    "params": [3161     "tools[].model",3162     "tools[].max_tokens",3163     "tools[].caching"3164    ],3165    "status": [3166     "DOCUMENTED",3167     "BETA",3168     "LIVE_VERIFIED"3169    ],3170    "notes": "11 models"3171   },3172   "xai": {3173    "supported": false,3174    "how": "not offered",3175    "endpoint": "",3176    "params": [],3177    "status": [3178     "UNVERIFIED"3179    ],3180    "notes": "no equivalent surface in the documented API"3181   },3182   "gemini": {3183    "supported": false,3184    "how": "not offered",3185    "endpoint": "",3186    "params": [],3187    "status": [3188     "UNVERIFIED"3189    ],3190    "notes": "no equivalent surface in the documented API"3191   },3192   "providers_supporting": [3193    "anthropic"3194   ],3195   "provider_count": 1,3196   "portable": false,3197   "notes": "Anthropic-only.",3198   "ref": "tools.json"3199  },3200  {3201   "section": "Tools — server side / hosted",3202   "feature": "Citations / grounding metadata",3203   "openai": {3204    "supported": true,3205    "how": "`output_text.annotations[]`: `url_citation`, `file_citation`, `container_file_citation`, `file_path` (produced by web/file search, code interpreter)",3206    "endpoint": "POST /v1/responses",3207    "params": [3208     "include"3209    ],3210    "status": [3211     "DOCUMENTED",3212     "LIVE_VERIFIED"3213    ],3214    "notes": "no citations for plain documents"3215   },3216   "anthropic": {3217    "supported": true,3218    "how": "`citations {enabled:true}` on `document`/`search_result` blocks → `char_location`, `page_location`, `content_block_location`, `search_result_location`, `web_search_result_location`; `citations_delta` when streaming",3219    "endpoint": "POST /v1/messages",3220    "params": [3221     "messages[].content[].citations",3222     "tools[].citations"3223    ],3224    "status": [3225     "DOCUMENTED",3226     "LIVE_VERIFIED"3227    ],3228    "notes": "all-or-nothing across documents"3229   },3230   "xai": {3231    "supported": true,3232    "how": "`output_text.annotations[] {type: url_citation, url, start_index, end_index, title}` (live indices 0/0, title = URL) + inline markdown `[[N]](url)`; collections citations `collections://<cid>/files/<fid>`; `include: web_search_call.action.sources`",3233    "endpoint": "POST /v1/responses",3234    "params": [3235     "include"3236    ],3237    "status": [3238     "DOCUMENTED",3239     "LIVE_VERIFIED"3240    ],3241    "notes": "`usage.num_sources_used`"3242   },3243   "gemini": {3244    "supported": true,3245    "how": "`candidates[].groundingMetadata {groundingChunks[] (web|maps|retrievedContext), groundingSupports[] {segment, groundingChunkIndices, confidenceScores}, webSearchQueries, searchEntryPoint}`, `urlContextMetadata`, `citationMetadata` (recitation); Interactions `text_annotation_delta`",3246    "endpoint": "POST /v1beta/models/{model}:generateContent",3247    "params": [3248     "candidates[].groundingMetadata",3249     "candidates[].urlContextMetadata"3250    ],3251    "status": [3252     "DOCUMENTED",3253     "LIVE_VERIFIED"3254    ],3255    "notes": "streaming chunks carry only new grounding chunks — accumulate"3256   },3257   "providers_supporting": [3258    "openai",3259    "anthropic",3260    "xai",3261    "gemini"3262   ],3263   "provider_count": 4,3264   "portable": true,3265   "notes": "Anthropic cites any document you pass; OpenAI, xAI and Gemini cite only their own tool results (Gemini with segment-level supports and confidence scores).",3266   "ref": "docs/anthropic/citations.md · docs/tools/gemini/google-search-grounding.md"3267  },3268  {3269   "section": "Multimodal input & media APIs",3270   "feature": "Image input",3271   "openai": {3272    "supported": true,3273    "how": "`input_image {image_url|file_id, detail: low|high|auto|original}`; patch/tile token formulas; ≤1,500 images, ≤512 MB",3274    "endpoint": "POST /v1/responses",3275    "params": [3276     "input[](message).content[](input_image)"3277    ],3278    "status": [3279     "DOCUMENTED",3280     "LIVE_VERIFIED"3281    ],3282    "notes": ""3283   },3284   "anthropic": {3285    "supported": true,3286    "how": "`image {source: base64|url|file, transformations}`; ≤100 (200k models) / 600 (1M models) images; 10 MB each; tokens = ⌈w/28⌉×⌈h/28⌉ (2576 px hi-res on 4.7+)",3287    "endpoint": "POST /v1/messages",3288    "params": [3289     "messages[].content[] {type:'image'}"3290    ],3291    "status": [3292     "DOCUMENTED",3293     "LIVE_VERIFIED"3294    ],3295    "notes": ""3296   },3297   "xai": {3298    "supported": true,3299    "how": "Responses `input_image {image_url (https or data URL), detail}` (≥512 px; `file_id` variant → 400); Chat `image_url {url, detail}`; image tokens priced as text input (`image_input` = `input` price); all Grok 4 text models accept images",3300    "endpoint": "POST /v1/responses",3301    "params": [3302     "input[](message).content[](input_image)",3303     "messages[].content[](image_url)"3304    ],3305    "status": [3306     "DOCUMENTED",3307     "LIVE_VERIFIED"3308    ],3309    "notes": "`usage.prompt_tokens_details.image_tokens`"3310   },3311   "gemini": {3312    "supported": true,3313    "how": "`parts[].inlineData {mimeType, data}` or `fileData {fileUri}` (Files API); `mediaResolution` LOW/MEDIUM/HIGH globally or per part (Gemini 3 adds ULTRA_HIGH, 2,240 tokens); docs 280/560/1,120/2,240 tokens by level (observed 256/529/1,089/2,209)",3314    "endpoint": "POST /v1beta/models/{model}:generateContent",3315    "params": [3316     "contents[].parts[].inlineData",3317     "contents[].parts[].fileData",3318     "generationConfig.mediaResolution"3319    ],3320    "status": [3321     "DOCUMENTED",3322     "LIVE_VERIFIED"3323    ],3324    "notes": "`promptTokensDetails[] {modality: IMAGE}`"3325   },3326   "providers_supporting": [3327    "openai",3328    "anthropic",3329    "xai",3330    "gemini"3331   ],3332   "provider_count": 4,3333   "portable": true,3334   "notes": "Universal. Token accounting differs on every provider (patches/tiles, 28-px grid, text-price tokens, resolution levels).",3335   "ref": "docs/openai/multimodal-input.md · docs/anthropic/vision-and-documents.md · docs/xai/chat-completions.md · docs/gemini/multimodal-input.md"3336  },3337  {3338   "section": "Multimodal input & media APIs",3339   "feature": "PDF / document input",3340   "openai": {3341    "supported": true,3342    "how": "`input_file {file_id|file_url|file_data+filename, detail}`; text + page images in context; <50 MB combined; office formats via file_id",3343    "endpoint": "POST /v1/responses",3344    "params": [3345     "input[](message).content[](input_file)"3346    ],3347    "status": [3348     "DOCUMENTED"3349    ],3350    "notes": ""3351   },3352   "anthropic": {3353    "supported": true,3354    "how": "`document {source: base64 pdf|url|file|text|content, title, context, citations}`; ≤600 pages/request, 32 MB body",3355    "endpoint": "POST /v1/messages",3356    "params": [3357     "messages[].content[] {type:'document'}"3358    ],3359    "status": [3360     "DOCUMENTED",3361     "LIVE_VERIFIED"3362    ],3363    "notes": "citable"3364   },3365   "xai": {3366    "supported": true,3367    "how": "Responses `input_file {file_id|file_url|file_data}` → routed through the implicit **attachment search** tool ($10/1k calls); Chat `file` parts → 400; `/v1/messages` `document` → 422",3368    "endpoint": "POST /v1/responses",3369    "params": [3370     "input[](message).content[](input_file)"3371    ],3372    "status": [3373     "DOCUMENTED",3374     "LIVE_VERIFIED"3375    ],3376    "notes": "Files API 50 MB (spec) / 512 MB (guide)"3377   },3378   "gemini": {3379    "supported": true,3380    "how": "`inlineData {mimeType: application/pdf}` or `fileData` (Files API, 2 GB); PDF pages billed at the image token rate (`DOCUMENT` modality, 560 tokens/page in countTokens vs `IMAGE 520` observed in generateContent); `pdf_input` true on all 3.x text models",3381    "endpoint": "POST /v1beta/models/{model}:generateContent",3382    "params": [3383     "contents[].parts[].inlineData",3384     "contents[].parts[].fileData"3385    ],3386    "status": [3387     "DOCUMENTED",3388     "LIVE_VERIFIED"3389    ],3390    "notes": "no citations for documents; URL context handles remote PDFs"3391   },3392   "providers_supporting": [3393    "openai",3394    "anthropic",3395    "xai",3396    "gemini"3397   ],3398   "provider_count": 4,3399   "portable": true,3400   "notes": "Universal; only Anthropic makes documents citable, only xAI bills a per-call fee for attachments.",3401   "ref": "docs/anthropic/vision-and-documents.md · docs/xai/files.md · docs/gemini/multimodal-input.md"3402  },3403  {3404   "section": "Multimodal input & media APIs",3405   "feature": "Audio / video input (understanding)",3406   "openai": {3407    "supported": true,3408    "how": "Chat Completions `input_audio {data, format}` on `gpt-audio-1.5`, `gpt-4o-audio-preview`; Responses `input_audio` part in schema but UNVERIFIED; no video input",3409    "endpoint": "POST /v1/chat/completions",3410    "params": [3411     "messages[](user).content[](input_audio)"3412    ],3413    "status": [3414     "DOCUMENTED",3415     "LIVE_DISCOVERED"3416    ],3417    "notes": ""3418   },3419   "anthropic": {3420    "supported": false,3421    "how": "not offered",3422    "endpoint": "",3423    "params": [],3424    "status": [3425     "UNVERIFIED"3426    ],3427    "notes": "no equivalent surface in the documented API"3428   },3429   "xai": {3430    "supported": false,3431    "how": "no audio/video parts on text models (audio only in the voice session and STT; `grok-imagine-video` accepts video/audio as generation inputs; `view_x_video` sub-tool understands X videos)",3432    "endpoint": "",3433    "params": [],3434    "status": [3435     "DOCUMENTED"3436    ],3437    "notes": ""3438   },3439   "gemini": {3440    "supported": true,3441    "how": "native: `inlineData`/`fileData` audio (WAV/MP3/AIFF/AAC/OGG/FLAC; ≈25–32 tokens/s) and video (≤1 fps frames + audio; `videoMetadata {startOffset, endOffset, fps}`; YouTube URLs via `fileData`) on every 3.x text model; `gemini-embedding-2` embeds audio/video too",3442    "endpoint": "POST /v1beta/models/{model}:generateContent",3443    "params": [3444     "contents[].parts[].inlineData",3445     "contents[].parts[].videoMetadata"3446    ],3447    "status": [3448     "DOCUMENTED",3449     "LIVE_VERIFIED"3450    ],3451    "notes": "`audio_input` price rows on 2.5/3.1-lite/3-flash; 3.5+ single price"3452   },3453   "providers_supporting": [3454    "openai",3455    "gemini"3456   ],3457   "provider_count": 2,3458   "portable": true,3459   "notes": "Gemini is the only provider with native audio **and** video understanding in the text API; OpenAI has audio-in on dedicated chat models.",3460   "ref": "docs/openai/multimodal-input.md §4 · docs/gemini/multimodal-input.md"3461  },3462  {3463   "section": "Multimodal input & media APIs",3464   "feature": "Text-to-speech",3465   "openai": {3466    "supported": true,3467    "how": "`POST /v1/audio/speech` (`gpt-4o-mini-tts`, `tts-1`, `tts-1-hd`; SSE `speech.audio.delta`) and Chat `modalities:[text,audio]`",3468    "endpoint": "POST /v1/audio/speech",3469    "params": [3470     "model",3471     "input",3472     "voice",3473     "instructions"3474    ],3475    "status": [3476     "DOCUMENTED",3477     "LIVE_VERIFIED"3478    ],3479    "notes": "custom voices ACCOUNT_RESTRICTED"3480   },3481   "anthropic": {3482    "supported": false,3483    "how": "not offered",3484    "endpoint": "",3485    "params": [],3486    "status": [3487     "UNVERIFIED"3488    ],3489    "notes": "no equivalent surface in the documented API"3490   },3491   "xai": {3492    "supported": true,3493    "how": "`POST /v1/tts {text ≤60,000 chars, voice_id, language (required), output_format {codec mp3|wav|pcm|mulaw|alaw, sample_rate, bit_rate}, speed, with_timestamps}` + `wss://api.x.ai/v1/tts` streaming (`text.delta` → `audio.delta`); 28 built-in voices (`GET /v1/tts/voices`) + custom voices (`/v1/custom-voices`, Enterprise); **$15 / 1M characters**",3494    "endpoint": "POST /v1/tts",3495    "params": [3496     "text",3497     "voice_id",3498     "language",3499     "output_format"3500    ],3501    "status": [3502     "DOCUMENTED",3503     "LIVE_VERIFIED"3504    ],3505    "notes": "17 voice endpoints; voice models absent from `GET /v1/models`"3506   },3507   "gemini": {3508    "supported": true,3509    "how": "`generateContent` on TTS models (`gemini-3.1-flash-tts-preview`, `gemini-2.5-flash|pro-preview-tts`) with `responseModalities: [AUDIO]` + `speechConfig.voiceConfig.prebuiltVoiceConfig.voiceName` (30 voices) or `multiSpeakerVoiceConfig` (≤2 speakers); raw PCM 24 kHz out; $1 text in / $20 audio out per 1M (≈ $0.03/min); free tier (10 req/day observed)",3510    "endpoint": "POST /v1beta/models/{model}:generateContent",3511    "params": [3512     "generationConfig.responseModalities",3513     "generationConfig.speechConfig"3514    ],3515    "status": [3516     "DOCUMENTED",3517     "PREVIEW",3518     "LIVE_VERIFIED"3519    ],3520    "notes": "streaming TTS on 3.1 only; multi-speaker may return `finishReason: OTHER`"3521   },3522   "providers_supporting": [3523    "openai",3524    "xai",3525    "gemini"3526   ],3527   "provider_count": 3,3528   "portable": true,3529   "notes": "Dedicated endpoint (OpenAI, xAI) vs a generation modality (Gemini); none on Anthropic.",3530   "ref": "docs/openai/audio.md · docs/xai/voice.md · docs/gemini/speech-generation.md"3531  },3532  {3533   "section": "Multimodal input & media APIs",3534   "feature": "Speech-to-text / transcription",3535   "openai": {3536    "supported": true,3537    "how": "`POST /v1/audio/transcriptions` (`gpt-transcribe`, `gpt-4o-transcribe(-diarize)`, `whisper-1`; streaming `transcript.text.delta`), `POST /v1/audio/translations` (whisper-1)",3538    "endpoint": "POST /v1/audio/transcriptions",3539    "params": [3540     "model",3541     "file",3542     "response_format",3543     "stream"3544    ],3545    "status": [3546     "DOCUMENTED",3547     "LIVE_VERIFIED"3548    ],3549    "notes": "whisper-1 & gpt-4o-transcribe shutdown 2027-02-26"3550   },3551   "anthropic": {3552    "supported": false,3553    "how": "not offered",3554    "endpoint": "",3555    "params": [],3556    "status": [3557     "UNVERIFIED"3558    ],3559    "notes": "no equivalent surface in the documented API"3560   },3561   "xai": {3562    "supported": true,3563    "how": "`POST /v1/stt` (multipart `file` ≤500 MB or `url`; `language`, `diarize`, `keyterm`, `vad_threshold`, `model: grok-voice-transcribe-2.0|1.0`) **$0.10/h**; `wss://api.x.ai/v1/stt` streaming (binary frames, `interim_results`, `endpointing`, `smart_turn` → `transcript.partial/done`) **$0.20/h**",3564    "endpoint": "POST /v1/stt",3565    "params": [3566     "file",3567     "url",3568     "language",3569     "diarize",3570     "model"3571    ],3572    "status": [3573     "DOCUMENTED",3574     "LIVE_VERIFIED"3575    ],3576    "notes": "25 languages; default model contradicts between release notes (1.0) and model page (2.0)"3577   },3578   "gemini": {3579    "supported": true,3580    "how": "`gemini-3.5-transcribe` via `generateContent` + `generationConfig.audioTranscriptionConfig {languageCodes, customVocabulary, mode VERBATIM|SMART, diarization, wordTimestamp}` → `parts[].audioTranscription {text, speakerLabel, words[]}` (LIVE_DISCOVERED shape); ≤1 h audio; ≈ $0.005/min blended; `gemini-3.5-transcribe-live` over the Live WebSocket (10-min sessions); `gemini-3.5-live-translate-preview` speech-to-speech translation",3581    "endpoint": "POST /v1beta/models/{model}:generateContent",3582    "params": [3583     "generationConfig.audioTranscriptionConfig"3584    ],3585    "status": [3586     "DOCUMENTED",3587     "LIVE_VERIFIED"3588    ],3589    "notes": "free tier available"3590   },3591   "providers_supporting": [3592    "openai",3593    "xai",3594    "gemini"3595   ],3596   "provider_count": 3,3597   "portable": true,3598   "notes": "OpenAI/xAI dedicated endpoints (per minute / per hour); Gemini a dedicated model behind the generic endpoint; none on Anthropic.",3599   "ref": "docs/openai/audio.md · docs/xai/voice.md · docs/gemini/transcription.md"3600  },3601  {3602   "section": "Multimodal input & media APIs",3603   "feature": "Realtime speech-to-speech (WebSocket / WebRTC / SIP)",3604   "openai": {3605    "supported": true,3606    "how": "Realtime API GA: WebSocket `wss://api.openai.com/v1/realtime?model=`, WebRTC `POST /v1/realtime/calls`, SIP, ephemeral `POST /v1/realtime/client_secrets`; transcription & translation sessions; 60-min sessions",3607    "endpoint": "WS /v1/realtime",3608    "params": [3609     "session.update",3610     "response.create"3611    ],3612    "status": [3613     "DOCUMENTED",3614     "LIVE_VERIFIED"3615    ],3616    "notes": "legacy `/v1/realtime/sessions` → 404"3617   },3618   "anthropic": {3619    "supported": false,3620    "how": "not offered",3621    "endpoint": "",3622    "params": [],3623    "status": [3624     "UNVERIFIED"3625    ],3626    "notes": "no equivalent surface in the documented API"3627   },3628   "xai": {3629    "supported": true,3630    "how": "`wss://api.x.ai/v1/realtime?model=grok-voice-latest` (= `grok-voice-think-fast-2.0`) with the **OpenAI Realtime event vocabulary** (`session.update`, `input_audio_buffer.*`, `conversation.item.create`, `response.create` → `response.output_audio.delta`, `response.done`; 39 server / 9 client events); tools in-session (`function`, `web_search`, `x_search`, `file_search`, `mcp`); `reasoning.effort high|none`; ephemeral `POST /v1/realtime/client_secrets` (≤3600 s); SIP via `/v2/phone-numbers`, `/v1/realtime/calls/{id}/refer|hangup`, webhook `realtime.call.incoming`; **$0.08/min** + $0.004 per text item; 120-min sessions; concurrent sessions 10–200 by tier",3631    "endpoint": "WS wss://api.x.ai/v1/realtime",3632    "params": [3633     "session.update",3634     "conversation.item.create",3635     "response.create"3636    ],3637    "status": [3638     "DOCUMENTED",3639     "LIVE_VERIFIED"3640    ],3641    "notes": "text turn LIVE_VERIFIED; audio UNVERIFIED; `ping` undocumented"3642   },3643   "gemini": {3644    "supported": true,3645    "how": "**Live API** `wss://generativelanguage.googleapis.com/ws/google.ai.generativelanguage.v1beta.GenerativeService.BidiGenerateContent` (`setup` → `setupComplete`; `clientContent`/`realtimeInput {audio|video|text|activityStart|activityEnd}`/`toolResponse` → `serverContent {modelTurn, turnComplete, interrupted, inputTranscription, outputTranscription}`, `toolCall`, `goAway`, `sessionResumptionUpdate`); models `gemini-3.8-live` (native audio, interleaved thinking, GA 2026-09-15), `-extended-thinking`, `gemini-3.1-flash-live-preview`, 2.5 native audio; ephemeral tokens `POST /v1beta/auth_tokens` on the `…Constrained` method; 16 kHz PCM in / 24 kHz out; ≈10-min connections, 15-min audio sessions (unlimited with `contextWindowCompression`), resumption handles 2 h; audio $3 in / $12 out per 1M (≈ $0.005 / $0.018 per min); free tier",3646    "endpoint": "WSS BidiGenerateContent",3647    "params": [3648     "setup",3649     "realtimeInput",3650     "toolResponse",3651     "setup.sessionResumption",3652     "setup.contextWindowCompression"3653    ],3654    "status": [3655     "DOCUMENTED",3656     "PREVIEW",3657     "LIVE_VERIFIED"3658    ],3659    "notes": "32 message types recorded; `responseModalities: [TEXT]` → close 1007; only googleSearch + functions as tools"3660   },3661   "providers_supporting": [3662    "openai",3663    "xai",3664    "gemini"3665   ],3666   "provider_count": 3,3667   "portable": true,3668   "notes": "Three voice stacks: xAI copies OpenAI's Realtime protocol (so client code ports almost verbatim), Gemini's Live API is a distinct message family; Anthropic has none. Only OpenAI and xAI offer WebRTC/SIP.",3669   "ref": "docs/openai/realtime.md · docs/xai/voice.md · docs/gemini/live-api.md · docs/gemini/live-events.md"3670  },3671  {3672   "section": "Multimodal input & media APIs",3673   "feature": "Full-duplex voice with backend delegation (Live) / voice agents",3674   "openai": {3675    "supported": true,3676    "how": "Live API: `POST /v1/live/sessions` (WebRTC), `WS /v1/live/sessions`, fork/attach/SIP; `gpt-live-1` $0.05/min; delegation to Responses or client",3677    "endpoint": "POST /v1/live/sessions",3678    "params": [3679     "session.delegation",3680     "session.store"3681    ],3682    "status": [3683     "DOCUMENTED",3684     "LIVE_DISCOVERED"3685    ],3686    "notes": ""3687   },3688   "anthropic": {3689    "supported": false,3690    "how": "not offered",3691    "endpoint": "",3692    "params": [],3693    "status": [3694     "UNVERIFIED"3695    ],3696    "notes": "no equivalent surface in the documented API"3697   },3698   "xai": {3699    "supported": false,3700    "how": "no separate delegation product; the realtime session itself runs server tools (web/x/file search, MCP) with `reasoning.effort`",3701    "endpoint": "WS wss://api.x.ai/v1/realtime",3702    "params": [],3703    "status": [3704     "DOCUMENTED"3705    ],3706    "notes": ""3707   },3708   "gemini": {3709    "supported": false,3710    "how": "no delegation layer; `gemini-3.8-live-extended-thinking` runs background reasoning and speaks fillers (`interactionStatus: IN_PROGRESS`); `proactivity.proactiveAudio` always on for 3.8",3711    "endpoint": "WSS BidiGenerateContent",3712    "params": [],3713    "status": [3714     "DOCUMENTED"3715    ],3716    "notes": ""3717   },3718   "providers_supporting": [3719    "openai"3720   ],3721   "provider_count": 1,3722   "portable": false,3723   "notes": "OpenAI-only as a product; xAI and Gemini fold agentic behaviour into the voice session itself.",3724   "ref": "docs/openai/live.md · docs/xai/voice.md · docs/gemini/live-api.md"3725  },3726  {3727   "section": "Multimodal input & media APIs",3728   "feature": "Image generation API",3729   "openai": {3730    "supported": true,3731    "how": "`POST /v1/images/generations`, `/edits` (gpt-image-2, gpt-image-2.5-flare/sunburst; DALL·E RETIRED, gpt-image-1.x DEPRECATED); streaming partials; arbitrary sizes ≤4K",3732    "endpoint": "POST /v1/images/generations",3733    "params": [3734     "prompt",3735     "size",3736     "quality",3737     "background",3738     "output_format",3739     "stream"3740    ],3741    "status": [3742     "DOCUMENTED",3743     "LIVE_VERIFIED"3744    ],3745    "notes": "`/variations` RETIRED (404)"3746   },3747   "anthropic": {3748    "supported": false,3749    "how": "not offered",3750    "endpoint": "",3751    "params": [],3752    "status": [3753     "UNVERIFIED"3754    ],3755    "notes": "no equivalent surface in the documented API"3756   },3757   "xai": {3758    "supported": true,3759    "how": "`POST /v1/images/generations {model, prompt, n 1–10, response_format url|b64_json, aspect_ratio (incl. 21:9, 5:2, auto), resolution 1k|1.5k|2k, quality low|medium|auto, storage_options}` and `POST /v1/images/edits` (**JSON only**: `image {url|file_id}` or `images[]` 2–5); `grok-imagine-image` $0.02, `grok-imagine-image-2.0` $0.04–$0.08, `grok-imagine-image-quality` $0.05 (DEPRECATED → 2026-11-02); sync ~5–10 s; always JPEG",3760    "endpoint": "POST /v1/images/generations",3761    "params": [3762     "prompt",3763     "n",3764     "aspect_ratio",3765     "resolution",3766     "quality",3767     "response_format"3768    ],3769    "status": [3770     "DOCUMENTED",3771     "LIVE_VERIFIED"3772    ],3773    "notes": "no `size`/`mask`/`seed`; `grok-2-image` RETIRED; not on us.api.x.ai"3774   },3775   "gemini": {3776    "supported": true,3777    "how": "`generateContent` on image models with `responseModalities` + `imageConfig {aspectRatio (14 ratios), imageSize 512|1K|2K|4K}`; editing = pass the image as input and iterate; SynthID watermark; `gemini-3.1-flash-image` $0.045–$0.151, `-lite-image` $0.034, `gemini-3-pro-image` $0.134/$0.24; `gemini-2.5-flash-image` DEPRECATED → 2026-10-02; Imagen (`:predict`) RETIRED 2026-08-17; OpenAI-compat `POST /v1beta/openai/images/generations` subset",3778    "endpoint": "POST /v1beta/models/{model}:generateContent",3779    "params": [3780     "generationConfig.responseModalities",3781     "generationConfig.imageConfig.aspectRatio",3782     "generationConfig.imageConfig.imageSize"3783    ],3784    "status": [3785     "DOCUMENTED",3786     "ACCOUNT_RESTRICTED"3787    ],3788    "notes": "no free tier (`limit: 0`); batch 50 %"3789   },3790   "providers_supporting": [3791    "openai",3792    "xai",3793    "gemini"3794   ],3795   "provider_count": 3,3796   "portable": true,3797   "notes": "OpenAI and xAI have dedicated image endpoints (token-priced vs per-image); Gemini generates images through the text endpoint; Claude produces no images.",3798   "ref": "docs/openai/images.md · docs/xai/images.md · docs/gemini/image-generation.md"3799  },3800  {3801   "section": "Multimodal input & media APIs",3802   "feature": "Video generation API",3803   "openai": {3804    "supported": true,3805    "how": "`/v1/videos` (Sora 2) — **DEPRECATED, shutdown 2026-09-24**; $0.10–$0.70/s",3806    "endpoint": "POST /v1/videos",3807    "params": [3808     "prompt",3809     "seconds",3810     "size"3811    ],3812    "status": [3813     "DOCUMENTED",3814     "DEPRECATED",3815     "LIVE_VERIFIED"3816    ],3817    "notes": ""3818   },3819   "anthropic": {3820    "supported": false,3821    "how": "not offered",3822    "endpoint": "",3823    "params": [],3824    "status": [3825     "UNVERIFIED"3826    ],3827    "notes": "no equivalent surface in the documented API"3828   },3829   "xai": {3830    "supported": true,3831    "how": "`POST /v1/videos/generations {model, prompt, duration 1–15, aspect_ratio, resolution 480p|720p|1080p, generate_audio, image, reference_images[], reference_audios[] (1.5), last_frame (1.5)}` → `{request_id}`; `GET /v1/videos/{request_id}` 202 pending → 200 `{status: done, video:{url}}`; `POST /v1/videos/edits`, `/extensions`; `grok-imagine-video` **$0.05/s**, `grok-imagine-video-1.5` **$0.08/s** (1080p, reference-to-video)",3832    "endpoint": "POST /v1/videos/generations",3833    "params": [3834     "prompt",3835     "duration",3836     "aspect_ratio",3837     "resolution",3838     "image"3839    ],3840    "status": [3841     "DOCUMENTED",3842     "LIVE_VERIFIED"3843    ],3844    "notes": "4 endpoints; also via Batch (URLs expire 1 h)"3845   },3846   "gemini": {3847    "supported": true,3848    "how": "Veo 3.1: `POST /v1beta/models/veo-3.1-*:predictLongRunning {instances[{prompt, image, lastFrame, referenceImages[], video}], parameters {aspectRatio, resolution 720p|1080p|4k, durationSeconds 4|6|8, personGeneration, negativePrompt, seed}}` → `Operation`; poll `GET /v1beta/{name}`; download `files/{id}:download?alt=media`; native audio; $0.40/$0.60 (Veo 3.1), $0.10–$0.30 (Fast), $0.05/$0.08 (Lite) per second; `gemini-omni-1.1-flash` video-out model via Interactions (≈ $0.10/s); OpenAI-compat `POST /v1beta/openai/videos`",3849    "endpoint": "POST /v1beta/models/{model}:predictLongRunning",3850    "params": [3851     "instances[].prompt",3852     "parameters.resolution",3853     "parameters.durationSeconds"3854    ],3855    "status": [3856     "DOCUMENTED",3857     "PREVIEW"3858    ],3859    "notes": "Veo 2.0/3.0 RETIRED 2026-06-30; no free tier; 400 on this key"3860   },3861   "providers_supporting": [3862    "openai",3863    "xai",3864    "gemini"3865   ],3866   "provider_count": 3,3867   "portable": true,3868   "notes": "Async polling everywhere; OpenAI's is shutting down, xAI's is the cheapest per second, Gemini's the only one with 4K.",3869   "ref": "docs/openai/video.md · docs/xai/videos.md · docs/gemini/video-generation.md"3870  },3871  {3872   "section": "Multimodal input & media APIs",3873   "feature": "Music generation",3874   "openai": {3875    "supported": false,3876    "how": "not offered",3877    "endpoint": "",3878    "params": [],3879    "status": [3880     "UNVERIFIED"3881    ],3882    "notes": "no equivalent surface in the documented API"3883   },3884   "anthropic": {3885    "supported": false,3886    "how": "not offered",3887    "endpoint": "",3888    "params": [],3889    "status": [3890     "UNVERIFIED"3891    ],3892    "notes": "no equivalent surface in the documented API"3893   },3894   "xai": {3895    "supported": false,3896    "how": "not offered",3897    "endpoint": "",3898    "params": [],3899    "status": [3900     "UNVERIFIED"3901    ],3902    "notes": "no equivalent surface in the documented API"3903   },3904   "gemini": {3905    "supported": true,3906    "how": "`lyria-3.5` (GA, **$0.08/song**), `lyria-3-clip-preview` ($0.04 / 30-s clip), `lyria-3-pro-preview` via `generateContent` (MP3) or Interactions `response_format {type: audio}` (WAV); **Lyria RealTime** WebSocket `…BidiGenerateMusic` (`weightedPrompts`, `musicGenerationConfig {bpm, density, brightness, scale…}`, `playbackControl`) → 48 kHz stereo PCM chunks (experimental, unpriced)",3907    "endpoint": "POST /v1beta/models/{model}:generateContent",3908    "params": [3909     "contents[].parts[].text",3910     "musicGenerationConfig",3911     "playbackControl"3912    ],3913    "status": [3914     "DOCUMENTED",3915     "ACCOUNT_RESTRICTED"3916    ],3917    "notes": "no free tier for Lyria 3.x; RealTime LIVE_VERIFIED"3918   },3919   "providers_supporting": [3920    "gemini"3921   ],3922   "provider_count": 1,3923   "portable": false,3924   "notes": "Gemini-only.",3925   "ref": "docs/gemini/music-generation.md"3926  },3927  {3928   "section": "Multimodal input & media APIs",3929   "feature": "Embeddings",3930   "openai": {3931    "supported": true,3932    "how": "`text-embedding-3-small` ($0.02/M), `-3-large` ($0.13/M), `ada-002`; `dimensions`, `encoding_format`; 8,192 tokens/input, 2,048 inputs",3933    "endpoint": "POST /v1/embeddings",3934    "params": [3935     "input",3936     "model",3937     "dimensions",3938     "encoding_format"3939    ],3940    "status": [3941     "DOCUMENTED",3942     "LIVE_VERIFIED"3943    ],3944    "notes": ""3945   },3946   "anthropic": {3947    "supported": false,3948    "how": "not offered",3949    "endpoint": "",3950    "params": [],3951    "status": [3952     "UNVERIFIED"3953    ],3954    "notes": "no equivalent surface in the documented API"3955   },3956   "xai": {3957    "supported": false,3958    "how": "`POST /v1/embeddings {model, input, encoding_format, dimensions}` documented (OpenAPI) but `grok-embedding-small` → 404 'does not exist or your team does not have access', `GET /v1/embedding-models` → `{models: []}`; no published price; used internally to index Collections",3959    "endpoint": "POST /v1/embeddings",3960    "params": [3961     "input",3962     "model",3963     "dimensions"3964    ],3965    "status": [3966     "DOCUMENTED",3967     "ACCOUNT_RESTRICTED"3968    ],3969    "notes": "gRPC `Embedder.Embed` exists"3970   },3971   "gemini": {3972    "supported": true,3973    "how": "`POST /v1beta/models/gemini-embedding-2:embedContent {content, outputDimensionality 128–3072, taskType (001 only), embedContentConfig}` and `:batchEmbedContents {requests[]}`; **multimodal** (text, ≤6 images, ≤180 s audio, ≤120 s video, PDF ≤6 pages → one vector); $0.20 text / $0.45 image / $6.50 audio / $12 video per 1M, batch 50 %; free tier; `gemini-embedding-001` DEPRECATED → 2028-05-14; OpenAI-compat `/v1beta/openai/embeddings`",3974    "endpoint": "POST /v1beta/models/{model}:embedContent",3975    "params": [3976     "content",3977     "outputDimensionality",3978     "taskType"3979    ],3980    "status": [3981     "DOCUMENTED",3982     "LIVE_VERIFIED"3983    ],3984    "notes": "`:asyncBatchEmbedContent` ACCOUNT_RESTRICTED (400 FAILED_PRECONDITION)"3985   },3986   "providers_supporting": [3987    "openai",3988    "gemini"3989   ],3990   "provider_count": 2,3991   "portable": true,3992   "notes": "OpenAI (text) and Gemini (multimodal) ship embeddings; xAI's endpoint is documented but inaccessible; Anthropic has none.",3993   "ref": "docs/openai/embeddings.md · docs/gemini/embeddings.md · docs/models/xai-models.md"3994  },3995  {3996   "section": "Multimodal input & media APIs",3997   "feature": "Moderation endpoint",3998   "openai": {3999    "supported": true,4000    "how": "`POST /v1/moderations` (`omni-moderation-latest`, text+image, free) and inline `moderation {model, policy}` on Responses/Chat",4001    "endpoint": "POST /v1/moderations",4002    "params": [4003     "input",4004     "model",4005     "moderation"4006    ],4007    "status": [4008     "DOCUMENTED",4009     "LIVE_VERIFIED"4010    ],4011    "notes": "`text-moderation-*` RETIRED"4012   },4013   "anthropic": {4014    "supported": false,4015    "how": "not offered",4016    "endpoint": "",4017    "params": [],4018    "status": [4019     "UNVERIFIED"4020    ],4021    "notes": "no equivalent surface in the documented API"4022   },4023   "xai": {4024    "supported": false,4025    "how": "not offered",4026    "endpoint": "",4027    "params": [],4028    "status": [4029     "UNVERIFIED"4030    ],4031    "notes": "no equivalent surface in the documented API"4032   },4033   "gemini": {4034    "supported": false,4035    "how": "no moderation route among the 125 Gemini endpoints; `safetySettings` thresholds and `safetyRatings` instead",4036    "endpoint": "",4037    "params": [],4038    "status": [4039     "DOCUMENTED"4040    ],4041    "notes": ""4042   },4043   "providers_supporting": [4044    "openai"4045   ],4046   "provider_count": 1,4047   "portable": false,4048   "notes": "OpenAI-only.",4049   "ref": "docs/openai/moderation.md · docs/gemini/safety.md"4050  },4051  {4052   "section": "Multimodal input & media APIs",4053   "feature": "Content provenance",4054   "openai": {4055    "supported": true,4056    "how": "`POST /v1/content_provenance_checks` (C2PA verification)",4057    "endpoint": "POST /v1/content_provenance_checks",4058    "params": [],4059    "status": [4060     "DOCUMENTED",4061     "LIVE_VERIFIED"4062    ],4063    "notes": ""4064   },4065   "anthropic": {4066    "supported": false,4067    "how": "generated media from code execution carry C2PA credentials; no verification endpoint",4068    "endpoint": "",4069    "params": [],4070    "status": [4071     "DOCUMENTED"4072    ],4073    "notes": ""4074   },4075   "xai": {4076    "supported": false,4077    "how": "no provenance endpoint; `respect_moderation` flag on image/video results",4078    "endpoint": "",4079    "params": [],4080    "status": [4081     "DOCUMENTED"4082    ],4083    "notes": ""4084   },4085   "gemini": {4086    "supported": false,4087    "how": "SynthID watermark on all generated images/video/audio (Nano Banana 2 Lite also C2PA); no verification endpoint on the Developer API",4088    "endpoint": "",4089    "params": [],4090    "status": [4091     "DOCUMENTED"4092    ],4093    "notes": ""4094   },4095   "providers_supporting": [4096    "openai"4097   ],4098   "provider_count": 1,4099   "portable": false,4100   "notes": "Only OpenAI exposes a check endpoint.",4101   "ref": "endpoints.json · docs/gemini/image-generation.md"4102  },4103  {4104   "section": "Files & batch",4105   "feature": "Files API",4106   "openai": {4107    "supported": true,4108    "how": "`POST /v1/files` (purposes user_data, batch, evals, assistants, vision, fine-tune), list/retrieve/delete/content; 512 MB/file; `expires_after` 1 h–30 d; batch files auto-expire 30 d",4109    "endpoint": "POST /v1/files",4110    "params": [4111     "file",4112     "purpose",4113     "expires_after"4114    ],4115    "status": [4116     "DOCUMENTED",4117     "LIVE_VERIFIED"4118    ],4119    "notes": "`user_data` content not downloadable (400)"4120   },4121   "anthropic": {4122    "supported": true,4123    "how": "`POST /v1/files` (any MIME; 500 MB/file; workspace-scoped), list (`ids[]`), metadata, content (tool-generated files only), delete; `expires_in_seconds` 1 h–90 d; GA no header",4124    "endpoint": "POST /v1/files",4125    "params": [4126     "file",4127     "expires_in_seconds"4128    ],4129    "status": [4130     "DOCUMENTED",4131     "LIVE_VERIFIED"4132    ],4133    "notes": "not on Bedrock/Vertex"4134   },4135   "xai": {4136    "supported": true,4137    "how": "`POST /v1/files` (multipart; `purpose` ignored; `expires_after` 1 h–30 d), list (`filter` AIP-160, `sort_by`), get, delete, `GET …/content?format=original`, **public URLs** (`POST …/public-url`, `…/revoke`; ≤50 MiB, ≤1,000 active/team), chunked upload `files:initialize`/`:uploadChunks` (UNVERIFIED); storage $0.025/GiB/day, downloads $0.20/GiB; used by Responses `input_file`, Collections, Imagine, Batch",4138    "endpoint": "POST /v1/files",4139    "params": [4140     "file",4141     "expires_after"4142    ],4143    "status": [4144     "DOCUMENTED",4145     "LIVE_VERIFIED"4146    ],4147    "notes": "10 endpoints; disabled under ZDR"4148   },4149   "gemini": {4150    "supported": true,4151    "how": "`POST /upload/v1beta/files` (resumable `X-Goog-Upload-*` protocol, multipart or media), `GET /v1beta/files[/{id}]`, `DELETE`, `POST /v1beta/files:register {uris: gs://…}` (GCS, 30 days), `GET /v1beta/generatedFiles`, download `files/{id}:download?alt=media` (generated files); **2 GB/file, 20 GB/project, 48 h TTL, free**; used via `fileData {fileUri}`",4152    "endpoint": "POST /upload/v1beta/files",4153    "params": [4154     "file",4155     "displayName",4156     "mimeType"4157    ],4158    "status": [4159     "DOCUMENTED",4160     "LIVE_VERIFIED"4161    ],4162    "notes": "unknown file → 403 (never 404); not available on Vertex AI"4163   },4164   "providers_supporting": [4165    "openai",4166    "anthropic",4167    "xai",4168    "gemini"4169   ],4170   "provider_count": 4,4171   "portable": true,4172   "notes": "All four are blob stores referenced by id; TTLs range from 48 h (Gemini, fixed) to 90 d (Anthropic); only xAI prices storage and only xAI mints public URLs.",4173   "ref": "docs/openai/files-and-uploads.md · docs/anthropic/files-api.md · docs/xai/files.md · docs/gemini/files.md"4174  },4175  {4176   "section": "Files & batch",4177   "feature": "Multipart / resumable upload",4178   "openai": {4179    "supported": true,4180    "how": "Uploads API: ≤8 GB in ≤64 MB parts, 1 h TTL",4181    "endpoint": "POST /v1/uploads",4182    "params": [4183     "filename",4184     "purpose",4185     "bytes",4186     "mime_type"4187    ],4188    "status": [4189     "DOCUMENTED",4190     "LIVE_VERIFIED"4191    ],4192    "notes": ""4193   },4194   "anthropic": {4195    "supported": false,4196    "how": "not offered",4197    "endpoint": "",4198    "params": [],4199    "status": [4200     "UNVERIFIED"4201    ],4202    "notes": "no equivalent surface in the documented API"4203   },4204   "xai": {4205    "supported": true,4206    "how": "`POST /v1/files:initialize` + `POST /v1/files:uploadChunks` (documented, UNVERIFIED)",4207    "endpoint": "POST /v1/files:initialize",4208    "params": [],4209    "status": [4210     "DOCUMENTED",4211     "UNVERIFIED"4212    ],4213    "notes": ""4214   },4215   "gemini": {4216    "supported": true,4217    "how": "Google resumable upload protocol on `/upload/v1beta/files` and `/upload/v1beta/fileSearchStores/{s}:uploadToFileSearchStore` (`start` → `x-goog-upload-url` → `upload, finalize`; 8 MiB chunk granularity); environments `PUT /upload/v1beta/environments/{env}/files/{path}` (≤2 GiB)",4218    "endpoint": "POST /upload/v1beta/files",4219    "params": [4220     "X-Goog-Upload-Protocol",4221     "X-Goog-Upload-Command"4222    ],4223    "status": [4224     "DOCUMENTED",4225     "LIVE_VERIFIED"4226    ],4227    "notes": ""4228   },4229   "providers_supporting": [4230    "openai",4231    "xai",4232    "gemini"4233   ],4234   "provider_count": 3,4235   "portable": true,4236   "notes": "Three resumable schemes, all provider-specific.",4237   "ref": "docs/openai/files-and-uploads.md · docs/xai/files.md · docs/gemini/files.md"4238  },4239  {4240   "section": "Files & batch",4241   "feature": "Batch processing (async, discounted)",4242   "openai": {4243    "supported": true,4244    "how": "JSONL file (`custom_id`, `method`, `url`, `body`) → `POST /v1/batches {input_file_id, endpoint, completion_window:'24h'}`; 50,000 requests / 200 MB; endpoints responses, chat, embeddings, completions, moderations, images, videos; 50 % off; output file 30 d",4245    "endpoint": "POST /v1/batches",4246    "params": [4247     "input_file_id",4248     "endpoint",4249     "completion_window",4250     "output_expires_after"4251    ],4252    "status": [4253     "DOCUMENTED",4254     "LIVE_VERIFIED"4255    ],4256    "notes": "cancel LIVE_DISCOVERED 409 on terminal"4257   },4258   "anthropic": {4259    "supported": true,4260    "how": "inline `requests[] {custom_id, params}` → `POST /v1/messages/batches`; 100,000 requests / 256 MB; 24 h expiry; results JSONL at `results_url` 29 d; 50 % off all token dims (stacks with caching); all Messages features incl. server tools; `output-300k-2026-03-24` beta",4261    "endpoint": "POST /v1/messages/batches",4262    "params": [4263     "requests",4264     "requests[].custom_id",4265     "requests[].params"4266    ],4267    "status": [4268     "DOCUMENTED",4269     "LIVE_VERIFIED"4270    ],4271    "notes": "6 endpoints all LIVE_VERIFIED"4272   },4273   "xai": {4274    "supported": true,4275    "how": "`POST /v1/batches {name}` → `POST /v1/batches/{id}/requests {batch_requests[{batch_request_id, batch_request: {chat_get_completion | responses | image_generation | image_edit | video_generation | video_extension}}]}` (inline, ≤25 MB/request) or JSONL via Files (`input_file_id`, ≤50,000 lines / 200 MB); `GET …/requests`, `GET …/results`, `POST …:cancel`; **20 % off** on grok-4.3 / 4.20 only (grok-4.6 / 4.5 / build unsupported; Imagine at standard rates); bypasses rate limits; not with priority; live turnaround 11 s",4276    "endpoint": "POST /v1/batches",4277    "params": [4278     "name",4279     "input_file_id",4280     "batch_requests"4281    ],4282    "status": [4283     "DOCUMENTED",4284     "LIVE_VERIFIED"4285    ],4286    "notes": "8 endpoints; DELETE → 405; `responses` bodies come back as `chat_get_completion`"4287   },4288   "gemini": {4289    "supported": true,4290    "how": "`POST /v1beta/models/{model}:batchGenerateContent {batch:{displayName, inputConfig:{requests:{requests[]} | fileName}, priority, webhookConfig}}` (inline ≤20 MB or JSONL Files ≤2 GB) → `Operation` `batches/{id}`; `:asyncBatchEmbedContent`; `GET /v1beta/batches[/{id}]`, `:cancel`, `DELETE`, `PATCH :update*Batch`; states PENDING→RUNNING→SUCCEEDED|FAILED|CANCELLED|EXPIRED (>48 h); **50 %**; target 24 h; 100 concurrent jobs; per-model enqueued-token caps; results 6 weeks; OpenAI-compat `/v1beta/openai/batches`",4291    "endpoint": "POST /v1beta/models/{model}:batchGenerateContent",4292    "params": [4293     "batch.inputConfig.requests",4294     "batch.inputConfig.fileName",4295     "batch.displayName"4296    ],4297    "status": [4298     "DOCUMENTED",4299     "ACCOUNT_RESTRICTED"4300    ],4301    "notes": "9 endpoints; free tier → 400 FAILED_PRECONDITION; list LIVE_VERIFIED"4302   },4303   "providers_supporting": [4304    "openai",4305    "anthropic",4306    "xai",4307    "gemini"4308   ],4309   "provider_count": 4,4310   "portable": true,4311   "notes": "Same 24-h / discounted idea on all four, with 50 % (OpenAI, Anthropic, Gemini) vs 20 % (xAI, three models only). Inline requests: Anthropic, xAI, Gemini; file-based: OpenAI, xAI, Gemini.",4312   "ref": "docs/openai/batch.md · docs/anthropic/message-batches.md · docs/xai/batches.md · docs/gemini/batch.md"4313  },4314  {4315   "section": "Prompt caching",4316   "feature": "Prompt / context caching",4317   "openai": {4318    "supported": true,4319    "how": "automatic prefix caching (≥1,024 tokens; exact prefix; `prompt_cache_key` routing hint); GPT-5.6+: `prompt_cache_options {mode: implicit|explicit, ttl:'30m', prewarm}` and per-part `prompt_cache_breakpoint {mode:explicit}` (≤4); `prompt_cache_retention: in_memory|24h` (deprecated)",4320    "endpoint": "POST /v1/responses",4321    "params": [4322     "prompt_cache_key",4323     "prompt_cache_options",4324     "prompt_cache_retention",4325     "prompt_cache_breakpoint"4326    ],4327    "status": [4328     "DOCUMENTED",4329     "LIVE_VERIFIED"4330    ],4331    "notes": "reads 0.1× (5.6+) / model-specific; writes 1.25× only on GPT-5.6+"4332   },4333   "anthropic": {4334    "supported": true,4335    "how": "explicit `cache_control {type: ephemeral, ttl: 5m|1h}` on system/tools/content blocks (≤4 breakpoints) or top-level automatic; 20-block lookback; min 512 (Fable/Mythos/Opus 5) · 1,024 (Sonnet 5/4.6/4.5, Opus 4.8) · 2,048 (Opus 4.7) · 4,096 (Haiku 4.5, Opus 4.6/4.5)",4336    "endpoint": "POST /v1/messages",4337    "params": [4338     "cache_control",4339     "system[].cache_control",4340     "messages[].content[].cache_control",4341     "tools[].cache_control"4342    ],4343    "status": [4344     "DOCUMENTED",4345     "LIVE_VERIFIED"4346    ],4347    "notes": "writes 1.25× (5m) / 2× (1h); reads 0.1× (0.025× Fable 5.1)"4348   },4349   "xai": {4350    "supported": true,4351    "how": "**automatic** prefix cache, no markers (`cache_control` on `/v1/messages` ignored); sticky routing via `prompt_cache_key` (Responses, Chat) or header `x-grok-conv-id` (Chat/gRPC); include prior `reasoning_content` / encrypted reasoning or use `previous_response_id` to keep hits; no TTL or minimum documented, no write charge; cached reads 0.15×–0.25× (grok-4.6 $0.50, grok-4.3 $0.20); long-context tier doubles cached price too",4352    "endpoint": "POST /v1/responses",4353    "params": [4354     "prompt_cache_key",4355     "x-grok-conv-id"4356    ],4357    "status": [4358     "DOCUMENTED",4359     "LIVE_VERIFIED"4360    ],4361    "notes": "live: a fresh minimal request already shows ~192 cached tokens (hidden system prefix); cached tokens count toward TPM"4362   },4363   "gemini": {4364    "supported": true,4365    "how": "**implicit** caching (automatic on 2.5+, min prompt 4,096 tokens on 3.x Flash/3.1 Pro, 2,048 on 2.5; hits in `usageMetadata.cachedContentTokenCount`) **and explicit** `cachedContents` (`POST /v1beta/cachedContents {model, contents, systemInstruction, tools, ttl|expireTime}` → use `cachedContent: cachedContents/{id}`; default TTL 1 h, PATCH TTL only; min 1,024 tokens live); cached reads 0.1× everywhere; explicit storage $0.50–$4.50 per 1M tokens per hour",4366    "endpoint": "POST /v1beta/models/{model}:generateContent",4367    "params": [4368     "cachedContent",4369     "generationConfig",4370     "ttl",4371     "expireTime"4372    ],4373    "status": [4374     "DOCUMENTED",4375     "BETA",4376     "ACCOUNT_RESTRICTED"4377    ],4378    "notes": "explicit caching v1beta-only, not via Interactions; free tier `limit: 0`; no write fee"4379   },4380   "providers_supporting": [4381    "openai",4382    "anthropic",4383    "xai",4384    "gemini"4385   ],4386   "provider_count": 4,4387   "portable": true,4388   "notes": "Two philosophies: implicit (OpenAI default, xAI, Gemini implicit) vs explicit breakpoints (Anthropic, OpenAI 5.6+, Gemini `cachedContents`). Write fees exist only on Anthropic and GPT-5.6+; Gemini charges storage time instead; xAI charges nothing but publishes no TTL.",4389   "ref": "docs/comparisons/caching-and-reasoning.md · docs/xai/prompt-caching.md · docs/gemini/context-caching.md"4390  },4391  {4392   "section": "Prompt caching",4393   "feature": "Cache diagnostics",4394   "openai": {4395    "supported": true,4396    "how": "`prompt_cache_options.comparison_response_id` → `prompt_cache_diagnostics {type: cache_hit|cache_miss{reason}}` (GPT-5.6+)",4397    "endpoint": "POST /v1/responses",4398    "params": [4399     "prompt_cache_options.comparison_response_id"4400    ],4401    "status": [4402     "DOCUMENTED"4403    ],4404    "notes": "reasons: model_changed, tools_changed, text_format_changed, …"4405   },4406   "anthropic": {4407    "supported": true,4408    "how": "`diagnostics.previous_message_id` → response `diagnostics` cache-miss reasons; beta `cache-diagnosis-2026-04-07`",4409    "endpoint": "POST /v1/messages",4410    "params": [4411     "diagnostics.previous_message_id"4412    ],4413    "status": [4414     "DOCUMENTED",4415     "BETA"4416    ],4417    "notes": ""4418   },4419   "xai": {4420    "supported": false,4421    "how": "no diagnostics; only `usage.*cached_tokens` counters (`input_tokens_details.cached_tokens`, `prompt_tokens_details.cached_tokens`, `cache_read_input_tokens` on `/v1/messages`)",4422    "endpoint": "POST /v1/responses",4423    "params": [],4424    "status": [4425     "DOCUMENTED"4426    ],4427    "notes": ""4428   },4429   "gemini": {4430    "supported": false,4431    "how": "no diagnostics; `usageMetadata.cachedContentTokenCount` + `cacheTokensDetails[]` only",4432    "endpoint": "POST /v1beta/models/{model}:generateContent",4433    "params": [],4434    "status": [4435     "DOCUMENTED"4436    ],4437    "notes": ""4438   },4439   "providers_supporting": [4440    "openai",4441    "anthropic"4442   ],4443   "provider_count": 2,4444   "portable": true,4445   "notes": "OpenAI and Anthropic explain misses; xAI and Gemini only count hits.",4446   "ref": "parameters.json"4447  },4448  {4449   "section": "Reasoning / thinking",4450   "feature": "Reasoning control",4451   "openai": {4452    "supported": true,4453    "how": "`reasoning {effort: none|minimal|low|medium|high|xhigh|max, summary: auto|concise|detailed, context: auto|current_turn|all_turns, mode: standard|pro}`; `reasoning` output items with `encrypted_content`; `usage.output_tokens_details.reasoning_tokens`",4454    "endpoint": "POST /v1/responses",4455    "params": [4456     "reasoning.effort",4457     "reasoning.summary",4458     "reasoning.context",4459     "reasoning.mode"4460    ],4461    "status": [4462     "DOCUMENTED",4463     "LIVE_VERIFIED"4464    ],4465    "notes": "Chat: `reasoning_effort` only; effort set per model (gpt-6-astra rejects `none`)"4466   },4467   "anthropic": {4468    "supported": true,4469    "how": "`thinking {type: adaptive|enabled|disabled, budget_tokens, display: summarized|omitted|updates}` + `output_config.effort: low|medium|high|xhigh|max` (default high); `thinking`/`redacted_thinking` blocks with `signature`; `usage.output_tokens_details.thinking_tokens`",4470    "endpoint": "POST /v1/messages",4471    "params": [4472     "thinking.type",4473     "thinking.budget_tokens",4474     "thinking.display",4475     "output_config.effort"4476    ],4477    "status": [4478     "DOCUMENTED",4479     "LIVE_VERIFIED"4480    ],4481    "notes": "`enabled` (manual budget) 400 on 4.7+; adaptive 400 on 4.5 models"4482   },4483   "xai": {4484    "supported": true,4485    "how": "Responses `reasoning {effort: low|medium|high|xhigh, summary: auto|concise|detailed}` (alias `reasoning_effort`); Chat `reasoning_effort` + `message.reasoning_content` (`delta.reasoning_content` when streaming); `usage.completion_tokens_details.reasoning_tokens`; **reasoning is always on** for grok-4.6/4.5/4.20-reasoning/build (`reasoning_effort` → 400 on 4.20-reasoning and build); grok-4.3 accepts `none` (LIVE_DISCOVERED, 0 reasoning tokens); `grok-4.20-0309-non-reasoning` has none; on `grok-4.20-multi-agent-0309` effort selects **4 or 16 agents**",4486    "endpoint": "POST /v1/responses",4487    "params": [4488     "reasoning.effort",4489     "reasoning.summary",4490     "reasoning_effort"4491    ],4492    "status": [4493     "DOCUMENTED",4494     "LIVE_VERIFIED"4495    ],4496    "notes": "`max_output_tokens` documented to include reasoning but not enforced live; 'Reply with OK.' costs 70–180 reasoning tokens"4497   },4498   "gemini": {4499    "supported": true,4500    "how": "`generationConfig.thinkingConfig {thinkingLevel: MINIMAL|LOW|MEDIUM|HIGH (Gemini 3), thinkingBudget: -1|0|N (2.5-era, LEGACY on 3.x; exclusive with level → 400), includeThoughts}`; defaults high (3.1 Pro, 3 Flash) / medium (3.5–3.8 Flash) / minimal (Flash-Lite); `MINIMAL` → 400 on 3.8/3.7 Flash and 3.1 Pro; thought parts `{text, thought: true}`; `usageMetadata.thoughtsTokenCount`; Interactions `generation_config.thinking_level` + `thinking_summaries: auto|none`",4501    "endpoint": "POST /v1beta/models/{model}:generateContent",4502    "params": [4503     "generationConfig.thinkingConfig.thinkingLevel",4504     "generationConfig.thinkingConfig.thinkingBudget",4505     "generationConfig.thinkingConfig.includeThoughts"4506    ],4507    "status": [4508     "DOCUMENTED",4509     "LIVE_VERIFIED"4510    ],4511    "notes": "thinking cannot be disabled on 3.8/3.7 Flash, 3.1 Pro, 2.5 Pro; `thinkingBudget: 0` works on 3.6/3.5 Flash; OpenAI-compat maps `reasoning_effort` minimal/low/medium/high"4512   },4513   "providers_supporting": [4514    "openai",4515    "anthropic",4516    "xai",4517    "gemini"4518   ],4519   "provider_count": 4,4520   "portable": true,4521   "notes": "Four effort ladders overlap on low/medium/high: OpenAI adds none/minimal/xhigh/max, Anthropic xhigh/max, xAI xhigh, Gemini minimal. Off-switches: OpenAI `none` (most models), Anthropic `disabled` (not Fable/Mythos), xAI `none` on grok-4.3 only, Gemini `thinkingBudget: 0` on two Flash models only. Only Anthropic and Gemini (2.5) expose a token budget.",4522   "ref": "docs/openai/reasoning.md · docs/anthropic/thinking.md · docs/xai/reasoning.md · docs/gemini/thinking.md"4523  },4524  {4525   "section": "Reasoning / thinking",4526   "feature": "Reasoning visibility",4527   "openai": {4528    "supported": true,4529    "how": "summaries only (`reasoning.summary`); raw `content[]` empty for GPT models; encrypted replay item",4530    "endpoint": "POST /v1/responses",4531    "params": [4532     "reasoning.summary",4533     "include"4534    ],4535    "status": [4536     "DOCUMENTED",4537     "LIVE_VERIFIED"4538    ],4539    "notes": ""4540   },4541   "anthropic": {4542    "supported": true,4543    "how": "summarized text by default (≤4.6) or omitted (4.7+); `display: updates` progress text (Fable 5.x beta); signature always present",4544    "endpoint": "POST /v1/messages",4545    "params": [4546     "thinking.display"4547    ],4548    "status": [4549     "DOCUMENTED",4550     "BETA",4551     "LIVE_VERIFIED"4552    ],4553    "notes": ""4554   },4555   "xai": {4556    "supported": true,4557    "how": "Chat returns the **full `reasoning_content` text** by default; Responses returns `reasoning` items with `summary[]` (`reasoning.summary` accepted 'for compatibility'; the item is sometimes omitted); `/v1/messages` returns `thinking` blocks with an empty `signature`",4558    "endpoint": "POST /v1/responses",4559    "params": [4560     "reasoning.summary",4561     "include"4562    ],4563    "status": [4564     "DOCUMENTED",4565     "LIVE_VERIFIED"4566    ],4567    "notes": ""4568   },4569   "gemini": {4570    "supported": true,4571    "how": "`includeThoughts: true` → thought **summaries** as `thought: true` parts (not guaranteed on trivial prompts); `thoughtSignature` (opaque) on function-call and final parts; Interactions `thought` steps `{signature, summary[]}`",4572    "endpoint": "POST /v1beta/models/{model}:generateContent",4573    "params": [4574     "generationConfig.thinkingConfig.includeThoughts",4575     "contents[].parts[].thoughtSignature"4576    ],4577    "status": [4578     "DOCUMENTED",4579     "LIVE_VERIFIED"4580    ],4581    "notes": "billing is on full thoughts, not the summary"4582   },4583   "providers_supporting": [4584    "openai",4585    "anthropic",4586    "xai",4587    "gemini"4588   ],4589   "provider_count": 4,4590   "portable": true,4591   "notes": "Only xAI (Chat Completions) exposes the raw chain of thought; the other three return summaries plus an opaque signature/encrypted blob.",4592   "ref": "docs/anthropic/thinking.md §3 · docs/xai/reasoning.md · docs/gemini/thinking.md"4593  },4594  {4595   "section": "Reasoning / thinking",4596   "feature": "Reasoning replay across turns",4597   "openai": {4598    "supported": true,4599    "how": "replay `reasoning` items verbatim (auto with `previous_response_id`); `encrypted_content` decrypted in memory when `store:false`; `reasoning.context: all_turns` (GPT-5.6 default)",4600    "endpoint": "POST /v1/responses",4601    "params": [4602     "input[](reasoning).encrypted_content",4603     "reasoning.context"4604    ],4605    "status": [4606     "DOCUMENTED",4607     "LIVE_VERIFIED"4608    ],4609    "notes": ""4610   },4611   "anthropic": {4612    "supported": true,4613    "how": "pass `thinking` blocks back unmodified within tool-use turns (400 if modified); prior-turn thinking kept for all turns on Opus 4.5+/Sonnet 4.6+/Fable, last turn on Haiku/Sonnet 4.5; `clear_thinking_20251015` edit; beta `thinking.block_binding`",4614    "endpoint": "POST /v1/messages",4615    "params": [4616     "messages[].content[].signature",4617     "thinking.block_binding"4618    ],4619    "status": [4620     "DOCUMENTED",4621     "BETA",4622     "LIVE_VERIFIED"4623    ],4624    "notes": ""4625   },4626   "xai": {4627    "supported": true,4628    "how": "`include: [\"reasoning.encrypted_content\"]` (xai-sdk `use_encrypted_content=True`) → replay the `reasoning` items with `encrypted_content` when `store:false` (ZDR) — also the 'top cause of cache misses' when omitted; `previous_response_id` rehydrates automatically; Chat: resend `reasoning_content`",4629    "endpoint": "POST /v1/responses",4630    "params": [4631     "include",4632     "input[](reasoning).encrypted_content",4633     "previous_response_id"4634    ],4635    "status": [4636     "DOCUMENTED",4637     "LIVE_VERIFIED"4638    ],4639    "notes": ""4640   },4641   "gemini": {4642    "supported": true,4643    "how": "**mandatory** on Gemini 3: echo `thoughtSignature` of the first `functionCall` of each step (400 'missing a thought_signature' / `finishReason: MISSING_THOUGHT_SIGNATURE`, even at `minimal`); text-part signatures recommended; tampering → 400 'Corrupted thought signature'; Interactions carry it in `thought` steps; 'thought preservation' across turns since 3.5 Flash",4644    "endpoint": "POST /v1beta/models/{model}:generateContent",4645    "params": [4646     "contents[].parts[].thoughtSignature"4647    ],4648    "status": [4649     "DOCUMENTED",4650     "LIVE_VERIFIED"4651    ],4652    "notes": "dummy values `skip_thought_signature_validator` bypass validation (verified)"4653   },4654   "providers_supporting": [4655    "openai",4656    "anthropic",4657    "xai",4658    "gemini"4659   ],4660   "provider_count": 4,4661   "portable": true,4662   "notes": "All four carry hidden reasoning as an opaque blob; Anthropic and Gemini validate it (400 on edits / omissions), OpenAI and xAI encrypt it.",4663   "ref": "docs/anthropic/thinking.md §4 · docs/xai/reasoning.md · docs/gemini/thinking.md"4664  },4665  {4666   "section": "Reasoning / thinking",4667   "feature": "Pro / extended-compute mode",4668   "openai": {4669    "supported": true,4670    "how": "`reasoning.mode: pro` (GPT-5.6) billed at standard rates; `*-pro` models (gpt-5.4-pro, gpt-5.5-pro)",4671    "endpoint": "POST /v1/responses",4672    "params": [4673     "reasoning.mode"4674    ],4675    "status": [4676     "DOCUMENTED"4677    ],4678    "notes": ""4679   },4680   "anthropic": {4681    "supported": false,4682    "how": "`effort: max` is the top of the ladder; no separate mode",4683    "endpoint": "",4684    "params": [4685     "output_config.effort"4686    ],4687    "status": [4688     "DOCUMENTED"4689    ],4690    "notes": ""4691   },4692   "xai": {4693    "supported": true,4694    "how": "`grok-4.20-multi-agent-0309` (BETA): one Responses call fans out to 4 (low/medium) or 16 (high/xhigh) agents; all agents' tokens billed at grok-4.20 rates; Responses-only (Chat → 400)",4695    "endpoint": "POST /v1/responses",4696    "params": [4697     "reasoning.effort"4698    ],4699    "status": [4700     "DOCUMENTED",4701     "BETA",4702     "LIVE_VERIFIED"4703    ],4704    "notes": "'Reply with OK.' cost 1,645 output tokens ≈ $0.0047"4705   },4706   "gemini": {4707    "supported": true,4708    "how": "`gemini-3.8-live-extended-thinking` (Live) and Deep Research **agents** (`deep-research-preview-04-2026`, `-max-`; 60-min background runs, $1–7 per task estimated) rather than a mode; `gemini-3.1-pro-preview` is the deep-reasoning text model",4709    "endpoint": "POST /v1beta/interactions",4710    "params": [4711     "agent",4712     "agent_config(deep-research)"4713    ],4714    "status": [4715     "DOCUMENTED",4716     "PREVIEW",4717     "LIVE_VERIFIED"4718    ],4719    "notes": ""4720   },4721   "providers_supporting": [4722    "openai",4723    "xai",4724    "gemini"4725   ],4726   "provider_count": 3,4727   "portable": false,4728   "notes": "Different vehicles: a mode/model (OpenAI), a multi-agent model (xAI), an agent (Gemini), a ladder value (Anthropic).",4729   "ref": "parameters.json · docs/models/xai-models.md · docs/gemini/interactions-api.md"4730  },4731  {4732   "section": "Reasoning / thinking",4733   "feature": "Change effort mid-conversation without breaking the cache",4734   "openai": {4735    "supported": true,4736    "how": "`configuration_update` input item `{reasoning:{effort}}` (gpt-6-astra)",4737    "endpoint": "POST /v1/responses",4738    "params": [4739     "input[](configuration_update)"4740    ],4741    "status": [4742     "DOCUMENTED"4743    ],4744    "notes": ""4745   },4746   "anthropic": {4747    "supported": true,4748    "how": "`messages[].output_config.effort` on `role:system` entries; beta `mid-conversation-output-config-2026-07-01` (Fable 5.1, Mythos 5.1, Opus 5)",4749    "endpoint": "POST /v1/messages",4750    "params": [4751     "messages[].output_config.effort"4752    ],4753    "status": [4754     "DOCUMENTED",4755     "BETA"4756    ],4757    "notes": ""4758   },4759   "xai": {4760    "supported": false,4761    "how": "per-request `reasoning.effort` only (automatic cache; no documented invalidation rule)",4762    "endpoint": "POST /v1/responses",4763    "params": [],4764    "status": [4765     "DOCUMENTED"4766    ],4767    "notes": ""4768   },4769   "gemini": {4770    "supported": false,4771    "how": "per-request `thinkingLevel` only; an explicit `cachedContents` prefix is unaffected by generationConfig changes",4772    "endpoint": "POST /v1beta/models/{model}:generateContent",4773    "params": [],4774    "status": [4775     "DOCUMENTED"4776    ],4777    "notes": ""4778   },4779   "providers_supporting": [4780    "openai",4781    "anthropic"4782   ],4783   "provider_count": 2,4784   "portable": true,4785   "notes": "OpenAI and Anthropic only.",4786   "ref": "parameters.json"4787  },4788  {4789   "section": "Reasoning / thinking",4790   "feature": "Task-wide token budget (advisory)",4791   "openai": {4792    "supported": false,4793    "how": "none in Responses (`max_tool_calls` caps hosted tool calls; Agents API has `session_budget_exceeded`)",4794    "endpoint": "POST /v1/responses",4795    "params": [4796     "max_tool_calls"4797    ],4798    "status": [4799     "DOCUMENTED"4800    ],4801    "notes": ""4802   },4803   "anthropic": {4804    "supported": true,4805    "how": "`output_config.task_budget {type, total ≥20000, remaining}`; beta `task-budgets-2026-03-13` (Fable/Mythos/Opus 5/4.8/4.7)",4806    "endpoint": "POST /v1/messages",4807    "params": [4808     "output_config.task_budget"4809    ],4810    "status": [4811     "DOCUMENTED",4812     "BETA"4813    ],4814    "notes": ""4815   },4816   "xai": {4817    "supported": true,4818    "how": "`max_turns` (agentic turns per Responses request; default = server cap) — a turn budget, not tokens",4819    "endpoint": "POST /v1/responses",4820    "params": [4821     "max_turns"4822    ],4823    "status": [4824     "DOCUMENTED",4825     "LIVE_VERIFIED"4826    ],4827    "notes": ""4828   },4829   "gemini": {4830    "supported": true,4831    "how": "Antigravity `agent_config.max_total_tokens` (Interactions, PREVIEW) → status `incomplete` when exhausted",4832    "endpoint": "POST /v1beta/interactions",4833    "params": [4834     "agent_config(antigravity).max_total_tokens"4835    ],4836    "status": [4837     "DOCUMENTED",4838     "PREVIEW"4839    ],4840    "notes": ""4841   },4842   "providers_supporting": [4843    "anthropic",4844    "xai",4845    "gemini"4846   ],4847   "provider_count": 3,4848   "portable": false,4849   "notes": "Three different budget units (tokens, turns, agent tokens); none on the OpenAI Responses API.",4850   "ref": "compatibility/anthropic-feature-model-matrix.json · docs/xai/responses.md · docs/gemini/interactions-api.md"4851  },4852  {4853   "section": "Context management",4854   "feature": "Context window",4855   "openai": {4856    "supported": true,4857    "how": "1,050,000 (GPT-5.4/5.5/5.6/6 Astra; >272k input = long-context pricing 2×/1.5×), 400k (5.x mini/nano, GPT-5–5.3), 200k (o-series), 128k (gpt-4o)",4858    "endpoint": "",4859    "params": [],4860    "status": [4861     "DOCUMENTED"4862    ],4863    "notes": ""4864   },4865   "anthropic": {4866    "supported": true,4867    "how": "1,000,000 default on Claude 4.6+ (no header, no premium); 200k on Opus 4.5 / Sonnet 4.5 / Haiku 4.5; `context-1m-2025-08-07` header RETIRED",4868    "endpoint": "",4869    "params": [],4870    "status": [4871     "DOCUMENTED",4872     "LIVE_VERIFIED"4873    ],4874    "notes": ""4875   },4876   "xai": {4877    "supported": true,4878    "how": "1,000,000 (grok-4.3, all grok-4.20 ids), 500,000 (grok-4.6, grok-4.5), 256,000 (grok-build-0.1); prompts ≥200,000 tokens switch the **whole request** to the 2× long-context tier",4879    "endpoint": "",4880    "params": [],4881    "status": [4882     "DOCUMENTED",4883     "LIVE_VERIFIED"4884    ],4885    "notes": "`usage.context_details` on Responses"4886   },4887   "gemini": {4888    "supported": true,4889    "how": "1,048,576 on every Gemini 3.x / 2.5 text model (`inputTokenLimit`); 262,144 Gemma 4; 131,072 Live / image / agent models; Pro models bill >200k prompts at 2× input / 1.5× output, Flash models flat",4890    "endpoint": "",4891    "params": [],4892    "status": [4893     "DOCUMENTED",4894     "LIVE_VERIFIED"4895    ],4896    "notes": ""4897   },4898   "providers_supporting": [4899    "openai",4900    "anthropic",4901    "xai",4902    "gemini"4903   ],4904   "provider_count": 4,4905   "portable": true,4906   "notes": "~1M on every flagship line; long-context premiums on OpenAI (>272k), xAI (≥200k, all tokens) and Gemini Pro (>200k); none on Anthropic or Gemini Flash.",4907   "ref": "models.json"4908  },4909  {4910   "section": "Context management",4911   "feature": "Max output tokens",4912   "openai": {4913    "supported": true,4914    "how": "128,000 on GPT-5.x/6 (272,000 on gpt-5-pro); `max_output_tokens` ≥16",4915    "endpoint": "POST /v1/responses",4916    "params": [4917     "max_output_tokens"4918    ],4919    "status": [4920     "DOCUMENTED",4921     "LIVE_VERIFIED"4922    ],4923    "notes": ""4924   },4925   "anthropic": {4926    "supported": true,4927    "how": "128,000 on Claude 4.6+ (64,000 on 4.5 models); `max_tokens` required; 300,000 in Batches with `output-300k-2026-03-24`",4928    "endpoint": "POST /v1/messages",4929    "params": [4930     "max_tokens"4931    ],4932    "status": [4933     "DOCUMENTED",4934     "LIVE_VERIFIED"4935    ],4936    "notes": ""4937   },4938   "xai": {4939    "supported": true,4940    "how": "**no documented limit** (`max_output: null` on every Grok record; grok-4.6 page: 'No text output limit'); Responses `max_output_tokens` default 128,000 (docs) and not enforced on reasoning live; Chat `max_completion_tokens` caps visible output only",4941    "endpoint": "POST /v1/responses",4942    "params": [4943     "max_output_tokens",4944     "max_completion_tokens"4945    ],4946    "status": [4947     "DOCUMENTED",4948     "LIVE_VERIFIED"4949    ],4950    "notes": "`max_tokens` DEPRECATED alias on Chat"4951   },4952   "gemini": {4953    "supported": true,4954    "how": "65,536 on every 3.x / 2.5 text model (`outputTokenLimit`); 32,768 Gemma 4 / image models; `maxOutputTokens` **includes thinking tokens** (hit → `finishReason: MAX_TOKENS`, possibly empty text)",4955    "endpoint": "POST /v1beta/models/{model}:generateContent",4956    "params": [4957     "generationConfig.maxOutputTokens"4958    ],4959    "status": [4960     "DOCUMENTED",4961     "LIVE_VERIFIED"4962    ],4963    "notes": "Interactions `generation_config.max_output_tokens`"4964   },4965   "providers_supporting": [4966    "openai",4967    "anthropic",4968    "xai",4969    "gemini"4970   ],4971   "provider_count": 4,4972   "portable": true,4973   "notes": "128k (OpenAI, Anthropic), 64k (Gemini), unpublished (xAI). Only Anthropic makes the cap mandatory.",4974   "ref": "models.json"4975  },4976  {4977   "section": "Context management",4978   "feature": "Server-side compaction (in-flight)",4979   "openai": {4980    "supported": true,4981    "how": "`context_management: [{type: compaction, compact_threshold ≥1000}]` → `compaction` output item, SSE `response.compaction.compacting`",4982    "endpoint": "POST /v1/responses",4983    "params": [4984     "context_management[].compact_threshold"4985    ],4986    "status": [4987     "DOCUMENTED"4988    ],4989    "notes": ""4990   },4991   "anthropic": {4992    "supported": true,4993    "how": "`context_management.edits: [{type: compact_20260112, trigger ≥50000, pause_after_compaction, instructions}]` → `compaction` block, `stop_reason: compaction`; beta `compact-2026-01-12`; 4.6+",4994    "endpoint": "POST /v1/messages",4995    "params": [4996     "context_management.edits[]"4997    ],4998    "status": [4999     "DOCUMENTED",5000     "BETA",5001     "LIVE_VERIFIED"5002    ],5003    "notes": "usage.iterations[] for billing"5004   },5005   "xai": {5006    "supported": false,5007    "how": "`context_management[]` accepted but 'parsed but not yet executed' (compat only); use the stand-alone compact endpoint",5008    "endpoint": "POST /v1/responses",5009    "params": [5010     "context_management"5011    ],5012    "status": [5013     "DOCUMENTED"5014    ],5015    "notes": ""5016   },5017   "gemini": {5018    "supported": true,5019    "how": "Live API only: `setup.contextWindowCompression {triggerTokens, slidingWindow {targetTokens}}` (unlimited session length); Antigravity agents compact around ~135k automatically; nothing on `generateContent`",5020    "endpoint": "WSS BidiGenerateContent",5021    "params": [5022     "setup.contextWindowCompression"5023    ],5024    "status": [5025     "DOCUMENTED"5026    ],5027    "notes": ""5028   },5029   "providers_supporting": [5030    "openai",5031    "anthropic",5032    "gemini"5033   ],5034   "provider_count": 3,5035   "portable": true,5036   "notes": "OpenAI and Anthropic compact text conversations in-flight; Gemini only compresses Live sessions; xAI parses the field and ignores it.",5037   "ref": "docs/openai/responses.md §6 · docs/anthropic/context-management.md §3 · docs/gemini/live-api.md"5038  },5039  {5040   "section": "Context management",5041   "feature": "Stand-alone compaction request",5042   "openai": {5043    "supported": true,5044    "how": "`POST /v1/responses/compact {model, input|previous_response_id}` → `response.compaction` with encrypted `compaction` item",5045    "endpoint": "POST /v1/responses/compact",5046    "params": [5047     "model",5048     "input",5049     "previous_response_id",5050     "instructions"5051    ],5052    "status": [5053     "DOCUMENTED",5054     "LIVE_VERIFIED"5055    ],5056    "notes": ""5057   },5058   "anthropic": {5059    "supported": true,5060    "how": "`compaction: {type: summarize}` on Messages → single signed `compaction` block; beta `compact-2026-09-04`",5061    "endpoint": "POST /v1/messages",5062    "params": [5063     "compaction",5064     "compaction.type",5065     "compaction.instructions"5066    ],5067    "status": [5068     "DOCUMENTED",5069     "BETA",5070     "LIVE_VERIFIED"5071    ],5072    "notes": "block must be sent first"5073   },5074   "xai": {5075    "supported": true,5076    "how": "`POST /v1/responses/compact {model, input}` → `{object: response.compaction, id: cmp_…, output:[{type: compaction, encrypted_content}], usage {…, dropped_message_count}}`; put the `output` first in the next `input`; do not edit the blob; the pre-compaction conversation must still fit the window (May 2026 'Context Compaction API')",5077    "endpoint": "POST /v1/responses/compact",5078    "params": [5079     "model",5080     "input"5081    ],5082    "status": [5083     "DOCUMENTED",5084     "LIVE_VERIFIED"5085    ],5086    "notes": "48 parameter rows"5087   },5088   "gemini": {5089    "supported": false,5090    "how": "not offered",5091    "endpoint": "",5092    "params": [],5093    "status": [5094     "UNVERIFIED"5095    ],5096    "notes": "no equivalent surface in the documented API"5097   },5098   "providers_supporting": [5099    "openai",5100    "anthropic",5101    "xai"5102   ],5103   "provider_count": 3,5104   "portable": true,5105   "notes": "OpenAI-shaped on xAI (same endpoint and item); Anthropic as a Messages parameter; none on Gemini.",5106   "ref": "docs/anthropic/context-management.md §3 · docs/xai/responses.md"5107  },5108  {5109   "section": "Context management",5110   "feature": "Server-side context editing (clear old tool results / thinking)",5111   "openai": {5112    "supported": false,5113    "how": "no editing strategies; legacy `truncation: auto` drops oldest items",5114    "endpoint": "POST /v1/responses",5115    "params": [5116     "truncation"5117    ],5118    "status": [5119     "DOCUMENTED",5120     "LEGACY",5121     "LIVE_VERIFIED"5122    ],5123    "notes": ""5124   },5125   "anthropic": {5126    "supported": true,5127    "how": "`context_management.edits[]`: `clear_tool_uses_20250919`, `clear_thinking_20251015`; beta `context-management-2025-06-27`; response `context_management.applied_edits[]`",5128    "endpoint": "POST /v1/messages",5129    "params": [5130     "context_management.edits[].type",5131     "context_management.edits[].trigger",5132     "context_management.edits[].keep"5133    ],5134    "status": [5135     "DOCUMENTED",5136     "BETA",5137     "LIVE_VERIFIED"5138    ],5139    "notes": ""5140   },5141   "xai": {5142    "supported": false,5143    "how": "`truncation` accepted (`disabled` echoed) — 'not supported, compatibility only'",5144    "endpoint": "POST /v1/responses",5145    "params": [5146     "truncation"5147    ],5148    "status": [5149     "DOCUMENTED"5150    ],5151    "notes": ""5152   },5153   "gemini": {5154    "supported": false,5155    "how": "not offered",5156    "endpoint": "",5157    "params": [],5158    "status": [5159     "UNVERIFIED"5160    ],5161    "notes": "no equivalent surface in the documented API"5162   },5163   "providers_supporting": [5164    "anthropic"5165   ],5166   "provider_count": 1,5167   "portable": false,5168   "notes": "Anthropic-only.",5169   "ref": "docs/anthropic/context-management.md §2"5170  },5171  {5172   "section": "Context management",5173   "feature": "Mid-conversation tool add/remove (cache-preserving)",5174   "openai": {5175    "supported": true,5176    "how": "`additional_tools` developer item (adds tools mid-thread); `tool_choice: allowed_tools` to restrict",5177    "endpoint": "POST /v1/responses",5178    "params": [5179     "input[](additional_tools)"5180    ],5181    "status": [5182     "DOCUMENTED"5183    ],5184    "notes": ""5185   },5186   "anthropic": {5187    "supported": true,5188    "how": "`tool_addition`/`tool_removal` blocks in `role:system` messages; beta `mid-conversation-tool-changes-2026-07-01` (Fable 5, Mythos 5, Opus 4.8, Opus 5)",5189    "endpoint": "POST /v1/messages",5190    "params": [5191     "messages[].role"5192    ],5193    "status": [5194     "DOCUMENTED",5195     "BETA"5196    ],5197    "notes": ""5198   },5199   "xai": {5200    "supported": false,5201    "how": "follow-ups via `previous_response_id` 'may change tools/model' — no dedicated item; cache effect undocumented",5202    "endpoint": "POST /v1/responses",5203    "params": [5204     "previous_response_id"5205    ],5206    "status": [5207     "DOCUMENTED"5208    ],5209    "notes": ""5210   },5211   "gemini": {5212    "supported": false,5213    "how": "resend the full `tools[]` each call (Interactions chaining also requires re-sending tools)",5214    "endpoint": "POST /v1beta/models/{model}:generateContent",5215    "params": [],5216    "status": [5217     "DOCUMENTED"5218    ],5219    "notes": ""5220   },5221   "providers_supporting": [5222    "openai",5223    "anthropic"5224   ],5225   "provider_count": 2,5226   "portable": true,5227   "notes": "OpenAI and Anthropic only.",5228   "ref": "anthropic-beta-headers.json"5229  },5230  {5231   "section": "Service tiers, limits, safety",5232   "feature": "Service tiers / processing modes",5233   "openai": {5234    "supported": true,5235    "how": "`service_tier: auto|default|flex|scale|priority|fast|ultrafast`; flex = batch price, slower; fast = 2× (renamed from priority 2026-07-30); echoed in response",5236    "endpoint": "POST /v1/responses",5237    "params": [5238     "service_tier"5239    ],5240    "status": [5241     "DOCUMENTED",5242     "LIVE_VERIFIED"5243    ],5244    "notes": ""5245   },5246   "anthropic": {5247    "supported": true,5248    "how": "`service_tier: auto|standard_only` (Priority Tier commitments, no longer sold) + `speed: fast` (beta `fast-mode-2026-02-01`, Opus 5 / 4.8 only, 2× price); `usage.service_tier` standard|priority|batch",5249    "endpoint": "POST /v1/messages",5250    "params": [5251     "service_tier",5252     "speed"5253    ],5254    "status": [5255     "DOCUMENTED",5256     "BETA",5257     "PREVIEW",5258     "ACCOUNT_RESTRICTED"5259    ],5260    "notes": "fast 429 'rate limit of 0' for our key"5261   },5262   "xai": {5263    "supported": true,5264    "how": "`service_tier: default|priority` (Chat + Responses): **priority = 2×** on every token type (after the cache discount), billed only when the response echoes `service_tier: priority`; not combinable with Batch",5265    "endpoint": "POST /v1/responses",5266    "params": [5267     "service_tier"5268    ],5269    "status": [5270     "DOCUMENTED",5271     "LIVE_VERIFIED"5272    ],5273    "notes": "live responses always echoed `default`"5274   },5275   "gemini": {5276    "supported": true,5277    "how": "`serviceTier: standard|flex|priority` (`service_tier` on Interactions / OpenAI-compat): **flex = 0.5×** (1–15 min target, sheddable → 429), **priority = 1.8×** (0.3× rate limit, graceful downgrade to standard); echoed in `usageMetadata.serviceTier` and header `X-Gemini-Service-Tier`",5278    "endpoint": "POST /v1beta/models/{model}:generateContent",5279    "params": [5280     "serviceTier"5281    ],5282    "status": [5283     "DOCUMENTED",5284     "LIVE_VERIFIED"5285    ],5286    "notes": "flex accepted live; ten text models listed"5287   },5288   "providers_supporting": [5289    "openai",5290    "anthropic",5291    "xai",5292    "gemini"5293   ],5294   "provider_count": 4,5295   "portable": true,5296   "notes": "Cheaper tier: OpenAI flex, Gemini flex (both 50 %). Faster tier: OpenAI fast 2×, Anthropic fast 2× (two models), xAI priority 2×, Gemini priority 1.8×.",5297   "ref": "docs/anthropic/service-tiers.md · docs/xai/pricing.md · docs/gemini/pricing.md · pricing.json"5298  },5299  {5300   "section": "Service tiers, limits, safety",5301   "feature": "End-user identifier for abuse detection",5302   "openai": {5303    "supported": true,5304    "how": "`safety_identifier` (≤64 chars; replaces `user`) + `prompt_cache_key`; header `OpenAI-Safety-Identifier` on Realtime",5305    "endpoint": "POST /v1/responses",5306    "params": [5307     "safety_identifier",5308     "user"5309    ],5310    "status": [5311     "DOCUMENTED",5312     "LIVE_VERIFIED"5313    ],5314    "notes": ""5315   },5316   "anthropic": {5317    "supported": true,5318    "how": "`metadata.user_id` (≤512 chars, no PII); beta `anthropic-user-profile-id` header",5319    "endpoint": "POST /v1/messages",5320    "params": [5321     "metadata.user_id",5322     "anthropic-user-profile-id"5323    ],5324    "status": [5325     "DOCUMENTED",5326     "LIVE_VERIFIED"5327    ],5328    "notes": ""5329   },5330   "xai": {5331    "supported": true,5332    "how": "`user` and `safety_identifier` (both accepted on Chat and Responses); `/v1/messages` `metadata.user_id`",5333    "endpoint": "POST /v1/responses",5334    "params": [5335     "safety_identifier",5336     "user"5337    ],5338    "status": [5339     "DOCUMENTED",5340     "LIVE_VERIFIED"5341    ],5342    "notes": ""5343   },5344   "gemini": {5345    "supported": true,5346    "how": "`labels {safety_identifier: …}` (documented key; Cloud-label rules; accepted, not echoed) on generateContent and Interactions",5347    "endpoint": "POST /v1beta/models/{model}:generateContent",5348    "params": [5349     "labels"5350    ],5351    "status": [5352     "DOCUMENTED",5353     "LIVE_VERIFIED"5354    ],5355    "notes": ""5356   },5357   "providers_supporting": [5358    "openai",5359    "anthropic",5360    "xai",5361    "gemini"5362   ],5363   "provider_count": 4,5364   "portable": true,5365   "notes": "Same idea everywhere; the field name changes four times.",5366   "ref": "parameters.json"5367  },5368  {5369   "section": "Service tiers, limits, safety",5370   "feature": "Rate-limit headers",5371   "openai": {5372    "supported": true,5373    "how": "`x-ratelimit-{limit,remaining,reset}-{requests,tokens}` (+ `-project-tokens`), `Retry-After`, `retry-after-ms`, `x-should-retry`",5374    "endpoint": "",5375    "params": [],5376    "status": [5377     "DOCUMENTED",5378     "LIVE_VERIFIED"5379    ],5380    "notes": "reset as Go durations (`6m0s`)"5381   },5382   "anthropic": {5383    "supported": true,5384    "how": "`anthropic-ratelimit-{requests,tokens,input-tokens,output-tokens}-{limit,remaining,reset}` (RFC 3339), `retry-after`, `x-should-retry`, `anthropic-priority-*`, `anthropic-fast-*`",5385    "endpoint": "",5386    "params": [],5387    "status": [5388     "DOCUMENTED",5389     "LIVE_VERIFIED"5390    ],5391    "notes": "not on GET /models or count_tokens"5392   },5393   "xai": {5394    "supported": true,5395    "how": "**undocumented but observed**: `x-ratelimit-limit-requests` (7,200 grok-4.6/4.5, 1,800 grok-4.3/4.20/build — per minute), `x-ratelimit-remaining-requests`, `x-ratelimit-limit-tokens` (50,000,000 / 10,000,000 = documented T0 TPM), `x-ratelimit-remaining-tokens`; no `reset`, no `Retry-After`; `x-request-id`, `x-zero-data-retention`",5396    "endpoint": "",5397    "params": [],5398    "status": [5399     "DOCUMENTED",5400     "LIVE_DISCOVERED"5401    ],5402    "notes": "absent on `/v1/responses` multi-agent calls and catalogue GETs"5403   },5404   "gemini": {5405    "supported": false,5406    "how": "**none** — no `x-ratelimit-*` or `Retry-After` on 200/404/429; retry delay only inside the 429 message text ('Please retry in 54.2s') and `google.rpc.RetryInfo`; undocumented `X-Gemini-Service-Tier` header",5407    "endpoint": "",5408    "params": [],5409    "status": [5410     "DOCUMENTED",5411     "LIVE_DISCOVERED"5412    ],5413    "notes": "no request-id header either — use `responseId` in the body"5414   },5415   "providers_supporting": [5416    "openai",5417    "anthropic",5418    "xai"5419   ],5420   "provider_count": 3,5421   "portable": true,5422   "notes": "Headers on three providers (xAI's undocumented); Gemini puts the information in the 429 body.",5423   "ref": "headers.json · rate-limits.json"5424  },5425  {5426   "section": "Service tiers, limits, safety",5427   "feature": "Rate-limit tiers",5428   "openai": {5429    "supported": true,5430    "how": "Free, Tier 1–5 by cumulative spend ($5 → $1,000) with monthly usage caps $100 → $200k; per-model RPM/TPM/batch-queue tables; long-context tables >272k",5431    "endpoint": "",5432    "params": [],5433    "status": [5434     "DOCUMENTED"5435    ],5436    "notes": "Scale/Reserved Tier, Ultrafast preview above Tier 5"5437   },5438   "anthropic": {5439    "supported": true,5440    "how": "Start ($500/mo cap) / Build ($1,000) / Scale ($200k) / Custom; per model-class RPM/ITPM/OTPM (cache reads excluded from ITPM); Batches & count_tokens separate",5441    "endpoint": "",5442    "params": [],5443    "status": [5444     "DOCUMENTED",5445     "LIVE_DISCOVERED"5446    ],5447    "notes": "observed Scale-tier headers for our key"5448   },5449   "xai": {5450    "supported": true,5451    "how": "Tier 0–4 by cumulative spend since 2026-01-01 ($0 / $50 / $250 / $1,000 / $5,000; Enterprise on request); per-model **RPS** (= RPM/60) and **TPM** (prompt + completion + reasoning + cached): grok-4.6/4.5 150→500 RPS, 50M→100M TPM; grok-4.3/4.20/build 37→208 RPS, 10M→85M TPM; multi-agent 9→56 RPS; Imagine RPS-only (6→100 images, 10→158 videos); voice concurrent sessions 10→200; Batch bypasses limits; per-key `qps/qpm/tpm` caps via Management API",5452    "endpoint": "",5453    "params": [],5454    "status": [5455     "DOCUMENTED",5456     "LIVE_DISCOVERED"5457    ],5458    "notes": "console shows personalised limits"5459   },5460   "gemini": {5461    "supported": true,5462    "how": "Free / Tier 1 (billing linked; $250 cap, $10 per rolling 10 min) / Tier 2 ($100 paid + 3 days; $2,000; $50) / Tier 3 ($1,000 + 30 days; $20k–100k+; $200); dimensions RPM / TPM / RPD (+ IPM, TPD) **per project**; per-model matrix published only in AI Studio; Pro and media models unavailable on Free (`limit: 0`); priority 0.3× limits; batch enqueued-token caps per model",5463    "endpoint": "",5464    "params": [],5465    "status": [5466     "DOCUMENTED",5467     "LIVE_DISCOVERED"5468    ],5469    "notes": "free-tier RPM observed 15/min on flash-lite"5470   },5471   "providers_supporting": [5472    "openai",5473    "anthropic",5474    "xai",5475    "gemini"5476   ],5477   "provider_count": 4,5478   "portable": true,5479   "notes": "Spend-based tiers everywhere; xAI is the only provider publishing exact per-model RPS/TPM per tier in the docs, Gemini the only one with a genuinely free tier.",5480   "ref": "generated/rate-limits.json"5481  },5482  {5483   "section": "Service tiers, limits, safety",5484   "feature": "Overload / capacity error",5485   "openai": {5486    "supported": true,5487    "how": "HTTP 503 `server_is_overloaded` (retryable, `Retry-After`)",5488    "endpoint": "",5489    "params": [],5490    "status": [5491     "DOCUMENTED"5492    ],5493    "notes": ""5494   },5495   "anthropic": {5496    "supported": true,5497    "how": "HTTP 529 `overloaded_error` (also as SSE `error` event after 200); acceleration limits now 429",5498    "endpoint": "",5499    "params": [],5500    "status": [5501     "DOCUMENTED"5502    ],5503    "notes": ""5504   },5505   "xai": {5506    "supported": true,5507    "how": "HTTP 429 (RPS/TPM/credits; gRPC RESOURCE_EXHAUSTED) and 5xx `internal` — no dedicated overload code; status.x.ai",5508    "endpoint": "",5509    "params": [],5510    "status": [5511     "DOCUMENTED"5512    ],5513    "notes": "no 429 triggered in this run"5514   },5515   "gemini": {5516    "supported": true,5517    "how": "HTTP 503 `UNAVAILABLE` ('The model is overloaded. Please try again later.'), 429 `RESOURCE_EXHAUSTED` when Flex capacity is shed, 504 `DEADLINE_EXCEEDED` for long Flex/Deep Research requests",5518    "endpoint": "",5519    "params": [],5520    "status": [5521     "DOCUMENTED"5522    ],5523    "notes": ""5524   },5525   "providers_supporting": [5526    "openai",5527    "anthropic",5528    "xai",5529    "gemini"5530   ],5531   "provider_count": 4,5532   "portable": true,5533   "notes": "503 (OpenAI, Gemini), 529 (Anthropic), 429 (xAI) for the same condition.",5534   "ref": "errors.json"5535  },5536  {5537   "section": "Service tiers, limits, safety",5538   "feature": "Error envelope",5539   "openai": {5540    "supported": true,5541    "how": "`{error: {message, type, param, code}}`; types invalid_request_error, rate_limit_error, insufficient_quota, server_error…; codes e.g. `model_not_found`, `context_length_exceeded`, `previous_response_not_found`",5542    "endpoint": "",5543    "params": [],5544    "status": [5545     "DOCUMENTED",5546     "LIVE_VERIFIED"5547    ],5548    "notes": "empty-body 404 from Cloudflare on unknown URLs"5549   },5550   "anthropic": {5551    "supported": true,5552    "how": "`{type: error, error: {type, message}, request_id}`; types invalid_request_error, authentication_error, permission_error, not_found_error, request_too_large, rate_limit_error, api_error, overloaded_error, billing_error, timeout_error",5553    "endpoint": "",5554    "params": [],5555    "status": [5556     "DOCUMENTED",5557     "LIVE_VERIFIED"5558    ],5559    "notes": "no `code` field except `error.details.error_code` on some 429/529"5560   },5561   "xai": {5562    "supported": true,5563    "how": "`{code: <kebab-case>, error: <message>}` (`invalid-argument`, `not-found`, `unauthenticated:no-credentials`…); 422 = **bare JSON string** (serde message); Management API = gRPC-style `{code: 16, message, details[]}`; Realtime WS `{type: error, error:{type, code, message}}`; **an invalid API key returns 400, not 401**",5564    "endpoint": "",5565    "params": [],5566    "status": [5567     "DOCUMENTED",5568     "LIVE_VERIFIED"5569    ],5570    "notes": "12 error records; gRPC↔HTTP mapping 3→400, 16→401, 7→403, 5→404, 8→429"5571   },5572   "gemini": {5573    "supported": true,5574    "how": "google.rpc `Status`: `{error: {code: <http>, message, status: INVALID_ARGUMENT|FAILED_PRECONDITION|UNAUTHENTICATED|PERMISSION_DENIED|NOT_FOUND|ALREADY_EXISTS|RESOURCE_EXHAUSTED|INTERNAL|UNIMPLEMENTED|UNAVAILABLE|DEADLINE_EXCEEDED…, details[] (BadRequest.fieldViolations, QuotaFailure, RetryInfo, Help)}}`; Interactions `{error: {code: <snake_case>, message}}`; soft failures at HTTP 200 (`promptFeedback.blockReason`, `finishReason`); Live WS close codes 1007/1008",5575    "endpoint": "",5576    "params": [],5577    "status": [5578     "DOCUMENTED",5579     "LIVE_VERIFIED"5580    ],5581    "notes": "18 error records; unknown File/Operation → 403, not 404"5582   },5583   "providers_supporting": [5584    "openai",5585    "anthropic",5586    "xai",5587    "gemini"5588   ],5589   "provider_count": 4,5590   "portable": true,5591   "notes": "Four envelopes; only Anthropic and OpenAI carry a request id in the body/header pair; Gemini has no request-id header at all.",5592   "ref": "docs/errors/openai.md · docs/errors/anthropic.md · docs/xai/authentication-headers-errors.md · docs/errors/gemini.md"5593  },5594  {5595   "section": "Service tiers, limits, safety",5596   "feature": "Idempotency key",5597   "openai": {5598    "supported": false,5599    "how": "not documented for api.openai.com (only Workspace Agents on api.chatgpt.com); dedupe via `metadata`/`custom_id`",5600    "endpoint": "",5601    "params": [],5602    "status": [5603     "UNVERIFIED"5604    ],5605    "notes": ""5606   },5607   "anthropic": {5608    "supported": false,5609    "how": "not documented; SDKs retry on 409",5610    "endpoint": "",5611    "params": [],5612    "status": [5613     "UNVERIFIED"5614    ],5615    "notes": ""5616   },5617   "xai": {5618    "supported": false,5619    "how": "not documented; `public-url` creation is idempotent by design; batch `batch_request_id` dedupes within a batch",5620    "endpoint": "",5621    "params": [],5622    "status": [5623     "UNVERIFIED"5624    ],5625    "notes": ""5626   },5627   "gemini": {5628    "supported": false,5629    "how": "not documented; batch `key` per JSONL line; `seed` for determinism",5630    "endpoint": "",5631    "params": [],5632    "status": [5633     "UNVERIFIED"5634    ],5635    "notes": ""5636   },5637   "providers_supporting": [],5638   "provider_count": 0,5639   "portable": false,5640   "notes": "No provider offers request idempotency keys on the model APIs.",5641   "ref": "headers.json"5642  },5643  {5644   "section": "Auth, versioning, SDKs, platform",5645   "feature": "Authentication",5646   "openai": {5647    "supported": true,5648    "how": "`Authorization: Bearer <sk-proj-…|sk-…|service-account key|WIF access token>`; optional `OpenAI-Organization`, `OpenAI-Project`; Admin keys `sk-admin-…`",5649    "endpoint": "",5650    "params": [],5651    "status": [5652     "DOCUMENTED",5653     "LIVE_VERIFIED"5654    ],5655    "notes": "WIF token exchange at auth.openai.com / mTLS"5656   },5657   "anthropic": {5658    "supported": true,5659    "how": "`x-api-key: sk-ant-api03-…` **or** `Authorization: Bearer <key|sk-ant-oat01-… OAuth/WIF token>`; `anthropic-workspace-id`; Admin keys `sk-ant-admin01-…`",5660    "endpoint": "",5661    "params": [],5662    "status": [5663     "DOCUMENTED",5664     "LIVE_VERIFIED"5665    ],5666    "notes": "WIF via `POST /v1/oauth/token`"5667   },5668   "xai": {5669    "supported": true,5670    "how": "`Authorization: Bearer xai-…` on REST, WebSocket and gRPC metadata; separate **Management key** for `management-api.x.ai` (inference key → 401 code 16); ephemeral `xai-realtime…` client secrets for browsers (`POST /v1/realtime/client_secrets`); per-key ACLs `api-key:endpoint:*`, `api-key:model:*` (new keys have **no access by default**); mTLS host `mtls.api.x.ai` (enterprise)",5671    "endpoint": "",5672    "params": [],5673    "status": [5674     "DOCUMENTED",5675     "LIVE_VERIFIED"5676    ],5677    "notes": "`GET /v1/api-key`, `GET /v1/me` introspection"5678   },5679   "gemini": {5680    "supported": true,5681    "how": "`x-goog-api-key: AIza…` (recommended; `?key=` discouraged); `Authorization: Bearer <GEMINI_API_KEY>` **mandatory** on `/v1beta/openai/*`; OAuth/ADC Bearer alternative (+ `x-goog-user-project`); ephemeral tokens `POST /v1beta/auth_tokens` for the Live API; **standard keys rejected from September 2026** in favour of service-account-bound auth keys",5682    "endpoint": "",5683    "params": [],5684    "status": [5685     "DOCUMENTED",5686     "LIVE_VERIFIED"5687    ],5688    "notes": "limits are per project, not per key"5689   },5690   "providers_supporting": [5691    "openai",5692    "anthropic",5693    "xai",5694    "gemini"5695   ],5696   "provider_count": 4,5697   "portable": true,5698   "notes": "Bearer everywhere except Gemini's native header; only OpenAI/Anthropic/xAI split admin vs inference keys; Gemini is the only one retiring a key type.",5699   "ref": "headers.json · docs/openai/authentication-and-keys.md · docs/anthropic/admin-api.md §1 · docs/xai/authentication-headers-errors.md · docs/gemini/authentication-headers-versions.md"5700  },5701  {5702   "section": "Auth, versioning, SDKs, platform",5703   "feature": "API version header / path version",5704   "openai": {5705    "supported": false,5706    "how": "none (server answers `openai-version: 2020-10-01`)",5707    "endpoint": "",5708    "params": [],5709    "status": [5710     "DOCUMENTED",5711     "LIVE_VERIFIED"5712    ],5713    "notes": ""5714   },5715   "anthropic": {5716    "supported": true,5717    "how": "`anthropic-version: 2023-06-01` **required** on every request (400 otherwise)",5718    "endpoint": "",5719    "params": [5720     "anthropic-version"5721    ],5722    "status": [5723     "DOCUMENTED",5724     "LIVE_VERIFIED"5725    ],5726    "notes": ""5727   },5728   "xai": {5729    "supported": false,5730    "how": "no version header, no beta headers; features selected by body fields or base URL; Interactions-style `Api-Revision` does not exist",5731    "endpoint": "",5732    "params": [],5733    "status": [5734     "DOCUMENTED",5735     "LIVE_VERIFIED"5736    ],5737    "notes": ""5738   },5739   "gemini": {5740    "supported": true,5741    "how": "version in the **URL path**: `/v1beta` (86 methods, default for SDKs) vs `/v1` (47; stable subset — no caching, tuning, Live, Files, agents); Interactions optional header `Api-Revision: 2026-05-20`",5742    "endpoint": "",5743    "params": [5744     "Api-Revision"5745    ],5746    "status": [5747     "DOCUMENTED",5748     "LIVE_VERIFIED"5749    ],5750    "notes": "docs say every model is in both versions; live `/v1/models` lists 22 vs 58"5751   },5752   "providers_supporting": [5753    "anthropic",5754    "gemini"5755   ],5756   "provider_count": 2,5757   "portable": false,5758   "notes": "Header (Anthropic), path (Gemini), nothing (OpenAI, xAI).",5759   "ref": "headers.json · docs/gemini/authentication-headers-versions.md"5760  },5761  {5762   "section": "Auth, versioning, SDKs, platform",5763   "feature": "Beta opt-in header",5764   "openai": {5765    "supported": true,5766    "how": "`OpenAI-Beta`: `agents=v1`, `chatkit_beta=v1`, `workspace_agent_runs=v1`, `responses_multi_agent=v1`, legacy `assistants=v2`, `realtime=v1`; plus `?beta=true` surface with body `openai-beta[]`",5767    "endpoint": "",5768    "params": [5769     "OpenAI-Beta"5770    ],5771    "status": [5772     "DOCUMENTED"5773    ],5774    "notes": "400 `invalid_beta` when missing"5775   },5776   "anthropic": {5777    "supported": true,5778    "how": "`anthropic-beta: <feature>-<YYYY-MM-DD>[,…]` (50 catalogued values; SDK `betas=[…]`, `client.beta.*`); unknown → 400",5779    "endpoint": "",5780    "params": [5781     "anthropic-beta",5782     "betas"5783    ],5784    "status": [5785     "DOCUMENTED",5786     "LIVE_VERIFIED"5787    ],5788    "notes": "see docs/faq.md for the current list"5789   },5790   "xai": {5791    "supported": false,5792    "how": "**none**; alpha features answer 403 ('only available for alpha users' — `tool_search`) or 404 (ACL)",5793    "endpoint": "",5794    "params": [],5795    "status": [5796     "DOCUMENTED",5797     "LIVE_VERIFIED"5798    ],5799    "notes": ""5800   },5801   "gemini": {5802    "supported": false,5803    "how": "**none**; gating by `/v1beta` path and `-preview` / `-exp` model ids (`kind: preview` 45 records)",5804    "endpoint": "",5805    "params": [],5806    "status": [5807     "DOCUMENTED",5808     "LIVE_VERIFIED"5809    ],5810    "notes": ""5811   },5812   "providers_supporting": [5813    "openai",5814    "anthropic"5815   ],5816   "provider_count": 2,5817   "portable": false,5818   "notes": "Anthropic gates parameters, OpenAI gates surfaces, Gemini gates by path/model id, xAI by account.",5819   "ref": "generated/fragments/headers/anthropic-beta-headers.json · headers.json · docs/faq.md Q6"5820  },5821  {5822   "section": "Auth, versioning, SDKs, platform",5823   "feature": "Request correlation",5824   "openai": {5825    "supported": true,5826    "how": "response `x-request-id`; request `X-Client-Request-Id` (logged, not echoed); `openai-processing-ms`",5827    "endpoint": "",5828    "params": [],5829    "status": [5830     "DOCUMENTED",5831     "LIVE_VERIFIED"5832    ],5833    "notes": ""5834   },5835   "anthropic": {5836    "supported": true,5837    "how": "response `request-id` (also `request_id` in error body); `anthropic-organization-id`",5838    "endpoint": "",5839    "params": [],5840    "status": [5841     "DOCUMENTED",5842     "LIVE_VERIFIED"5843    ],5844    "notes": ""5845   },5846   "xai": {5847    "supported": true,5848    "how": "response `x-request-id` (= `chat.completion.id`), `Server-Timing` (Cloudflare `cfEdge`/`cfOrigin`), `CF-RAY`",5849    "endpoint": "",5850    "params": [],5851    "status": [5852     "DOCUMENTED",5853     "LIVE_VERIFIED"5854    ],5855    "notes": "absent on catalogue GETs"5856   },5857   "gemini": {5858    "supported": false,5859    "how": "no request-id header; `responseId` in the JSON body; `Server-Timing: gfet4t7; dur=…`",5860    "endpoint": "",5861    "params": [],5862    "status": [5863     "DOCUMENTED",5864     "LIVE_VERIFIED"5865    ],5866    "notes": ""5867   },5868   "providers_supporting": [5869    "openai",5870    "anthropic",5871    "xai"5872   ],5873   "provider_count": 3,5874   "portable": true,5875   "notes": "Header on three providers, body field on Gemini.",5876   "ref": "headers.json"5877  },5878  {5879   "section": "Auth, versioning, SDKs, platform",5880   "feature": "Official SDKs",5881   "openai": {5882    "supported": true,5883    "how": "Python `openai` 3.16.2, Node `openai` 7.18/7.19, .NET, Java 4.65 (beta label), Go v3 (beta), Ruby, CLI, Agents SDK (py/ts), Azure libraries; retries 2, timeout 600 s",5884    "endpoint": "",5885    "params": [],5886    "status": [5887     "DOCUMENTED",5888     "LIVE_VERIFIED"5889    ],5890    "notes": ""5891   },5892   "anthropic": {5893    "supported": true,5894    "how": "Python `anthropic` 1.7.0, TS `@anthropic-ai/sdk` 0.126, Go, Java 2.63, Ruby, C# ≥10, PHP (beta), `ant` CLI 1.33; retries 2, timeout 10 min; cloud clients Bedrock/Vertex/AWS/Foundry",5895    "endpoint": "",5896    "params": [],5897    "status": [5898     "DOCUMENTED",5899     "LIVE_VERIFIED"5900    ],5901    "notes": "Python v1 removed sampling kwargs and `completions`"5902   },5903   "xai": {5904    "supported": true,5905    "how": "Python `xai-sdk` 1.19 (**gRPC**, `client.chat.create().sample()/stream()/defer()/parse()`, `response.cost_usd`, timeout 1620 s) — no official Node SDK: use `openai` with `baseURL: https://api.x.ai/v1`, `@ai-sdk/xai`, `langchain-xai`, or the Anthropic SDK against `/v1/messages` (deprecated); Grok Build CLI (`grok`, BETA); protos `xai-org/xai-proto` for `buf curl`; gRPC `api.x.ai:443` (11 services / 38 RPCs) lacks Responses items, voice, skills",5906    "endpoint": "",5907    "params": [],5908    "status": [5909     "DOCUMENTED",5910     "LIVE_VERIFIED"5911    ],5912    "notes": "9 SDK records"5913   },5914   "gemini": {5915    "supported": true,5916    "how": "Python `google-genai` 2.24 (`genai.Client()`; same SDK targets Vertex with `vertexai=True`), JS `@google/genai` 2.23, Go `google.golang.org/genai`, Java `com.google.genai`, C# `Google.GenAI`; Firebase AI Logic / Genkit / Vercel AI SDK; OpenAI SDK against `/v1beta/openai`; legacy `google-generativeai`, `@google/generative-ai`, Go/Dart/Swift/Android libs **DEPRECATED** 2025-11-30",5917    "endpoint": "",5918    "params": [],5919    "status": [5920     "DOCUMENTED",5921     "LIVE_VERIFIED"5922    ],5923    "notes": "8 SDK records; default `api_version` v1beta"5924   },5925   "providers_supporting": [5926    "openai",5927    "anthropic",5928    "xai",5929    "gemini"5930   ],5931   "provider_count": 4,5932   "portable": true,5933   "notes": "Every provider has Python and Node coverage — xAI's Node path is the OpenAI SDK; xAI's own SDK is the only gRPC-first one.",5934   "ref": "sdks.json · docs/xai/sdks.md · docs/gemini/sdks.md"5935  },5936  {5937   "section": "Auth, versioning, SDKs, platform",5938   "feature": "Webhooks (platform events)",5939   "openai": {5940    "supported": true,5941    "how": "`/v1/webhook_endpoints` CRUD + `rotate_secret`, `test`; `/v1/webhook_event_types`; events batch.*, response.*, fine_tuning.*, eval.run.*, video.*, realtime/live incoming calls, safety.*, agent.session.*; Standard Webhooks signature (`webhook-id/-timestamp/-signature`, `whsec_`)",5942    "endpoint": "GET /v1/webhook_endpoints",5943    "params": [],5944    "status": [5945     "DOCUMENTED",5946     "LIVE_VERIFIED"5947    ],5948    "notes": "28 event types"5949   },5950   "anthropic": {5951    "supported": true,5952    "how": "Managed Agents only: endpoints registered in Console (no API), 44 event types (agent.*, session.*, deployment*.*, environment.*, vault*.*, memory_store.*); same Standard Webhooks headers; ≤3 attempts, 5-min freshness; beta `managed-agents-2026-04-01`",5953    "endpoint": "",5954    "params": [],5955    "status": [5956     "DOCUMENTED",5957     "BETA"5958    ],5959    "notes": "no webhooks for Messages/Batches"5960   },5961   "xai": {5962    "supported": true,5963    "how": "only the SIP voice webhook `realtime.call.incoming` (Standard Webhooks headers, HMAC-SHA256) registered via `POST /v2/phone-numbers {webhook:{url}}`; no batch/response webhooks",5964    "endpoint": "POST /v2/phone-numbers",5965    "params": [],5966    "status": [5967     "DOCUMENTED"5968    ],5969    "notes": ""5970   },5971   "gemini": {5972    "supported": true,5973    "how": "`POST/GET /v1/webhooks`, `GET|PATCH|DELETE /v1/webhooks/{id}`, `POST …/rotate_secret` (documented on **/v1**, BETA) + per-request `webhook_config {uris[], user_metadata}` / Batch `webhookConfig`; events `interaction.completed|failed|cancelled|requires_action`, `batch.succeeded|failed`; JWKS-signed",5974    "endpoint": "POST /v1/webhooks",5975    "params": [5976     "webhook_config"5977    ],5978    "status": [5979     "DOCUMENTED",5980     "BETA"5981    ],5982    "notes": "7 endpoints, not tested; `:ping` UNVERIFIED"5983   },5984   "providers_supporting": [5985    "openai",5986    "anthropic",5987    "xai",5988    "gemini"5989   ],5990   "provider_count": 4,5991   "portable": true,5992   "notes": "OpenAI covers the widest event set; Gemini and Anthropic cover their agent/interaction resources; xAI only incoming calls.",5993   "ref": "generated/webhook-events.json · docs/openai/webhooks.md · docs/anthropic/managed-agents.md §17.2 · docs/gemini/interactions-api.md"5994  },5995  {5996   "section": "Auth, versioning, SDKs, platform",5997   "feature": "Administration API",5998   "openai": {5999    "supported": true,6000    "how": "124 operations under `/v1/organization/*` and `/v1/projects/*`: admin keys, users, invites, projects, service accounts, project API keys, groups, roles, certificates (mTLS), data retention, spend limits/alerts, audit logs, usage & costs; Admin API key `sk-admin-…`",6001    "endpoint": "GET /v1/organization/*",6002    "params": [],6003    "status": [6004     "DOCUMENTED",6005     "ACCOUNT_RESTRICTED"6006    ],6007    "notes": "all probes 403/401 with a project key"6008   },6009   "anthropic": {6010    "supported": true,6011    "how": "100 operations under `/v1/organizations/*`: me, users, invites, workspaces, api_keys, service accounts, federation (WIF), RBAC, spend limits, external keys, tunnels certs, usage_report & cost_report, analytics, Claude Code analytics; Admin key `sk-ant-admin01-…`",6012    "endpoint": "GET /v1/organizations/*",6013    "params": [],6014    "status": [6015     "DOCUMENTED",6016     "ACCOUNT_RESTRICTED",6017     "LIVE_VERIFIED"6018    ],6019    "notes": "`GET /v1/organizations/me` works with a regular key"6020   },6021   "xai": {6022    "supported": true,6023    "how": "**Management API** `https://management-api.x.ai` (21 endpoints, separate Management key, camelCase): API keys (create with `acls[]`, `qps/qpm/tpm`, `expireTime`; rotate; delete; propagation), team models/endpoints ACLs, billing (`billing-info`, invoices, payment methods, postpaid spending limits, prepaid balance/top-up, `POST …/usage` aggregated by key/model/IP/cluster), audit events; teams/members/ZDR toggle are console-only",6024    "endpoint": "GET /auth/teams/{teamId}/api-keys",6025    "params": [],6026    "status": [6027     "DOCUMENTED",6028     "ACCOUNT_RESTRICTED"6029    ],6030    "notes": "inference key → 401 code 16"6031   },6032   "gemini": {6033    "supported": false,6034    "how": "no admin API on the Developer API: keys/projects/quota live in AI Studio and Google Cloud IAM/Console; `GET /v1beta/models` is the only account-scoped read",6035    "endpoint": "",6036    "params": [],6037    "status": [6038     "DOCUMENTED"6039    ],6040    "notes": ""6041   },6042   "providers_supporting": [6043    "openai",6044    "anthropic",6045    "xai"6046   ],6047   "provider_count": 3,6048   "portable": true,6049   "notes": "Three admin surfaces (OpenAI, Anthropic, xAI — all inaccessible to this atlas's keys); Gemini delegates to Google Cloud.",6050   "ref": "docs/openai/admin-api.md · docs/anthropic/admin-api.md · docs/xai/management-api.md"6051  },6052  {6053   "section": "Auth, versioning, SDKs, platform",6054   "feature": "Usage & cost reporting",6055   "openai": {6056    "supported": true,6057    "how": "`GET /v1/organization/usage/{completions,embeddings,images,…}` + `GET /v1/organization/costs` (buckets 1m/1h/1d, group_by)",6058    "endpoint": "GET /v1/organization/costs",6059    "params": [6060     "start_time",6061     "bucket_width",6062     "group_by"6063    ],6064    "status": [6065     "DOCUMENTED",6066     "ACCOUNT_RESTRICTED"6067    ],6068    "notes": ""6069   },6070   "anthropic": {6071    "supported": true,6072    "how": "`GET /v1/organizations/usage_report/messages`, `/usage_report/claude_code`, `/cost_report`; analytics `/analytics/{usage_report,cost_report,user_*}`",6073    "endpoint": "GET /v1/organizations/cost_report",6074    "params": [6075     "starting_at",6076     "bucket_width",6077     "group_by"6078    ],6079    "status": [6080     "DOCUMENTED",6081     "ACCOUNT_RESTRICTED"6082    ],6083    "notes": ""6084   },6085   "xai": {6086    "supported": true,6087    "how": "per-request **`usage.cost_in_usd_ticks`** (1 USD = 10^10 ticks) on every inference response + `POST /v1/billing/teams/{team_id}/usage` (Management API, aggregated by API key / model / IP / cluster / token type); batch `cost_breakdown` (SDK/gRPC)",6088    "endpoint": "POST /v1/billing/teams/{team_id}/usage",6089    "params": [],6090    "status": [6091     "DOCUMENTED",6092     "ACCOUNT_RESTRICTED",6093     "LIVE_VERIFIED"6094    ],6095    "notes": "cost ticks LIVE_VERIFIED; billing endpoint restricted"6096   },6097   "gemini": {6098    "supported": true,6099    "how": "no reporting endpoint; per-response `usageMetadata` (modality breakdown, `thoughtsTokenCount`, `toolUsePromptTokenCount`, `cachedContentTokenCount`, `serviceTier`) and Interactions `usage {total_*_tokens, *_by_modality, grounding_tool_count}`; billing dashboards in Google Cloud",6100    "endpoint": "POST /v1beta/models/{model}:generateContent",6101    "params": [6102     "usageMetadata"6103    ],6104    "status": [6105     "DOCUMENTED",6106     "LIVE_VERIFIED"6107    ],6108    "notes": ""6109   },6110   "providers_supporting": [6111    "openai",6112    "anthropic",6113    "xai",6114    "gemini"6115   ],6116   "provider_count": 4,6117   "portable": true,6118   "notes": "Org-level reports on OpenAI/Anthropic/xAI; xAI is the only one returning the dollar cost per call; Gemini only per-response token detail.",6119   "ref": "endpoints.json (admin, management) · docs/xai/pricing.md · docs/gemini/generate-content.md"6120  },6121  {6122   "section": "Auth, versioning, SDKs, platform",6123   "feature": "Audit / compliance data access",6124   "openai": {6125    "supported": true,6126    "how": "`GET /v1/organization/audit_logs` (scope `api.audit_logs.read`); safety alerts/cases API",6127    "endpoint": "GET /v1/organization/audit_logs",6128    "params": [],6129    "status": [6130     "DOCUMENTED",6131     "ACCOUNT_RESTRICTED"6132    ],6133    "notes": ""6134   },6135   "anthropic": {6136    "supported": true,6137    "how": "Compliance API (36 endpoints, Claude Enterprise Compliance Access Key): activities feed, chats, projects, files, sessions, roles, groups; DELETE operations",6138    "endpoint": "GET /v1/compliance/activities",6139    "params": [],6140    "status": [6141     "DOCUMENTED",6142     "ACCOUNT_RESTRICTED"6143    ],6144    "notes": ""6145   },6146   "xai": {6147    "supported": true,6148    "how": "`GET /audit/teams/{teamId}/events` (Management API; administrative events only)",6149    "endpoint": "GET /audit/teams/{teamId}/events",6150    "params": [],6151    "status": [6152     "DOCUMENTED",6153     "ACCOUNT_RESTRICTED"6154    ],6155    "notes": ""6156   },6157   "gemini": {6158    "supported": false,6159    "how": "none on the Developer API (Cloud Audit Logs on Vertex AI)",6160    "endpoint": "",6161    "params": [],6162    "status": [6163     "DOCUMENTED"6164    ],6165    "notes": ""6166   },6167   "providers_supporting": [6168    "openai",6169    "anthropic",6170    "xai"6171   ],6172   "provider_count": 3,6173   "portable": true,6174   "notes": "Admin-action logs on OpenAI/Anthropic/xAI; Anthropic additionally exports end-user content (Claude Enterprise).",6175   "ref": "docs/anthropic/compliance-and-iam.md · docs/xai/management-api.md"6176  },6177  {6178   "section": "Auth, versioning, SDKs, platform",6179   "feature": "Spend limits",6180   "openai": {6181    "supported": true,6182    "how": "org/project `spend_limit`, `spend_alerts` Admin endpoints; 429 `insufficient_quota` codes when hit",6183    "endpoint": "POST /v1/organization/spend_limit",6184    "params": [],6185    "status": [6186     "DOCUMENTED"6187    ],6188    "notes": ""6189   },6190   "anthropic": {6191    "supported": true,6192    "how": "`/v1/organizations/spend_limits`, `/spend_limits/effective`, increase requests approve/deny; tier cap → 429 without `retry-after`; self-set limit → 400",6193    "endpoint": "POST /v1/organizations/spend_limits",6194    "params": [],6195    "status": [6196     "DOCUMENTED",6197     "ACCOUNT_RESTRICTED"6198    ],6199    "notes": ""6200   },6201   "xai": {6202    "supported": true,6203    "how": "`GET/POST /v1/billing/teams/{team_id}/postpaid/spending-limits`, prepaid balance / top-up (Management API); per-key `qps/qpm/tpm` caps",6204    "endpoint": "POST /v1/billing/teams/{team_id}/postpaid/spending-limits",6205    "params": [],6206    "status": [6207     "DOCUMENTED",6208     "ACCOUNT_RESTRICTED"6209    ],6210    "notes": ""6211   },6212   "gemini": {6213    "supported": false,6214    "how": "tier spend caps ($250 / $2,000 / $20k+) and rolling 10-minute spend limits ($10 / $50 / $200) are enforced by Google, not configurable via API (Cloud Billing budgets instead)",6215    "endpoint": "",6216    "params": [],6217    "status": [6218     "DOCUMENTED"6219    ],6220    "notes": ""6221   },6222   "providers_supporting": [6223    "openai",6224    "anthropic",6225    "xai"6226   ],6227   "provider_count": 3,6228   "portable": true,6229   "notes": "API-settable on three providers; platform-imposed on Gemini.",6230   "ref": "endpoints.json (admin) · rate-limits.json (gemini)"6231  },6232  {6233   "section": "Auth, versioning, SDKs, platform",6234   "feature": "Cloud availability",6235   "openai": {6236    "supported": true,6237    "how": "Azure OpenAI / Microsoft Foundry (`AzureOpenAI` clients, Azure libraries); regional hosts `us.|eu.|au.|jp.|in.api.openai.com`",6238    "endpoint": "",6239    "params": [],6240    "status": [6241     "DOCUMENTED"6242    ],6243    "notes": "Azure surface not catalogued in this atlas"6244   },6245   "anthropic": {6246    "supported": true,6247    "how": "Amazon Bedrock (Mantle `bedrock-mantle.{region}.api.aws/anthropic/v1/messages` and legacy InvokeModel), Google Cloud Vertex AI (`rawPredict`), Microsoft Foundry (`/anthropic/v1/*`), Claude Platform on AWS; feature gaps per platform (no Batches/Files/Skills/server tools on Bedrock/Vertex)",6248    "endpoint": "",6249    "params": [],6250    "status": [6251     "DOCUMENTED",6252     "UNVERIFIED"6253    ],6254    "notes": "24 cloud endpoint records"6255   },6256   "xai": {6257    "supported": true,6258    "how": "Google Cloud **Vertex AI Model Garden** (partner model) and **Microsoft Foundry** (Azure) — OpenAI-compatible chat + Responses, cloud billing; also OpenRouter, Vercel AI Gateway, Cloudflare, Cursor; **regional first-party endpoints** `https://us.api.x.ai/v1` (US-pinned, grok-4.6, 1.1×) and `https://eu-west-1.api.x.ai/v1` (undocumented, grok-4.3, LIVE_DISCOVERED); clusters us-east-1, us-west-2, us-central-1, eu-west-1, us-saltlake-2",6259    "endpoint": "",6260    "params": [],6261    "status": [6262     "DOCUMENTED",6263     "LIVE_DISCOVERED"6264    ],6265    "notes": ""6266   },6267   "gemini": {6268    "supported": true,6269    "how": "Gemini Developer API (`generativelanguage.googleapis.com`, global, API key) **vs Vertex AI / Gemini Enterprise Agent Platform** (`{location}-aiplatform.googleapis.com`, IAM only, ~40 regions, data residency, ZDR, CMEK, VPC-SC, provisioned throughput, supervised tuning, RAG/Agent Engine); one SDK, two backends; Developer-API-only: Interactions, Live, Files, File Search, agents, free tier",6270    "endpoint": "",6271    "params": [],6272    "status": [6273     "DOCUMENTED"6274    ],6275    "notes": "Vertex surface not catalogued in this atlas"6276   },6277   "providers_supporting": [6278    "openai",6279    "anthropic",6280    "xai",6281    "gemini"6282   ],6283   "provider_count": 4,6284   "portable": true,6285   "notes": "Claude and Grok are resold on other clouds; OpenAI and Gemini have first-party cloud twins (Azure/Foundry, Vertex).",6286   "ref": "docs/anthropic/cloud-providers.md · docs/openai/data-residency-and-regions.md · docs/xai/sdks.md · docs/gemini/vertex-vs-gemini-api.md"6287  },6288  {6289   "section": "Auth, versioning, SDKs, platform",6290   "feature": "Data residency",6291   "openai": {6292    "supported": true,6293    "how": "project region at creation; regional hosts `us./eu./au./jp./in.api.openai.com`; 10 % uplift for models ≥2026-03-05; EU lacks `background:true`",6294    "endpoint": "",6295    "params": [],6296    "status": [6297     "DOCUMENTED",6298     "ACCOUNT_RESTRICTED"6299    ],6300    "notes": ""6301   },6302   "anthropic": {6303    "supported": true,6304    "how": "`inference_geo: us|global` per request (Claude 4.6+; 1.1× multiplier for `us`); workspace `default_inference_geo`; `usage.inference_geo` echo; Bedrock/Vertex regional endpoints +10 %",6305    "endpoint": "POST /v1/messages",6306    "params": [6307     "inference_geo"6308    ],6309    "status": [6310     "DOCUMENTED",6311     "FAILED_VERIFICATION"6312    ],6313    "notes": "400 on Haiku 4.5 live"6314   },6315   "xai": {6316    "supported": true,6317    "how": "base-URL choice: `https://us.api.x.ai/v1` keeps request handling, inference, moderation and retained data in the US at **1.1×** token prices (grok-4.6 only; no image/video/voice); global `api.x.ai` gives no region guarantee",6318    "endpoint": "",6319    "params": [],6320    "status": [6321     "DOCUMENTED",6322     "LIVE_VERIFIED"6323    ],6324    "notes": "`eu-west-1.api.x.ai` serves grok-4.3 at global prices (undocumented)"6325   },6326   "gemini": {6327    "supported": false,6328    "how": "no residency option on the Developer API (global endpoint); residency, CMEK and ~40 regions are Vertex AI features",6329    "endpoint": "",6330    "params": [],6331    "status": [6332     "DOCUMENTED"6333    ],6334    "notes": ""6335   },6336   "providers_supporting": [6337    "openai",6338    "anthropic",6339    "xai"6340   ],6341   "provider_count": 3,6342   "portable": true,6343   "notes": "Regional pinning costs ~10 % on OpenAI, Anthropic and xAI alike; Gemini requires moving to Vertex.",6344   "ref": "docs/anthropic/regions-and-ips.md · docs/openai/data-residency-and-regions.md · docs/xai/pricing.md · docs/gemini/vertex-vs-gemini-api.md"6345  },6346  {6347   "section": "Auth, versioning, SDKs, platform",6348   "feature": "Zero data retention / data-use terms",6349   "openai": {6350    "supported": true,6351    "how": "ZDR/Modified retention by approval; `store:false` keeps reasoning encrypted; Live recordings and Agents sessions excluded",6352    "endpoint": "",6353    "params": [6354     "store"6355    ],6356    "status": [6357     "DOCUMENTED"6358    ],6359    "notes": ""6360   },6361   "anthropic": {6362    "supported": true,6363    "how": "Messages stateless → ZDR-eligible on Claude API (per model flag `zero_data_retention_eligible`); not eligible: Files API, MCP connector, programmatic tool calling, Managed Agents, Fable 5.1 / Mythos 5.1",6364    "endpoint": "",6365    "params": [],6366    "status": [6367     "DOCUMENTED"6368    ],6369    "notes": ""6370   },6371   "xai": {6372    "supported": true,6373    "how": "team-wide **ZDR toggle** (console): response header `x-zero-data-retention: true|false`, `GET /v1/me` → `zdr_status: no_zdr|zdr`; disables `store`, `previous_response_id`, Files, Collections, Batch, deferred completions, stored media; default retention 30 days, not used for training; encrypted reasoning replay keeps ZDR + caching",6374    "endpoint": "",6375    "params": [],6376    "status": [6377     "DOCUMENTED",6378     "LIVE_VERIFIED"6379    ],6380    "notes": "our team: `no_zdr`"6381   },6382   "gemini": {6383    "supported": true,6384    "how": "**Unpaid Services** (free tier): prompts/responses may be used to improve Google products, with human review; **Paid Services**: not used for training, 55-day abuse logging; ZDR **not achievable** on the Developer API (grounding stores 30 days; Interactions state unless `store:false`) — Vertex AI offers ZDR; EEA/UK/CH end-user apps must use Paid Services",6385    "endpoint": "",6386    "params": [6387     "store"6388    ],6389    "status": [6390     "DOCUMENTED"6391    ],6392    "notes": ""6393   },6394   "providers_supporting": [6395    "openai",6396    "anthropic",6397    "xai",6398    "gemini"6399   ],6400   "provider_count": 4,6401   "portable": true,6402   "notes": "ZDR is a program (OpenAI), a per-model eligibility (Anthropic), a team switch (xAI) and unavailable on Gemini's Developer API.",6403   "ref": "models.json (anthropic capabilities.zero_data_retention_eligible) · docs/xai/management-api.md · docs/gemini/authentication-headers-versions.md"6404  },6405  {6406   "section": "Auth, versioning, SDKs, platform",6407   "feature": "OpenAI-compatibility layer",6408   "openai": {6409    "supported": true,6410    "how": "the native surface (Responses + Chat Completions)",6411    "endpoint": "POST /v1/chat/completions",6412    "params": [],6413    "status": [6414     "DOCUMENTED",6415     "LIVE_VERIFIED"6416    ],6417    "notes": ""6418   },6419   "anthropic": {6420    "supported": false,6421    "how": "none — Anthropic exposes only its own Messages format (partners such as xAI implement it)",6422    "endpoint": "",6423    "params": [],6424    "status": [6425     "DOCUMENTED"6426    ],6427    "notes": ""6428   },6429   "xai": {6430    "supported": true,6431    "how": "**native**: the whole inference API is OpenAI-shaped (`/v1/chat/completions`, `/v1/responses` incl. items and SSE events, `/v1/batches`, `/v1/files`, `/v1/images/*`, `/v1/realtime` events); rejected/ignored OpenAI fields: `background`, `metadata` (Responses 400), `logit_bias` 400, `stop`/penalties on reasoning models 400, `logprobs` ignored, `store` ignored on Chat, non-function tools 422, `images.edit()` multipart unsupported; extras: `reasoning_effort`, `reasoning_content`, `deferred`, `max_turns`, `top_k`, `min_p`, `cost_in_usd_ticks`",6432    "endpoint": "POST /v1/responses",6433    "params": [],6434    "status": [6435     "DOCUMENTED",6436     "LIVE_VERIFIED"6437    ],6438    "notes": "plus an Anthropic-compatible `/v1/messages` (deprecated)"6439   },6440   "gemini": {6441    "supported": true,6442    "how": "`/v1beta/openai/*` (BETA): `chat/completions` (LIVE_VERIFIED), `embeddings`, `models[/{id}]`, `images/generations` (subset), `videos` (Sora-style Veo), `batches`; Bearer key required; `reasoning_effort` → `thinkingLevel` mapping; `extra_body.google {thinking_config, cached_content, safety_settings, tools[{google_search}]}`; `message.extra_content.google.thought_signature`; unknown params silently ignored; **no** Responses, Assistants, audio, files, fine-tuning, moderations",6443    "endpoint": "POST /v1beta/openai/chat/completions",6444    "params": [6445     "extra_body.google.thinking_config",6446     "extra_body.google.cached_content",6447     "reasoning_effort"6448    ],6449    "status": [6450     "DOCUMENTED",6451     "BETA",6452     "LIVE_VERIFIED"6453    ],6454    "notes": "7 endpoints; google.rpc error envelope"6455   },6456   "providers_supporting": [6457    "openai",6458    "xai",6459    "gemini"6460   ],6461   "provider_count": 3,6462   "portable": true,6463   "notes": "xAI is OpenAI-shaped by design; Gemini offers a partial adapter; Anthropic none.",6464   "ref": "docs/xai/chat-completions.md · docs/xai/responses.md · docs/gemini/openai-compatibility.md"6465  },6466  {6467   "section": "Managed agents platforms",6468   "feature": "Managed agent harness",6469   "openai": {6470    "supported": true,6471    "how": "Agents API (beta `OpenAI-Beta: agents=v1`): `POST /v1/agents` (model, instructions, reasoning, text, tools, multi_agent), sessions, turns, items, events, environments, templates, vaults; Codex harness; 34 + 9 endpoints",6472    "endpoint": "POST /v1/agents",6473    "params": [6474     "model",6475     "instructions",6476     "tools",6477     "multi_agent"6478    ],6479    "status": [6480     "DOCUMENTED",6481     "BETA",6482     "LIVE_VERIFIED"6483    ],6484    "notes": "gpt-5.4-nano rejected; gpt-5.6-luna accepted"6485   },6486   "anthropic": {6487    "supported": true,6488    "how": "Claude Managed Agents (beta `managed-agents-2026-04-01`): `POST /v1/agents` (name, model, system, tools, mcp_servers, skills, multiagent) with **versions**, `/v1/sessions` + events/stream, environments, deployments (cron), vaults, memory stores, dreams, tunnels, user profiles; 96 endpoints",6489    "endpoint": "POST /v1/agents",6490    "params": [6491     "name",6492     "model",6493     "system",6494     "tools",6495     "mcp_servers",6496     "skills",6497     "multiagent"6498    ],6499    "status": [6500     "DOCUMENTED",6501     "BETA",6502     "LIVE_VERIFIED"6503    ],6504    "notes": "Claude 4.5+ models"6505   },6506   "xai": {6507    "supported": true,6508    "how": "no agent resource: the **Responses API agentic loop** (server-side tools iterate inside one request, bounded by `max_turns`; stored responses + `previous_response_id` = the session); `grok-4.20-multi-agent-0309` (BETA) as a built-in multi-agent model; **Grok Build** (`grok-build-0.1` PREVIEW model + `grok` CLI BETA: TUI/headless/ACP, MCP, hooks, skills, subagents, sandbox) is a client-side harness",6509    "endpoint": "POST /v1/responses",6510    "params": [6511     "tools",6512     "max_turns",6513     "store",6514     "previous_response_id"6515    ],6516    "status": [6517     "DOCUMENTED",6518     "LIVE_VERIFIED",6519     "BETA"6520    ],6521    "notes": "Skills API 404 for this team"6522   },6523   "gemini": {6524    "supported": true,6525    "how": "**Interactions API** agents (`agent` instead of `model`): Deep Research (`deep-research-preview-04-2026`, `-max-`, `agent_config {collaborative_planning, thinking_summaries, visualization}`, background only, ≤60 min), Antigravity coding agent (`antigravity-preview-09-2026`, Linux sandbox 4 vCPU/16 GB, `agent_config {model, max_total_tokens}`, hooks), custom managed agents `POST /v1beta/agents {base_agent, agent_config, system_instruction, tools, base_environment}` (≤1,000/project, no versioning); environments, credentials, triggers (cron), webhooks",6526    "endpoint": "POST /v1beta/interactions",6527    "params": [6528     "agent",6529     "agent_config",6530     "environment",6531     "background"6532    ],6533    "status": [6534     "DOCUMENTED",6535     "BETA",6536     "PREVIEW",6537     "LIVE_VERIFIED"6538    ],6539    "notes": "Deep Research LIVE_VERIFIED (create → in_progress → cancel); custom agents / triggers / credentials not tested; sandbox compute unbilled in preview"6540   },6541   "providers_supporting": [6542    "openai",6543    "anthropic",6544    "xai",6545    "gemini"6546   ],6547   "provider_count": 4,6548   "portable": true,6549   "notes": "Four different shapes: agent → session → events (OpenAI, Anthropic), a stateful request loop (xAI), agent-as-model inside Interactions (Gemini).",6550   "ref": "docs/comparisons/agents-platforms.md · docs/xai/responses.md · docs/xai/grok-build.md · docs/gemini/interactions-api.md"6551  },6552  {6553   "section": "Managed agents platforms",6554   "feature": "Create an agent session / run",6555   "openai": {6556    "supported": true,6557    "how": "`POST /v1/agents/sessions {agent|agent_id, environment (required: none|openai_hosted|self_hosted), input, stream, vault_ids}` → 201 `agent.session`",6558    "endpoint": "POST /v1/agents/sessions",6559    "params": [6560     "agent_id",6561     "environment",6562     "input",6563     "stream"6564    ],6565    "status": [6566     "DOCUMENTED",6567     "BETA",6568     "LIVE_VERIFIED"6569    ],6570    "notes": ""6571   },6572   "anthropic": {6573    "supported": true,6574    "how": "`POST /v1/sessions {agent, environment_id (required), initial_events[], resources[], vault_ids[], budget, title}` → 200 `session`",6575    "endpoint": "POST /v1/sessions",6576    "params": [6577     "agent",6578     "environment_id",6579     "initial_events",6580     "budget"6581    ],6582    "status": [6583     "DOCUMENTED",6584     "BETA",6585     "LIVE_VERIFIED"6586    ],6587    "notes": ""6588   },6589   "xai": {6590    "supported": true,6591    "how": "`POST /v1/responses {model, input, tools[], max_turns, store}` → the stored response is the session; continue with `previous_response_id`",6592    "endpoint": "POST /v1/responses",6593    "params": [6594     "model",6595     "input",6596     "tools",6597     "max_turns"6598    ],6599    "status": [6600     "DOCUMENTED",6601     "LIVE_VERIFIED"6602    ],6603    "notes": ""6604   },6605   "gemini": {6606    "supported": true,6607    "how": "`POST /v1beta/interactions {agent|model, input, background, store, environment, tools, webhook_config}` → `interaction {id, status, steps[]}`; chain with `previous_interaction_id`",6608    "endpoint": "POST /v1beta/interactions",6609    "params": [6610     "agent",6611     "input",6612     "background",6613     "previous_interaction_id"6614    ],6615    "status": [6616     "DOCUMENTED",6617     "BETA",6618     "LIVE_VERIFIED"6619    ],6620    "notes": "`/v1/interactions` GA UNVERIFIED"6621   },6622   "providers_supporting": [6623    "openai",6624    "anthropic",6625    "xai",6626    "gemini"6627   ],6628   "provider_count": 4,6629   "portable": true,6630   "notes": "See FAQ Q5 for the body-level comparison.",6631   "ref": "endpoints.json · docs/faq.md Q5"6632  },6633  {6634   "section": "Managed agents platforms",6635   "feature": "Send input / events to a session",6636   "openai": {6637    "supported": true,6638    "how": "`POST /v1/agents/sessions/{id}/events` with `agent.session.input.message|tool_result|cancel` → 202",6639    "endpoint": "POST /v1/agents/sessions/{session_id}/events",6640    "params": [],6641    "status": [6642     "DOCUMENTED",6643     "BETA",6644     "LIVE_VERIFIED"6645    ],6646    "notes": ""6647   },6648   "anthropic": {6649    "supported": true,6650    "how": "`POST /v1/sessions/{id}/events` with `user.message|interrupt|tool_confirmation|custom_tool_result|tool_result|define_outcome`, `system.message`",6651    "endpoint": "POST /v1/sessions/{session_id}/events",6652    "params": [],6653    "status": [6654     "DOCUMENTED",6655     "BETA",6656     "LIVE_VERIFIED"6657    ],6658    "notes": ""6659   },6660   "xai": {6661    "supported": true,6662    "how": "a new `POST /v1/responses` with `previous_response_id` (user message or `function_call_output` / `shell_call_output` items)",6663    "endpoint": "POST /v1/responses",6664    "params": [6665     "previous_response_id",6666     "input[](function_call_output)"6667    ],6668    "status": [6669     "DOCUMENTED",6670     "LIVE_VERIFIED"6671    ],6672    "notes": ""6673   },6674   "gemini": {6675    "supported": true,6676    "how": "a new `POST /v1beta/interactions` with `previous_interaction_id` and `input` (user text or `function_result` steps); `POST …/cancel` to stop",6677    "endpoint": "POST /v1beta/interactions",6678    "params": [6679     "previous_interaction_id",6680     "input"6681    ],6682    "status": [6683     "DOCUMENTED",6684     "BETA",6685     "LIVE_VERIFIED"6686    ],6687    "notes": "`interaction.requires_action` for function calls"6688   },6689   "providers_supporting": [6690    "openai",6691    "anthropic",6692    "xai",6693    "gemini"6694   ],6695   "provider_count": 4,6696   "portable": true,6697   "notes": "Dedicated event endpoints (OpenAI, Anthropic) vs chained requests (xAI, Gemini).",6698   "ref": "streaming-events.json (client→server)"6699  },6700  {6701   "section": "Managed agents platforms",6702   "feature": "Session event stream",6703   "openai": {6704    "supported": true,6705    "how": "SSE via `POST /sessions {stream:true}` or `GET …/events?stream=true`; 31 event types `agent.session.*`, `agent.output.*`",6706    "endpoint": "GET /v1/agents/sessions/{session_id}/events",6707    "params": [],6708    "status": [6709     "DOCUMENTED",6710     "BETA",6711     "LIVE_VERIFIED"6712    ],6713    "notes": ""6714   },6715   "anthropic": {6716    "supported": true,6717    "how": "`GET /v1/sessions/{id}/events/stream` (+ per-thread `/threads/{id}/stream`); 37 event types `agent.*`, `session.*`, `span.*`, `event_start/delta`",6718    "endpoint": "GET /v1/sessions/{session_id}/events/stream",6719    "params": [],6720    "status": [6721     "DOCUMENTED",6722     "BETA",6723     "LIVE_VERIFIED"6724    ],6725    "notes": ""6726   },6727   "xai": {6728    "supported": true,6729    "how": "the ordinary Responses SSE stream (24 recorded events incl. `response.code_interpreter_call.*`, `response.web_search_call.*`, `response.mcp_call.*`) or `wss://api.x.ai/v1/responses`",6730    "endpoint": "POST /v1/responses",6731    "params": [6732     "stream"6733    ],6734    "status": [6735     "DOCUMENTED",6736     "LIVE_VERIFIED"6737    ],6738    "notes": ""6739   },6740   "gemini": {6741    "supported": true,6742    "how": "Interactions SSE (`stream:true`): `interaction.created → interaction.status_update → step.start → step.delta {text|thought_signature|arguments_delta|function_result|*_call…} → step.stop → interaction.completed → done [DONE]`; resumable with `GET …?stream=true&last_event_id=`; 15 recorded events (5 legacy names RETIRED 2026-06-08)",6743    "endpoint": "POST /v1beta/interactions",6744    "params": [6745     "stream",6746     "last_event_id"6747    ],6748    "status": [6749     "DOCUMENTED",6750     "BETA",6751     "LIVE_VERIFIED"6752    ],6753    "notes": ""6754   },6755   "providers_supporting": [6756    "openai",6757    "anthropic",6758    "xai",6759    "gemini"6760   ],6761   "provider_count": 4,6762   "portable": true,6763   "notes": "",6764   "ref": "streaming-events.json"6765  },6766  {6767   "section": "Managed agents platforms",6768   "feature": "Hosted sandbox",6769   "openai": {6770    "supported": true,6771    "how": "`environment.type: openai_hosted {packages, setup_commands, network, env, skills, plugins, files, environment_template_id}`; `/workspace`; artifacts from `/workspace/outputs`; ~1 h idle expiry; container rates",6772    "endpoint": "POST /v1/agents/sessions",6773    "params": [6774     "environment"6775    ],6776    "status": [6777     "DOCUMENTED",6778     "BETA"6779    ],6780    "notes": ""6781   },6782   "anthropic": {6783    "supported": true,6784    "how": "`POST /v1/environments {type: cloud, …}` (Ubuntu 24.04, 8 GB RAM, 10 GB disk, `/workspace`, `/mnt/session/{uploads,outputs}`, `/mnt/memory`); state kept 30 days; $0.08/session-hour",6785    "endpoint": "POST /v1/environments",6786    "params": [],6787    "status": [6788     "DOCUMENTED",6789     "BETA",6790     "LIVE_VERIFIED"6791    ],6792    "notes": ""6793   },6794   "xai": {6795    "supported": false,6796    "how": "no hosted sandbox for agents (the `code_interpreter` tool runs Python without a container object; Grok Build sandboxes locally)",6797    "endpoint": "POST /v1/responses",6798    "params": [],6799    "status": [6800     "DOCUMENTED"6801    ],6802    "notes": ""6803   },6804   "gemini": {6805    "supported": true,6806    "how": "`POST /v1beta/environments {sources[] (repository ≤500 MB | gcs ≤2 GB | inline ≤1 MB/file), network (unrestricted|disabled|allowlist with credentials), from_environment}`; Antigravity sandbox 4 vCPU / 16 GB (Python 3.12, Node 22); files `GET …/files/{path}`, `PUT /upload/…/files/{path}`; idle after 15 min, deleted after 7 days; compute **unbilled during preview**",6807    "endpoint": "POST /v1beta/environments",6808    "params": [6809     "sources",6810     "network"6811    ],6812    "status": [6813     "DOCUMENTED",6814     "BETA",6815     "PREVIEW",6816     "LIVE_VERIFIED"6817    ],6818    "notes": "live GET showed `storage.tier: free`, 1 GiB project limit"6819   },6820   "providers_supporting": [6821    "openai",6822    "anthropic",6823    "gemini"6824   ],6825   "provider_count": 3,6826   "portable": true,6827   "notes": "Three hosted sandboxes (OpenAI, Anthropic, Gemini); none on xAI.",6828   "ref": "docs/openai/agents-environments-and-vaults.md · docs/anthropic/managed-agents.md §8 · docs/gemini/interactions-api.md"6829  },6830  {6831   "section": "Managed agents platforms",6832   "feature": "Self-hosted execution",6833   "openai": {6834    "supported": true,6835    "how": "`environment.type: self_hosted {workspace_directory}` + `codex exec-server --remote …` executor with environment key `CODEX_API_KEY`; outbound only",6836    "endpoint": "POST /v1/agents/sessions",6837    "params": [6838     "environment"6839    ],6840    "status": [6841     "DOCUMENTED",6842     "BETA"6843    ],6844    "notes": ""6845   },6846   "anthropic": {6847    "supported": true,6848    "how": "`type: self_hosted` environment = work queue (`/environments/{id}/work`, poll/ack/heartbeat/stop) + worker (`ant beta:worker`, SDK `EnvironmentWorker`) with environment key `sk-ant-oat01-…`",6849    "endpoint": "GET /v1/environments/{environment_id}/work/poll",6850    "params": [],6851    "status": [6852     "DOCUMENTED",6853     "BETA"6854    ],6855    "notes": ""6856   },6857   "xai": {6858    "supported": true,6859    "how": "client-side by construction: `shell {environment: local}` and `function` tools end the server loop and hand control back; Grok Build CLI runs everything locally",6860    "endpoint": "POST /v1/responses",6861    "params": [6862     "tools[type=shell].environment"6863    ],6864    "status": [6865     "DOCUMENTED",6866     "LIVE_VERIFIED"6867    ],6868    "notes": ""6869   },6870   "gemini": {6871    "supported": false,6872    "how": "no self-hosted worker protocol; function calls (`interaction.requires_action`) are the only client-side hook",6873    "endpoint": "POST /v1beta/interactions",6874    "params": [],6875    "status": [6876     "DOCUMENTED"6877    ],6878    "notes": ""6879   },6880   "providers_supporting": [6881    "openai",6882    "anthropic",6883    "xai"6884   ],6885   "provider_count": 3,6886   "portable": true,6887   "notes": "Worker protocols on OpenAI/Anthropic; plain tool round-trips on xAI/Gemini.",6888   "ref": "endpoints.json (managed-agents)"6889  },6890  {6891   "section": "Managed agents platforms",6892   "feature": "Credential vaults / secrets",6893   "openai": {6894    "supported": true,6895    "how": "`/v1/vaults`, `/vaults/{id}/credentials` (rotate/delete); referenced by `vault_ids[]` and `mcp.credential_id`",6896    "endpoint": "POST /v1/vaults",6897    "params": [],6898    "status": [6899     "DOCUMENTED",6900     "BETA",6901     "LIVE_VERIFIED"6902    ],6903    "notes": "9 endpoints"6904   },6905   "anthropic": {6906    "supported": true,6907    "how": "`/v1/vaults`, `/vaults/{id}/credentials` (`mcp_oauth` with refresh, `environment_variable`), `mcp_oauth_validate`; `vault_credential.refresh_failed` webhook",6908    "endpoint": "POST /v1/vaults",6909    "params": [],6910    "status": [6911     "DOCUMENTED",6912     "BETA",6913     "LIVE_VERIFIED"6914    ],6915    "notes": "13 endpoints"6916   },6917   "xai": {6918    "supported": false,6919    "how": "pass `authorization` / `headers` on the `mcp` tool per request; no vault",6920    "endpoint": "POST /v1/responses",6921    "params": [6922     "tools[type=mcp].authorization"6923    ],6924    "status": [6925     "DOCUMENTED"6926    ],6927    "notes": ""6928   },6929   "gemini": {6930    "supported": true,6931    "how": "`/v1beta/credentials` (`bearer_token`, `oauth2`, `environment_variable` with `injection_location`, `trusted_domains`); write-only secrets; referenced from environment network allowlists",6932    "endpoint": "POST /v1beta/credentials",6933    "params": [],6934    "status": [6935     "DOCUMENTED",6936     "BETA",6937     "PREVIEW"6938    ],6939    "notes": "5 endpoints, not tested"6940   },6941   "providers_supporting": [6942    "openai",6943    "anthropic",6944    "gemini"6945   ],6946   "provider_count": 3,6947   "portable": true,6948   "notes": "Three secret stores; xAI inlines credentials.",6949   "ref": "endpoints.json"6950  },6951  {6952   "section": "Managed agents platforms",6953   "feature": "Multi-agent / subagents",6954   "openai": {6955    "supported": true,6956    "how": "`multi_agent {enabled, max_concurrent_subagents (6)}`; `/sessions/{id}/subagents[/{id}/items|turns]`; items `create_subagent_call`, `wait_for_subagents_call`…; also Responses beta `responses_multi_agent=v1`",6957    "endpoint": "GET /v1/agents/sessions/{session_id}/subagents",6958    "params": [6959     "multi_agent"6960    ],6961    "status": [6962     "DOCUMENTED",6963     "BETA",6964     "LIVE_VERIFIED"6965    ],6966    "notes": ""6967   },6968   "anthropic": {6969    "supported": true,6970    "how": "`multiagent {type: coordinator, agents[] (≤20, incl. self and one advisor)}`; threads (`/sessions/{id}/threads`, ≤25 concurrent); events `agent.thread_message_*`",6971    "endpoint": "GET /v1/sessions/{session_id}/threads",6972    "params": [6973     "multiagent"6974    ],6975    "status": [6976     "DOCUMENTED",6977     "BETA"6978    ],6979    "notes": ""6980   },6981   "xai": {6982    "supported": true,6983    "how": "`grok-4.20-multi-agent-0309` (BETA): the model itself fans out to 4 or 16 agents per `reasoning.effort`; no subagent resources; Grok Build CLI has client-side subagents",6984    "endpoint": "POST /v1/responses",6985    "params": [6986     "reasoning.effort"6987    ],6988    "status": [6989     "DOCUMENTED",6990     "BETA",6991     "LIVE_VERIFIED"6992    ],6993    "notes": "live output carried `\\confidence{80}` markers"6994   },6995   "gemini": {6996    "supported": false,6997    "how": "no sub-agents or delegation for custom agents (docs); Deep Research orchestrates internally",6998    "endpoint": "POST /v1beta/interactions",6999    "params": [],7000    "status": [7001     "DOCUMENTED"7002    ],7003    "notes": ""7004   },7005   "providers_supporting": [7006    "openai",7007    "anthropic",7008    "xai"7009   ],7010   "provider_count": 3,7011   "portable": true,7012   "notes": "Orchestration APIs on OpenAI/Anthropic; a multi-agent model on xAI; internal only on Gemini.",7013   "ref": "docs/comparisons/agents-platforms.md · docs/models/xai-models.md"7014  },7015  {7016   "section": "Managed agents platforms",7017   "feature": "Session budgets",7018   "openai": {7019    "supported": false,7020    "how": "no documented budget parameter; turn error code `session_budget_exceeded` exists",7021    "endpoint": "",7022    "params": [],7023    "status": [7024     "DOCUMENTED",7025     "UNVERIFIED"7026    ],7027    "notes": ""7028   },7029   "anthropic": {7030    "supported": true,7031    "how": "`budget {type: limit, max_list_cost {amount (cents), currency: USD}}` enforced between model requests; `session.budget_reached` webhook",7032    "endpoint": "POST /v1/sessions",7033    "params": [7034     "budget"7035    ],7036    "status": [7037     "DOCUMENTED",7038     "BETA"7039    ],7040    "notes": ""7041   },7042   "xai": {7043    "supported": true,7044    "how": "`max_turns` per Responses request (turn budget)",7045    "endpoint": "POST /v1/responses",7046    "params": [7047     "max_turns"7048    ],7049    "status": [7050     "DOCUMENTED",7051     "LIVE_VERIFIED"7052    ],7053    "notes": ""7054   },7055   "gemini": {7056    "supported": true,7057    "how": "Antigravity `agent_config.max_total_tokens` → `status: incomplete`",7058    "endpoint": "POST /v1beta/interactions",7059    "params": [7060     "agent_config(antigravity).max_total_tokens"7061    ],7062    "status": [7063     "DOCUMENTED",7064     "PREVIEW"7065    ],7066    "notes": ""7067   },7068   "providers_supporting": [7069    "anthropic",7070    "xai",7071    "gemini"7072   ],7073   "provider_count": 3,7074   "portable": false,7075   "notes": "Money (Anthropic), turns (xAI), tokens (Gemini) — not interchangeable.",7076   "ref": "docs/anthropic/managed-agents.md §13 · docs/xai/responses.md · docs/gemini/interactions-api.md"7077  },7078  {7079   "section": "Managed agents platforms",7080   "feature": "Outcome grading (define outcome + rubric)",7081   "openai": {7082    "supported": false,7083    "how": "not offered",7084    "endpoint": "",7085    "params": [],7086    "status": [7087     "UNVERIFIED"7088    ],7089    "notes": "no equivalent surface in the documented API"7090   },7091   "anthropic": {7092    "supported": true,7093    "how": "`user.define_outcome` event → grader loop (`max_iterations` ≤20), `span.outcome_evaluation_*` events, `outcome_evaluations[]` on the session",7094    "endpoint": "POST /v1/sessions/{session_id}/events",7095    "params": [],7096    "status": [7097     "DOCUMENTED",7098     "BETA"7099    ],7100    "notes": ""7101   },7102   "xai": {7103    "supported": false,7104    "how": "not offered",7105    "endpoint": "",7106    "params": [],7107    "status": [7108     "UNVERIFIED"7109    ],7110    "notes": "no equivalent surface in the documented API"7111   },7112   "gemini": {7113    "supported": false,7114    "how": "not offered",7115    "endpoint": "",7116    "params": [],7117    "status": [7118     "UNVERIFIED"7119    ],7120    "notes": "no equivalent surface in the documented API"7121   },7122   "providers_supporting": [7123    "anthropic"7124   ],7125   "provider_count": 1,7126   "portable": false,7127   "notes": "Anthropic-only.",7128   "ref": "docs/anthropic/managed-agents.md §13"7129  },7130  {7131   "section": "Managed agents platforms",7132   "feature": "Server-side memory stores",7133   "openai": {7134    "supported": false,7135    "how": "not offered",7136    "endpoint": "",7137    "params": [],7138    "status": [7139     "UNVERIFIED"7140    ],7141    "notes": "no equivalent surface in the documented API"7142   },7143   "anthropic": {7144    "supported": true,7145    "how": "`/v1/memory_stores` (+ memories, versions, redact); mounted at `/mnt/memory`; beta `agent-memory-2026-07-22`; Dreams (`/v1/dreams`, `dreaming-2026-04-21`) reorganise them",7146    "endpoint": "POST /v1/memory_stores",7147    "params": [],7148    "status": [7149     "DOCUMENTED",7150     "BETA",7151     "LIVE_VERIFIED"7152    ],7153    "notes": "14 + 5 endpoints"7154   },7155   "xai": {7156    "supported": false,7157    "how": "not offered",7158    "endpoint": "",7159    "params": [],7160    "status": [7161     "UNVERIFIED"7162    ],7163    "notes": "no equivalent surface in the documented API"7164   },7165   "gemini": {7166    "supported": false,7167    "how": "not offered",7168    "endpoint": "",7169    "params": [],7170    "status": [7171     "UNVERIFIED"7172    ],7173    "notes": "no equivalent surface in the documented API"7174   },7175   "providers_supporting": [7176    "anthropic"7177   ],7178   "provider_count": 1,7179   "portable": false,7180   "notes": "Anthropic-only.",7181   "ref": "endpoints.json"7182  },7183  {7184   "section": "Managed agents platforms",7185   "feature": "Scheduled runs",7186   "openai": {7187    "supported": false,7188    "how": "not offered",7189    "endpoint": "",7190    "params": [],7191    "status": [7192     "UNVERIFIED"7193    ],7194    "notes": "no equivalent surface in the documented API"7195   },7196   "anthropic": {7197    "supported": true,7198    "how": "`/v1/deployments` (cron) → `/v1/deployment_runs`; pause/unpause/run now",7199    "endpoint": "POST /v1/deployments",7200    "params": [],7201    "status": [7202     "DOCUMENTED",7203     "BETA",7204     "LIVE_VERIFIED"7205    ],7206    "notes": ""7207   },7208   "xai": {7209    "supported": false,7210    "how": "not offered",7211    "endpoint": "",7212    "params": [],7213    "status": [7214     "UNVERIFIED"7215    ],7216    "notes": "no equivalent surface in the documented API"7217   },7218   "gemini": {7219    "supported": true,7220    "how": "`/v1beta/triggers {schedule (cron), time_zone, display_name, max_consecutive_failures, execution_timeout_seconds, interaction}`; `PATCH {status: paused|active}`; `POST|GET …/executions`",7221    "endpoint": "POST /v1beta/triggers",7222    "params": [7223     "schedule",7224     "time_zone",7225     "interaction"7226    ],7227    "status": [7228     "DOCUMENTED",7229     "BETA",7230     "PREVIEW"7231    ],7232    "notes": "7 endpoints, not tested"7233   },7234   "providers_supporting": [7235    "anthropic",7236    "gemini"7237   ],7238   "provider_count": 2,7239   "portable": true,7240   "notes": "Anthropic deployments ≈ Gemini triggers.",7241   "ref": "endpoints.json"7242  },7243  {7244   "section": "Managed agents platforms",7245   "feature": "Artifacts / deliverables",7246   "openai": {7247    "supported": true,7248    "how": "`/sessions/{id}/artifacts[/{id}/content]` from `/workspace/outputs` (≤200 MiB each)",7249    "endpoint": "GET /v1/agents/sessions/{session_id}/artifacts",7250    "params": [],7251    "status": [7252     "DOCUMENTED",7253     "BETA",7254     "LIVE_VERIFIED"7255    ],7256    "notes": ""7257   },7258   "anthropic": {7259    "supported": true,7260    "how": "files written to `/mnt/session/outputs` → `GET /v1/files?scope_id=<session>` + `/content`",7261    "endpoint": "GET /v1/files",7262    "params": [],7263    "status": [7264     "DOCUMENTED",7265     "BETA"7266    ],7267    "notes": ""7268   },7269   "xai": {7270    "supported": false,7271    "how": "tool outputs (`code_interpreter_call.outputs`, image/video `file_output`) via `include` or the Files API; no artifact resource",7272    "endpoint": "POST /v1/responses",7273    "params": [7274     "include"7275    ],7276    "status": [7277     "DOCUMENTED"7278    ],7279    "notes": ""7280   },7281   "gemini": {7282    "supported": true,7283    "how": "environment files: `GET /v1beta/environments/{env}/files/{path}?alt=media` (file bytes or tar), legacy `GET /v1beta/files/environment-{env}:download`; Deep Research reports as `model_output` steps (text/image)",7284    "endpoint": "GET /v1beta/environments/{environment}/files/{path}",7285    "params": [],7286    "status": [7287     "DOCUMENTED",7288     "BETA",7289     "PREVIEW",7290     "LIVE_VERIFIED"7291    ],7292    "notes": "partial 200 live"7293   },7294   "providers_supporting": [7295    "openai",7296    "anthropic",7297    "gemini"7298   ],7299   "provider_count": 3,7300   "portable": true,7301   "notes": "",7302   "ref": "docs/openai/agents-environments-and-vaults.md §2 · docs/gemini/interactions-api.md"7303  },7304  {7305   "section": "Managed agents platforms",7306   "feature": "Embeddable chat UI & workspace agents",7307   "openai": {7308    "supported": true,7309    "how": "ChatKit (`OpenAI-Beta: chatkit_beta=v1`, `/v1/chatkit/sessions|threads`) and Workspace Agents (`api.chatgpt.com/v1/workspace_agents/{id}/trigger`)",7310    "endpoint": "POST /v1/chatkit/sessions",7311    "params": [],7312    "status": [7313     "DOCUMENTED",7314     "BETA",7315     "LIVE_VERIFIED"7316    ],7317    "notes": "Agent Builder shuts down 2026-11-30"7318   },7319   "anthropic": {7320    "supported": false,7321    "how": "not offered",7322    "endpoint": "",7323    "params": [],7324    "status": [7325     "UNVERIFIED"7326    ],7327    "notes": "no equivalent surface in the documented API"7328   },7329   "xai": {7330    "supported": false,7331    "how": "Grok Apps / Grok Bot integrations are consumer products, not an embeddable API (docs/xai/grok-apps-and-integrations.md)",7332    "endpoint": "",7333    "params": [],7334    "status": [7335     "DOCUMENTED"7336    ],7337    "notes": ""7338   },7339   "gemini": {7340    "supported": false,7341    "how": "AI Studio and Firebase AI Logic are builder/SDK surfaces, not an embeddable chat API",7342    "endpoint": "",7343    "params": [],7344    "status": [7345     "DOCUMENTED"7346    ],7347    "notes": ""7348   },7349   "providers_supporting": [7350    "openai"7351   ],7352   "provider_count": 1,7353   "portable": false,7354   "notes": "OpenAI-only.",7355   "ref": "docs/openai/chatkit.md · docs/openai/workspace-agents.md"7356  },7357  {7358   "section": "Managed agents platforms",7359   "feature": "Client-side agent framework / CLI",7360   "openai": {7361    "supported": true,7362    "how": "Agents SDK (`openai-agents`, `@openai/agents`) — loop over Responses API; handoffs, guardrails, tracing",7363    "endpoint": "",7364    "params": [],7365    "status": [7366     "DOCUMENTED"7367    ],7368    "notes": ""7369   },7370   "anthropic": {7371    "supported": true,7372    "how": "Claude Agent SDK / `ant` CLI (`ant beta:sessions`, `ant apply`); SDK `tool_runner` helpers",7373    "endpoint": "",7374    "params": [],7375    "status": [7376     "DOCUMENTED"7377    ],7378    "notes": "Claude Agent SDK not catalogued in this atlas beyond the migration mapping"7379   },7380   "xai": {7381    "supported": true,7382    "how": "**Grok Build CLI** (`curl -fsSL https://x.ai/cli/install.sh | bash`; `grok`, `grok -p … --output-format json`, `grok agent stdio` (ACP); `~/.grok/config.toml` `api_backend = chat_completions|responses|messages`; MCP servers, hooks, skills, plugins, subagents, Landlock/Seatbelt sandbox; reads CLAUDE.md/AGENTS.md) — BETA; xai-sdk `tool_runner`-style helpers absent",7383    "endpoint": "",7384    "params": [],7385    "status": [7386     "DOCUMENTED",7387     "BETA"7388    ],7389    "notes": ""7390   },7391   "gemini": {7392    "supported": true,7393    "how": "google-genai SDK automatic function calling (Python callables, `maximum_remote_calls` 10) and `mcpToTool()`; Genkit, Firebase AI Logic, Vercel AI SDK, LangGraph/CrewAI/LlamaIndex integrations; Antigravity is the hosted coding agent",7394    "endpoint": "",7395    "params": [],7396    "status": [7397     "DOCUMENTED",7398     "BETA"7399    ],7400    "notes": ""7401   },7402   "providers_supporting": [7403    "openai",7404    "anthropic",7405    "xai",7406    "gemini"7407   ],7408   "provider_count": 4,7409   "portable": true,7410   "notes": "",7411   "ref": "docs/openai/agents-sdk.md · docs/anthropic/cli.md · docs/xai/grok-build.md · docs/gemini/sdks.md"7412  },7413  {7414   "section": "Model customisation & evaluation",7415   "feature": "Fine-tuning / tuning",7416   "openai": {7417    "supported": true,7418    "how": "`/v1/fine_tuning/jobs` (SFT, DPO, RFT, vision) on gpt-4.1*, gpt-4o*, o4-mini — **DEPRECATED**: no new jobs after 2027-01-06; our key 403 `training_not_available`",7419    "endpoint": "POST /v1/fine_tuning/jobs",7420    "params": [7421     "model",7422     "training_file",7423     "method"7424    ],7425    "status": [7426     "DOCUMENTED",7427     "DEPRECATED",7428     "ACCOUNT_RESTRICTED"7429    ],7430    "notes": "no GPT-5.x/6 fine-tuning"7431   },7432   "anthropic": {7433    "supported": false,7434    "how": "not offered",7435    "endpoint": "",7436    "params": [],7437    "status": [7438     "UNVERIFIED"7439    ],7440    "notes": "no equivalent surface in the documented API"7441   },7442   "xai": {7443    "supported": false,7444    "how": "none offered by xAI (capability matrix row 'fine-tuning: none')",7445    "endpoint": "",7446    "params": [],7447    "status": [7448     "DOCUMENTED"7449    ],7450    "notes": ""7451   },7452   "gemini": {7453    "supported": false,7454    "how": "`tunedModels.*` (12 endpoints) still in the v1beta discovery document but **RETIRED** on the Developer API since the Gemini 1.5 Flash-001 deprecation (May 2025): create/list/get → 501 UNIMPLEMENTED; no tunable 3.x/2.x model; use Vertex AI supervised tuning",7455    "endpoint": "POST /v1beta/tunedModels",7456    "params": [],7457    "status": [7458     "DOCUMENTED",7459     "DEPRECATED",7460     "RETIRED"7461    ],7462    "notes": "Gemma 4 `tuning: not available`"7463   },7464   "providers_supporting": [7465    "openai"7466   ],7467   "provider_count": 1,7468   "portable": false,7469   "notes": "Only OpenAI still accepts jobs, and only until 2027-01-06.",7470   "ref": "docs/openai/fine-tuning.md · docs/gemini/tuning.md · docs/models/xai-models.md"7471  },7472  {7473   "section": "Model customisation & evaluation",7474   "feature": "Evals",7475   "openai": {7476    "supported": true,7477    "how": "`/v1/evals`, runs, output items; graders — **DEPRECATED**: read-only 2026-10-31, shutdown 2026-11-30",7478    "endpoint": "POST /v1/evals",7479    "params": [],7480    "status": [7481     "DOCUMENTED",7482     "DEPRECATED",7483     "LIVE_VERIFIED"7484    ],7485    "notes": "12 endpoints"7486   },7487   "anthropic": {7488    "supported": false,7489    "how": "not offered",7490    "endpoint": "",7491    "params": [],7492    "status": [7493     "UNVERIFIED"7494    ],7495    "notes": "no equivalent surface in the documented API"7496   },7497   "xai": {7498    "supported": false,7499    "how": "not offered",7500    "endpoint": "",7501    "params": [],7502    "status": [7503     "UNVERIFIED"7504    ],7505    "notes": "no equivalent surface in the documented API"7506   },7507   "gemini": {7508    "supported": false,7509    "how": "no evals API on the Developer API (Vertex AI evaluation service)",7510    "endpoint": "",7511    "params": [],7512    "status": [7513     "DOCUMENTED"7514    ],7515    "notes": ""7516   },7517   "providers_supporting": [7518    "openai"7519   ],7520   "provider_count": 1,7521   "portable": false,7522   "notes": "OpenAI-only (deprecated).",7523   "ref": "docs/openai/evals.md"7524  },7525  {7526   "section": "Model customisation & evaluation",7527   "feature": "Graders (standalone)",7528   "openai": {7529    "supported": true,7530    "how": "`/v1/fine_tuning/alpha/graders/{run,validate}`",7531    "endpoint": "POST /v1/fine_tuning/alpha/graders/run",7532    "params": [],7533    "status": [7534     "DOCUMENTED",7535     "DEPRECATED",7536     "BETA",7537     "LIVE_VERIFIED"7538    ],7539    "notes": ""7540   },7541   "anthropic": {7542    "supported": false,7543    "how": "not offered",7544    "endpoint": "",7545    "params": [],7546    "status": [7547     "UNVERIFIED"7548    ],7549    "notes": "no equivalent surface in the documented API"7550   },7551   "xai": {7552    "supported": false,7553    "how": "not offered",7554    "endpoint": "",7555    "params": [],7556    "status": [7557     "UNVERIFIED"7558    ],7559    "notes": "no equivalent surface in the documented API"7560   },7561   "gemini": {7562    "supported": false,7563    "how": "not offered",7564    "endpoint": "",7565    "params": [],7566    "status": [7567     "UNVERIFIED"7568    ],7569    "notes": "no equivalent surface in the documented API"7570   },7571   "providers_supporting": [7572    "openai"7573   ],7574   "provider_count": 1,7575   "portable": false,7576   "notes": "OpenAI-only.",7577   "ref": "docs/openai/graders.md"7578  },7579  {7580   "section": "Model customisation & evaluation",7581   "feature": "Stored completions / distillation",7582   "openai": {7583    "supported": true,7584    "how": "Chat `store:true` + `metadata` → list/retrieve/update/delete stored completions; distillation via SFT",7585    "endpoint": "GET /v1/chat/completions",7586    "params": [7587     "store",7588     "metadata"7589    ],7590    "status": [7591     "DOCUMENTED",7592     "LIVE_VERIFIED"7593    ],7594    "notes": ""7595   },7596   "anthropic": {7597    "supported": false,7598    "how": "not offered",7599    "endpoint": "",7600    "params": [],7601    "status": [7602     "UNVERIFIED"7603    ],7604    "notes": "no equivalent surface in the documented API"7605   },7606   "xai": {7607    "supported": false,7608    "how": "Chat `store`/`metadata` silently accepted; no stored-completion retrieval endpoints (Responses store instead)",7609    "endpoint": "POST /v1/chat/completions",7610    "params": [7611     "store"7612    ],7613    "status": [7614     "DOCUMENTED",7615     "LIVE_DISCOVERED"7616    ],7617    "notes": ""7618   },7619   "gemini": {7620    "supported": false,7621    "how": "not offered",7622    "endpoint": "",7623    "params": [],7624    "status": [7625     "UNVERIFIED"7626    ],7627    "notes": "no equivalent surface in the documented API"7628   },7629   "providers_supporting": [7630    "openai"7631   ],7632   "provider_count": 1,7633   "portable": false,7634   "notes": "OpenAI-only.",7635   "ref": "docs/openai/chat-completions.md · parameters.json (xai store)"7636  },7637  {7638   "section": "Model customisation & evaluation",7639   "feature": "Reusable prompt templates",7640   "openai": {7641    "supported": true,7642    "how": "`prompt {id, version, variables}` on Responses — **DEPRECATED**, shutdown 2026-11-30",7643    "endpoint": "POST /v1/responses",7644    "params": [7645     "prompt"7646    ],7647    "status": [7648     "DOCUMENTED",7649     "DEPRECATED"7650    ],7651    "notes": ""7652   },7653   "anthropic": {7654    "supported": false,7655    "how": "not offered",7656    "endpoint": "",7657    "params": [],7658    "status": [7659     "UNVERIFIED"7660    ],7661    "notes": "no equivalent surface in the documented API"7662   },7663   "xai": {7664    "supported": false,7665    "how": "not offered",7666    "endpoint": "",7667    "params": [],7668    "status": [7669     "UNVERIFIED"7670    ],7671    "notes": "no equivalent surface in the documented API"7672   },7673   "gemini": {7674    "supported": false,7675    "how": "no prompt registry on the API (AI Studio saves prompts client-side); `cachedContents` reuse a prefix",7676    "endpoint": "",7677    "params": [],7678    "status": [7679     "DOCUMENTED"7680    ],7681    "notes": ""7682   },7683   "providers_supporting": [7684    "openai"7685   ],7686   "provider_count": 1,7687   "portable": false,7688   "notes": "OpenAI-only (deprecated).",7689   "ref": "docs/openai/deprecations.md"7690  },7691  {7692   "section": "Legacy / retired surfaces",7693   "feature": "Retired agent / thread APIs",7694   "openai": {7695    "supported": false,7696    "how": "Assistants API **RETIRED 2026-08-26** — 404 empty body; 23 operations mapped to Conversations/Responses/Agents",7697    "endpoint": "GET /v1/assistants",7698    "params": [],7699    "status": [7700     "RETIRED",7701     "DOCUMENTED"7702    ],7703    "notes": "`OpenAI-Beta: assistants=v2` historical"7704   },7705   "anthropic": {7706    "supported": false,7707    "how": "not offered",7708    "endpoint": "",7709    "params": [],7710    "status": [7711     "UNVERIFIED"7712    ],7713    "notes": "no equivalent surface in the documented API"7714   },7715   "xai": {7716    "supported": false,7717    "how": "not offered",7718    "endpoint": "",7719    "params": [],7720    "status": [7721     "UNVERIFIED"7722    ],7723    "notes": "no equivalent surface in the documented API"7724   },7725   "gemini": {7726    "supported": false,7727    "how": "Interactions v1beta legacy schema (`outputs` → `steps`, old SSE names `interaction.start`, `content.*`) removed 2026-06-08; `total_reasoning_tokens` → `total_thought_tokens`",7728    "endpoint": "POST /v1beta/interactions",7729    "params": [],7730    "status": [7731     "RETIRED",7732     "DOCUMENTED"7733    ],7734    "notes": ""7735   },7736   "providers_supporting": [],7737   "provider_count": 0,7738   "portable": false,7739   "notes": "",7740   "ref": "docs/openai/assistants-retired.md · docs/gemini/interactions-api.md"7741  },7742  {7743   "section": "Legacy / retired surfaces",7744   "feature": "Retired media models / endpoints",7745   "openai": {7746    "supported": false,7747    "how": "DALL·E 2/3 RETIRED 2026-05-12; `/v1/images/variations` 404; Sora 2 + Videos API shut down 2026-09-24",7748    "endpoint": "POST /v1/images/variations",7749    "params": [],7750    "status": [7751     "RETIRED",7752     "DEPRECATED"7753    ],7754    "notes": ""7755   },7756   "anthropic": {7757    "supported": false,7758    "how": "not offered",7759    "endpoint": "",7760    "params": [],7761    "status": [7762     "UNVERIFIED"7763    ],7764    "notes": "no equivalent surface in the documented API"7765   },7766   "xai": {7767    "supported": false,7768    "how": "`grok-2-image(-1212)` RETIRED (404); `grok-imagine-image-pro` → `-quality` (DEPRECATED, retires 2026-11-02 → grok-imagine-image-2.0 low); Live Search 410",7769    "endpoint": "POST /v1/images/generations",7770    "params": [],7771    "status": [7772     "RETIRED",7773     "DEPRECATED"7774    ],7775    "notes": ""7776   },7777   "gemini": {7778    "supported": false,7779    "how": "Imagen 3/4 (`:predict`) RETIRED 2026-08-17; Veo 2.0/3.0 RETIRED 2026-06-30; `gemini-2.5-flash-image` DEPRECATED → 2026-10-02; `gemini-omni-flash-preview` → 2026-09-30; half-cascade Live models RETIRED 2025-12-09",7780    "endpoint": "POST /v1beta/models/{model}:predict",7781    "params": [],7782    "status": [7783     "RETIRED",7784     "DEPRECATED"7785    ],7786    "notes": ""7787   },7788   "providers_supporting": [],7789   "provider_count": 0,7790   "portable": false,7791   "notes": "",7792   "ref": "docs/openai/images.md · docs/xai/deprecations-and-release-notes.md · docs/gemini/deprecations-and-changelog.md"7793  },7794  {7795   "section": "Legacy / retired surfaces",7796   "feature": "Retired text models",7797   "openai": {7798    "supported": false,7799    "how": "gpt-3.5-turbo-instruct/babbage/davinci shut down 2026-09-28; o1/o3-mini/o4-mini/gpt-4/gpt-4-turbo 2026-10-23; gpt-5 2025 snapshots, o3 2026-12-11; codex ≤5.2, deep-research, computer-use-preview retired",7800    "endpoint": "",7801    "params": [],7802    "status": [7803     "DEPRECATED",7804     "RETIRED"7805    ],7806    "notes": ""7807   },7808   "anthropic": {7809    "supported": false,7810    "how": "RETIRED on the Claude API: Opus 4.1 (2026-08-05), Sonnet 4 / Opus 4 (2026-06-15), Claude 3.x, 2.x, 1.x, Instant; some still served on Bedrock/Vertex",7811    "endpoint": "POST /v1/messages",7812    "params": [],7813    "status": [7814     "RETIRED"7815    ],7816    "notes": "404 `not_found_error`"7817   },7818   "xai": {7819    "supported": false,7820    "how": "**RETIRED 2026-05-15 with redirects**: `grok-3`, `grok-4-0709`, `grok-4-fast-*`, `grok-4-1-fast-*` → `grok-4.3` (billed at 4.3 rates; `GET /v1/models/grok-3` returns the grok-4.3 object), `grok-code-fast-1` → `grok-build-0.1`; LEGACY/UNVERIFIED: `grok-2-*`, `grok-3-mini`, `grok-beta`, `grok-vision-beta`, `grok-4-latest`",7821    "endpoint": "GET /v1/models/{model_id}",7822    "params": [],7823    "status": [7824     "RETIRED",7825     "LEGACY"7826    ],7827    "notes": "no consolidated deprecations page; ~60-day notice observed"7828   },7829   "gemini": {7830    "supported": false,7831    "how": "Gemini 2.0 Flash/-Lite RETIRED 2026-06-01; 2.5 previews 2025-11/2026-03; `gemini-3-pro-preview` 2026-03-09 (id repointed to 3.1 Pro), `gemini-3.1-flash-lite-preview` 2026-05-25; **Gemini 2.5 Pro/Flash/Flash-Lite 'no longer available to new users'** (404, undocumented); `gemini-3.1-flash-lite` DEPRECATED → 2027-05-07; `gemini-embedding-001` → 2028-05-14; `text-embedding-004` 2026-01-14",7832    "endpoint": "POST /v1beta/models/{model}:generateContent",7833    "params": [],7834    "status": [7835     "RETIRED",7836     "DEPRECATED",7837     "ACCOUNT_RESTRICTED"7838    ],7839    "notes": "shut-down ids still appear in `GET /v1beta/models`"7840   },7841   "providers_supporting": [],7842   "provider_count": 0,7843   "portable": false,7844   "notes": "Retirement means 404 on Anthropic/Gemini, a dated shutdown on OpenAI, and a **silent redirect** on xAI.",7845   "ref": "deprecations.json · models.json"7846  },7847  {7848   "section": "Legacy / retired surfaces",7849   "feature": "Retired / deprecated beta headers, parameters and SDKs",7850   "openai": {7851    "supported": true,7852    "how": "`OpenAI-Beta: realtime=v1` (legacy `/v1/realtime/sessions` → 404), `assistants=v2`; `prompt_cache_retention`, `truncation: auto`, `user` (→ `safety_identifier`) legacy",7853    "endpoint": "",7854    "params": [],7855    "status": [7856     "LEGACY",7857     "FAILED_VERIFICATION"7858    ],7859    "notes": ""7860   },7861   "anthropic": {7862    "supported": true,7863    "how": "RETIRED: `context-1m-2025-08-07`, `computer-use-2024-10-22`, `max-tokens-3-5-sonnet-2024-07-15`; DEPRECATED: `mcp-client-2025-04-04`; LEGACY (GA, header optional): prompt-caching, message-batches, pdfs, token-counting, files-api, skills, structured-outputs, extended-cache-ttl, code-execution-2025-05-22, interleaved/fine-grained streaming, effort-2025-11-24…",7864    "endpoint": "",7865    "params": [],7866    "status": [7867     "RETIRED",7868     "DEPRECATED",7869     "LEGACY"7870    ],7871    "notes": ""7872   },7873   "xai": {7874    "supported": true,7875    "how": "no headers to retire; DEPRECATED params/features: `max_tokens` (→ `max_completion_tokens`), `logprobs`/`top_logprobs` (ignored ≥4.20), Anthropic-compatible `/v1/messages`, `x_search` per-call billing (→ 2026-09-21), `zdr_status: pii_scrubbing`, Management `teamId` (→ `scope`/`scopeId`); LEGACY: `/v1/completions`, `/v1/complete`, Live Search",7876    "endpoint": "",7877    "params": [],7878    "status": [7879     "DEPRECATED",7880     "LEGACY",7881     "RETIRED"7882    ],7883    "notes": ""7884   },7885   "gemini": {7886    "supported": true,7887    "how": "DEPRECATED: `temperature/topP/topK` guidance (2026-07-21), `thinkingBudget` (LEGACY on 3.x), `HARM_CATEGORY_CIVIC_INTEGRITY` (→ `enableEnhancedCivicAnswers`), `googleSearchRetrieval`, **standard API keys** (rejected from Sept 2026), legacy SDKs `google-generativeai` / `@google/generative-ai` (2025-11-30); LEGACY: PaLM methods, `responseSchema`/`responseJsonSchema` (→ `responseFormat`), `mediaChunks`, `speechState`",7888    "endpoint": "",7889    "params": [],7890    "status": [7891     "DEPRECATED",7892     "LEGACY"7893    ],7894    "notes": ""7895   },7896   "providers_supporting": [7897    "openai",7898    "anthropic",7899    "xai",7900    "gemini"7901   ],7902   "provider_count": 4,7903   "portable": false,7904   "notes": "",7905   "ref": "generated/fragments/headers/anthropic-beta-headers.json · deprecations.json (xai, gemini api_features)"7906  },7907  {7908   "section": "Service tiers, limits, safety",7909   "feature": "Per-request dollar cost in the response",7910   "openai": {7911    "supported": false,7912    "how": "token counts only (`usage`); costs via the Admin `GET /v1/organization/costs` report",7913    "endpoint": "",7914    "params": [],7915    "status": [7916     "DOCUMENTED"7917    ],7918    "notes": ""7919   },7920   "anthropic": {7921    "supported": false,7922    "how": "token counts only; costs via `/v1/organizations/cost_report`",7923    "endpoint": "",7924    "params": [],7925    "status": [7926     "DOCUMENTED"7927    ],7928    "notes": ""7929   },7930   "xai": {7931    "supported": true,7932    "how": "`usage.cost_in_usd_ticks` on **every** inference response (Chat, Responses, images, videos; 1 USD = 10^10 ticks; April 2026) — the effective price after cache, long-context, priority and regional multipliers; batch `cost_breakdown` (SDK/gRPC)",7933    "endpoint": "POST /v1/responses",7934    "params": [7935     "usage.cost_in_usd_ticks"7936    ],7937    "status": [7938     "DOCUMENTED",7939     "LIVE_VERIFIED"7940    ],7941    "notes": "catalogue endpoints return no usage/cost"7942   },7943   "gemini": {7944    "supported": false,7945    "how": "token counts only (`usageMetadata`, Interactions `usage`); costs in Google Cloud Billing",7946    "endpoint": "POST /v1beta/models/{model}:generateContent",7947    "params": [],7948    "status": [7949     "DOCUMENTED"7950    ],7951    "notes": ""7952   },7953   "providers_supporting": [7954    "xai"7955   ],7956   "provider_count": 1,7957   "portable": false,7958   "notes": "xAI-only.",7959   "ref": "docs/xai/pricing.md · docs/xai/responses.md"7960  },7961  {7962   "section": "Legacy / retired surfaces",7963   "feature": "Retired model ids keep resolving (redirect aliases)",7964   "openai": {7965    "supported": false,7966    "how": "retired ids fail with `model_not_found`; `shutdown_date` exposed on `GET /v1/models`",7967    "endpoint": "GET /v1/models/{model}",7968    "params": [],7969    "status": [7970     "DOCUMENTED",7971     "LIVE_VERIFIED"7972    ],7973    "notes": ""7974   },7975   "anthropic": {7976    "supported": false,7977    "how": "retired ids → 404 `not_found_error` (some still served on Bedrock/Vertex)",7978    "endpoint": "POST /v1/messages",7979    "params": [],7980    "status": [7981     "DOCUMENTED"7982    ],7983    "notes": ""7984   },7985   "xai": {7986    "supported": true,7987    "how": "retired slugs **redirect** to their replacement and are billed at the replacement's price: `grok-3`, `grok-4-0709`, `grok-4-fast-*`, `grok-4-1-fast-*` → `grok-4.3` (verified: `GET /v1/models/grok-3` returns the grok-4.3 object), `grok-code-fast-1` → `grok-build-0.1`, `grok-imagine-image-pro` → `-quality` → `-2.0 low`; `response.model` reveals the target",7988    "endpoint": "GET /v1/models/{model_id}",7989    "params": [],7990    "status": [7991     "DOCUMENTED",7992     "RETIRED",7993     "LIVE_VERIFIED"7994    ],7995    "notes": "6 `retired_redirect` records in models.json"7996   },7997   "gemini": {7998    "supported": false,7999    "how": "shut-down ids stay **listed** in `GET /v1beta/models` but generation fails (404); one documented repoint: `gemini-3-pro-preview` → `gemini-3.1-pro-preview` (2026-03-09); `-latest` aliases hot-swap targets",8000    "endpoint": "GET /v1beta/models",8001    "params": [],8002    "status": [8003     "DOCUMENTED",8004     "LIVE_DISCOVERED"8005    ],8006    "notes": ""8007   },8008   "providers_supporting": [8009    "xai"8010   ],8011   "provider_count": 1,8012   "portable": false,8013   "notes": "xAI-only behaviour (silent redirect); Gemini has one documented id repoint.",8014   "ref": "deprecations.json (xai) · docs/xai/deprecations-and-release-notes.md"8015  }8016 ]8017}