Skip to content
Sandbox

Retention and 410

How long Noryo keeps what: result content 90 days, idempotency 24 hours, raw descriptor never. What a 410 says and what survives the purge.

View as Markdown

Noryo Merchant API is not an archive. It keeps the content of a result long enough to read it back, then purges it.

Retention periods

DataRetention
Content of a result (merchant, readable status)90 days
Idempotency memory (response bound to an Idempotency-Key)24 hours
Raw descriptor (descriptor)Not retained
Accounting recordKept for its own legal duration

The raw descriptor is not retained. Retention is 0 days: no column of the module can store it, and it never appears in a log. Only a fingerprint of its canonical form is kept, to recognise a transaction already seen.

The 410

After 90 days, a read returns:

{
  "type": "https://developer.noryo.app/errors/result_content_expired",
  "title": "Result content expired",
  "status": 410,
  "code": "result_content_expired",
  "detail": "The result content was purged and is no longer available.",
  "request_id": "req_…",
  "enrichment_id": "enr_ffe80956-cc3e-4e1f-b4b6-724ad231fbb7"
}
JSON

The body repeats the enrichment_id concerned. It does not say which retention class applied: that is internal.

A 410 is not a 404: it proves the result existed and was purged. An identifier that never existed, or that belongs to another workspace, returns 404.

A not_found result has no content to purge: its read keeps returning 200 with merchant: null, never 410, and so does sending its transaction again.

The 410 on a create call

Sending again with POST a transaction already known (same external_transaction_id, same input) whose current content has been purged also returns 410 result_content_expired. This refusal is not billed. To get a readable result again, refresh the transaction: see Refresh.

What survives

The identity, the ledger line, the units, the price and the accounting timestamps all survive: you can still prove what you bought and when. Only the content is gone.

ItemAfter the purge
enrichment_idStill recognised: 410
Transaction (external_transaction_id)Still recognised: deduplication and refresh possible
Billed usageUnchanged
ContentPurged

What is up to you

Store what you need on your side. If your product shows a merchant's name on last year's transaction, record merchant when you receive it, together with the enrichment_id and the request_id. Reading the API again does not replace your own storage.

KeepWhy
merchant (name, category, logo, location)The content expires after 90 days
enrichment.status and confidenceTo know later what the result was worth
enrichment_idTo read or refresh
Noryo-Request-IdTo find the attempt with support

Published on 2026-10-08 21:04 UTC (version 1).

Was this page helpful?