OpenAI added a 12 hour prompt cache to its API on October 20. For GPT-5.6 and later, including GPT-6.1 Sol, a 12 hour cache write costs 2.5 times the input rate versus 1.25 times for the default 30 minutes, while reads cost the same either way. It pays off only for stable prefixes that come back after long gaps.
OpenAI added 12 hour prompt caching to its API on October 20. In the Responses API, GPT-5.6 and later models, including GPT-6.1 Sol, take a prompt_cache_options.ttl setting that accepts "30m", which is the default, or "12h". The longer lifetime exists for a specific problem: shared instructions, tool definitions and reference material that your application sends again and again, but with gaps longer than half an hour between requests, so the default cache keeps expiring and you keep paying to write it again.
The price of the longer lifetime is on the write side. For GPT-5.6 and later, a 12 hour cache write costs 2.5 times the uncached input token rate, while a 30 minute write costs 1.25 times. Reads cost 0.1 times the ordinary input rate on most of these models and 0.05 times on GPT-6.1 Sol, and the read rate is the same whichever lifetime you chose. So the 12 hour option never makes a cache hit cheaper. It only makes a hit possible when the 30 minute cache would already have expired.
That gives a simple rule of thumb. On GPT-6.1 Sol, a prefix written once at the 12 hour rate and read twice costs about 2.5 plus 0.05 plus 0.05, or 2.6 units of its input price. The same prefix on the default lifetime, if both later requests arrive after the 30 minute window has closed, costs 1.25 three times over, or 3.75 units. With only one late return, the two options roughly tie, at 2.55 versus 2.5. The 12 hour cache earns its premium once a stable prefix comes back at least twice after long gaps, and it is wasted on anything that changes often or is reused within minutes.
Two practical conditions apply. Caching starts at 1,024 tokens for GPT-5.6 and later, so short system prompts will not be cached at all. And you should verify the result rather than assume it: the response usage object reports reused tokens in input_tokens_details.cached_tokens and newly written tokens in input_tokens_details.cache_write_tokens. If cache writes keep appearing on a prefix you expected to be reused, your traffic pattern is not what you think it is.
Try it today
- List the prompt prefixes your application repeats, such as system instructions, tool schemas and reference documents, and keep only those of 1,024 tokens or more.
- Check request logs for how often each prefix returns more than 30 minutes after its previous use.
- Set prompt_cache_options.ttl to "12h" only for stable prefixes that return at least twice a day after such gaps, and leave fast changing session context on the default "30m".
- Put the stable material at the very start of the prompt so the cached prefix stays identical across requests.
- For a week, compare usage.input_tokens_details.cached_tokens and cache_write_tokens before and after the change, and roll back any prefix where writes outnumber reads.