Overview
Concentrate supports two provider-native prompt-caching interfaces:- Direct OpenAI GPT-5.6 Sol, Terra, and Luna use
prompt_cache_optionsand content-blockprompt_cache_breakpoint. - Anthropic and AWS Bedrock Claude models use
cache_control.
OpenAI GPT-5.6 explicit caching
OpenAI GPT-5.6 supports a request-wide caching mode and TTL:string
"implicit" allows OpenAI to choose cache locations. "explicit" writes only
at content blocks marked with prompt_cache_breakpoint.string
One of
"5m", "30m", or "1h". OpenAI supports "30m" natively; the other
values are accepted for cross-provider compatibility and snap to the nearest
TTL the routed provider supports. TTLs are minimum lifetimes — providers may
retain cached prefixes longer.string
Set this to
"explicit" to end an explicitly cached prefix after that text,
image, or file block.Responses API example
prompt_cache_retention remains available for earlier OpenAI models. GPT-5.6 and later use prompt_cache_options.ttl instead.
Chat Completions example
The same controls are available on the Chat Completions API. Setprompt_cache_breakpoint on text, image_url, or file content parts of
developer, system, user, tool, or assistant messages:
usage.prompt_tokens_details.cached_tokens and
usage.prompt_tokens_details.cache_write_tokens.
Breakpoints on assistant message parts are accepted and forwarded, but
OpenAI does not currently write cache entries for them — only
developer, system, user, and tool content is cached.
Anthropic and AWS Bedrock
Usecache_control for Claude models served directly by Anthropic or through AWS Bedrock:
cache_control markers per request. When a request routed to Anthropic contains more, Concentrate keeps the last four markers in prompt order — the ones closest to the end of the prompt — and strips the rest. A request-wide cache setting (top-level cache_control, prompt_cache_options, or prompt_cache_retention) places a marker on the last cacheable block, so it occupies one of the four slots. Prompt cache TTLs are rounded up according to what the provider supports. For example, sending prompt_cache_options with a TTL of 30 minutes to Anthropic results in a 1 hour TTL being set, as Anthropic does not support 30 minute cache TTLs.
Anthropic/Bedrock cache_control TTL options are "5m" and "1h". prompt_cache_options.ttl accepts the same values for compatibility, but on OpenAI routes they snap to "30m".
Anthropic also requires "1h" markers to appear before "5m" markers in the prompt. When a kept "5m" marker (an omitted ttl defaults to "5m") precedes a "1h" marker, Concentrate will lower the later marker to "5m" for you.
Cross-provider conversion
You can keep one interface in your request and still route across provider families — Concentrate converts markers to the routed provider’s native form:- On Anthropic and Bedrock routes, a content block’s
prompt_cache_breakpointconverts to a cache marker after that block. The converted marker’s TTL comes fromprompt_cache_options.ttl:"5m"stays five minutes; any other value or none becomes"1h". - On OpenAI GPT-5.6 routes, a content block’s
cache_controlconverts toprompt_cache_breakpoint: { "mode": "explicit" }. Block-level TTLs do not carry over — the request-wideprompt_cache_options.ttlapplies and snaps to"30m". - When a block carries both fields, the routed provider’s native field takes priority and the other is converted only in its absence.
Usage and cost
Inspect these response usage fields:input_tokens_details.cached_tokensis the number of cache-read tokens.input_tokens_details.cache_write_tokensis the number of prompt tokens written to cache, reported for every provider.input_tokens_details.cached_tokens_createdis deprecated and will be removed in a future release — usecache_write_tokensinstead. It reports the same cache-write count and remains populated for now to give integrations time to switch.
input_tokens already includes cache reads and writes; do not add the detail counters to it.
Cache isolation
Concentrate supplies a stable provider cache key derived from your API key when you do not sendprompt_cache_key. Cached prefixes are isolated between API keys.
Troubleshooting
The cache is not being reused
The cache is not being reused
Check that the model/provider supports the fields you sent, content before
the breakpoint is byte-for-byte stable, and the TTL has not expired. Verify
reuse with
cached_tokens.The first request costs more
The first request costs more
An explicit cache miss can create a write billed at 1.25 times input. Check
cache_write_tokens; later matching requests should report cache reads
instead.Azure ignores explicit cache fields
Azure ignores explicit cache fields
Concentrate does not advertise
prompt_cache_options or
prompt_cache_breakpoint for Azure OpenAI because Azure has not documented
those GPT-5.6 controls. Use a direct OpenAI route for this feature.Related documentation
Request Parameters
Complete request parameter reference
Create Response
Responses API endpoint documentation