Skip to main content
Codex and the OpenAI SDKs’ responses.create run on Runcrate models: point them at https://api.runcrate.ai/v1 with your Runcrate API key and a Runcrate model id. Requests are billed, rate limited and routed exactly as chat completions are, at the same per-token prices. Nothing is stored: every request carries its whole conversation, as Codex sends it.

Codex

Add a Runcrate provider to ~/.codex/config.toml:
Then run Codex with your key in RUNCRATE_API_KEY:
Any text model with tool calling in the model catalog works. Codex warns that it has no metadata for a model id it does not know and uses its defaults for the context window. Codex’s web search tool runs at OpenAI, so it is left out here: the model answers without it.

Endpoint

Basic usage

Streaming

With stream: true the answer arrives as response.* events: response.created and response.in_progress, then each output item as response.output_item.added, its parts and deltas (response.output_text.delta, response.reasoning_summary_text.delta, response.function_call_arguments.delta) and response.output_item.done, then response.completed with the whole response and its usage. A response cut short by max_output_tokens ends with response.incomplete; one that fails, with response.failed.

Tools

Function tools take name, description and parameters. A call comes back as a function_call item; send it back in input with a function_call_output item carrying its call_id.

What is supported

A model’s reasoning comes back as a reasoning item whose summary is the reasoning text.

Errors

Errors use OpenAI’s shape, {"error": {"message", "type", "code", "param"}}, with the same codes as chat completions, including the free allowance’s (free_allowance_used, free_tier_paused, free_capacity_busy, free_prompt_too_large, github_link_required, with its free_tier details beside them). A Retry-After header says when to retry a 429 or 503.