# Prompt Caching Prompt caching reduces cost and latency by reusing previously processed portions of your prompt across API calls. Instead of reprocessing the same large system prompt or document on every request, the API reads from cache at a fraction of the standard input price. ## How it works There are two ways to enable prompt caching: - **Automatic caching**: add a single `cache_control` field at the top level of your request. The system manages cache breakpoints as conversations grow. This is the recommended starting point for most use cases. - **Explicit cache breakpoints**: place `cache_control` directly on individual content blocks for fine-grained control over exactly what gets cached. ## Pricing multipliers Prompt caching uses the following multipliers relative to base input rates: | Cache operation | Multiplier | Duration | | -------------------- | ---------------------- | ------------------------- | | 5-minute cache write | 1.25x base input price | Cache valid for 5 minutes | | 1-hour cache write | 2x base input price | Cache valid for 1 hour | | Cache read (hit) | 0.1x base input price | Same as preceding write | Cache write tokens are charged when content is first stored. Cache read tokens are charged when a subsequent request retrieves the cached content. A cache hit costs 10% of the standard input price, which means caching pays off after just one cache read for the 5-minute duration, or after two cache reads for the 1-hour duration. ## Minimum cacheable length Shorter prompts cannot be cached, even if marked with `cache_control`. Any request to cache fewer than the minimum number of tokens is processed without caching, and no error is returned. To verify whether a prompt was cached, check the response usage fields: if both `cache_creation_input_tokens` and `cache_read_input_tokens` are zero, the prompt was not cached. ## What breaks a cache The cached prefix must match exactly. A single differing byte invalidates everything after it. Common causes include timestamps in the system prompt, user identifiers placed near the beginning, unsorted JSON serialization, and changes to the tool definitions, which are placed before everything else.