@layer theme, base, components, utilities;
Using tools | OpenAI API
@layer components{._Arrow_t2o77_1{—arrow-size: 6px;position:absolute;width:0;height:0}._Arrow_t2o77_1[data-side=top]{bottom:0;left:50%;border-top:var(—arrow-size) solid var(—gray-700);border-right:var(—arrow-size) solid transparent;border-left:var(—arrow-size) solid transparent;margin-right:-8px;transform:translate(-50%) translateY(100%)}._Arrow_t2o77_1[data-side=bottom]{top:0;left:50%;border-right:var(—arrow-size) solid transparent;border-bottom:var(—arrow-size) solid var(—gray-700);border-left:var(—arrow-size) solid transparent;margin-left:-8px;transform:translate(-50%) translateY(-100%)}._Arrow_t2o77_1[data-side=left]{top:50%;right:0;border-top:var(—arrow-size) solid transparent;border-bottom:var(—arrow-size) solid transparent;border-left:var(—arrow-size) solid var(—gray-700);margin-right:-8px;transform:translate(100%) translateY(-50%)}._Arrow_t2o77_1[data-side=right]{top:50%;left:0;border-top:var(—arrow-size) solid transparent;border-right:var(—arrow-size) solid var(—gray-700);border-bottom:var(—arrow-size) solid transparent;margin-left:-8px;transform:translate(-100%) translateY(-50%)}}
@layer components.base{._root_w8837_2{position:relative;display:flex;flex-direction:column;margin:20px 0;border:.5px solid var(—color-border-primary-surface);border-radius:8px;background:var(—code-snippet-bg)}._root_w8837_2+._root_w8837_2{margin-top:1em}._flush_w8837_16{width:100%;border:0;background:transparent;background-color:transparent;color:var(—color-text-emphasis);line-height:20px}._flush_w8837_16 code>code{padding-right:20px!important}._flush_w8837_16 .syntax-highlighter{background:transparent;font-size:13px;letter-spacing:var(—font-tracking-wide)}._flush_w8837_16 ._header_w8837_34{position:relative;z-index:1;justify-content:space-between;padding-left:8px;border-bottom:none;background:transparent}._flush_w8837_16 ._header_w8837_34 ._title_w8837_42{display:none}._flush_w8837_16 ._header_w8837_34 .code-sample-select-val{font-size:12px;letter-spacing:var(—font-tracking-wide)}._flush_w8837_16 ._header_w8837_34 .code-sample-select-wrap{margin-bottom:4px;margin-left:12px;font-size:12px;letter-spacing:var(—font-tracking-wide)}._flush_w8837_16 ._body_w8837_59{background:transparent}._flush_w8837_16 ._body_w8837_59 ._pre_w8837_62{padding-top:0}._root_w8837_2 .python-upgrade-banner{display:flex;padding:2px;background:var(—card-gradient);color:#fff;font-size:.8em;font-weight:var(—font-weight-bold);text-align:center}._root_w8837_2 .python-upgrade-banner svg{margin-top:6px;margin-right:8px;margin-left:8px}._root_w8837_2 .python-upgrade-banner path{stroke:#fff}._header_w8837_34{overflow:auto;display:flex;align-items:center;gap:4px;flex-shrink:0;padding:4px 8px 4px 14px;border-bottom:.5px solid var(—color-border-primary-surface);border-top-left-radius:8px;border-top-right-radius:8px}._title_w8837_42{overflow:hidden;flex:1 1 auto;margin-right:12px;color:var(—color-text);font-family:var(—monospace);font-size:12px;font-weight:var(—font-weight-normal);letter-spacing:var(—font-tracking-wide);text-overflow:ellipsis;white-space:nowrap}._sep_w8837_113{flex:0 0 auto;min-width:1px;height:22px;padding-left:8px;border-left:1px solid var(—color-background-primary-soft);margin-left:8px}._body_w8837_59{position:relative;flex-grow:1;flex-shrink:0}._body_w8837_59 ._pre_w8837_62{height:100%;min-height:44px;padding:12px 16px;border-radius:8px;margin:0;font-size:14px;line-height:20px;white-space:pre;background:var(—code-snippet-bg)}._body_w8837_59._bodyWithHeader_w8837_139 ._pre_w8837_62{border-top-left-radius:0;border-top-right-radius:0}._copyFloat_w8837_151{position:absolute;top:6px;right:6px}._oneliner_w8837_156 ._copyFloat_w8837_151{top:50%;transform:translateY(-50%)}._copyButton_w8837_162{height:1.75rem;padding:0 .5rem;border-radius:.375rem}}
@layer base{.syntax-highlighter{background:transparent;color:var(—color-text);overflow-x:auto}.syntax-highlighter>code{border:none;box-shadow:none;font-family:var(—monospace)}.syntax-highlighter>code>code{padding-right:16px;border:none;box-shadow:none;float:left;font-family:var(—monospace);line-height:20px}.syntax-highlighter .react-syntax-highlighter-line-number{color:var(—color-text-disabled);line-height:20px;opacity:.5;text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none}.syntax-highlighter [data-highlighted-row=true]{display:block;width:150%;margin-left:-25%;background-color:var(—pill-success-bg)}.syntax-highlighter [data-highlighted-row-subtle=true]{background-color:rgba(var(—sh-fg),.08)}.hljs-comment{color:rgba(var(—sh-fg),.5)}.hljs-meta{color:rgba(var(—sh-fg),.6)}.hljs-built_in,.hljs-class .hljs-title{color:var(—syntax1)}.hljs-doctag,.hljs-keyword,.hljs-formula,.hljs-literal{color:var(—syntax2)}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta-string{color:var(—syntax3)}.hljs-attr,.hljs-variable,.hljs-template-variable,.hljs-type,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-number{color:var(—syntax4)}.hljs-symbol,.hljs-bullet,.hljs-link,.hljs-selector-id,.hljs-title{color:var(—syntax5)}}
@layer base{.icon-item{cursor:pointer;border-radius:8px;align-items:flex-start;text-decoration:none;transition:opacity .15s;display:flex}.icon-item:hover .pointer{opacity:1;transform:translate(0)}.icon-item:hover .icon-item-icon{background:var(—card-gradient-hover);color:var(—color-text-emphasis)}.icon-item-icon{box-sizing:border-box;border:1px solid var(—color-background-primary-soft);background:var(—card-gradient-hover);width:48px;height:48px;color:var(—color-text);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:24px;line-height:0;transition:background .2s;display:flex}:where(html.dark,html[data-theme=dark]) .icon-item-icon{background:linear-gradient(90deg,#56586980,#56586999,#565869b3)}:where(html.dark,html[data-theme=dark]) .icon-item:hover .icon-item-icon{background:linear-gradient(90deg,#56586999,#565869b3,#565869cc)}.icon-item-right{padding-left:16px}.icon-item-title{color:var(—color-text-emphasis);align-items:center;font-weight:500;transition:color .15s;display:flex}.pointer{opacity:0;justify-content:center;transition:opacity .15s ease-in-out,transform .15s ease-in-out;display:flex;transform:translate(-4px)}.icon-item-tag{background-color:var(—color-background-primary-soft);color:var(—gray-700);font-size:12px;font-weight:var(—font-weight-bold);letter-spacing:var(—font-tracking-wide);border-radius:8px;margin-left:8px;padding:2px 6px;line-height:16px;display:inline-block;transform:translateY(-2px)}.icon-item-tag.icon-item-tag-green{background-color:var(—green-100);color:var(—green-700)}.icon-item-desc{color:var(—color-text-secondary);text-overflow:ellipsis;white-space:normal;margin-bottom:15px;overflow:hidden}.icon-item *{text-decoration:none}}
@layer components{._TransitionItem_1lpir_1{will-change:var(—tg-will-change)}[data-transition-position=absolute] ._TransitionItem_1lpir_1[data-exiting],[data-transition-position=absolute] ._TransitionItem_1lpir_1:not([data-exiting])+._TransitionItem_1lpir_1[data-entering]{position:absolute;top:0;left:0;width:100%}._TransitionItem_1lpir_1[data-entering]{filter:var(—tg-initial-filter);opacity:var(—tg-initial-opacity);transform:var(—tg-initial-transform)}._TransitionItem_1lpir_1[data-exiting]{filter:var(—tg-enter-filter);opacity:var(—tg-enter-opacity);transform:var(—tg-enter-transform)}._TransitionItem_1lpir_1[data-entering-active],._TransitionItem_1lpir_1[data-entering][data-interrupted]{filter:var(—tg-enter-filter);opacity:var(—tg-enter-opacity);transform:var(—tg-enter-transform);transition:opacity var(—tg-enter-duration) var(—tg-enter-timing-function) var(—tg-enter-delay),transform var(—tg-enter-duration) var(—tg-enter-timing-function) var(—tg-enter-delay),filter var(—tg-enter-duration) var(—tg-enter-timing-function) var(—tg-enter-delay)}._TransitionItem_1lpir_1[data-exiting-active],._TransitionItem_1lpir_1[data-exiting][data-interrupted]{filter:var(—tg-exit-filter, none);opacity:var(—tg-exit-opacity, 0);transform:var(—tg-exit-transform, none);transition:opacity var(—tg-exit-duration) var(—tg-exit-timing-function) var(—tg-exit-delay),transform var(—tg-exit-duration) var(—tg-exit-timing-function) var(—tg-exit-delay),filter var(—tg-exit-duration) var(—tg-exit-timing-function) var(—tg-exit-delay)}._TransitionItem_1lpir_1[data-entering][data-interrupted],._TransitionItem_1lpir_1[data-exiting][data-interrupted]{transition-delay:0ms}}
.content-switcher-root:where(.astro-cr4aci74){margin-top:24px}.content-switcher-selector:where(.astro-cr4aci74){width:100%;max-width:100%;margin-bottom:24px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;touch-action:pan-x}.content-switcher-selector-right:where(.astro-cr4aci74){text-align:right}
@layer components{._Tooltip_purug_1{max-width:300px;border-radius:var(—tooltip-border-radius);animation-duration:.25s;animation-name:_scale-in_purug_1;animation-timing-function:var(—cubic-enter);background:var(—tooltip-background-color);box-shadow:var(—tooltip-box-shadow);color:var(—tooltip-text-color);font-size:var(—tooltip-font-size);font-weight:var(—tooltip-font-weight);line-height:var(—tooltip-line-height);transform-origin:var(—radix-tooltip-content-transform-origin);transition:background-color .15s ease}._Tooltip_purug_1[data-state=closed]{animation:_scale-out_purug_1 .25s var(—cubic-enter)}._Tooltip_purug_1[data-clickable=false]{cursor:default}._Tooltip_purug_1[data-clickable=true]{cursor:pointer}@media(hover:hover)and (pointer:fine){._Tooltip_purug_1[data-compact=true][data-clickable=true]:hover{background:var(—tooltip-compact-interactive-background-color-hover);color:var(—tooltip-compact-interactive-text-color-hover)}}._Tooltip_purug_1[data-gutter-size=sm]{padding:var(—tooltip-padding-sm)}._Tooltip_purug_1[data-gutter-size=md]{padding:var(—tooltip-padding-md)}._Tooltip_purug_1[data-gutter-size=lg]{padding:var(—tooltip-padding-lg)}._Tooltip_purug_1[data-compact=true]{padding:var(—tooltip-compact-padding);background:var(—tooltip-compact-background-color);color:var(—tooltip-compact-text-color);font-size:var(—tooltip-compact-font-size);font-weight:var(—tooltip-compact-font-weight)}@keyframes _scale-in_purug_1{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes _scale-out_purug_1{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.97)}}._TriggerDecorator_purug_84{display:inline-flex;cursor:pointer;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;text-decoration-color:transparent;transition:-webkit-text-decoration .2s var(—cubic-exit);transition:text-decoration .2s var(—cubic-exit);transition:text-decoration .2s var(—cubic-exit),-webkit-text-decoration .2s var(—cubic-exit)}._TriggerDecorator_purug_84:focus{outline:0}._TriggerDecorator_purug_84[data-state*=open]{text-decoration-color:var(—color-text-tertiary);transition-timing-function:var(—cubic-enter)}}
Home
API Docs
Guides and concepts for the OpenAI API
API reference
Endpoints, parameters, and responses
Codex Docs
Guides, concepts, and product docs for Codex
Use cases
Example workflows and tasks teams hand to Codex
ChatGPT Apps SDK
Build apps to extend ChatGPT
Commerce
Build commerce flows in ChatGPT
Resources Showcase
Demo apps to get inspired
Blog
Learnings and experiences from developers
Cookbook
Notebook examples for building with OpenAI models
Learn
Docs, videos, and demo apps for building with OpenAI
Community
Programs, meetups, and support for builders
Start searching API Dashboard
Search the API docs
Search docs
Suggested
responses create reasoning_effort realtime prompt caching
Primary navigation API API Reference Codex ChatGPT Resources
Get started
Overview
Quickstart
Models
Pricing
Libraries
Latest: GPT-5.4
Prompt guidance
Core concepts
Text generation
Code generation
Images and vision
Audio and speech
Structured output
Function calling
Responses API
Using tools
Agents SDK
Agent definitions
Models and providers
Running agents
Sandbox agents
Orchestration
Guardrails
Results and state
Integrations and observability
Evaluate agent workflows
Voice agents
Agent Builder Overview
Node reference
Safety in building agents
ChatKit Overview
Customize
Widgets
Actions
Advanced integrations
Tools
Web search
MCP and Connectors
Skills
Shell
Computer use
File search and retrieval File search
Retrieval
Tool search
More tools Apply Patch
Local shell
Image generation
Code interpreter
Run and scale
Conversation state
Background mode
Streaming
WebSocket mode
Webhooks
File inputs
Context management Compaction
Counting tokens
Prompt caching
Prompting Overview
Prompt engineering
Citation formatting
Reasoning Reasoning models
Reasoning best practices
Evaluation
Getting started
Working with evals
Prompt optimizer
External models
Best practices
Realtime API
Connect WebRTC
WebSocket
SIP
Usage Using realtime models
Managing conversations
MCP servers
Webhooks and server-side controls
Managing costs
Realtime transcription
Model optimization
Optimization cycle
Fine-tuning Supervised fine-tuning
Vision fine-tuning
Direct preference optimization
Reinforcement fine-tuning
RFT use cases
Graders
Specialized models
Video generation
Text to speech
Speech to text
Deep research
Embeddings
Moderation
Going live
Production best practices
Latency optimization Overview
Predicted Outputs
Priority processing
Cost optimization Overview
Batch
Flex processing
Accuracy optimization
Safety Safety best practices
Safety checks
Cybersecurity checks
Under 18 API Guidance
Legacy APIs
Assistants API Migration guide
Deep dive
Resources
Terms and policies
Changelog
Your data
Permissions
Rate limits
Deprecations
MCP for deep research
Developer mode
ChatGPT Actions Introduction
Actions library
Authentication
Production
Data retrieval
Sending files
Docs Use cases
Getting Started
Explore use cases
Concepts Prompting
Customization
Memories
Sandboxing
Subagents
Workflows
Cyber Safety
Using Codex
App Overview
Features
Settings
Review
Automations
Worktrees
Local Environments
In-app browser
Computer Use
Commands
Windows
Troubleshooting
IDE Extension Overview
IDE Commands
Slash commands
CLI Overview
Command Line Options
Web Overview
Environments
Internet Access
Integrations GitHub
Slack
Linear
Codex Security Overview
Setup
Improving the threat model
FAQ
Configuration
Config File Config Basics
Advanced Config
Config Reference
Sample Config
Speed
Rules
Hooks
AGENTS.md
MCP
Plugins Overview
Build plugins
Administration
Agent approvals & security
Remote connections
Enterprise Admin Setup
Governance
Managed configuration
Automation
Non-interactive Mode
Codex SDK
App Server
MCP Server
GitHub Action
Videos
Blog Using skills to accelerate OSS maintenance
Building frontend UIs with Codex and Figma
View all
Cookbooks Codex Prompting Guide
Modernizing your Codebase with Codex
Building AI Teams
Releases
Feature Maturity
Open Source
Apps SDK Commerce
Core Concepts
MCP Apps in ChatGPT
UX principles
UI guidelines
Plan
Research use cases
Define tools
Design components
Build
Set up your server
Build your ChatGPT UI
Authenticate users
Manage state
Monetize your app
Examples
Deploy
Deploy your app
Connect from ChatGPT
Test your integration
Submit your app
Guides
Optimize Metadata
Security & Privacy
App submission guidelines
Reference
File Upload
Products
API
Feeds
Promotions
Showcase Blog Cookbook Learn Community
All posts
Recent
How Perplexity Brought Voice Search to Millions Using the Realtime API
Designing delightful frontends with GPT-5.4
From prompts to products: One year of Responses
Using skills to accelerate OSS maintenance
Topics
General
Apps SDK
Audio
Codex
Agents
Evals
Multimodal
Text
Optimization
ChatGPT
gpt-oss
Contribute
Cookbook on GitHub
Docs MCP
Categories
Demo apps
Audio & Voice
Fine-tuning
Scaling
Programs
Codex Ambassadors
Codex for Students
Codex for Open Source
Events
Meetups