Cross-provider comparisons — OpenAI ↔ Anthropic ↔ xAI ↔ Gemini
Status: synthesis layer over the atlas, extended from two to four providers on 2026-09-18/19. Nothing on these pages was measured independently: every cell points back to a record in generated/*.json (statuses copied verbatim) or to a domain page under docs/openai/, docs/anthropic/, docs/xai/, docs/gemini/, docs/tools/, docs/models/, docs/errors/. When two sources disagree the disagreement is stated, not resolved. Generators: scripts/generators/synth/{features,endpoints,pricing,faq}.py (re-runnable; the other pages are hand-written from the same data).
Sources: generated/{models,endpoints,parameters,tools,streaming-events,errors,headers,pricing,deprecations,objects,sdks,webhook-events,rate-limits}.json, generated/compatibility/*.json, generated/fragments/headers/*.json, generated/examples-manifest.json; vendor documentation as cited on each domain page (https://developers.openai.com/api/docs/… · https://platform.claude.com/docs/en/… · https://docs.x.ai/developers/… · https://ai.google.dev/gemini-api/docs/…).
Last verified: 2026-09-18
Pages
| Page | What it answers | Machine-readable twin |
|---|---|---|
| models.md | Which GPT / Claude / Grok / Gemini model corresponds to which for a given job; context, output, modalities, reasoning modes, tools, prices (incl. xAI ≥200k tier, Gemini >200k tier and free tier), cutoffs, lifecycle; naming (snapshots vs aliases vs -latest vs xAI redirect aliases vs Gemini -preview); deprecation policies; 29 data inconsistencies |
generated/models.json, generated/pricing.json, generated/deprecations.json, generated/compatibility/model-capability-matrix.json |
| features.md | 125-row Feature × Provider matrix with four columns (how / endpoint / params / status each), coverage count per row, portable yes/no, differences | generated/compatibility/cross-provider-feature-matrix.json (openai/anthropic/xai/gemini objects, providers_supporting[], provider_count) |
| state-management.md | Stateless replay vs previous_response_id / Conversations / xAI stored Responses / Gemini Interactions previous_interaction_id; items vs blocks vs parts; system prompt; roles; prefill; storage & retention; compaction |
parameters.json (POST /v1/responses ×2 providers, POST /v1/messages, generateContent, interactions) |
| tool-execution.md | Client tools, hosted/server tools (web/x/Google search, Maps, URL context, code execution, file search / collections / file-search stores, MCP), tool choice, parallel calls, thought signatures, computer use — parameter mapping and the same task on all four | generated/tools.json, generated/compatibility/{model-tool-matrix,gemini-tool-model-matrix}.json |
| streaming.md | Four wire formats (OpenAI Responses / xAI Responses, Anthropic Messages / xAI Messages, Chat Completions, Gemini array-or-SSE), event-name mapping table, Interactions events, Realtime / xAI realtime / Live / Lyria WebSocket message families | generated/streaming-events.json |
| agents-platforms.md | OpenAI Agents API vs Claude Managed Agents vs xAI Responses agentic loop (+ Grok Build) vs Gemini Interactions agents (Deep Research, Antigravity, custom agents, environments, triggers) | endpoints.json (agents-platform/*, managed-agents, xai responses, gemini interactions, agents, environments, triggers, credentials, webhooks) |
| pricing.md | Side-by-side price tables for four providers, tier structure, cost models (1M in + 100k out; cached prefix; batch), tool prices | generated/models.json (pricing blocks), generated/pricing.json |
| caching-and-reasoning.md | Implicit vs explicit caching (OpenAI, Anthropic cache_control, xAI automatic, Gemini implicit + cachedContents), TTLs, minimums, multipliers; reasoning.effort vs thinking+effort vs reasoning_effort+reasoning_content vs thinkingConfig+thoughtSignature |
parameters.json, generated/compatibility/anthropic-feature-model-matrix.json, gemini-feature-model-matrix.json |
| realtime-and-media.md | Realtime/Live voice (OpenAI, xAI realtime, Gemini Live), TTS/STT, image / video / music generation, embeddings, moderation — and what Anthropic offers instead | endpoints.json, models.json, pricing.json, streaming-events.json |
| responses-vs-chat-completions.md | (existing) OpenAI-internal comparison of the two chat surfaces (xAI mirrors both; see state-management.md) | — |
| ../endpoints/index.md · ../endpoints/by-status.md | Full endpoint catalogue (870 rows: OpenAI 359, Anthropic 282, xAI 104, Gemini 125) grouped by provider → family, and grouped by status | generated/endpoints.json, generated/endpoints.csv |
| ../faq.md | The owner's questions answered with computed tables for four providers (which model accepts X+Y+Z, SSE/WebSocket events, which endpoint creates a session, beta headers vs /v1beta paths vs alpha gates, which provider offers X at what price…) |
all of the above |
Feature coverage summary (from cross-provider-feature-matrix.json, 125 features)
| Coverage | Count | Examples |
|---|---|---|
| On all four providers | 45 | primary generation endpoint, system prompt, multi-turn, token counting, structured outputs, strict tool arguments, sampling params, stop sequences, refusal signalling, function calling, tool choice, parallel calls, web search, code execution, remote MCP, citations, image & PDF input, Files API, batch, prompt/context caching, reasoning control, reasoning visibility & replay, context window, max output, service tiers, end-user id, rate-limit tiers, overload error, error envelope, authentication, SDKs, webhooks, usage reporting, cloud availability, ZDR/data-use, agent harness / session / input / stream, client agent framework |
| On three | 34 | OpenAI + xAI + Gemini (14: chat-completions surface, response storage, background/deferred, JSON mode, managed RAG, image generation, TTS, STT, realtime voice, video, resumable upload, pro/extended compute, OpenAI-compat layer…) · OpenAI + Anthropic + xAI (12: tool search, shell, skills, stand-alone compaction, rate-limit headers, request id, admin API, audit, spend limits, data residency, self-hosted execution, multi-agent) · OpenAI + Anthropic + Gemini (6: computer use, tunnels/credentials, in-flight compaction, hosted sandbox, vaults, artifacts) · Anthropic + xAI + Gemini (2: task/session budgets) |
| On two | 16 | OpenAI + Anthropic (6: programmatic tool calling, file editing tool, cache diagnostics, mid-conversation effort/tool changes, beta header) · OpenAI + Gemini (5: safety thresholds, async tools, container/environment API, audio-video input, embeddings) · Anthropic + Gemini (3: web fetch / URL context, version header/path, scheduled runs) · xAI + Gemini (1: X search / Maps grounding) · Anthropic + xAI (1: Anthropic-compatible /v1/messages) |
| Unique to OpenAI | 15 | legacy completions that still answer, verbosity, logprobs, grammar tools, tool namespaces, SaaS connectors, Live delegation, moderation endpoint, content provenance, ChatKit/workspace agents, fine-tuning, evals, graders, stored completions, prompt templates |
| Unique to Anthropic | 8 | assistant prefill (deprecated), server-side fallback, memory tool, browser toolset, advisor, server-side context editing, outcome grading, memory stores/dreams |
| Unique to xAI | 2 | per-request dollar cost (cost_in_usd_ticks), retired-model redirect aliases (x_search is grouped with Gemini Maps under "social / vertical search") |
| Unique to Gemini | 1 | music generation (Lyria) — Google Search/Maps grounding, URL context, native audio/video input, free tier and Interactions agents are counted in shared rows |
| On none (legacy/absent) | 4 | idempotency keys, retired agent APIs, retired media models, retired text models |
| Marked portable | 86 | same task expressible on every provider that offers it |
Per-provider supported rows: OpenAI 103 · Anthropic 83 · xAI 77 · Gemini 77.
Methodology
- Objective differences only. Pages describe what each API accepts, returns and charges. No "winner", no quality judgement about model outputs. Where a capability exists on a subset of providers it is marked "— not offered" on the others.
- Statuses are inherited, never upgraded. A cell says
LIVE_VERIFIEDonly if the underlying record was called successfully with this atlas's keys on 2026-09-18/19.DOCUMENTED= in current official docs, not tested;ACCOUNT_RESTRICTED= documented but our key was refused — for xAI that means the Management API (separate key), the Skills API,/v1/embeddingsand alphatool_search; for Gemini it means paid-tier-only models and features probed with a free-tier key (Pro models, image/video/music generation,cachedContents, Batch, Google Search grounding quota). A 403/404/429-with-limit-0 never means "does not exist".BETA/PREVIEW= gated by header (Anthropic, OpenAI), by/v1betapath or-previewid (Gemini), or by product stage (xAI multi-agent, Grok Build).GAappears only on Gemini fragments. - Current models only in the model table. OpenAI: GPT-6 Astra, GPT-5.6 Sol/Terra/Luna, GPT-5.5(-pro), GPT-5.4(-pro/-mini/-nano), GPT-5.3-codex, GPT-5.2, GPT-5.1, GPT-5 family, o3/o3-pro/o4-mini (deprecated), GPT-4.1/4o lines. Anthropic: Fable 5.1 / 5, Mythos 5.1 / 5 (invite), Opus 5 / 4.8 / 4.7 / 4.6 / 4.5, Sonnet 5 / 4.6 / 4.5, Haiku 4.5. xAI: grok-4.6, grok-4.5, grok-4.3, grok-4.20-0309-reasoning / -non-reasoning / multi-agent (beta), grok-build-0.1 (preview), Imagine image/video, voice models. Gemini: 3.8 / 3.7 / 3.6 / 3.5 Flash, 3.5 Flash-Lite, 3.1 Pro Preview, 3.1 Flash-Lite (deprecated), 3 Flash Preview, 2.5 family (blocked for new users), Gemma 4, Live / TTS / transcribe / image / Veo / Lyria / embedding models, Interactions agents. Retired ids appear only in the lifecycle sections.
- Equivalence ≠ identity. "Portable" means the same task can be expressed with an equivalent parameter on every provider that offers the feature; a single-provider feature is never portable. The per-topic pages give the exact parameter mapping and a JSON quad ("the same task on all four providers"); the differences column lists what does not carry over (defaults, limits, billing, gating). xAI's Responses/Chat/Realtime surfaces reuse OpenAI's wire formats, so OpenAI↔xAI mappings are often literal; Gemini's
generateContent(camelCase parts) and Interactions (snake_case steps) are distinct shapes. - Prices come from
generated/pricing.jsonand thepricingblock ofgenerated/models.json(vendor pricing and model pages retrieved 2026-09-18; xAI also from the live catalogue price ticks). Cost models are arithmetic on those list prices; no invoice was reconciled. Provider-specific rules that change the arithmetic are stated next to each table: xAI bills reasoning tokens on every call and applies its ≥200k-token tier to the whole request; Gemini 3.6–3.8 Flash prices are introductory until 2026-12-31 and Gemini has a $0 tier; only Anthropic and GPT-5.6+ charge cache writes. - Traceability. The JSON twin of the feature matrix carries a
refper row (file or docs page). The FAQ shows thejqused for each computed table. Endpoint pages are rendered fromgenerated/endpoints.jsonwithout manual edits. - Known data inconsistencies found while synthesising are listed at the end of models.md (29 items, 13 new for xAI/Gemini) so the fragment owners can fix them at the source (
generated/fragments/**), never in the merged files.
Vocabulary map (the same idea, four names)
| Concept | OpenAI | Anthropic | xAI | Gemini |
|---|---|---|---|---|
| One model call | Response (resp_…) |
Message (msg_…) |
Response (resp_…) / Chat Completion |
GenerateContentResponse (responseId) / Interaction (v1_…) |
| Unit of context | Item (message, function_call, reasoning, …) |
Content block (text, tool_use, thinking, …) |
Item (OpenAI shapes; custom_tool_call for x_search) |
Part inside a Content (text, inlineData, functionCall, thoughtSignature, …) / Step (Interactions) |
| Assistant role | assistant |
assistant |
assistant |
model |
| System prompt | instructions / developer message |
system |
instructions / system message |
systemInstruction / system_instruction |
| Your tool | function / custom tool → function_call → function_call_output |
custom tool → tool_use → tool_result |
function → function_call → function_call_output (Chat: tool_calls → role: tool) |
functionDeclarations[] → functionCall (+ thoughtSignature) → functionResponse |
| Vendor-run tool | hosted tool (web_search, code_interpreter, file_search, mcp, shell, image_generation) |
server tool (web_search_*, web_fetch_*, code_execution_*, tool_search_*, advisor_*, mcp_toolset) |
server-side tool (web_search, x_search, code_interpreter, file_search/collections_search, mcp, image_generation, attachment search) |
built-in tool (googleSearch, googleMaps, urlContext, codeExecution, fileSearch, mcpServers) |
| Vendor-defined, you-run tool | computer, apply_patch, shell (local) |
bash_*, text_editor_*, memory_*, computer_*, browser_toolset_* |
shell (local) |
computerUse (predefined functionCalls) |
| Hidden reasoning | reasoning item, reasoning_tokens, encrypted_content |
thinking block, thinking_tokens, signature |
reasoning item / reasoning_content text, reasoning_tokens, encrypted_content |
thought: true parts, thoughtsTokenCount, thoughtSignature |
| Reasoning depth | reasoning.effort |
output_config.effort (+ thinking.type) |
reasoning.effort / reasoning_effort |
thinkingConfig.thinkingLevel (+ legacy thinkingBudget) |
| Cache control | implicit prefix cache, prompt_cache_key, prompt_cache_breakpoint (5.6+) |
cache_control {type: ephemeral, ttl} |
automatic; prompt_cache_key / x-grok-conv-id routing |
implicit; explicit cachedContents + cachedContent |
| Structured output | text.format {type: json_schema} |
output_config.format {type: json_schema} |
text.format / response_format.json_schema |
responseMimeType + responseJsonSchema / responseFormat.text.schema |
| Async discount | Batch API (JSONL file) / flex tier |
Message Batches (inline requests[]) |
Batch API (inline or JSONL; −20 %, three models) | Batch (:batchGenerateContent) / flex tier |
| Faster tier | service_tier: fast |
speed: fast |
service_tier: priority |
serviceTier: priority |
| Context shrink | context_management compaction / POST /v1/responses/compact |
context_management.edits / compaction param |
POST /v1/responses/compact |
Live contextWindowCompression; Antigravity auto-compaction |
| Beta gate | OpenAI-Beta: <surface>=v1 |
anthropic-beta: <feature>-<date> |
none (account ACL / alpha) | /v1beta path, -preview model id |
| Managed harness | Agents API (agent, session, turn, item, environment) | Managed Agents (agent version, session, thread, event, environment) | Responses agentic loop (max_turns, stored response) · Grok Build CLI |
Interactions API (agent, environment, trigger, credential) |
| Secrets for agents | Vaults | Vaults | inline authorization/headers |
Credentials |
| Per-org admin | Admin API key (sk-admin-…), org/projects |
Admin API key (sk-ant-admin01-…), org/workspaces |
Management key (management-api.x.ai), team |
Google Cloud project / IAM (no Developer-API admin surface) |
| Overload | HTTP 503 server_is_overloaded |
HTTP 529 overloaded_error |
HTTP 429 / 5xx internal |
HTTP 503 UNAVAILABLE |
| Exact cost of a call | Admin costs report | cost report | usage.cost_in_usd_ticks in the response |
Cloud Billing |