SPB Git forge

spb/doc-api

Public
2commits 1branches 0releases
15.7 MBsize
maindefault branch
13 days agolast push
Python 88.3% TypeScript 7.6% Shell 4.1%
45.5 KB · 1,153 lines json
Raw Blame History
1[2 {3  "provider": "anthropic",4  "name": "anthropic-beta",5  "direction": "request",6  "required": "no",7  "description": "Comma-separated beta feature names, header may be repeated; unknown → 400. SDKs: `betas=[...]`; CLI: `--beta a,b`. Full list in the models/beta fragment (46 values documented).",8  "example": "anthropic-beta: context-management-2025-06-27,fast-mode-2026-02-01",9  "status": [10   "DOCUMENTED",11   "LIVE_VERIFIED"12  ],13  "source": "https://platform.claude.com/docs/en/api/beta-headers",14  "_fragment": "generated/fragments/headers/anthropic-headers.json"15 },16 {17  "provider": "anthropic",18  "name": "x-api-key",19  "direction": "request",20  "required": "yes (unless Authorization)",21  "description": "Console API key. Described as the legacy fallback for Authorization but still fully supported (used by the SDKs and this atlas). Invalid → 401 'invalid x-api-key'.",22  "example": "x-api-key: sk-ant-…",23  "status": [24   "DOCUMENTED",25   "LIVE_VERIFIED"26  ],27  "source": "https://platform.claude.com/docs/en/api/overview",28  "_fragment": "generated/fragments/headers/anthropic-headers.json"29 },30 {31  "provider": "anthropic",32  "name": "Authorization",33  "direction": "request",34  "required": "yes (unless x-api-key)",35  "description": "`Bearer <token>`: API key, or short-lived access token from POST /v1/oauth/token (Workload Identity Federation) or `ant auth login` (OAuth). SDKs: `auth_token` / ANTHROPIC_AUTH_TOKEN.",36  "example": "Authorization: Bearer <token>",37  "status": [38   "DOCUMENTED"39  ],40  "source": "https://platform.claude.com/docs/en/api/overview",41  "_fragment": "generated/fragments/headers/anthropic-headers.json"42 },43 {44  "provider": "anthropic",45  "name": "anthropic-version",46  "direction": "request",47  "required": "yes",48  "description": "API version date. Only `2023-06-01` is current; live: `2020-01-01` → 400 'is not a valid version', `2023-01-01` → 400 'not allowed for this endpoint' (Messages). SDKs send 2023-06-01 automatically.",49  "example": "anthropic-version: 2023-06-01",50  "status": [51   "DOCUMENTED",52   "LIVE_VERIFIED"53  ],54  "source": "https://platform.claude.com/docs/en/api/versioning",55  "_fragment": "generated/fragments/headers/anthropic-headers.json"56 },57 {58  "provider": "anthropic",59  "name": "content-type",60  "direction": "request",61  "required": "yes (with body)",62  "description": "application/json. Malformed JSON → 400 'The request body is not valid JSON'.",63  "example": "content-type: application/json",64  "status": [65   "DOCUMENTED",66   "LIVE_VERIFIED"67  ],68  "source": "https://platform.claude.com/docs/en/api/overview",69  "_fragment": "generated/fragments/headers/anthropic-headers.json"70 },71 {72  "provider": "anthropic",73  "name": "accept",74  "direction": "request",75  "required": "no",76  "description": "Not required; streaming responses are text/event-stream regardless.",77  "example": "accept: text/event-stream",78  "status": [79   "LIVE_DISCOVERED"80  ],81  "source": "https://platform.claude.com/docs/en/api/overview",82  "_fragment": "generated/fragments/headers/anthropic-headers.json"83 },84 {85  "provider": "anthropic",86  "name": "anthropic-workspace-id",87  "direction": "request",88  "required": "required for multi-workspace keys",89  "description": "Workspace to act in (wrkspc_…); optional otherwise; not used with WIF.",90  "example": "anthropic-workspace-id: wrkspc_01JwQvzr7rXLA5AGx3HKfFUJ",91  "status": [92   "DOCUMENTED"93  ],94  "source": "https://platform.claude.com/docs/en/api/overview",95  "_fragment": "generated/fragments/headers/anthropic-headers.json"96 },97 {98  "provider": "anthropic",99  "name": "anthropic-user-profile-id",100  "direction": "request",101  "required": "no (beta)",102  "description": "Attribute the request to a user profile (requires a user-profiles-* beta header).",103  "example": "anthropic-user-profile-id: …",104  "status": [105   "DOCUMENTED",106   "BETA"107  ],108  "source": "https://platform.claude.com/docs/en/api/messages",109  "_fragment": "generated/fragments/headers/anthropic-headers.json"110 },111 {112  "provider": "anthropic",113  "name": "request-id",114  "direction": "response",115  "required": "always",116  "description": "Unique request id (req_…), also `request_id` in error bodies; SDKs expose `_request_id`. Present on 200 and error responses (live).",117  "example": "request-id: req_011CfBxdcLppPJYpctgsTcu6",118  "status": [119   "DOCUMENTED",120   "LIVE_VERIFIED"121  ],122  "source": "https://platform.claude.com/docs/en/api/errors",123  "_fragment": "generated/fragments/headers/anthropic-headers.json"124 },125 {126  "provider": "anthropic",127  "name": "anthropic-organization-id",128  "direction": "response",129  "required": "when authenticated",130  "description": "Organization id of the credential. Live: present on 200/400/404, absent on 401 and unknown-path 404.",131  "example": "anthropic-organization-id: <uuid>",132  "status": [133   "DOCUMENTED",134   "LIVE_VERIFIED"135  ],136  "source": "https://platform.claude.com/docs/en/api/overview",137  "_fragment": "generated/fragments/headers/anthropic-headers.json"138 },139 {140  "provider": "anthropic",141  "name": "anthropic-workspace-id",142  "direction": "response",143  "required": "when resolvable",144  "description": "Workspace the credential resolved to; absent for Admin API or non-workspace credentials. Not observed on our default-workspace key.",145  "example": "anthropic-workspace-id: wrkspc_…",146  "status": [147   "DOCUMENTED"148  ],149  "source": "https://platform.claude.com/docs/en/api/overview",150  "_fragment": "generated/fragments/headers/anthropic-headers.json"151 },152 {153  "provider": "anthropic",154  "name": "x-should-retry",155  "direction": "response",156  "required": "on errors",157  "description": "Undocumented in the header tables: `false` on every 4xx observed; the SDKs read it (true/false) to override retry decisions.",158  "example": "x-should-retry: false",159  "status": [160   "LIVE_DISCOVERED"161  ],162  "source": "https://platform.claude.com/docs/en/api/overview",163  "_fragment": "generated/fragments/headers/anthropic-headers.json"164 },165 {166  "provider": "anthropic",167  "name": "retry-after",168  "direction": "response",169  "required": "on 429/529",170  "description": "Seconds to wait before retrying; absent on tier spend-cap 429.",171  "example": "retry-after: 8",172  "status": [173   "DOCUMENTED"174  ],175  "source": "https://platform.claude.com/docs/en/api/rate-limits",176  "_fragment": "generated/fragments/headers/anthropic-headers.json"177 },178 {179  "provider": "anthropic",180  "name": "anthropic-ratelimit-requests-limit / -remaining / -reset",181  "direction": "response",182  "required": "on 200 (Messages)",183  "description": "Requests-per-minute bucket; reset is RFC 3339. Live: 10000 / 9999 / 2026-09-19T01:50:53Z.",184  "example": "anthropic-ratelimit-requests-limit: 10000",185  "status": [186   "DOCUMENTED",187   "LIVE_VERIFIED"188  ],189  "source": "https://platform.claude.com/docs/en/api/rate-limits",190  "_fragment": "generated/fragments/headers/anthropic-headers.json"191 },192 {193  "provider": "anthropic",194  "name": "anthropic-ratelimit-tokens-limit / -remaining / -reset",195  "direction": "response",196  "required": "on 200",197  "description": "Most restrictive token bucket in effect (rounded to nearest thousand). Live: 12000000.",198  "example": "anthropic-ratelimit-tokens-limit: 12000000",199  "status": [200   "DOCUMENTED",201   "LIVE_VERIFIED"202  ],203  "source": "https://platform.claude.com/docs/en/api/rate-limits",204  "_fragment": "generated/fragments/headers/anthropic-headers.json"205 },206 {207  "provider": "anthropic",208  "name": "anthropic-ratelimit-input-tokens-limit / -remaining / -reset",209  "direction": "response",210  "required": "on 200",211  "description": "Input-token bucket. Live: 10000000.",212  "example": "anthropic-ratelimit-input-tokens-remaining: 10000000",213  "status": [214   "DOCUMENTED",215   "LIVE_VERIFIED"216  ],217  "source": "https://platform.claude.com/docs/en/api/rate-limits",218  "_fragment": "generated/fragments/headers/anthropic-headers.json"219 },220 {221  "provider": "anthropic",222  "name": "anthropic-ratelimit-output-tokens-limit / -remaining / -reset",223  "direction": "response",224  "required": "on 200",225  "description": "Output-token bucket. Live: 2000000.",226  "example": "anthropic-ratelimit-output-tokens-limit: 2000000",227  "status": [228   "DOCUMENTED",229   "LIVE_VERIFIED"230  ],231  "source": "https://platform.claude.com/docs/en/api/rate-limits",232  "_fragment": "generated/fragments/headers/anthropic-headers.json"233 },234 {235  "provider": "anthropic",236  "name": "anthropic-priority-input-tokens-limit / -remaining / -reset",237  "direction": "response",238  "required": "Priority Tier only",239  "description": "Priority Tier input-token capacity; presence signals the request was eligible for Priority Tier.",240  "example": "anthropic-priority-input-tokens-limit: …",241  "status": [242   "DOCUMENTED"243  ],244  "source": "https://platform.claude.com/docs/en/api/rate-limits",245  "_fragment": "generated/fragments/headers/anthropic-headers.json"246 },247 {248  "provider": "anthropic",249  "name": "anthropic-priority-output-tokens-limit / -remaining / -reset",250  "direction": "response",251  "required": "Priority Tier only",252  "description": "Priority Tier output-token capacity.",253  "example": "anthropic-priority-output-tokens-limit: …",254  "status": [255   "DOCUMENTED"256  ],257  "source": "https://platform.claude.com/docs/en/api/rate-limits",258  "_fragment": "generated/fragments/headers/anthropic-headers.json"259 },260 {261  "provider": "anthropic",262  "name": "cf-ray",263  "direction": "response",264  "required": "always",265  "description": "Cloudflare edge id (requests traverse Cloudflare; 413 is returned by Cloudflare).",266  "example": "CF-RAY: a3d4f1316811a314-YUL",267  "status": [268   "LIVE_DISCOVERED"269  ],270  "source": "https://platform.claude.com/docs/en/api/errors",271  "_fragment": "generated/fragments/headers/anthropic-headers.json"272 },273 {274  "provider": "anthropic",275  "name": "x-amzn-requestid",276  "direction": "response",277  "required": "Claude Platform on AWS only",278  "description": "AWS request id alongside request-id.",279  "example": "x-amzn-requestid: …",280  "status": [281   "DOCUMENTED"282  ],283  "source": "https://platform.claude.com/docs/en/api/errors",284  "_fragment": "generated/fragments/headers/anthropic-headers.json"285 },286 {287  "provider": "anthropic",288  "name": "content-type: text/event-stream",289  "direction": "response",290  "required": "when stream=true",291  "description": "SSE stream: named events (`event: <type>` + `data: <json>`), no `data: [DONE]` since version 2023-06-01.",292  "example": "content-type: text/event-stream",293  "status": [294   "DOCUMENTED",295   "LIVE_VERIFIED"296  ],297  "source": "https://platform.claude.com/docs/en/build-with-claude/streaming",298  "_fragment": "generated/fragments/headers/anthropic-headers.json"299 },300 {301  "provider": "gemini",302  "name": "x-goog-api-key",303  "direction": "request",304  "required": "yes (unless Authorization or ?key=)",305  "description": "Gemini API key (AI Studio). Preferred way to authenticate the Gemini Developer API; used by the GenAI SDKs and this atlas. Standard keys are being replaced by authorization keys (bound to a service account); standard keys rejected from September 2026. Invalid/blocked keys -> 400 INVALID_ARGUMENT 'API key not valid' or 403 PERMISSION_DENIED; leaked keys -> 'Your API key was reported as leaked'.",306  "example": "x-goog-api-key: AIza...",307  "status": [308   "DOCUMENTED",309   "LIVE_VERIFIED"310  ],311  "source": "https://ai.google.dev/gemini-api/docs/api-key",312  "_fragment": "generated/fragments/headers/gemini-headers.json"313 },314 {315  "provider": "gemini",316  "name": "key (query parameter)",317  "direction": "request",318  "required": "alternative to x-goog-api-key",319  "description": "`?key=API_KEY` query-string alternative documented in the discovery document ('Required unless you provide an OAuth 2.0 token'). Still shown in some REST reference snippets, but discouraged: keys end up in URLs, logs and referrers. Never used by this atlas.",320  "example": "GET /v1beta/models?key=AIza... (avoid)",321  "status": [322   "DOCUMENTED"323  ],324  "source": "https://ai.google.dev/api/models",325  "_fragment": "generated/fragments/headers/gemini-headers.json"326 },327 {328  "provider": "gemini",329  "name": "Authorization",330  "direction": "request",331  "required": "OpenAI-compat: yes; native API: alternative",332  "description": "`Bearer <token>`. (1) OpenAI-compatibility layer (/v1beta/openai/*) REQUIRES the Gemini API key as `Authorization: Bearer <GEMINI_API_KEY>`; sending only x-goog-api-key returns 400 INVALID_ARGUMENT 'Missing or invalid Authorization header.' (live 2026-09-19). (2) Native API: OAuth 2.0 access token (user credentials or application-default credentials, scope generative-language) for stricter access control, tuned-model / corpora permissions; gcloud ADC flow documented in oauth.md.",333  "example": "Authorization: Bearer <api key | OAuth access token>",334  "status": [335   "DOCUMENTED",336   "LIVE_VERIFIED"337  ],338  "source": "https://ai.google.dev/gemini-api/docs/openai",339  "_fragment": "generated/fragments/headers/gemini-headers.json"340 },341 {342  "provider": "gemini",343  "name": "x-goog-user-project",344  "direction": "request",345  "required": "no",346  "description": "Standard Google API header naming the Cloud project billed/quota-charged when authenticating with OAuth user credentials instead of an API key. Sent by the google-genai SDK when configured; not mentioned in Gemini docs pages.",347  "example": "x-goog-user-project: my-project-id",348  "status": [349   "UNVERIFIED"350  ],351  "source": "https://cloud.google.com/docs/authentication/rest#set-billing-project",352  "_fragment": "generated/fragments/headers/gemini-headers.json"353 },354 {355  "provider": "gemini",356  "name": "Content-Type",357  "direction": "request",358  "required": "yes for JSON bodies",359  "description": "`application/json` for all JSON methods. Resumable media upload uses `X-Goog-Upload-*` headers instead. The Batch API JSONL upload uses mime type `jsonl`.",360  "example": "Content-Type: application/json",361  "status": [362   "DOCUMENTED",363   "LIVE_VERIFIED"364  ],365  "source": "https://ai.google.dev/gemini-api/docs/quickstart",366  "_fragment": "generated/fragments/headers/gemini-headers.json"367 },368 {369  "provider": "gemini",370  "name": "alt (query parameter)",371  "direction": "request",372  "required": "for SSE streaming",373  "description": "`?alt=sse` switches streamGenerateContent / interactions streaming to Server-Sent Events (`text/event-stream`, `data: {...}` lines). Without it streamGenerateContent returns a JSON array of chunks. Discovery doc also lists alt=json|media|proto.",374  "example": "POST /v1beta/models/gemini-3.8-flash:streamGenerateContent?alt=sse",375  "status": [376   "DOCUMENTED"377  ],378  "source": "https://ai.google.dev/gemini-api/docs/text-generation",379  "_fragment": "generated/fragments/headers/gemini-headers.json"380 },381 {382  "provider": "gemini",383  "name": "x-goog-api-client",384  "direction": "request",385  "required": "no (SDK telemetry)",386  "description": "Client library identifier sent by the GenAI SDKs, e.g. `google-genai-sdk/2.24.0 gl-python/3.13` (Python) or `google-genai-sdk/2.23.0 gl-node/...` (JS). Not required for raw REST calls.",387  "example": "x-goog-api-client: google-genai-sdk/2.24.0 gl-python/3.13",388  "status": [389   "DOCUMENTED"390  ],391  "source": "https://github.com/googleapis/python-genai (_api_client.py)",392  "_fragment": "generated/fragments/headers/gemini-headers.json"393 },394 {395  "provider": "gemini",396  "name": "X-Server-Timeout",397  "direction": "request",398  "required": "no",399  "description": "Server-side timeout hint (seconds) set by the google-genai SDK from `http_options.timeout` (SDK code); relevant for long Flex / Deep Research requests.",400  "example": "X-Server-Timeout: 600",401  "status": [402   "UNVERIFIED"403  ],404  "source": "https://github.com/googleapis/python-genai (_api_client.py)",405  "_fragment": "generated/fragments/headers/gemini-headers.json"406 },407 {408  "provider": "gemini",409  "name": "X-Goog-Upload-Protocol / X-Goog-Upload-Command / X-Goog-Upload-Header-Content-Length / X-Goog-Upload-Header-Content-Type / X-Goog-Upload-Offset",410  "direction": "request",411  "required": "for resumable uploads",412  "description": "Resumable upload protocol on /upload/v1beta/files and /upload/v1beta/fileSearchStores/{store}:uploadToFileSearchStore: start with `X-Goog-Upload-Protocol: resumable`, `X-Goog-Upload-Command: start`, then `upload, finalize` to the `x-goog-upload-url` returned in the response headers.",413  "example": "X-Goog-Upload-Protocol: resumable",414  "status": [415   "DOCUMENTED"416  ],417  "source": "https://ai.google.dev/gemini-api/docs/file-search",418  "_fragment": "generated/fragments/headers/gemini-headers.json"419 },420 {421  "provider": "gemini",422  "name": "x-goog-upload-url",423  "direction": "response",424  "required": null,425  "description": "Returned by the resumable-upload `start` request; subsequent upload/finalize chunks are sent to this URL.",426  "example": "x-goog-upload-url: https://generativelanguage.googleapis.com/upload/v1beta/files?upload_id=...",427  "status": [428   "DOCUMENTED"429  ],430  "source": "https://ai.google.dev/gemini-api/docs/files",431  "_fragment": "generated/fragments/headers/gemini-headers.json"432 },433 {434  "provider": "gemini",435  "name": "X-Gemini-Service-Tier",436  "direction": "response",437  "required": null,438  "description": "Undocumented response header observed on every native generateContent response (200 and 429): the service tier that handled the request; mirrors `usageMetadata.serviceTier`. Absent on the OpenAI-compat endpoint.",439  "example": "X-Gemini-Service-Tier: standard",440  "status": [441   "LIVE_DISCOVERED"442  ],443  "source": "live probe 2026-09-19 (tmp-live/gemini-models-probe.json)",444  "_fragment": "generated/fragments/headers/gemini-headers.json"445 },446 {447  "provider": "gemini",448  "name": "Server-Timing",449  "direction": "response",450  "required": null,451  "description": "Google front-end timing, e.g. `gfet4t7; dur=87` (ms). Only timing header present; no request-id header is returned (use `responseId` in the JSON body).",452  "example": "Server-Timing: gfet4t7; dur=87",453  "status": [454   "LIVE_DISCOVERED"455  ],456  "source": "live probe 2026-09-19",457  "_fragment": "generated/fragments/headers/gemini-headers.json"458 },459 {460  "provider": "gemini",461  "name": "x-ratelimit-* / Retry-After",462  "direction": "response",463  "required": null,464  "description": "NOT exposed. Neither the docs nor live responses (200/404/429) carry rate-limit remaining/reset headers or Retry-After; the retry delay is embedded in the 429 message text ('Please retry in 54.2s').",465  "example": "(absent)",466  "status": [467   "LIVE_DISCOVERED"468  ],469  "source": "live probe 2026-09-19",470  "_fragment": "generated/fragments/headers/gemini-headers.json"471 },472 {473  "provider": "gemini",474  "name": "Content-Type",475  "direction": "response",476  "required": null,477  "description": "`application/json; charset=UTF-8` for JSON; `text/event-stream` with alt=sse; media downloads via /download/v1beta/files/{name}:download return the file's mime type.",478  "example": "Content-Type: application/json; charset=UTF-8",479  "status": [480   "LIVE_VERIFIED"481  ],482  "source": "live probe 2026-09-19",483  "_fragment": "generated/fragments/headers/gemini-headers.json"484 },485 {486  "provider": "gemini",487  "name": "Set-Cookie / P3P / Cache-Control / Expires",488  "direction": "response",489  "required": null,490  "description": "Present only on the OpenAI-compatibility endpoints (/v1beta/openai/*), which are served by a different front end; harmless but note when comparing raw responses.",491  "example": "Cache-Control: private",492  "status": [493   "LIVE_DISCOVERED"494  ],495  "source": "live probe 2026-09-19",496  "_fragment": "generated/fragments/headers/gemini-headers.json"497 },498 {499  "provider": "gemini",500  "name": "Vertex-style headers (not applicable)",501  "direction": "request",502  "required": "no",503  "description": "The Gemini Developer API has no API-version header (version is in the URL path /v1 or /v1beta) and no beta-feature header; features are gated by path version only. Gemini Enterprise Agent Platform (Vertex AI) instead uses OAuth/ADC `Authorization: Bearer` with regional hosts `https://{location}-aiplatform.googleapis.com/v1/projects/{project}/locations/{location}/publishers/google/models/{model}:generateContent`.",504  "example": "(none)",505  "status": [506   "DOCUMENTED"507  ],508  "source": "https://ai.google.dev/gemini-api/docs/api-versions",509  "_fragment": "generated/fragments/headers/gemini-headers.json"510 },511 {512  "provider": "openai",513  "name": "Authorization",514  "direction": "request",515  "required": true,516  "description": "`Bearer <credential>`: project API key (sk-proj-...), legacy user key (sk-...), service-account key, Admin API key (sk-admin-..., admin endpoints only) or a short-lived workload-identity access token. Revocation propagates within seconds; other auth-affecting updates within ~15 min.",517  "example": "Authorization: Bearer $OPENAI_API_KEY",518  "status": [519   "DOCUMENTED",520   "LIVE_VERIFIED"521  ],522  "source": "https://developers.openai.com/api/reference/overview#authentication",523  "_fragment": "generated/fragments/headers/openai-headers.json"524 },525 {526  "provider": "openai",527  "name": "OpenAI-Organization",528  "direction": "request",529  "required": false,530  "description": "Selects the billing organization for users in several orgs / legacy user keys. With a project key it must match the key's org, else 401 `mismatched_organization` (observed).",531  "example": "OpenAI-Organization: org-xxxxxxxx",532  "status": [533   "DOCUMENTED",534   "LIVE_VERIFIED"535  ],536  "source": "https://developers.openai.com/api/reference/overview#authentication",537  "_fragment": "generated/fragments/headers/openai-headers.json"538 },539 {540  "provider": "openai",541  "name": "OpenAI-Project",542  "direction": "request",543  "required": false,544  "description": "Selects the project for legacy user keys. Unknown project -> 401 `invalid_project` \"No such project\" (observed). Project keys are already project-bound.",545  "example": "OpenAI-Project: proj_xxxxxxxx",546  "status": [547   "DOCUMENTED",548   "LIVE_VERIFIED"549  ],550  "source": "https://developers.openai.com/api/reference/overview#authentication",551  "_fragment": "generated/fragments/headers/openai-headers.json"552 },553 {554  "provider": "openai",555  "name": "Content-Type",556  "direction": "request",557  "required": true,558  "description": "`application/json` for JSON endpoints (anything else -> 400 `unsupported_content_type`, observed); `multipart/form-data` for file uploads (files, uploads/parts, audio, image edits/variations, containers files); `application/sdp` for Realtime WebRTC.",559  "example": "Content-Type: application/json",560  "status": [561   "DOCUMENTED",562   "LIVE_VERIFIED"563  ],564  "source": "https://developers.openai.com/api/reference/overview",565  "_fragment": "generated/fragments/headers/openai-headers.json"566 },567 {568  "provider": "openai",569  "name": "OpenAI-Beta",570  "direction": "request",571  "required": false,572  "description": "Opt-in to beta surfaces. Values found in the docs/spec: `assistants=v2` (legacy Assistants), `agents=v1` (Agents API /v1/agents/*, 400 `invalid_beta` without it — observed by another agent), `chatkit_beta=v1` (ChatKit), `responses_multi_agent=v1` (Responses multi-agent), `workspace_agent_runs=v1`, `realtime=v1` (legacy Realtime beta). Historic `assistants=v1` retired.",573  "example": "OpenAI-Beta: agents=v1",574  "status": [575   "DOCUMENTED"576  ],577  "source": "https://developers.openai.com/api/reference/resources/beta",578  "_fragment": "generated/fragments/headers/openai-headers.json"579 },580 {581  "provider": "openai",582  "name": "X-Client-Request-Id",583  "direction": "request",584  "required": false,585  "description": "Caller-supplied correlation id logged by OpenAI for supported endpoints (chat/completions, embeddings, responses, ...). ASCII only, <= 512 chars, unique per request; violation -> 400 (observed: \"X-Client-Request-Id header contains non-ASCII characters\"). Not echoed back in response headers (observed).",586  "example": "X-Client-Request-Id: 123e4567-e89b-12d3-a456-426614174000",587  "status": [588   "DOCUMENTED",589   "LIVE_VERIFIED"590  ],591  "source": "https://developers.openai.com/api/reference/overview#supplying-your-own-request-id-with-x-client-request-id",592  "_fragment": "generated/fragments/headers/openai-headers.json"593 },594 {595  "provider": "openai",596  "name": "Idempotency-Key",597  "direction": "request",598  "required": false,599  "description": "NOT documented for the OpenAI API (no occurrence in the OpenAPI spec or docs pages). OpenAI SDKs do not send one. Deduplicate on your side (e.g. Responses `metadata`, Batch `custom_id`, webhook `webhook-id`).",600  "example": null,601  "status": [602   "UNVERIFIED"603  ],604  "source": "https://developers.openai.com/api/reference/overview",605  "_fragment": "generated/fragments/headers/openai-headers.json"606 },607 {608  "provider": "openai",609  "name": "Accept",610  "direction": "request",611  "required": false,612  "description": "`text/event-stream` is implied by `stream: true`; not required. For SSE responses the server sets `Content-Type: text/event-stream`.",613  "example": "Accept: text/event-stream",614  "status": [615   "DOCUMENTED"616  ],617  "source": "https://developers.openai.com/api/reference/resources/responses/streaming-events",618  "_fragment": "generated/fragments/headers/openai-headers.json"619 },620 {621  "provider": "openai",622  "name": "User-Agent",623  "direction": "request",624  "required": false,625  "description": "SDKs send `OpenAI/Python <ver>` / `OpenAI/JS <ver>` plus `X-Stainless-*` telemetry headers (X-Stainless-Lang, -Package-Version, -OS, -Arch, -Runtime, -Runtime-Version, X-Stainless-Retry-Count, X-Stainless-Timeout, x-stainless-read-timeout). Total request headers must stay under 64 KiB (custom values <= 60 KiB).",626  "example": "User-Agent: OpenAI/Python 3.16.2",627  "status": [628   "DOCUMENTED"629  ],630  "source": "https://developers.openai.com/api/reference/overview#request-headers",631  "_fragment": "generated/fragments/headers/openai-headers.json"632 },633 {634  "provider": "openai",635  "name": "x-request-id",636  "direction": "response",637  "required": false,638  "description": "Unique request id for support/troubleshooting. Observed formats: `req_<32 hex>` on model endpoints (chat/completions, responses, audit_logs) and a UUID on others (models, webhook_endpoints, organization/*). Absent on edge 404s (unknown URL). SDKs expose it as `response._request_id` (Python) / `_request_id` (Node).",639  "example": "x-request-id: req_b02412ebc5604692b13b994c52e5e674",640  "status": [641   "DOCUMENTED",642   "LIVE_VERIFIED"643  ],644  "source": "https://developers.openai.com/api/reference/overview#debugging-requests",645  "_fragment": "generated/fragments/headers/openai-headers.json"646 },647 {648  "provider": "openai",649  "name": "openai-processing-ms",650  "direction": "response",651  "required": false,652  "description": "Server processing time in ms (observed 2-582 ms on our probes).",653  "example": "openai-processing-ms: 396",654  "status": [655   "DOCUMENTED",656   "LIVE_VERIFIED"657  ],658  "source": "https://developers.openai.com/api/reference/overview#debugging-requests",659  "_fragment": "generated/fragments/headers/openai-headers.json"660 },661 {662  "provider": "openai",663  "name": "openai-version",664  "direction": "response",665  "required": false,666  "description": "REST API version, currently `2020-10-01` (observed on every response including 4xx).",667  "example": "openai-version: 2020-10-01",668  "status": [669   "DOCUMENTED",670   "LIVE_VERIFIED"671  ],672  "source": "https://developers.openai.com/api/reference/overview#debugging-requests",673  "_fragment": "generated/fragments/headers/openai-headers.json"674 },675 {676  "provider": "openai",677  "name": "openai-organization",678  "direction": "response",679  "required": false,680  "description": "Organization slug/id that was billed (observed on model calls and on 403 admin errors; absent on 401 auth failures and on GET /v1/models/{id}).",681  "example": "openai-organization: org-slug",682  "status": [683   "DOCUMENTED",684   "LIVE_VERIFIED"685  ],686  "source": "https://developers.openai.com/api/reference/overview#debugging-requests",687  "_fragment": "generated/fragments/headers/openai-headers.json"688 },689 {690  "provider": "openai",691  "name": "openai-project",692  "direction": "response",693  "required": false,694  "description": "Project id (`proj_...`) of the key used. Observed on chat/completions, responses errors, webhook_endpoints, organization/* 403s. Not listed in the overview page (observed only).",695  "example": "openai-project: proj_xxxxxxxx",696  "status": [697   "LIVE_DISCOVERED"698  ],699  "source": "https://developers.openai.com/api/reference/overview#debugging-requests",700  "_fragment": "generated/fragments/headers/openai-headers.json"701 },702 {703  "provider": "openai",704  "name": "x-ratelimit-limit-requests",705  "direction": "response",706  "required": false,707  "description": "RPM limit for the model/tier (observed 30000 on gpt-4.1-nano chat completion).",708  "example": "x-ratelimit-limit-requests: 30000",709  "status": [710   "DOCUMENTED",711   "LIVE_VERIFIED"712  ],713  "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers",714  "_fragment": "generated/fragments/headers/openai-headers.json"715 },716 {717  "provider": "openai",718  "name": "x-ratelimit-limit-tokens",719  "direction": "response",720  "required": false,721  "description": "TPM limit (observed 150000000).",722  "example": "x-ratelimit-limit-tokens: 150000000",723  "status": [724   "DOCUMENTED",725   "LIVE_VERIFIED"726  ],727  "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers",728  "_fragment": "generated/fragments/headers/openai-headers.json"729 },730 {731  "provider": "openai",732  "name": "x-ratelimit-remaining-requests",733  "direction": "response",734  "required": false,735  "description": "Requests left in the window.",736  "example": "x-ratelimit-remaining-requests: 29999",737  "status": [738   "DOCUMENTED",739   "LIVE_VERIFIED"740  ],741  "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers",742  "_fragment": "generated/fragments/headers/openai-headers.json"743 },744 {745  "provider": "openai",746  "name": "x-ratelimit-remaining-tokens",747  "direction": "response",748  "required": false,749  "description": "Tokens left in the window (estimated from prompt chars + max tokens).",750  "example": "x-ratelimit-remaining-tokens: 149999995",751  "status": [752   "DOCUMENTED",753   "LIVE_VERIFIED"754  ],755  "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers",756  "_fragment": "generated/fragments/headers/openai-headers.json"757 },758 {759  "provider": "openai",760  "name": "x-ratelimit-reset-requests",761  "direction": "response",762  "required": false,763  "description": "Go-style duration until the request window resets (observed `2ms`; docs sample `1s`, `6m0s`).",764  "example": "x-ratelimit-reset-requests: 2ms",765  "status": [766   "DOCUMENTED",767   "LIVE_VERIFIED"768  ],769  "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers",770  "_fragment": "generated/fragments/headers/openai-headers.json"771 },772 {773  "provider": "openai",774  "name": "x-ratelimit-reset-tokens",775  "direction": "response",776  "required": false,777  "description": "Duration until the token window resets (observed `0s`).",778  "example": "x-ratelimit-reset-tokens: 0s",779  "status": [780   "DOCUMENTED",781   "LIVE_VERIFIED"782  ],783  "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers",784  "_fragment": "generated/fragments/headers/openai-headers.json"785 },786 {787  "provider": "openai",788  "name": "x-ratelimit-limit-project-tokens",789  "direction": "response",790  "required": false,791  "description": "Project-scoped TPM limit; only present when a project token limit applies (not observed on our project).",792  "example": "x-ratelimit-limit-project-tokens: 60000",793  "status": [794   "DOCUMENTED"795  ],796  "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers",797  "_fragment": "generated/fragments/headers/openai-headers.json"798 },799 {800  "provider": "openai",801  "name": "x-ratelimit-remaining-project-tokens",802  "direction": "response",803  "required": false,804  "description": "Remaining project-scoped tokens (conditional).",805  "example": "x-ratelimit-remaining-project-tokens: 57000",806  "status": [807   "DOCUMENTED"808  ],809  "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers",810  "_fragment": "generated/fragments/headers/openai-headers.json"811 },812 {813  "provider": "openai",814  "name": "x-ratelimit-reset-project-tokens",815  "direction": "response",816  "required": false,817  "description": "Reset duration for the project token window (conditional).",818  "example": "x-ratelimit-reset-project-tokens: 3s",819  "status": [820   "DOCUMENTED"821  ],822  "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers",823  "_fragment": "generated/fragments/headers/openai-headers.json"824 },825 {826  "provider": "openai",827  "name": "Retry-After",828  "direction": "response",829  "required": false,830  "description": "Minimum seconds to wait; may accompany 429 (temporary rate limit / slow_down) and 503 (server_is_overloaded). Never sent for quota/billing 429s. SDKs also honour a `retry-after-ms` header and refuse to auto-retry when the delay exceeds their cap (Python: 60 s).",831  "example": "Retry-After: 56",832  "status": [833   "DOCUMENTED"834  ],835  "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers",836  "_fragment": "generated/fragments/headers/openai-headers.json"837 },838 {839  "provider": "openai",840  "name": "x-should-retry",841  "direction": "response",842  "required": false,843  "description": "Server hint honoured by the official SDKs: `true` forces a retry, `false` suppresses it (SDK source `_should_retry`). Not documented on the public docs pages.",844  "example": "x-should-retry: false",845  "status": [846   "LIVE_DISCOVERED"847  ],848  "source": "https://github.com/openai/openai-python (src/openai/_base_client.py)",849  "_fragment": "generated/fragments/headers/openai-headers.json"850 },851 {852  "provider": "openai",853  "name": "retry-after-ms",854  "direction": "response",855  "required": false,856  "description": "Millisecond variant of Retry-After parsed by the SDKs before `retry-after`.",857  "example": "retry-after-ms: 1500",858  "status": [859   "LIVE_DISCOVERED"860  ],861  "source": "https://github.com/openai/openai-python (src/openai/_base_client.py)",862  "_fragment": "generated/fragments/headers/openai-headers.json"863 },864 {865  "provider": "openai",866  "name": "CF-RAY",867  "direction": "response",868  "required": false,869  "description": "Cloudflare edge trace id (observed on every response, including the bodyless 404 for unknown URLs). Useful for support alongside x-request-id.",870  "example": "CF-RAY: a3d4e6b249d053f0-YUL",871  "status": [872   "LIVE_DISCOVERED"873  ],874  "source": "https://developers.openai.com/api/reference/overview#debugging-requests",875  "_fragment": "generated/fragments/headers/openai-headers.json"876 },877 {878  "provider": "openai",879  "name": "Location",880  "direction": "response",881  "required": false,882  "description": "Realtime WebRTC: `POST /v1/realtime/calls` returns 201 with `Location: /v1/realtime/calls/{call_id}` (call id reused for accept/reject/hangup and matches `realtime.call.incoming` webhooks).",883  "example": "Location: /v1/realtime/calls/rtc_xxx",884  "status": [885   "DOCUMENTED"886  ],887  "source": "https://developers.openai.com/api/reference/resources/realtime",888  "_fragment": "generated/fragments/headers/openai-headers.json"889 },890 {891  "provider": "openai",892  "name": "webhook-id",893  "direction": "webhook (OpenAI -> you)",894  "required": true,895  "description": "Unique delivery id (`wh_...`); use as idempotency key to deduplicate redeliveries. Part of the signed string `${webhook-id}.${webhook-timestamp}.${body}`.",896  "example": "webhook-id: wh_685342e6c53c8190a1be43f081506c52",897  "status": [898   "DOCUMENTED"899  ],900  "source": "https://developers.openai.com/api/docs/guides/webhooks#verifying-webhook-signatures",901  "_fragment": "generated/fragments/headers/openai-headers.json"902 },903 {904  "provider": "openai",905  "name": "webhook-timestamp",906  "direction": "webhook (OpenAI -> you)",907  "required": true,908  "description": "Unix seconds at send time; SDKs reject if |now - ts| > tolerance (default 300 s).",909  "example": "webhook-timestamp: 1750287078",910  "status": [911   "DOCUMENTED"912  ],913  "source": "https://developers.openai.com/api/docs/guides/webhooks#verifying-webhook-signatures",914  "_fragment": "generated/fragments/headers/openai-headers.json"915 },916 {917  "provider": "openai",918  "name": "webhook-signature",919  "direction": "webhook (OpenAI -> you)",920  "required": true,921  "description": "Standard Webhooks signature list: space-separated `v1,<base64(HMAC-SHA256(secret, id.timestamp.body))>` entries; secret is `whsec_<base64>` (decode after stripping the prefix). Multiple entries appear during secret rotation (keep_old_secret_active_for_24_hours).",922  "example": "webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4=",923  "status": [924   "DOCUMENTED"925  ],926  "source": "https://developers.openai.com/api/docs/guides/webhooks#verifying-webhook-signatures",927  "_fragment": "generated/fragments/headers/openai-headers.json"928 },929 {930  "provider": "openai",931  "name": "user-agent (webhook)",932  "direction": "webhook (OpenAI -> you)",933  "required": false,934  "description": "`OpenAI/1.0 (+https://platform.openai.com/docs/webhooks)`; body Content-Type `application/json`.",935  "example": "user-agent: OpenAI/1.0 (+https://platform.openai.com/docs/webhooks)",936  "status": [937   "DOCUMENTED"938  ],939  "source": "https://developers.openai.com/api/docs/guides/webhooks#handling-webhook-requests-on-a-server",940  "_fragment": "generated/fragments/headers/openai-headers.json"941 },942 {943  "provider": "openai",944  "name": "Sec-WebSocket-Protocol / Authorization (Realtime WebSocket)",945  "direction": "request",946  "required": true,947  "description": "Realtime WebSocket (`wss://api.openai.com/v1/realtime?model=...`): server-side use `Authorization: Bearer <key>`; browsers cannot set headers so pass an ephemeral client secret via subprotocols `realtime, openai-insecure-api-key.<EPHEMERAL_KEY>` (from POST /v1/realtime/client_secrets). Legacy beta added `OpenAI-Beta: realtime=v1`.",948  "example": "Authorization: Bearer $OPENAI_API_KEY",949  "status": [950   "DOCUMENTED"951  ],952  "source": "https://developers.openai.com/api/docs/guides/realtime-conversations",953  "_fragment": "generated/fragments/headers/openai-headers.json"954 },955 {956  "provider": "xai",957  "name": "Authorization",958  "direction": "request",959  "required": "yes",960  "description": "Bearer API key (`xai-...`) for https://api.x.ai and regional/mTLS hosts; Bearer MANAGEMENT key for https://management-api.x.ai (distinct key type: an inference key on the Management API -> 401 {code:16,'Invalid bearer token. Please ensure you use a valid management key.'}). OAuth tokens are also accepted on /v1/me. Missing header -> 401 {code:'unauthenticated:no-credentials'}; malformed/incorrect key -> 400 {code:'invalid-argument','Incorrect API key provided...'} (not 401).",961  "example": "Authorization: Bearer xai-***",962  "status": [963   "DOCUMENTED",964   "LIVE_VERIFIED"965  ],966  "source": "https://docs.x.ai/developers/quickstart",967  "_fragment": "generated/fragments/headers/xai-headers.json"968 },969 {970  "provider": "xai",971  "name": "Content-Type",972  "direction": "request",973  "required": "yes for JSON POST bodies",974  "description": "application/json; multipart/form-data for file uploads and STT batch. Wrong type -> 415 Unsupported Media Type (documented).",975  "example": "Content-Type: application/json",976  "status": [977   "DOCUMENTED",978   "LIVE_VERIFIED"979  ],980  "source": "https://docs.x.ai/developers/debugging",981  "_fragment": "generated/fragments/headers/xai-headers.json"982 },983 {984  "provider": "xai",985  "name": "x-grok-conv-id",986  "direction": "request",987  "required": "no (recommended)",988  "description": "Chat Completions: conversation id used to route all requests of a conversation to the same server so the automatic prompt cache hits. Responses API equivalent is the body field `prompt_cache_key`. Not a beta header.",989  "example": "x-grok-conv-id: conv_abc123",990  "status": [991   "DOCUMENTED"992  ],993  "source": "https://docs.x.ai/developers/advanced-api-usage/prompt-caching/maximizing-cache-hits",994  "_fragment": "generated/fragments/headers/xai-headers.json"995 },996 {997  "provider": "xai",998  "name": "xai-sdk-version / xai-sdk-language",999  "direction": "request",1000  "required": "no",1001  "description": "gRPC metadata automatically added by the official Python SDK (`python/1.19.0`, `python/3.12`).",1002  "example": "xai-sdk-version: python/1.19.0",1003  "status": [1004   "LIVE_DISCOVERED"1005  ],1006  "source": "xai_sdk/client.py (installed .venv, xai-sdk 1.19.0)",1007  "_fragment": "generated/fragments/headers/xai-headers.json"1008 },1009 {1010  "provider": "xai",1011  "name": "x-request-id",1012  "direction": "response",1013  "required": "n/a",1014  "description": "UUID of the request; also equals the `id` of chat.completion objects. Present on most inference responses (absent on GET /v1/models, /v1/api-key, /v1/me in our run). Quote it in bug reports to support@x.ai.",1015  "example": "x-request-id: 0ef8d47f-e0a9-9d28-9dbf-a550f288c419",1016  "status": [1017   "LIVE_DISCOVERED"1018  ],1019  "source": "live 2026-09-19",1020  "_fragment": "generated/fragments/headers/xai-headers.json"1021 },1022 {1023  "provider": "xai",1024  "name": "x-ratelimit-limit-requests",1025  "direction": "response",1026  "required": "n/a",1027  "description": "Request budget of the key for the model (appears to be per minute: 7200 for grok-4.6/4.5, 1800 for grok-4.3/4.20/build, 1800 on POST /v1/tokenize-text). Not documented on docs.x.ai.",1028  "example": "x-ratelimit-limit-requests: 1800",1029  "status": [1030   "LIVE_DISCOVERED"1031  ],1032  "source": "live 2026-09-19",1033  "_fragment": "generated/fragments/headers/xai-headers.json"1034 },1035 {1036  "provider": "xai",1037  "name": "x-ratelimit-remaining-requests",1038  "direction": "response",1039  "required": "n/a",1040  "description": "Remaining requests in the current window (equal to the limit after each of our single probes).",1041  "example": "x-ratelimit-remaining-requests: 1800",1042  "status": [1043   "LIVE_DISCOVERED"1044  ],1045  "source": "live 2026-09-19",1046  "_fragment": "generated/fragments/headers/xai-headers.json"1047 },1048 {1049  "provider": "xai",1050  "name": "x-ratelimit-limit-tokens",1051  "direction": "response",1052  "required": "n/a",1053  "description": "Tokens-per-minute budget for the model (50000000 for grok-4.6/4.5, 10000000 for grok-4.3/4.20/build = documented Tier 0 TPM). Absent on tokenize-text and on the multi-agent Responses call.",1054  "example": "x-ratelimit-limit-tokens: 10000000",1055  "status": [1056   "LIVE_DISCOVERED"1057  ],1058  "source": "live 2026-09-19",1059  "_fragment": "generated/fragments/headers/xai-headers.json"1060 },1061 {1062  "provider": "xai",1063  "name": "x-ratelimit-remaining-tokens",1064  "direction": "response",1065  "required": "n/a",1066  "description": "Remaining TPM budget.",1067  "example": "x-ratelimit-remaining-tokens: 10000000",1068  "status": [1069   "LIVE_DISCOVERED"1070  ],1071  "source": "live 2026-09-19",1072  "_fragment": "generated/fragments/headers/xai-headers.json"1073 },1074 {1075  "provider": "xai",1076  "name": "x-zero-data-retention",1077  "direction": "response",1078  "required": "n/a",1079  "description": "\"true\" or \"false\": whether Zero Data Retention is active for the team (documented in the Security FAQ). Not observed in our run's captured header subset; GET /v1/me returned zdr_status \"no_zdr\".",1080  "example": "x-zero-data-retention: false",1081  "status": [1082   "DOCUMENTED"1083  ],1084  "source": "https://docs.x.ai/developers/faq/security",1085  "_fragment": "generated/fragments/headers/xai-headers.json"1086 },1087 {1088  "provider": "xai",1089  "name": "Server-Timing",1090  "direction": "response",1091  "required": "n/a",1092  "description": "Cloudflare timing (`cfEdge;dur=..,cfOrigin;dur=..`) - origin duration is a useful latency proxy (grok-4.6 minimal call: cfOrigin 2369 ms).",1093  "example": "Server-Timing: cfEdge;dur=68,cfOrigin;dur=2369",1094  "status": [1095   "LIVE_DISCOVERED"1096  ],1097  "source": "live 2026-09-19",1098  "_fragment": "generated/fragments/headers/xai-headers.json"1099 },1100 {1101  "provider": "xai",1102  "name": "CF-RAY",1103  "direction": "response",1104  "required": "n/a",1105  "description": "Cloudflare ray id + edge colo (…-YUL from Montreal).",1106  "example": "CF-RAY: a3d593c10dbc0682-YUL",1107  "status": [1108   "LIVE_DISCOVERED"1109  ],1110  "source": "live 2026-09-19",1111  "_fragment": "generated/fragments/headers/xai-headers.json"1112 },1113 {1114  "provider": "xai",1115  "name": "Retry-After",1116  "direction": "response",1117  "required": "n/a",1118  "description": "Not documented and not observed (no 429 triggered). Docs recommend exponential backoff on 429.",1119  "example": null,1120  "status": [1121   "UNVERIFIED"1122  ],1123  "source": "https://docs.x.ai/developers/rate-limits",1124  "_fragment": "generated/fragments/headers/xai-headers.json"1125 },1126 {1127  "provider": "xai",1128  "name": "(no versioning / beta headers)",1129  "direction": "request",1130  "required": "no",1131  "description": "xAI has no API-version header and no beta-feature headers (unlike anthropic-version / anthropic-beta or OpenAI-Beta). Features are selected by body fields (service_tier, reasoning_effort, store, prompt_cache_key, include) or by base URL.",1132  "example": null,1133  "status": [1134   "DOCUMENTED"1135  ],1136  "source": "https://docs.x.ai/developers/rest-api-reference/inference/chat-completions",1137  "_fragment": "generated/fragments/headers/xai-headers.json"1138 },1139 {1140  "provider": "xai",1141  "name": "base URLs",1142  "direction": "request",1143  "required": "n/a",1144  "description": "Global https://api.x.ai/v1 (processing region not guaranteed) · US regional https://us.api.x.ai/v1 (grok-4.6 only, 1.1x token prices, covers request handling + inference + moderation + retained data; LIVE: GET /v1/models lists only grok-4.6 at 22000/5500/66000 ticks) · https://eu-west-1.api.x.ai/v1 (UNDOCUMENTED, LIVE_DISCOVERED: GET /v1/models -> 200 listing only grok-4.3 at global prices) · mTLS https://mtls.api.x.ai (enterprise, team-level, API key still required) · WebSocket wss://api.x.ai/v1/responses, wss://api.x.ai/v1/realtime, wss://api.x.ai/v1/stt, wss://api.x.ai/v1/tts · gRPC api.x.ai:443 · Management https://management-api.x.ai · Model pages list clusters us-east-1, us-west-2, us-central-1, eu-west-1, us-saltlake-2; propagation endpoint example shows cloud9.api.x.ai and us-east-1.api.x.ai. Vertex AI and Microsoft Foundry expose Grok through their own hosts.",1145  "example": "https://us.api.x.ai/v1/responses",1146  "status": [1147   "DOCUMENTED",1148   "LIVE_VERIFIED"1149  ],1150  "source": "https://docs.x.ai/developers/advanced-api-usage/regions",1151  "_fragment": "generated/fragments/headers/xai-headers.json"1152 }1153]