Every response ships with a cache_id
Every call to a FreshGeo API returns a cache_id in the response envelope. That ID is a content hash of the inputs, the upstream fetch manifest, the parser version and the scoring weights. Pass it back to /replay and you get the same typed JSON object your agent saw the first time — even if the live web has since changed. This is what makes evals actually stable across CI runs, not just on your laptop.
curl https://api.freshgeo.com/v1/replay/ck_8f2a9b1e...