Skip to content
Sandbox

Read an enrichment

GET /merchant/v1/enrichments/{enrichment_id}: a free read of a past result, what it returns, who can make it, and when it returns 404 or 410.

View as Markdown

GET /merchant/v1/enrichments/{enrichment_id} returns the stored result of a past enrichment. Reading is free and never bills. It requires the enrich:read scope.

Example

curl -sS "https://api.noryo.app/merchant/v1/enrichments/enr_ffe80956-cc3e-4e1f-b4b6-724ad231fbb7" \
  -H "Authorization: Bearer $NORYO_API_KEY"
Shell
{
  "enrichment_id": "enr_ffe80956-cc3e-4e1f-b4b6-724ad231fbb7",
  "merchant": {
    "name": "McDonald's",
    "category": "alimentation.restaurant",
    "location": { "city": "PARIS", "postal_code": "75018" },
    "logo_url": "https://www.mcdonalds.fr/apple-touch-icon.png",
    "confidence": 0.96
  },
  "enrichment": { "status": "resolved", "reason": null, "environment": "sandbox", "source": "noryo", "customized": false },
  "retrieval": { "billable": false, "units": 0 },
  "original": { "billable": false, "units": 1 }
}
JSON

Two objects for two questions

ObjectQuestionValue
retrievalWhat does this read cost?Always { "billable": false, "units": 0 }
originalWhat did the enrichment cost when it happened?billable and units of the original call

The read carries no usage object: these two objects take its place. merchant and enrichment have the same shape as on creation. See Enrichment.

What reading an identifier returns

Each enrichment_id designates its own result, frozen. After a refresh, the old identifier still returns the old result and the new identifier returns the new one: the read does not follow the transaction's "current result". To know the latest result, keep the identifier returned by the refresh (body or Location header). See Lifecycle.

Who can read

Any API key with the enrich:read scope, in the same workspace and the same environment as the key that created the enrichment. The original key no longer needs to exist.

When the read fails

StatusCodeWhen
404enrichment_not_foundUnknown or malformed identifier, from another workspace or another environment. The cases are deliberately indistinguishable.
410result_content_expiredThe content has passed its 90-day retention. The body repeats the enrichment_id. See Retention and 410.
403insufficient_scopeThe key lacks enrich:read
401invalid_api_keyKey missing, unknown or revoked
429rate_limitedRate-limit bucket empty
{
  "type": "https://developer.noryo.app/errors/enrichment_not_found",
  "title": "Enrichment not found",
  "status": 404,
  "code": "enrichment_not_found",
  "detail": "No enrichment matches this identifier in this workspace.",
  "request_id": "req_…"
}
JSON

Nothing reveals that an enr_ exists elsewhere: a 404 never says "forbidden".

Rate

A read consumes a rate-limit token, like a create call. A successful GET response carries the Noryo-RateLimit-* headers, like a successful POST. See Rate limits.

Note

A read is not an archive. The content disappears after 90 days: store what you need on your side.

Published on 2026-10-09 10:18 UTC (version 2).

Was this page helpful?