OpenAI models and capabilities
OpenAI’s model line in 2026 has three families on the platform API: the GPT generative line (GPT-5 / GPT-5-mini / GPT-5-nano + GPT-4o / GPT-4o-mini as workhorses, GPT-4 Turbo / GPT-3.5 as legacy), the o-series reasoning line (o3 / o3-mini / o4-mini / o1 / o1-pro — extended thinking by default; higher latency, higher quality on hard problems), and the specialty models (embeddings, Whisper, TTS, DALL-E 3 / gpt-image-1 for vision generation). The model-selection question is fundamentally tier (frontier vs cheap), reasoning depth (use the o-series only when you need it; reasoning tokens are billed and slow), and modality (Realtime for voice, gpt-image-1 for images, Whisper for transcription). The biggest 2025 change was GPT-5 taking over as default frontier model; the biggest API-surface change was the Responses API becoming the primary endpoint with Chat Completions still supported but no longer the default in new docs.
See also
- openai-api-and-sdks — how to reference these IDs via the Responses + Chat Completions APIs
- prompt-caching-openai — automatic caching mechanics + per-model rate
- tool-use-and-function-calling-openai — tool-use overhead
- hidden-tricks-and-gotchas-openai — undocumented quirks per model
- claude-models-and-capabilities — sister table for the Claude line
- gemini-models-and-capabilities — sister table for the Gemini line
1. GPT-5 family (current frontier, 2025-2026 release)
Per OpenAI announcements + platform.openai.com/docs/models as cross-referenced via developers.openai.com. GPT-5 launched in 2025 as the successor to GPT-4o; the family follows a similar three-tier shape.
| Feature | GPT-5 | GPT-5-mini | GPT-5-nano |
|---|---|---|---|
| API ID (alias) | gpt-5 | gpt-5-mini | gpt-5-nano |
| Pinned snapshot | gpt-5-2025-XX-XX (date varies) | gpt-5-mini-2025-XX-XX | gpt-5-nano-2025-XX-XX |
| Approximate input price (USD / MTok) | ~$2.50 - $5 | ~$0.25 - $0.50 | ~$0.05 - $0.10 |
| Approximate output price (USD / MTok) | ~$10 - $15 | ~$1 - $2 | ~$0.40 - $0.80 |
| Context window | 128k - 256k tokens (observed 200k typical) | 128k+ | 128k+ |
| Modalities | text + image (multimodal) | text + image | text |
| Vision support | Yes | Yes | Limited |
| Audio in/out | via Realtime (gpt-realtime) | via Realtime | n/a |
| Tokenizer | o200k_base (cl100k_base predecessor) | o200k_base | o200k_base |
| Use case | Frontier coding, reasoning, complex agentic | High-throughput production default | Cheap classification / extraction |
Status note: pricing for GPT-5 has shifted multiple times during 2025-2026. The ranges above are observed; verify current rates on the live pricing page before committing budget. The dateless aliases (gpt-5, gpt-5-mini, gpt-5-nano) resolve to the latest pinned snapshot — pin to the dated ID for stability.
2. GPT-4o family (still production-ready)
The GPT-4o (“omni”) line was the dominant production default from 2024 into 2025 — still fully supported through 2026 and many teams remain on it for cost / stability reasons.
| Feature | GPT-4o | GPT-4o-mini | GPT-4o-realtime |
|---|---|---|---|
| API ID | gpt-4o | gpt-4o-mini | gpt-4o-realtime-preview |
| Pinned snapshot | gpt-4o-2024-11-20 (and several others) | gpt-4o-mini-2024-07-18 | gpt-4o-realtime-preview-2024-12-17 |
| Input price (USD / MTok) | $2.50 | $0.15 | $5 text / $100 audio |
| Output price (USD / MTok) | $10.00 | $0.60 | $20 text / $200 audio |
| Cached input discount | 50 % (e.g. $1.25 / MTok cached) | 50 % | 50 % |
| Context window | 128k tokens | 128k tokens | 128k tokens |
| Max output | 16,384 tokens (gpt-4o) / 16,384 (gpt-4o-mini) | same | same |
| Modalities (input) | text + image | text + image | text + image + audio |
| Modalities (output) | text + (audio via Realtime) | text | text + audio (real-time) |
| Knowledge cutoff | Oct 2023 | Oct 2023 | Oct 2023 |
| Tokenizer | o200k_base | o200k_base | o200k_base |
Pricing snapshot from platform.openai.com/docs/pricing reference:
- GPT-4o: $2.50 input / $10.00 output / $1.25 cached input — solid workhorse
- GPT-4o-mini: $0.15 input / $0.60 output / $0.075 cached input — best price/performance until GPT-5-mini
3. o-series reasoning models
Models that think before answering — internal chain-of-thought tokens (billed as output) precede the visible response. Generally higher latency, much higher quality on hard problems (competition math, code generation, scientific reasoning).
| Feature | o3 | o3-mini | o4-mini | o1 | o1-pro |
|---|---|---|---|---|---|
| API ID | o3 | o3-mini | o4-mini | o1 | o1-pro |
| Status | Latest reasoning frontier | Cheap-tier reasoning | Hybrid reasoning + speed | Original reasoning model | Higher-compute o1 variant |
| Input price (USD / MTok) | ~$15 (premium) | ~$1.10 | ~$3 | ~$15 | ~$150 |
| Output price (USD / MTok) | ~$60 | ~$4.40 | ~$12 | ~$60 | ~$600 |
| Context window | 200k+ | 200k+ | 200k+ | 200k | 200k |
| Max output (incl. reasoning tokens) | 100k | 100k | 100k | 32k (lower) | 100k |
reasoning.effort param | low / medium / high | same | same | low / medium / high | (preset high) |
| Tool support | Yes (function calling) | Yes | Yes | Limited (no streaming) | Limited |
| Vision | Yes | Limited | Yes | No | No |
| Stream output | Yes | Yes | Yes | No (response delivered atomic) | No |
| System messages | Treated as developer messages | same | same | same | same |
Key parameter — reasoning.effort: controls how much the model “thinks” before answering. low is roughly 1k reasoning tokens; high can be 20k+. Billing includes reasoning tokens as output, so high-effort o3 calls can cost surprisingly much — a “simple” question on o3 with effort=high can produce $1+ of reasoning tokens before the visible answer.
When to use o-series:
- Hard math problems where GPT-5 / GPT-4o gets it wrong
- Code generation requiring multi-step reasoning
- Scientific Q&A demanding multi-hop logic
- Complex agent planning where one big think beats many small calls
When NOT to use o-series:
- Chat / dialog (high latency degrades UX)
- Streaming UX where partial output matters (o1 doesn’t stream)
- Simple extraction / classification (waste of reasoning tokens)
- Tool-heavy workflows (the model can
reason → call tool → reason → ...but it’s expensive)
4. Legacy models
| Feature | GPT-4 Turbo | GPT-4 | GPT-3.5 Turbo |
|---|---|---|---|
| API ID | gpt-4-turbo | gpt-4 | gpt-3.5-turbo |
| Status | Still callable, deprecating | Deprecated | Deprecated (still GA but discouraged) |
| Input / Output (USD / MTok) | $10 / $30 | $30 / $60 | $0.50 / $1.50 |
| Context window | 128k | 8k - 32k | 16k |
| Modalities | text + image (Turbo Vision) | text | text |
Migrate GPT-4 / GPT-4 Turbo → GPT-4o / GPT-5; migrate GPT-3.5 → GPT-4o-mini / GPT-5-nano. Per OpenAI deprecations, legacy IDs continue to work but new builds should target current generation.
5. Embedding models
Per platform.openai.com/docs/guides/embeddings:
| Model | Default dims | Max input tokens | Price (USD / MTok) | Notes |
|---|---|---|---|---|
text-embedding-3-large | 3,072 | 8,191 | $0.13 | Truncatable to smaller dims via dimensions param |
text-embedding-3-small | 1,536 | 8,191 | $0.02 | Default for most workloads; very cheap |
text-embedding-ada-002 (legacy) | 1,536 | 8,191 | $0.10 | Older; use only for back-compat |
text-embedding-3-* supports the dimensions parameter for Matryoshka truncation — smaller dim → less storage / faster ANN at minor quality loss.
client.embeddings.create(
model="text-embedding-3-large",
input=["chunk 1", "chunk 2"],
dimensions=1024, # truncate to 1024 from the natural 3072
)6. Audio models
| Model | Purpose | Price | Notes |
|---|---|---|---|
whisper-1 | Speech-to-text (ASR) | $0.006 / minute | Translation also available |
gpt-4o-transcribe | Transcription via GPT-4o | varies | Higher quality than Whisper for some languages |
gpt-4o-mini-transcribe | Cheap transcription | varies | |
tts-1 | Text-to-speech (standard) | $15 / 1M chars | 6 built-in voices |
tts-1-hd | Text-to-speech (HD quality) | $30 / 1M chars | Same voices, better quality |
gpt-4o-tts | TTS via GPT-4o | varies | More expressive, longer-context |
TTS voices: alloy, echo, fable, onyx, nova, shimmer — plus newer voices like ash, coral, sage, verse (varies by model). Choose per-call.
7. Image models
| Model | Purpose | Pricing | Notes |
|---|---|---|---|
dall-e-3 | Image generation | $0.040 - $0.080 per image (size / quality) | Larger sizes + HD more expensive |
gpt-image-1 | Newer image gen (multi-input editing) | varies | Native image input + edit; more controllable |
dall-e-2 (legacy) | Image generation | cheaper | Lower quality, used for variations |
DALL-E 3 sizes: 1024x1024, 1024x1792, 1792x1024. Quality: standard or hd. Style: vivid or natural.
img = client.images.generate(
model="dall-e-3",
prompt="A cat astronaut on the moon.",
size="1024x1024",
quality="hd",
style="vivid",
n=1,
)
print(img.data[0].url)8. Pricing details beyond per-token
Batch API
50 % discount on input + output via the Batch API. 24-hour SLA. See batch-and-fine-tuning-openai.
Automatic prompt caching
50 % discount on cached input tokens for any prompt ≥ 1,024 tokens. Automatic — no breakpoints. 5-10 minute cache window. See prompt-caching-openai.
Realtime API
Separate pricing — typically higher per-token for audio. See realtime-api-openai.
Fine-tuning
| Operation | Cost |
|---|---|
Training (gpt-4o-mini) | ~$3 / 1M training tokens |
Training (gpt-3.5-turbo) | ~$8 / 1M training tokens |
| Inference (fine-tuned model) | Premium over base — varies per model |
| Reinforcement fine-tuning (RFT) | Preview pricing |
See batch-and-fine-tuning-openai.
Hosted-tool surcharges (Responses API)
file_search— small per-storage-day fee on vector store; per-search call costweb_search_preview— per-search feecomputer_use_preview— premium per-token ratecode_interpreter— per-container-hour rate
Exact rates change frequently; check current pricing page.
9. Programmatic model discovery
from openai import OpenAI
client = OpenAI()
for m in client.models.list():
print(m.id, m.created, m.owned_by)The list endpoint returns active models for your account. Note: model IDs in the list are pinned snapshots and aliases — gpt-5 and gpt-5-2025-XX-XX both appear when both are available. Filter accordingly.
10. Capability flags by model
10.1 Tool / function calling
Almost universal across current models. Notable exceptions:
- o1 — limited tool support (no streaming with tools)
- o1-pro — same
- Embedding / Audio / Image models — no tools (they’re not chat models)
10.2 Vision input
| Model | Vision | Notes |
|---|---|---|
| GPT-5 family | ✅ | Multimodal native |
| GPT-4o family | ✅ | Multimodal native |
| o3 / o4-mini | ✅ | Yes (later additions) |
| o3-mini | Limited / no | |
| o1 / o1-pro | ❌ | Text-only |
| GPT-4-turbo | ✅ | Vision GA |
| GPT-3.5 | ❌ | Text-only |
detail: "low" reduces image cost to a flat ~85 tokens; detail: "high" adds tiles. See vision-and-multimodal-openai.
10.3 Structured outputs (strict JSON schema)
| Model | response_format: json_schema strict |
|---|---|
| GPT-5 family | ✅ |
| GPT-4o family | ✅ (gpt-4o-2024-08-06 and later) |
| o3 / o4-mini | ✅ |
| o1 | ✅ (later snapshots) |
| Older GPT-4 / GPT-3.5 | ❌ — use response_format: json_object (loose JSON mode) |
See structured-outputs-openai.
10.4 Prompt caching
Automatic for all current chat models when prompt ≥ 1,024 tokens. No opt-in. See prompt-caching-openai.
10.5 Parallel tool calls
Supported on all current chat models. Set parallel_tool_calls=False to force serial. o-series models may execute serially under the hood even with the flag on (reasoning step happens once, all tool calls picked together).
11. Tokenizer reference
| Model family | Tokenizer | Use in tiktoken |
|---|---|---|
| GPT-5 family | o200k_base | tiktoken.encoding_for_model("gpt-5") |
| GPT-4o family | o200k_base | tiktoken.encoding_for_model("gpt-4o") |
| o-series | o200k_base | tiktoken.encoding_for_model("o1") |
| GPT-4 / GPT-4-turbo | cl100k_base | tiktoken.encoding_for_model("gpt-4") |
| GPT-3.5 | cl100k_base | tiktoken.encoding_for_model("gpt-3.5-turbo") |
text-embedding-3-* | cl100k_base | Same |
The o200k_base switch matters for cost estimation — same English text often tokenizes ~10 % shorter on o200k_base than cl100k_base. Don’t reuse old token-count math when migrating from GPT-4-turbo to GPT-4o or GPT-5.
12. Endpoint types (cloud providers)
| Surface | Hostname | Auth |
|---|---|---|
| OpenAI Platform | api.openai.com | API key |
| Azure OpenAI | <resource>.openai.azure.com | Azure AD / managed identity / API key |
| Workload Identity (cloud-native) | Same | Short-lived tokens from K8s / Azure / GCP service accounts |
Azure OpenAI uses different model IDs (deployment names) but the same API shape via AzureOpenAI client. See openai-api-and-sdks.
13. Benchmark snapshot
Per OpenAI launch posts + developer blog. Treat as directional.
| Benchmark | GPT-5 | GPT-4o | o3 | o3-mini | Notes |
|---|---|---|---|---|---|
| MMLU | mid 90s | low 90s | high 90s | mid 90s | Knowledge breadth |
| GPQA Diamond | mid 80s | high 50s | high 80s | high 70s | Graduate STEM (o-series shine) |
| AIME 2024 (math) | high 80s | low 20s | mid 90s | mid 80s | o-series specialty |
| SWE-bench Verified | strong | mid | strong | strong | Coding |
| HumanEval | saturated (~95+) | high 80s | mid 90s | low 90s | Saturated; rarely cited |
Per OpenAI engineering posts 2025-Q4. The o-series numbers on AIME and GPQA are the headline — reasoning models materially outperform regular GPT-5/4o on hard math + science.
14. Versioning convention
OpenAI’s model IDs follow <base>[-<minor>]-<YYYY-MM-DD>:
gpt-4o-2024-11-20— pinned snapshotgpt-4o— alias resolving to the latest pinned snapshotgpt-4o-mini— aliasgpt-4o-mini-2024-07-18— pinned
For production, always pin to the dated ID. Aliases silently advance to new snapshots when OpenAI ships an update — behavior can change underneath you.
For Azure OpenAI, you bind a deployment name to a model version at deploy time; the deployment name is what you call in the API.
15. Further reading
- Models — canonical comparison
- Pricing — per-model + per-feature
- Model release notes — chronological history
- Reasoning models guide — o-series usage patterns
- Embeddings guide — embedding model details
- Tokenization (
tiktoken) — official tokenizer library