Skip to content
Log in

Codes d'erreur

error.codeHTTPCause typiqueQue faire
unauthorized401Clé API manquante/invalide, ou clé provenant d’un autre environnementEnvoyez la clé dans l’en-tête X-B2B-API-Key et assurez-vous qu’elle correspond à l’environnement (sandbox, staging ou production).
missing_api_key401Cette clé API n’a pas été fournie dans l’en-têteEnvoyez la clé dans l’en-tête X-B2B-API-Key et assurez-vous qu’elle correspond à l’environnement (sandbox, staging ou production).
invalid_api_key401La clé API fournie n’est pas valideEnvoyez une clé valide dans l’en-tête X-B2B-API-Key et assurez-vous qu’elle correspond à l’environnement (sandbox, staging ou production).
expired_api_key401La clé API fournie a expiréEnvoyez une clé valide et active dans l’en-tête X-B2B-API-Key
no_account_group403Clé valide mais aucun groupe/aucune permission ne lui est liéDemandez l’activation/l’attribution des permissions pour cette clé (les comptes staging nécessitent une demande au support ; les permissions sandbox sont automatiques).
resource_missing404L’identifiant de la ressource n’existe pas ou n’est pas accessible dans votre tenantRevérifiez l’endpoint et l’ID que vous envoyez.
invalid_request_params400JSON mal formé, mauvais types ou structure inattendueValidez le payload avant envoi.
invalid_api_version ¹400La version d’API {api_version} n’est pas prise en chargeValidez la version et utilisez une version supportée.
missing_api_version ¹400La version d’API n’est spécifiée ni dans l’en-tête ni dans IntegrationGroupDéfinissez X-B2B-API-Version ou configurez une version par défaut au niveau du groupe.
api_version_subdomain_mismatch ¹400Le sous-domaine ne correspond pas à la version d’API spécifiée dans l’en-tête X-B2B-API-Version ou associée à la clé APIChangez le sous-domaine pour un sous-domaine correct. Utilisez app.b2brouter ou app-staging.b2brouter pour la version legacy (v2025-01-01). Utilisez api.b2brouter ou api-staging.b2brouter pour les versions ultérieures à v2025-10-13.
parameter_blank, parameter_empty422Champs obligatoires manquants/videsRenseignez les champs obligatoires puis renvoyez la requête.
parameter_inclusion422Valeur absente du catalogue autorisé (par ex. un scheme invalide)Vérifiez les valeurs autorisées (voir le Schemes Guide / listes) et corrigez.
parameter_taken422Une valeur unique existe déjà (par ex. numéro de facture)Utilisez une nouvelle valeur ou faites un GET avant pour éviter les doublons.
parameter_cannot_change422Tentative de modification d’un champ immuableSupprimez le champ de la mise à jour ou créez une nouvelle ressource.
conflict409L’état actuel de la ressource refuse l’opérationRésolvez le conflit d’état, puis réessayez.
(no code)429Vous avez dépassé la limite de débitImplémentez un backoff exponentiel, mettez en cache et privilégiez les webhooks au polling.

1) 401 Unauthorized (clé API erronée/manquante ou mauvais environnement)

Section titled “1) 401 Unauthorized (clé API erronée/manquante ou mauvais environnement)”

Exemple de requête :

Terminal window
curl --request GET \
--url 'https://api-staging.b2brouter.net/accounts?offset=0&limit=25' \
--header 'X-B2B-API-Key: {YOUR_API_KEY}' \
--header 'X-B2B-API-Version: {YOUR_API_VERSION}' \
--header 'accept: application/json'

Exemple de réponse :

{
"error": {
"code": "unauthorized",
"message": "Invalid API Key provided, or the API key might not have the necessary permissions for this action.",
"type": "invalid_request_error"
}
}

Assurez-vous d’utiliser la bonne clé pour votre environnement (sandbox test_…, staging ou production) et de l’envoyer dans X-B2B-API-Key.


2) 404 Not Found (la ressource n’existe pas ou n’est pas accessible)

Section titled “2) 404 Not Found (la ressource n’existe pas ou n’est pas accessible)”

Exemple de requête :

Terminal window
curl --request GET \
--url https://api-staging.b2brouter.net/directory/es/ES1234567890 \
--header 'X-B2B-API-Key: {YOUR_API_KEY}' \
--header 'X-B2B-API-Version: {YOUR_API_VERSION}' \
--header 'accept: application/json'

Exemple de réponse :

{
"error": "Not found"
}

3) 422 Unprocessable Entity (erreurs de validation)

Section titled “3) 422 Unprocessable Entity (erreurs de validation)”

Exemple de requête :

Terminal window
curl --request POST \
--url https://api-staging.b2brouter.net/accounts/{ACCOUNT_ID}/transports \
--header 'X-B2B-API-Key: {YOUR_API_KEY}' \
--header 'X-B2B-API-Version: {YOUR_API_VERSION}' \
--header 'accept: application/json' \
--header 'content-type: application/json'
'

Exemple de réponse :

{
"error": {
"code": "parameter_taken",
"message": "Transport type code has already been taken and Peppol Endpoint ID has already been taken",
"param": "transport_type_code",
"request_log_url": "https://api-staging.b2brouter.net/api_requests/123456",
"type": "invalid_request_error"
}
}

Les échecs de validation renvoient HTTP 422 (Unprocessable Entity) avec des détails d’erreur au niveau des champs, afin que vous puissiez corriger l’entrée et renvoyer la requête si nécessaire.


Chaque réponse API journalisée inclut l’en-tête X-B2B-API-Request-Id avec l’identifiant unique du log de requête stocké. Vous pouvez utiliser cette valeur pour :

  • corréler une réponse avec son entrée de log côté serveur ;
  • la référencer dans les tickets de support pour une investigation plus rapide ;
  • l’inclure dans les logs de votre propre application pour un traçage de bout en bout.

Les réponses d’erreur incluent également un champ request_log_url dans le corps JSON, qui pointe directement vers le log de requête.


  • Authentification : conservez des clés séparées par environnement et envoyez toujours X-B2B-API-Key.
  • Rate limiting : utilisez un backoff exponentiel, mettez les réponses en cache et préférez les webhooks au polling lorsque c’est possible.
  • Vocabulaires contrôlés : lorsqu’une valeur doit provenir d’un catalogue (par ex. scheme), vérifiez d’abord l’API/le guide Schemes.