Send max_age_days from 0 to 30. If a stored copy is that young, the response has "cached": true, cached_at set to the first fetch, and credits_charged: 0. Absent or 0 means always fetch fresh. A miss fetches live, charges the normal price, and stores the result.
cache_max_age=7d is the same option. Units are d, h, m and s, so 12h is half a day.
The cache key is the endpoint plus its parameters. trim, raw and max_age_days itself do not change the key. A different cursor, sort, region or search term is a different request. The cache is not per customer: a repeat of something fetched recently can be served from it.
Stored results are kept at most 30 days. An endpoint may keep them for less. Its page says how long. Nothing comes from the cache unless you ask. Your balance, usage and monitors are never cached.
If someone asks for their data to be removed, matching cached results are deleted. A later request answers 410 removed and is not charged. See takedown.
Full detail: Caching.