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%
14.6 KB · 36 lines json
Raw Blame History
1[2 {"provider": "openai", "name": "Authorization", "direction": "request", "required": true, "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.", "example": "Authorization: Bearer $OPENAI_API_KEY", "status": ["DOCUMENTED", "LIVE_VERIFIED"], "source": "https://developers.openai.com/api/reference/overview#authentication"},3 {"provider": "openai", "name": "OpenAI-Organization", "direction": "request", "required": false, "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).", "example": "OpenAI-Organization: org-xxxxxxxx", "status": ["DOCUMENTED", "LIVE_VERIFIED"], "source": "https://developers.openai.com/api/reference/overview#authentication"},4 {"provider": "openai", "name": "OpenAI-Project", "direction": "request", "required": false, "description": "Selects the project for legacy user keys. Unknown project -> 401 `invalid_project` \"No such project\" (observed). Project keys are already project-bound.", "example": "OpenAI-Project: proj_xxxxxxxx", "status": ["DOCUMENTED", "LIVE_VERIFIED"], "source": "https://developers.openai.com/api/reference/overview#authentication"},5 {"provider": "openai", "name": "Content-Type", "direction": "request", "required": true, "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.", "example": "Content-Type: application/json", "status": ["DOCUMENTED", "LIVE_VERIFIED"], "source": "https://developers.openai.com/api/reference/overview"},6 {"provider": "openai", "name": "OpenAI-Beta", "direction": "request", "required": false, "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.", "example": "OpenAI-Beta: agents=v1", "status": ["DOCUMENTED"], "source": "https://developers.openai.com/api/reference/resources/beta"},7 {"provider": "openai", "name": "X-Client-Request-Id", "direction": "request", "required": false, "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).", "example": "X-Client-Request-Id: 123e4567-e89b-12d3-a456-426614174000", "status": ["DOCUMENTED", "LIVE_VERIFIED"], "source": "https://developers.openai.com/api/reference/overview#supplying-your-own-request-id-with-x-client-request-id"},8 {"provider": "openai", "name": "Idempotency-Key", "direction": "request", "required": false, "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`).", "example": null, "status": ["UNVERIFIED"], "source": "https://developers.openai.com/api/reference/overview"},9 {"provider": "openai", "name": "Accept", "direction": "request", "required": false, "description": "`text/event-stream` is implied by `stream: true`; not required. For SSE responses the server sets `Content-Type: text/event-stream`.", "example": "Accept: text/event-stream", "status": ["DOCUMENTED"], "source": "https://developers.openai.com/api/reference/resources/responses/streaming-events"},10 {"provider": "openai", "name": "User-Agent", "direction": "request", "required": false, "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).", "example": "User-Agent: OpenAI/Python 3.16.2", "status": ["DOCUMENTED"], "source": "https://developers.openai.com/api/reference/overview#request-headers"},11 {"provider": "openai", "name": "x-request-id", "direction": "response", "required": false, "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).", "example": "x-request-id: req_b02412ebc5604692b13b994c52e5e674", "status": ["DOCUMENTED", "LIVE_VERIFIED"], "source": "https://developers.openai.com/api/reference/overview#debugging-requests"},12 {"provider": "openai", "name": "openai-processing-ms", "direction": "response", "required": false, "description": "Server processing time in ms (observed 2-582 ms on our probes).", "example": "openai-processing-ms: 396", "status": ["DOCUMENTED", "LIVE_VERIFIED"], "source": "https://developers.openai.com/api/reference/overview#debugging-requests"},13 {"provider": "openai", "name": "openai-version", "direction": "response", "required": false, "description": "REST API version, currently `2020-10-01` (observed on every response including 4xx).", "example": "openai-version: 2020-10-01", "status": ["DOCUMENTED", "LIVE_VERIFIED"], "source": "https://developers.openai.com/api/reference/overview#debugging-requests"},14 {"provider": "openai", "name": "openai-organization", "direction": "response", "required": false, "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}).", "example": "openai-organization: org-slug", "status": ["DOCUMENTED", "LIVE_VERIFIED"], "source": "https://developers.openai.com/api/reference/overview#debugging-requests"},15 {"provider": "openai", "name": "openai-project", "direction": "response", "required": false, "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).", "example": "openai-project: proj_xxxxxxxx", "status": ["LIVE_DISCOVERED"], "source": "https://developers.openai.com/api/reference/overview#debugging-requests"},16 {"provider": "openai", "name": "x-ratelimit-limit-requests", "direction": "response", "required": false, "description": "RPM limit for the model/tier (observed 30000 on gpt-4.1-nano chat completion).", "example": "x-ratelimit-limit-requests: 30000", "status": ["DOCUMENTED", "LIVE_VERIFIED"], "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers"},17 {"provider": "openai", "name": "x-ratelimit-limit-tokens", "direction": "response", "required": false, "description": "TPM limit (observed 150000000).", "example": "x-ratelimit-limit-tokens: 150000000", "status": ["DOCUMENTED", "LIVE_VERIFIED"], "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers"},18 {"provider": "openai", "name": "x-ratelimit-remaining-requests", "direction": "response", "required": false, "description": "Requests left in the window.", "example": "x-ratelimit-remaining-requests: 29999", "status": ["DOCUMENTED", "LIVE_VERIFIED"], "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers"},19 {"provider": "openai", "name": "x-ratelimit-remaining-tokens", "direction": "response", "required": false, "description": "Tokens left in the window (estimated from prompt chars + max tokens).", "example": "x-ratelimit-remaining-tokens: 149999995", "status": ["DOCUMENTED", "LIVE_VERIFIED"], "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers"},20 {"provider": "openai", "name": "x-ratelimit-reset-requests", "direction": "response", "required": false, "description": "Go-style duration until the request window resets (observed `2ms`; docs sample `1s`, `6m0s`).", "example": "x-ratelimit-reset-requests: 2ms", "status": ["DOCUMENTED", "LIVE_VERIFIED"], "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers"},21 {"provider": "openai", "name": "x-ratelimit-reset-tokens", "direction": "response", "required": false, "description": "Duration until the token window resets (observed `0s`).", "example": "x-ratelimit-reset-tokens: 0s", "status": ["DOCUMENTED", "LIVE_VERIFIED"], "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers"},22 {"provider": "openai", "name": "x-ratelimit-limit-project-tokens", "direction": "response", "required": false, "description": "Project-scoped TPM limit; only present when a project token limit applies (not observed on our project).", "example": "x-ratelimit-limit-project-tokens: 60000", "status": ["DOCUMENTED"], "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers"},23 {"provider": "openai", "name": "x-ratelimit-remaining-project-tokens", "direction": "response", "required": false, "description": "Remaining project-scoped tokens (conditional).", "example": "x-ratelimit-remaining-project-tokens: 57000", "status": ["DOCUMENTED"], "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers"},24 {"provider": "openai", "name": "x-ratelimit-reset-project-tokens", "direction": "response", "required": false, "description": "Reset duration for the project token window (conditional).", "example": "x-ratelimit-reset-project-tokens: 3s", "status": ["DOCUMENTED"], "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers"},25 {"provider": "openai", "name": "Retry-After", "direction": "response", "required": false, "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).", "example": "Retry-After: 56", "status": ["DOCUMENTED"], "source": "https://developers.openai.com/api/docs/guides/rate-limits#rate-limits-in-headers"},26 {"provider": "openai", "name": "x-should-retry", "direction": "response", "required": false, "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.", "example": "x-should-retry: false", "status": ["LIVE_DISCOVERED"], "source": "https://github.com/openai/openai-python (src/openai/_base_client.py)"},27 {"provider": "openai", "name": "retry-after-ms", "direction": "response", "required": false, "description": "Millisecond variant of Retry-After parsed by the SDKs before `retry-after`.", "example": "retry-after-ms: 1500", "status": ["LIVE_DISCOVERED"], "source": "https://github.com/openai/openai-python (src/openai/_base_client.py)"},28 {"provider": "openai", "name": "CF-RAY", "direction": "response", "required": false, "description": "Cloudflare edge trace id (observed on every response, including the bodyless 404 for unknown URLs). Useful for support alongside x-request-id.", "example": "CF-RAY: a3d4e6b249d053f0-YUL", "status": ["LIVE_DISCOVERED"], "source": "https://developers.openai.com/api/reference/overview#debugging-requests"},29 {"provider": "openai", "name": "Location", "direction": "response", "required": false, "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).", "example": "Location: /v1/realtime/calls/rtc_xxx", "status": ["DOCUMENTED"], "source": "https://developers.openai.com/api/reference/resources/realtime"},30 {"provider": "openai", "name": "webhook-id", "direction": "webhook (OpenAI -> you)", "required": true, "description": "Unique delivery id (`wh_...`); use as idempotency key to deduplicate redeliveries. Part of the signed string `${webhook-id}.${webhook-timestamp}.${body}`.", "example": "webhook-id: wh_685342e6c53c8190a1be43f081506c52", "status": ["DOCUMENTED"], "source": "https://developers.openai.com/api/docs/guides/webhooks#verifying-webhook-signatures"},31 {"provider": "openai", "name": "webhook-timestamp", "direction": "webhook (OpenAI -> you)", "required": true, "description": "Unix seconds at send time; SDKs reject if |now - ts| > tolerance (default 300 s).", "example": "webhook-timestamp: 1750287078", "status": ["DOCUMENTED"], "source": "https://developers.openai.com/api/docs/guides/webhooks#verifying-webhook-signatures"},32 {"provider": "openai", "name": "webhook-signature", "direction": "webhook (OpenAI -> you)", "required": true, "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).", "example": "webhook-signature: v1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4=", "status": ["DOCUMENTED"], "source": "https://developers.openai.com/api/docs/guides/webhooks#verifying-webhook-signatures"},33 {"provider": "openai", "name": "user-agent (webhook)", "direction": "webhook (OpenAI -> you)", "required": false, "description": "`OpenAI/1.0 (+https://platform.openai.com/docs/webhooks)`; body Content-Type `application/json`.", "example": "user-agent: OpenAI/1.0 (+https://platform.openai.com/docs/webhooks)", "status": ["DOCUMENTED"], "source": "https://developers.openai.com/api/docs/guides/webhooks#handling-webhook-requests-on-a-server"},34 {"provider": "openai", "name": "Sec-WebSocket-Protocol / Authorization (Realtime WebSocket)", "direction": "request", "required": true, "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`.", "example": "Authorization: Bearer $OPENAI_API_KEY", "status": ["DOCUMENTED"], "source": "https://developers.openai.com/api/docs/guides/realtime-conversations"}35]36