On Oct 20 OpenAI added 12-hour prompt caching to the Responses API: GPT-5.6 and later models can set prompt_cache_options.ttl to "12h" so instructions, tool definitions and reference material stay billed at the cached rate even when requests are hours apart. 12-hour writes cost 2.5x the ordinary input price versus 1.25x for the default 30 minutes; read rates are unchanged at 0.1x on most models and 0.05x on GPT-6.1 Sol. One request can mix 12-hour and 30-minute breakpoints.

Key Takeaways

  • ✓New option: prompt_cache_options.ttl in the Responses API accepts "30m" (default) or "12h", and prompt_cache_breakpoint.ttl overrides it per breakpoint, for GPT-5.6 and later models
  • ✓Rates (vendor-stated): 30-minute writes at 1.25x and 12-hour writes at 2.5x ordinary input; reads at 0.1x on most models and 0.05x on GPT-6.1 Sol, same for both lifetimes
  • ✓Our estimate from the documented rates: reusing one prefix 6 times an hour apart costs about 6x1.25=7.5x input with 30-minute caching (rewritten each time) versus about 2.5+5x0.1=3.0x with 12-hour caching
  • ✓Up to 4 cache writes per request and a 1,024 visible-token minimum prefix; usage now splits writes into ttl_30m_tokens and ttl_12h_tokens
  • ✓"12h" is a minimum lifetime, not a deletion deadline, and does not guarantee a hit or lower latency; GPT-5.5 and earlier keep using prompt_cache_retention
🧭

Turn your technical choice into a development budget

Compare 40 dev plans & simulate token costs vs $20/mo subscriptions

🔬

In-Depth Technical Analysis

Background

Long-running agents resend the same instructions, tool definitions and reference material on every call. On GPT-5.6 and later the default cache only guarantees about 30 minutes, so a request an hour or two later rewrites the prefix at 1.25x. OpenAI Developers named always-on agents like dots as the target.

How it works

The Responses API now accepts prompt_cache_options.ttl of "30m" or "12h", and prompt_cache_breakpoint.ttl can override it per breakpoint. The docs suggest putting all-day content first with a 12-hour breakpoint and session context at 30 minutes; a request can create up to 4 writes. Each token is billed once at the longest lifetime covering it, and upgrading 30-minute coverage to 12 hours is a fresh write with no credit.

Numbers

This is a billing feature, so there are no benchmarks. Vendor-stated rates: 12-hour writes at 2.5x ordinary input, 30-minute at 1.25x; reads at 0.1x on most models and 0.05x on GPT-6.1 Sol. Our estimate: one prefix reused hourly six times a day costs about 7.5x input with 30-minute caching versus about 3.0x with 12-hour caching; for reuse within minutes, 30 minutes stays cheaper.

Getting started

Put stable instructions in a developer-message input_text block with a 12-hour breakpoint and keep changing content after the last breakpoint so it isn't written. Track ttl_12h_tokens under cache_write_tokens_details and cached_tokens to confirm savings. 12 hours is a minimum lifetime, not a hit guarantee; GPT-5.5 and earlier still use prompt_cache_retention.

Action HubReady to adopt this in production?

Benchmark side-by-side against alternatives, or calculate monthly token cost vs subscription break-even.

Up NextCodex Day 7: GPT-6.1 Sol default context rises from 272K to 500K, no long-context fees on subscription usage
Read Now→