Aller au contenu
Sandbox

Authentification

Comment présenter une clé API, ce que le serveur vérifie, pourquoi toute clé refusée rend le même 401, et quels scopes ouvrent quelles routes.

Voir en Markdown

Chaque requête s'authentifie par une clé API envoyée dans l'en-tête Authorization, selon le schéma Bearer :

Authorization: Bearer nry_mer_sbx_<key_id>.<secret>
HTTP

Il n'existe pas d'autre mode d'authentification : pas de paramètre d'URL, pas de champ de corps, pas de jeton à échanger.

La forme de l'en-tête

Le serveur lit l'en-tête strictement :

  • le nom du schéma est insensible à la casse (Bearer, bearer, BEARER) ;
  • un seul espace sépare le schéma de la clé ;
  • aucun espace, tabulation ou retour à la ligne avant, après ou dans la clé ;
  • aucun autre schéma n'est accepté.

Toute autre forme est refusée en 401. Le serveur ne corrige rien, ne rogne rien et ne change pas la casse.

La forme de la clé

PartieValeur
Préfixenry_mer_sbx_ (Sandbox) ou nry_mer_live_ (Production)
key_id10 caractères de l'alphabet 23456789ABCDEFGHJKMNPQRSTVWXYZ, en majuscules
Séparateurun point .
SecretBase64URL sans remplissage ; une clé émise par Noryo porte un secret de 43 caractères

Le préfixe annonce l'environnement, mais il n'est jamais l'autorité : le serveur confirme l'environnement de la clé enregistrée et refuse une clé dont le préfixe déclaré ne correspond pas. Une clé d'une autre API Noryo est refusée sur celle-ci, même parfaitement formée. Voir Clés API.

Un seul code pour toute clé refusée

Clé absente, mal formée, inconnue, révoquée, préfixe d'environnement erroné : la réponse est toujours la même.

HTTP/1.1 401 Unauthorized
content-type: application/problem+json
www-authenticate: Bearer realm="noryo-merchant-api", error="invalid_token"
noryo-request-id: req_…
HTTP
{
  "type": "https://developer.noryo.app/errors/invalid_api_key",
  "title": "Invalid API credential",
  "status": 401,
  "code": "invalid_api_key",
  "detail": "The API credential is missing, malformed, revoked, or unknown.",
  "request_id": "req_…"
}
JSON

Toute distinction dirait à un attaquant laquelle des deux moitiés de sa supposition était juste. Un 401 ne consomme aucun jeton de débit. Voir invalid_api_key.

Scopes

Une clé porte des scopes, choisis à sa création.

ScopeRoutes
enrich:readGET /merchant/v1/enrichments/{enrichment_id}
enrich:writePOST /merchant/v1/enrichments et POST /merchant/v1/enrichments/{enrichment_id}/refresh

Une clé valide sans le scope requis reçoit 403 insufficient_scope, avec l'en-tête WWW-Authenticate: Bearer realm="noryo-merchant-api", error="insufficient_scope". Ce refus intervient après le contrôle de débit : il consomme un jeton.

Autres refus d'autorisation

CodeStatutQuand
account_inactive403L'organisation ou le workspace de la clé n'est pas actif
production_not_enabled403La clé n'est pas autorisée à appeler la Production
insufficient_scope403La clé n'a pas le scope de la route

Dans cette section

Publié le 2026-10-08 21:04 UTC (version 1).

Cette page vous a-t-elle aidé ?