Skip to content

Runtime Routes

Codex Pooler keeps runtime traffic, operator metadata, browser pages, health checks, and metrics on separate route families. This page covers the public runtime and operator API surfaces only. It is a reference for choosing the right base URL, not an exhaustive Phoenix route dump.

Route familyUse it forAuth boundary
/backend-api/codexCodex backend compatibility route for Codex-compatible clientsPool API key bearer auth
/backend-apiBackend file bridge, audio transcription, and backend usage routesPool API key bearer auth
/v1Narrow OpenAI-compatible /v1 support for selected SDK routesPool API key bearer auth
/mcpRead-only operator MCP endpoint for metadata lookupOperator-owned MCP bearer token
Usage routesRuntime usage checks exposed on compatibility pathsPool API key bearer auth

A Pool API key represents a Pool. It doesn’t represent one upstream account. Codex Pooler uses the Pool policy, model support, limits, health, routing state, and session continuity to select an eligible upstream account for each supported runtime request.

Use the backend API when a client expects Codex backend semantics. The main base URL is:

https://pooler.example.com/backend-api/codex

Supported Codex backend compatibility routes include:

RouteMeaning
GET /backend-api/codex/modelsList backend models visible to the authenticated Pool
POST /backend-api/codex/responsesSend backend Responses requests through Pool routing and accounting
GET /backend-api/codex/responsesBackend websocket response-stream compatibility
POST /backend-api/codex/responses/compactBackend compact compatibility
/backend-api/codex/v1/*Explicit backend aliases for clients that use /backend-api/codex/v1 as a base URL
POST /backend-api/codex/images/generationsBackend image generation proxy route
POST /backend-api/codex/images/editsBackend image edit proxy route

The /backend-api/codex/* surface is explicit authenticated Codex backend compatibility. It isn’t a wildcard proxy and it isn’t the OpenAI SDK surface.

Codex Pooler also exposes exact authenticated backend control-plane proxy routes under /backend-api/codex. These routes forward to exact upstream control-plane paths and keep request logs metadata-only.

Public examples include:

RouteMeaning
GET /backend-api/codex/thread/goal/getBackend thread-goal lookup compatibility
POST /backend-api/codex/thread/goal/getBackend thread-goal lookup compatibility with JSON body
POST /backend-api/codex/thread/goal/setBackend thread-goal update compatibility
POST /backend-api/codex/thread/goal/clearBackend thread-goal clear compatibility
POST /backend-api/codex/analytics-events/eventsBackend analytics event proxy route
POST /backend-api/codex/memories/trace_summarizeBackend memory trace summary proxy route
POST /backend-api/codex/alpha/searchBackend alpha search proxy route
POST /backend-api/codex/safety/arcBackend safety proxy route
GET /backend-api/codex/agent-identities/jwksBackend agent identity JWKS route

POST /backend-api/codex/realtime/calls is a Codex backend control-plane SDP proxy route only. It is not OpenAI Realtime SDK compatibility.

The /backend-api family also includes backend routes that don’t live under /backend-api/codex:

RouteMeaning
POST /backend-api/filesCreate upstream-backed file metadata and return an upstream upload URL
POST /backend-api/files/:file_id/uploadedFinalize an upstream-backed file upload
POST /backend-api/transcribeBackend audio transcription compatibility
GET /backend-api/wham/usageBackend usage route
GET /api/codex/usageUsage route
GET /wham/usageUsage route
GET /backend-api/wham/agent-identities/jwksBackend WHAM agent identity JWKS route

The backend file bridge stores metadata only. File bytes stay upstream-backed.

Use /v1 when a client or SDK needs an OpenAI-shaped base URL:

https://pooler.example.com/v1

Codex Pooler provides narrow OpenAI-compatible /v1 support for selected SDK routes. Supported requests are translated into Codex-compatible work, then sent through the same Pool routing, limit checks, account selection, and accounting path as backend traffic. It doesn’t provide full OpenAI API parity.

Supported /v1 routes include:

RouteMeaning
GET /v1/modelsList models visible to the authenticated Pool
POST /v1/responsesOpenAI-shaped Responses request compatibility
GET /v1/responsesNarrow Responses websocket compatibility only
POST /v1/responses/compactCompact compatibility
POST /v1/chat/completionsChat Completions compatibility
GET /v1/usageUsage route
GET /v1/filesFile metadata listing
POST /v1/filesFile metadata create route
GET /v1/files/:file_idFile metadata lookup
GET /v1/files/:file_id/contentDeterministic unsupported content read after ownership checks
DELETE /v1/files/:file_idDeterministic unsupported delete after ownership checks
POST /v1/audio/transcriptionsAudio transcription compatibility
POST /v1/images/generationsImage generation compatibility
POST /v1/images/editsImage edit compatibility

GET /v1/responses is narrow Responses websocket compatibility. It is not /v1/realtime support.

Unsupported /v1 routes return deterministic OpenAI-shaped unsupported endpoint errors when explicitly routed. They don’t enter gateway dispatch.

Unsupported public routes include:

RouteBoundary
POST /v1/images/variationsUnsupported endpoint
POST /v1/embeddingsUnsupported endpoint
POST /v1/batchesUnsupported endpoint
POST /v1/moderationsUnsupported endpoint
POST /v1/fine_tuning/jobsUnsupported endpoint
GET /v1/responses/:response_idUnsupported endpoint
POST /v1/responses/:response_id/cancelUnsupported endpoint
DELETE /v1/responses/:response_idUnsupported endpoint
/v1/realtimeUnsupported Realtime SDK route family

OpenAI Realtime SDK websocket and session routes are not supported.

The operator MCP endpoint is rooted at /mcp, not under /backend-api or /v1.

RouteMeaning
POST /mcpJSON-RPC Streamable HTTP endpoint
GET /mcpRouted endpoint, but stateless SSE is unavailable today
OPTIONS /mcpAllowed MCP methods response

MCP uses operator-owned bearer MCP tokens. It doesn’t accept Pool API keys, browser sessions, cookies, query tokens, invite tokens, upstream tokens, or custom headers as authentication.

MCP output is metadata-only and scoped by the operator’s owner or assigned-Pool visibility. It is an operator inspection endpoint, not a runtime client endpoint.