@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