Operations

Caching & conditional requests

GET responses are cached for speed; writes invalidate the affected resource. ETags let you make efficient conditional requests.

What is cached

ETags & conditional GET

Cacheable responses include an ETag. Send it back with If-None-Match to get a 304 Not Modified (and no body) when nothing changed:

curl -s "https://api.readycms.io/products/?namespace=<tenant>" \
  -H "Authorization: Bearer <app_id>:<app_secret>" \
  -H "If-None-Match: \"<etag-from-previous-response>\""
Tip
Store the ETag from each response and replay it with If-None-Match. A 304 saves bandwidth and is faster than re-downloading unchanged data.

Bypassing the cache

You may see a ?nocache=1 parameter. It is honored only in non-production/debug contexts and is stripped in production - do not rely on it to force-fresh reads in live traffic. Instead, rely on write-invalidation: after your write completes, the next read is fresh.

Note
If a read looks stale right after a write, capture the request_id of both calls before reporting it - that lets us trace the exact invalidation path.