A saved tariff lookup should explain which schedule supplied the answer. It should also explain which date the answer concerns. Those are separate pieces of information, even when your application puts them in the same report.
The Tariff API returns revision, edition, and date. revision names the official schedule release used. edition is the fingerprint of the retained, immutable parsed snapshot. date is the selected calendar day used for measure resolution. A revision label or a fingerprint does not establish the legal effective period of everything in that snapshot.
Without either selector, the lookup uses the current edition and today's UTC date. Save the returned identity alongside the code and response when you need to explain a result later. Saving only the code means a later lookup can answer from a different edition.
Replay the snapshot you actually used
To read that same retained snapshot, pass its returned edition. For example, an application can build an edition-only request from a previous successful lookup:
const selection = new URLSearchParams({ edition: result.edition });
const replayPath = `/tariff/${result.hts}?${selection}`;
This requests a snapshot, not a dated reconstruction. The response has date: null because no date was selected. With paid Deep and an origin supplied, effective_rate stays null and reason is date_required. The schedule's description and base general rate remain useful, but the request has not established which dated measures apply.
An unknown edition returns 404. The API does not replace it with whichever edition happens to be current.
A date needs its own evidence
An explicit date=YYYY-MM-DD requires an edition with a reviewed effective interval covering that day. Combining edition and date requires that exact edition to cover the date. Publication time and download time cannot substitute for that interval.
If verified coverage is unavailable, the request returns 404. Handle that as an unavailable historical selection. Removing the date and displaying the current answer under the old date would change the question while hiding the change from the reader.
The same caution applies to the rate. general is the base schedule column, so a value of Free does not establish a duty-free entry. USITC's explanation of additional duties points to provisions beyond the ordinary classification line.
Paid Deep exposes matched stored measures and a reason when the combined percentage remains unresolved. incomplete_coverage means the stored components do not establish a complete rate. conditional_measures means product or entry conditions need review. Null is an unresolved answer, not zero, and an empty measures array does not establish that no additional duties apply.
Keep these fields visible in the application that consumes them. A product description can help search for candidate codes. It does not classify the goods. Even a resolved effective_rate describes the supported stored components, not a complete entry-duty or landed-cost calculation. Replaying an answer makes its source reproducible. It does not turn that answer into a customs ruling.