GPT-5.4: Catalogue listing
Confirmed6 evidence links
English original

OpenAI
| Model | Evidence links | Input / output price |
|---|---|---|
gpt-5.4batch · long context | openai API route unavailable | $2.50 (Input > 272,000 tokens) / $11.25 (Input > 272,000 tokens) |
gpt-5.4batch · short context | openai API route unavailable | $1.25 (Input ≤ 272,000 tokens) / $7.50 (Input ≤ 272,000 tokens) |
gpt-5.4fast · short context | openai API route unavailable | $5.00 (Input ≤ 272,000 tokens) / $30.00 (Input ≤ 272,000 tokens) |
gpt-5.4flex · long context | openai API route unavailable | $2.50 (Input > 272,000 tokens) / $11.25 (Input > 272,000 tokens) |
gpt-5.4flex · short context | openai API route unavailable | $1.25 (Input ≤ 272,000 tokens) / $7.50 (Input ≤ 272,000 tokens) |
gpt-5.4standard · long context | openai API route unavailable | $5.00 (Input > 272,000 tokens) / $22.50 (Input > 272,000 tokens) |
gpt-5.4standard · short context | openai API route unavailable | $2.50 (Input ≤ 272,000 tokens) / $15.00 (Input ≤ 272,000 tokens) |
GPT‑5.4 was tested with a longer, updated blocklist
GPT‑5.4 could not
replacements. */ model: | 'gpt-6-astra' | 'gpt-6.1-sol' | 'gpt-6.1-terra' | 'gpt-6-sol' | 'gpt-6-luna' | 'gpt-5.6-sol' | 'gpt-5.6-terra' | 'gpt-5.6-luna' | 'gpt-5.5' | 'gpt-5.5-2026-04-23' | 'gpt-5.4' | 'gpt-5.4-mini' | 'gpt-5.4-nano' | 'gpt-5.4-mini-2026-03-17' | 'gpt-5.4-nano-2026-03-17' | 'gpt-5.3-chat-latest' | 'gpt-5.2' | 'gpt-5.2-2025-12-11' | 'gpt-5.2-chat-latest' | 'gpt-5.2-pro' | 'gpt-5.2-pro-2025-12-11' | 'gpt-5.1' | 'gpt-5.1-2025-11-13' | 'gpt-5.1-codex' | 'gpt-5.1-mini' | 'gpt-5.1-chat-latest' | 'gpt-5' | 'gpt-5-mini' | 'gpt-5-nano' | 'gpt-5-2025-08-07' | 'gpt-5-mini-2025-08-07' | 'gpt-5-nano-2025-08-07' | 'gpt-5-chat-latest' | 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4.1-nano' | 'gpt-4.1-2025-04-14' | 'gpt-4.1-mini-
ope fallback migration metadata // to the owning provider, since other providers may still support the same model slug. let (target_model, current_name, target_name) = match (model_provider_id, model) { (OPENAI_PROVIDER_ID, "gpt-5.4") => ("gpt-6-sol", "GPT-5.4", "GPT-6 Sol"), (AMAZON_BEDROCK_PROVIDER_ID, "openai.gpt-5.4") => ( "openai.gpt-6-sol", "GPT-5.4 on Amazon Bedrock", "GPT-6 Sol on Amazon Bedrock", ), (OPENAI_PROVIDER_ID, "gpt-5.4-mini") => ("gpt-6-luna", "GPT-5.4 Mini", "GPT-6 Luna"), _ => return None, }; let availability = if model == "openai.gpt-5.4" { "no longer offered in Codex" } else { "no longer available" }; Some(ModelUpgrade { id: target_model.to_string(), migration_config_key: model.to_string(), model_link: None,
eturn isinstance(model, str) and model.startswith("computer-use-preview") @classmethod def _is_ga_computer_model(cls, model: str | ChatModel | None) -> bool: return isinstance(model, str) and ( model.startswith("gpt-5.4") or model.startswith("gpt-5.5") ) @classmethod def resolve_computer_tool_model( cls, *, request_model: str | ChatModel | None, tools: Sequence[Tool] | None, ) -> str | ChatModel | None: if not cls._has_computer_tool(tools): return None return request_model @classmethod def _should_use_preview_computer_tool( cls, *, model: str | ChatModel | None, tool_choice: Literal["auto", "required", "none"] | str | MCPToolChoice | None, ) -> bool: # Choose the computer tool wire shape from the effective request m
root.join(".mcp.json"), r#"{"mcpServers":{"repository-server":{"command":"repository-server"}}}"#, )?; std::fs::write(&global_config, "model = \"gpt-5.4\"\n")?; let home_dir = codex_home.path().display().to_string(); let mut mcp = TestAppServer::builder() .with_codex_home(codex_home.path()) .without_auto_env() .with_env_overrides(&[("HOME", Some(home_dir.as_str()))]) .build_initialized_with_timeout(DEFAULT_TIMEOUT) .awa
This code reference does not establish a working model identifier.
, ) .expect("in-memory metrics client") } #[test] fn extension_metrics_preserve_session_metadata_tags() { let metrics = test_metrics_client(); let session_telemetry = SessionTelemetry::new( ThreadId::new(), "gpt-5.4", "gpt-5.4", /*account_id*/ None, /*account_email*/ None, Some(TelemetryAuthMode::Chatgpt), "test_originator".to_string(), /*log_user_prompts*/ false, "tty".to_string(), SessionSource::Cli, ) .with_metrics_service_name("test_service") .with_metrics(metrics.clone()); let extension_metrics = super::extension_metrics::from_session_telemetry(session_telemetry); extension_metrics.histogram( "codex.test.extension", /*value*/ 7, &[ ("component", "skills"), ("app.version", "extension-version"), ("
This code reference does not establish a working model identifier.
, history[:], False) def _strip_orphaned_assistant_ids( items: list[TResponseInputItem], ) -> list[TResponseInputItem]: """Remove ``id`` from assistant messages when their paired reasoning items are missing. Some models (e.g. gpt-5.4) return compacted output that retains assistant message IDs even after stripping the reasoning items those IDs reference. Sending these orphaned IDs back to ``responses.create`` causes a 400 error because the API expects the paired reasoning item for each assistant message ID. This function detects and removes those orphaned IDs so the compacted history can be used safely. """ if not items: return items has_reasoning = any( isinstance(item, dict) and item.get("type") == "reasoning" for item in items ) if has_reasoning: return items cleaned: list[TResponseInputIt
This code reference does not establish a working model identifier.
-sol", "gpt-6.1-terra", "gpt-6-sol", "gpt-6-luna", "gpt-5.6-sol", "gpt-5.6-terra", "gpt-5.6-luna", "gpt-5.5", "gpt-5.5-2026-04-23", "gpt-5.4", "gpt-5.4-mini", "gpt-5.4-nano", "gpt-5.4-mini-2026-03-17", "gpt-5.4-nano-2026-03-17", "gpt-5.3-chat-latest", "gpt-5.2", "gpt-5.2-2025-12-11", "gpt-5.2-chat-latest", "gpt-5.2-pro", "gpt-5.2-pro-2025-12-11", "gpt-5.1", "gpt-5.1-2025-11-13", "gpt-5.1-codex", "gpt-5.1-mini", "gpt-5.1-chat-latest", "gpt-5", "gpt-5-mini", "gpt-5-nano", "gpt-5-2025-08-07", "gpt-5-mini-2025-08-07", "gpt-5-n
return [...new Set([normalized, withoutPinnedDate])]; } const SANDBOX_CONTEXT_WINDOWS_1M = new Set([ 'gpt-6-astra', 'gpt-6-sol', 'gpt-6-luna', 'gpt-6.1-sol', 'gpt-5.6', 'gpt-5.6-sol', 'gpt-5.6-terra', 'gpt-5.6-luna', 'gpt-5.4', 'gpt-5.4-2026-03-05', 'gpt-5.4-pro', 'gpt-5.4-pro-2026-03-05', 'gpt-4.1', 'gpt-4.1-2025-04-14', 'gpt-4.1-mini', 'gpt-4.1-mini-2025-04-14', 'gpt-4.1-nano', 'gpt-4.1-nano-2025-04-14', ]); const SANDBOX_CONTEXT_WINDOWS_400K = new Set([ 'gpt-5', 'gpt-5-codex', 'gpt-5-mini', 'gpt-5-nano', 'gpt-5-pro', 'gpt-5.1', 'gpt-5.1-codex', 'gpt-5.1-codex-max', 'gpt-5.1-codex-mini', 'gpt-5.2', 'gpt-5.2-codex', 'gpt-5.2-codex-cyber', 'gpt-5.2-pro', 'gpt-5.3-codex', 'gpt-5.3-codex-spark', 'gpt-5.4-mini', 'gpt-5.4-nano', ]); const SANDBOX_CONTEXT_WINDOWS_200K = new Set([ 'codex-mini-latest',
GPT‑5.4 Thinking also has improved context window management that supports its ability to think for longer
Introducing GPT-5.4 in Codex GPT-5.4 is now available in Codex as OpenAI's most capable and efficient frontier model for professional work
GPT‑5.4 Thinking also has improved context window management that supports its ability to think for longer
#44930 Embed friendly instructions in bundled GPT-5.4 and GPT-5.5
Using GPT 5.6 Luna Max, you get the power of March’s flagship GPT 5.4 xhigh for one thirteenth of its price.
GPT-5.4 is a model from OpenAI, released on 5 Mar 2026. The context window is 1,050,000 tokens. The maximum output is 128,000 tokens.
The context window is 1,050,000 tokens. The maximum output is 128,000 tokens.
On 5 Mar 2026.