Python 88.3%
TypeScript 7.6%
Shell 4.1%
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}