Skip to content
Dashboard

o3

o3 is OpenAI's advanced reasoning model that succeeds o1, delivering stronger chain-of-thought performance on mathematical, scientific, and coding problems with improved efficiency and full tool support.

View API reference
Input and output price
Input $2, Output $8, Per 1M tokens
24h uptime
Loading AI Gateway uptime
import { streamText } from 'ai'
const result = streamText({
model: 'openai/o3',
prompt: 'Why is the sky blue?'
})
Read docs

Copy link to headingPlayground

Try out o3 by OpenAI. Usage is billed to your team at API rates. Free users (those who haven't made a payment) get $5 of credits every 30 days.

openai logo
openai logo

o3

Copy link to headingProviders

Route requests across multiple providers. Copy a provider slug to set your preference. Visit the docs for more info. Using a provider means you agree to their terms, listed under Legal.

Provider
Context
Max Output
Latency
Throughput
Input
Output
Cache
Web Search
Capabilities
ZDR
No Training
Free Tier
Release Date
200K100K0.7 s76 tps
$2/M+2 more
$8/M+2 more
Read$0.50/M
$10/K
+3
04/16/2025

Copy link to headingUptime

Direct request success rate on AI Gateway and per-provider. Visit the docs for more info.

Copy link to headingThroughput

P50 throughput on live AI Gateway traffic, in tokens per second (TPS). Visit the docs for more info.

Copy link to headingLatency

P50 time to first token (TTFT) on live AI Gateway traffic, in milliseconds. View the docs for more info.

Getting started

Call o3 through AI Gateway with the AI SDK generateText and streamText functions, or through the OpenAI Chat Completions, OpenAI Responses, and Anthropic Messages APIs by changing the base URL. AI Gateway authenticates the request and routes it to an available provider.

Install the AI SDK (pnpm add ai dotenv), create an API key from the API Keys page, and set it as AI_GATEWAY_API_KEY in your environment. Full setup is covered in the text generation quickstart.

index.ts
import { generateText } from 'ai';
import 'dotenv/config';
async function main() {
const result = await generateText({
model: 'openai/o3',
prompt: 'Why is the sky blue?',
});
console.log(result.text);
}
main().catch(console.error);

Top-level parameters

The same o3 request in each API format AI Gateway supports.

top-level-params.ts
import { generateText } from 'ai';
import 'dotenv/config';
async function main() {
const result = await generateText({
model: 'openai/o3',
system: 'You are a concise technical assistant.',
prompt: 'Summarize the tradeoffs between static generation and SSR.',
maxOutputTokens: 1024,
});
console.log(result.text);
}
main().catch(console.error);

Standard parameters like prompt, messages, temperature, and tools work as documented in the AI SDK docs. These are the parameters with model-specific behavior.

ParameterTypeRequiredDescription
modelstringYesModel ID in the form creator/model, e.g. openai/o3. AI Gateway routes the request to an available provider.
maxOutputTokensnumberNoHard cap on generated tokens. o3 supports up to 100,000 output tokens. Reasoning tokens count toward this limit.
reasoning'provider-default' | 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh'NoProvider-agnostic reasoning effort, available in AI SDK 7 or later. Maps to the provider’s native reasoning configuration; reasoning settings under providerOptions take precedence when both are set. See the Reasoning section below.
providerOptionsRecord<string, JSONValue>NoAI Gateway routing options under gateway, plus any provider-native options under the provider’s own namespace — see the table below.

Input limits

InputFormatsSourcesMax countMax sizeLimits
TextPrompt and response share the 200K-token context window
ImageURL, base64, Uint8ArraySent as image parts in messages; counts as input tokens
PDFURL, base64, Uint8ArraySent as file parts in messages; counts as input tokens

Provider options

Set AI Gateway routing options under providerOptions.gateway. For provider-specific options, pass them under the provider’s namespace as documented by the AI SDK.

Learn more in the AI SDK openai provider docs.

provider-options.ts
import { generateText } from 'ai';
import 'dotenv/config';
async function main() {
const result = await generateText({
model: 'openai/o3',
prompt: 'Why is the sky blue?',
providerOptions: {
gateway: {
only: ['openai'],
},
},
});
console.log(result.text);
}
main().catch(console.error);

These AI Gateway routing options apply to every model. Provider-specific options pass through under the provider’s own namespace (for example providerOptions.anthropic) exactly as documented by the AI SDK.

ParameterTypeRequiredDescription
providerOptions.gateway.onlystring[]NoRestrict routing to these provider slugs. Requests fail over only within the listed providers.
providerOptions.gateway.orderstring[]NoPreferred provider order. Listed providers are tried first; unlisted providers remain available as fallbacks.
providerOptions.gateway.sort'cost' | 'ttft' | 'tps'NoRank candidate providers by price, time to first token, or tokens per second instead of the default routing order.
providerOptions.gateway.zeroDataRetentionbooleanNoRoute only to providers with a zero-data-retention policy for this model.

Routing across providers

AI Gateway serves the same model through multiple providers and fails over automatically. order expresses a preference while keeping every provider eligible; only is a hard allowlist — if none of the listed providers are available the request fails instead of falling back.

Options under a provider's own namespace (for example providerOptions.anthropic) are forwarded to that provider with the request. Providers ignore option namespaces that don't apply to them, so it is safe to set provider options alongside gateway routing options.

Reasoning

AI Gateway bridges reasoning across every API format. The AI SDK exposes a provider-agnostic top-level reasoning level (none, minimal, low, medium, high, or xhigh); the Chat Completions and Responses formats take the same effort under reasoning.effort; and the Anthropic Messages format uses a native thinking token budget. Whichever you send, the gateway maps it to the target model’s native configuration, converting between effort levels and token budgets as needed. Reasoning-related settings under providerOptions take full precedence over the top-level reasoning value and are never merged. Reasoning tokens typically count toward your output-token usage, though how they’re reported and billed varies by provider.

Learn more in the AI Gateway reasoning guide.

reasoning.ts
import { generateText } from 'ai';
import 'dotenv/config';
async function main() {
const result = await generateText({
model: 'openai/o3',
prompt: 'Explain the Monty Hall problem step by step.',
reasoning: 'high',
});
console.log(result.text);
}
main().catch(console.error);

Image input

Send images alongside text as message parts. Images count as input tokens.

image-input.ts
import { generateText } from 'ai';
import 'dotenv/config';
async function main() {
const result = await generateText({
model: 'openai/o3',
messages: [
{
role: 'user',
content: [
{ type: 'text', text: 'Describe this image.' },
{ type: 'image', image: 'https://example.com/photo.jpg' },
],
},
],
});
console.log(result.text);
}
main().catch(console.error);

PDF input

Attach PDFs as file parts. Their contents count as input tokens.

pdf-input.ts
import { generateText } from 'ai';
import 'dotenv/config';
async function main() {
const result = await generateText({
model: 'openai/o3',
messages: [
{
role: 'user',
content: [
{ type: 'text', text: 'Summarize this document.' },
{
type: 'file',
mediaType: 'application/pdf',
data: 'https://example.com/document.pdf',
},
],
},
],
});
console.log(result.text);
}
main().catch(console.error);

Tool calling

Expose tools the model can call. Define each tool’s inputs with a Zod schema.

tool-calling.ts
import { generateText, tool } from 'ai';
import { z } from 'zod';
import 'dotenv/config';
async function main() {
const result = await generateText({
model: 'openai/o3',
prompt: 'What is the weather in San Francisco?',
tools: {
getWeather: tool({
description: 'Get the current weather for a location',
inputSchema: z.object({ location: z.string() }),
execute: async ({ location }) => ({ location, temperatureC: 18 }),
}),
},
});
console.log(result.text);
}
main().catch(console.error);

Fast mode

o3 can run in fast mode for lower latency by appending -fast to the model ID.

fast-mode.ts
import { generateText } from 'ai';
import 'dotenv/config';
async function main() {
const result = await generateText({
model: 'openai/o3-fast',
prompt: 'Why is the sky blue?',
});
console.log(result.text);
}
main().catch(console.error);

Copy link to headingMore models by OpenAI

Model
Context
Latency
Throughput
Input
Output
Cache
Web Search
Capabilities
Providers
ZDR
No Training
Free Tier
Release Date
1.1M2.9 s56 tps
$10/M+2 more
$50/M+2 more
Read$1/M
Write$12.50/M
$10/K
+4
azure logo
openai logo
09/04/2026
1.1M2.4 s156 tps
$0.20/M+2 more
$1.20/M+2 more
Read$0.02/M
Write$0.25/M
$10/K
+4
azure logo
bedrock logo
openai logo
07/09/2026
1.1M2.6 s69 tps
$2/M+2 more
$10/M+2 more
Read$0.20/M
Write$2.50/M
$10/K
+4
azure logo
bedrock logo
openai logo
07/09/2026
1.1M2.6 s94 tps
$2/M+2 more
$12/M+2 more
Read$0.20/M
Write$2.50/M
$10/K
+4
azure logo
bedrock logo
openai logo
07/09/2026
1.1M3.5 s88 tps
$2.50/M+2 more
$15/M+2 more
Read$0.25/M
$10/K
+4
azure logo
openai logo
03/05/2026
400K4.4 s205 tps
$0.05/M
$0.40/M
Read$0.005/M
$14/K
+3
azure logo
openai logo
08/07/2025

o3 was released on April 16, 2025 as the successor to o1 in OpenAI's reasoning model series. It advances the chain-of-thought paradigm introduced by o1-preview: the model generates internal reasoning tokens, working through problems step by step, checking its work, and trying alternative approaches before producing a final answer.

o3 improves on o1 across key reasoning benchmarks while using reasoning tokens more efficiently. It launches with the full set of production API features: function calling for tool use, structured outputs via JSON schema constrained decoding, vision input for reasoning over images and diagrams, and developer system messages for behavioral control.

The context window of 200K tokens accommodates the lengthy inputs that complex reasoning tasks demand. The model also supports the reasoning_effort parameter, letting you control how deeply it thinks on a per-request basis for efficient handling of mixed-difficulty workloads.

Copy link to headingWhat To Consider When Choosing a Provider

  • Configuration: o3 generates internal reasoning tokens that work through problems step by step before producing a visible response. This trades latency for accuracy on hard problems.
  • Configuration: Unlike earlier reasoning previews, o3 ships with function calling, structured outputs, vision, and system messages from day one.
  • Zero Data Retention: Zero Data Retention is offered on a per-provider and model basis. See the documentation for details.
  • Authentication: AI Gateway authenticates requests using an API key or OIDC token. You do not need to manage provider credentials directly.

Copy link to headingWhen to Use o3

Best for

  • Advanced mathematical reasoning: Competition-level math, proofs, and quantitative analysis
  • Complex coding problems: Algorithm design, optimization, and architectural reasoning
  • Scientific analysis: Multi-step derivations in physics, chemistry, and biology
  • Agentic reasoning: Agent backbones that need deep deliberation before acting
  • Hard problem solving: Any task where extended chain-of-thought produces measurably better results

Consider alternatives when

  • General-purpose tasks: GPT-5 or GPT-5.2 for conversational and generative workloads that don't need chain-of-thought
  • Cost-sensitive reasoning: O4-mini for reasoning at a lower price point
  • Maximum reasoning compute: O3-pro for the hardest problems that benefit from extended computation
  • Fast responses: GPT-5.1 instant or GPT-4o when latency matters more than reasoning depth

o3 advances reasoning model capability beyond o1, delivering stronger performance and greater efficiency than o1 with full production API features. For the hardest analytical, mathematical, and coding problems routed through AI Gateway, it is the standard reasoning model.

Copy link to headingFrequently Asked Questions

  • How does o3 improve over o1?

    It delivers stronger performance on reasoning benchmarks while using reasoning tokens more efficiently, resulting in better accuracy at comparable or lower cost per request.

  • Does o3 support function calling?

    Yes. It ships with function calling, structured outputs, vision input, and system messages, the full production API feature set.

  • What is the reasoning_effort parameter?

    It controls how deeply the model reasons per request. Low effort for simple queries saves cost; high effort for hard problems enables maximum deliberation.

  • What context window does o3 support?

    200K tokens, supporting lengthy inputs for complex reasoning tasks.

  • How does AI Gateway handle authentication for o3?

    AI Gateway accepts a single API key or OIDC token for all requests. You don't embed OpenAI credentials in your application; AI Gateway routes and authenticates on your behalf.

  • When should I use o3 versus GPT-5?

    Use o3 for problems that benefit from extended chain-of-thought reasoning (math, science, hard coding). Use GPT-5 for general-purpose tasks, creative writing, and conversational workloads.

  • What are typical latency characteristics?

    This page shows live throughput and time-to-first-token metrics measured across real AI Gateway traffic.

Your use is subject to OpenAI's Terms & Privacy Policies.