Environments
Sandbox and Production share a URL and a contract; the key decides the environment. What is isolated between the two, and how to check it in a response.
Noryo Merchant API has two environments, sandbox and production. They share the same base URL and the same API surface: there is no Sandbox host. The key decides.
| Key prefix | Environment |
|---|---|
nry_mer_sbx_ | sandbox |
nry_mer_live_ | production |
The prefix declares, the server confirms
The prefix is a declaration, not an authority. The server finds the registered key, reads its environment, and compares it with the prefix presented. A Sandbox key presented with the nry_mer_live_ prefix (or the other way round) is refused with 401 invalid_api_key, with no silent correction. On Noryo's side, a key cannot be registered with a prefix that contradicts its environment.
Checking the environment in a response
Every result repeats the environment that produced it:
"enrichment": { "status": "resolved", "environment": "sandbox", "…": "…" }JSONIf your Production code receives "environment": "sandbox", it is using the wrong key.
What is isolated
Everything the API memorises is scoped to a workspace and an environment.
| Item | Isolation |
|---|---|
| Results | An enrichment_id can only be read with a key of the same workspace and the same environment; otherwise 404 enrichment_not_found, indistinguishable from an unknown identifier |
Idempotency-Key | The same idempotency key is independent in Sandbox and in Production |
external_transaction_id | Economic deduplication is separate per environment: the same identifier can exist in both |
| Rate | One token bucket per key; a Sandbox key and a Production key never share a bucket |
| Allowance | The 2,000-unit allowance only exists in Sandbox |
| Billing | A Sandbox call can never bill a Production account |
What does not differ
Both environments use the same resolution engine, the same resolution policy, the same validation, idempotency and retention rules, and the same error codes. An integration that is correct in Sandbox behaves the same way in Production; only the key, billing and rate limits change. See Sandbox.
Access
| Sandbox | Production | |
|---|---|---|
| Getting the key | API keys page of Platform | Only possible once the Production application is approved; Platform does not create Production keys |
| Specific refusals | 402 sandbox_quota_exhausted | 403 production_not_enabled, 402 no_active_subscription |
503 pricing_not_activated is not specific to either environment: both can return it. See Going live.
Keep one configuration entry per environment (key and base URL) rather than a switch in your code. The base URL is currently the same for both, but the host is not part of the contract.
Published on 2026-10-09 10:18 UTC (version 2).