Traduite de l'anglais. En cas de différence, la page en anglais fait foi. Lire en anglais

Erreurs

L'enveloppe d'erreur, chaque code d'erreur, et que faire pour chacun.

Chaque réponse d'erreur a la même forme :

{
  "error": {
    "type": "invalid_request_error",
    "code": "photo_required_for_channel",
    "message": "Product 66a1… has no images: channel \"etsy\" requires at least one image. Add an image, then publish again.",
    "param": null,
    "doc_url": "https://developers.nembol.com/docs/getting-started/errors#photo_required_for_channel"
  },
  "request_id": "req_9f83…"
}
  • type : l'une des quatre familles (ci-dessous). Basez votre logique de relance dessus.
  • code : chaîne stable, lisible par une machine. Basez dessus le traitement spécifique.
  • message : lisible par un humain, en anglais, il explique comment corriger. Ne l'analysez jamais.
  • param : le champ en cause pour les erreurs de validation (par ex. variants[2].price).
  • request_id : indiquez-le quand vous contactez le support.

Types d'erreur

typeHTTPRelancer ?
invalid_request_error400, 402, 403, 404, 409, 410, 412, 413, 415, 422Non. Corrigez la requête (402 : l'abonnement de la boutique n'est pas actif)
authentication_error401, 403Non. Corrigez la clé ou les scopes
rate_limit_error429Oui, après Retry-After secondes
api_error5xxOui, avec un délai exponentiel

Codes courants

CodeHTTPSignification
invalid_api_key401Clé absente, mal formée, révoquée ou renouvelée
insufficient_scope403La clé n'a pas le scope requis pour cet endpoint
plan_not_eligible403Le plan de la boutique n'inclut pas l'accès à l'API (pendant l'essai : seules les clés de test fonctionnent)
product_not_found / order_not_found / variant_not_found / listing_not_found / action_not_found / operation_not_found / event_not_found / import_not_found / channel_account_not_found / channel_connection_not_found / ignored_listing_not_found / webhook_endpoint_not_found / redirect_url_not_found / promotion_not_found / discount_not_found / bundle_not_found / notification_not_found404Cette ressource n'existe pas dans cette boutique. listing_not_found apparaît aussi par élément dans les résultats batch des annonces
validation_failed422Voir param et message
invalid_json400Le corps n'est pas un JSON valide (un guillemet, une virgule ou un crochet manquant). Rien n'a été lu ni modifié
payload_too_large413Le corps dépasse 25 Mo. Envoyez les images sous forme d'URL ou via POST /files, ou divisez le batch
unsupported_encoding415Le jeu de caractères ou l'encodage du corps n'est pas pris en charge. Envoyez du JSON en UTF-8 (gzip est accepté)
subscription_inactive402L'abonnement Nembol de la boutique n'est pas actif : les canaux ne peuvent être ni connectés ni déconnectés (POST /channel_connections, POST /channel_accounts/{id}/disconnect). Le même code peut arriver sur return_url à l'ouverture du lien
photo_required_for_channel422Publication d'un produit sans image sur un canal qui exige des images
billing_managed_by_nembol409Un lien de facturation sur une boutique facturée directement par Nembol (billing_source: "manual") : les modifications passent par billing@nembol.com
no_items_applied422POST /inventory/batch et POST /products/batch : aucun élément n'a pu être appliqué (chaque SKU est inconnu, ambigu, sur un produit qui requiert une attention, ou invalide). Raisons dans error.details.rejected_items ; rien n'a été modifié
image_unreachable422L'url d'une image n'a pas pu être téléchargée (l'hôte a refusé ou l'URL est incorrecte ; param indique quelle image). Utilisez une URL publique ou envoyez le fichier en base64
channel_not_connected422Publication/retrait, ou promotion, sur un canal que la boutique n'a pas connecté
not_supported_for_channel422Cet endpoint ne fonctionne que pour certains canaux. Le message les indique
setting_not_supported422Ce paramètre n'existe pas sur ce compte de canal. Son tableau writable liste ce qui peut être modifié
trial_publish_limit403La limite de publication de l'essai sur ce canal est atteinte. Apparaît aussi par élément dans les résultats batch des annonces. Abonnez-vous pour publier davantage
sku_not_found / sku_ambiguous422Élément de batch refusé (/inventory/batch, /products/batch) : SKU inconnu, ou SKU présent sur plusieurs variantes (error.details.product_ids les liste ; rien n'est écrit). Corrigez le doublon ou mettez à jour par identifiant
images_unsupported_on_batch_updatepar élémentL'élément de batch correspond à un produit existant mais envoie des images. Mettez à jour ses images avec PATCH /products/{id}
file_too_large / unsupported_file_type422Une image (POST /files, ou images[] en base64 ou url) dépasse 10 Mo, ou n'est pas un JPEG, PNG, WebP ou GIF, par ex. une URL qui renvoie une page HTML. param indique quelle image
idempotency_key_reused409Même Idempotency-Key avec un contenu différent
idempotency_key_in_flight409La première requête avec cette Idempotency-Key est toujours en cours. Réessayez dans un instant
precondition_failed412expected_updated_at ne correspond pas. Relisez la ressource et réessayez
product_still_listed422Suppression refusée : le produit a encore des annonces en ligne. Retirez-les d'abord
order_not_fulfillable422La commande est annulée/remboursée et ne peut pas être marquée comme expédiée
channel_notification_unsupported422Ce canal ne peut pas recevoir de notifications d'expédition. Réessayez avec notify_channel: false
overrides_not_supported422Pour l'instant, seuls overrides.title / overrides.description peuvent être définis sur une annonce. Un corps vide relance la synchronisation
listing_not_delistable422Les annonces importées/liées appartiennent au canal
listing_operation_in_progress409Attendez la fin de l'opération en cours, puis réessayez
not_startedpar élémentRésultat d'opération : la tâche sur le canal n'a pas pu démarrer car une autre opération a pris l'annonce. Réessayez
no_price / price_below_minimumpar élémentRésultat d'ajustement de prix : le produit n'a aucune variante avec un prix, ou le nouveau prix serait inférieur au minimum. Rien n'a changé pour ce produit
channel_errorn/a(dans les issues[] d'une annonce) le canal a refusé la dernière écriture. Le message est l'erreur du canal. Filtrez avec error_contains
import_not_supported422Les produits ne peuvent pas être importés depuis ce canal
import_already_running409Un import depuis ce compte de canal, ou un import CSV, est déjà en file ou en cours. Attendez qu'il se termine
import_still_running / import_already_undone409Annulation d'import : l'import n'est pas encore terminé, ou a déjà été annulé
promotion_reaches_nothing422Promotions : aucun des produits n'est publié sur les canaux choisis, la promotion ne réduirait donc aucun prix. Publiez-les d'abord, ou enregistrez-la comme brouillon
promotion_conflict409Certains produits sont déjà dans une autre promotion active. Voir error.details.product_ids et promotion_ids
promotion_limit_reached403Le plan Basic (et l'essai gratuit) n'exécute qu'une promotion à la fois (active ou planifiée ; les brouillons ne comptent pas) ; Pro et les plans supérieurs n'ont pas de limite. Voir limits.running_promotions dans GET /billing. Arrêtez l'autre promotion ou passez à un plan supérieur
unknown_channel422Promotions : un canal dans channels sur lequel les promotions ne fonctionnent pas. Le message l'indique et liste les canaux valides
discount_exceeds_price422Promotions : une réduction fixe n'est pas inférieure à un prix couvert. error.details indique le product_id, le variant_id, le channel et le price
promotion_running / promotion_not_running / promotion_reverting409Promotions : modification ou suppression pendant qu'elle est en cours (arrêtez-la d'abord) ; arrêt d'une promotion qui n'est pas en cours ; suppression pendant que les prix des canaux sont encore en cours de restauration (réessayez dans un instant)
plan_upgrade_required403Storefront : le plan de la boutique n'inclut pas cette fonctionnalité
code_exists409Storefront : une réduction avec ce code existe déjà (param: code)
transition_not_allowed409Commande du Storefront : la commande ne peut pas passer de son statut actuel à celui demandé
already_refunded / order_not_paid409Remboursement d'une commande du Storefront : il ne reste rien à rembourser, ou la commande n'a jamais été payée. Répondu avant toute confirmation
stripe_refund_failed / paypal_refund_failed502Remboursement d'une commande du Storefront : le prestataire de paiement l'a refusé ; le message donne sa raison
sku_required / title_requiredpar élémentIl manque à l'élément de batch le SKU pour la correspondance / un titre pour la création
route_not_found404Cet endpoint n'existe pas. Consultez la référence
rate_limit_exceeded429Seau vide. Respectez Retry-After
write_quota_exceeded429Quota quotidien d'écriture sur les canaux atteint
internal_error500Un problème est survenu de notre côté. Réessayez avec un délai croissant ; indiquez le request_id si le problème persiste
channel_unavailable502Le canal n'a pas répondu ou a échoué. Réessayez plus tard
confirmation_required409Action irréversible : affichez confirmation.summary, puis répétez la même requête avec Nembol-Confirmation. Voir Annulation et confirmations
confirmation_invalid409Le jeton de confirmation a déjà été utilisé, a expiré ou concerne une autre requête. Un nouveau jeton figure dans la réponse
undo_conflict409Rien n'a été annulé : chaque valeur a été modifiée de nouveau depuis. Voir error.details
action_already_undone409L'action a déjà été annulée
not_reversible422L'action ne peut pas être annulée ; le message indique quoi faire à la place
undo_window_expired422Les actions peuvent être annulées pendant 30 jours
product_not_deleted409Restauration demandée sur un produit qui n'est pas supprimé
product_requires_attention409Le produit est to_verify : résolvez-le (POST /products/{id}/resolve ou une fusion) avant d'écrire ses annonces
product_not_requiring_attention409Résolution demandée sur un produit qui n'est pas to_verify
resolution_not_applicable409Cette résolution ne correspond pas au requires_attention.reason du produit
still_requires_attention409recheck : le paramètre du canal n'est pas encore corrigé. Voir error.details.reason
confirm_different409Fusion : les produits ne se ressemblent pas. Vérifiez error.details.product_ids, puis envoyez confirm_different: true
same_channel_account422Fusion : deux produits sont en ligne sur le même compte de canal. Voir error.details.channels
variants_differ422Fusion : les variantes ne se correspondent pas. Associez-les avec variant_maps à l'aide de error.details.matching
invalid_choices / too_few / too_many422Fusion : une entrée de choices ne convient pas, ou le nombre de produits n'est pas compris entre 2 et 10
product_merged409Restauration refusée : le produit a été fusionné. Annulez plutôt la fusion
not_a_partner403Nembol-Account ou des endpoints partenaire utilisés par une boutique qui n'est pas partenaire
not_on_a_sub_account400Vous avez envoyé Nembol-Account à un endpoint partenaire (/accounts, /partner/*). Ceux-ci fonctionnent sur votre propre compte partenaire : appelez-les sans l'en-tête
sandbox_limit409Un partenaire en sandbox a atteint son nombre maximal d'entreprises ouvertes. Fermez-en une d'abord
plan_too_small409L'entreprise a plus de produits ou de comptes de canal que le nouveau plan ne le permet
account_not_found404Aucune entreprise avec cet identifiant pour votre clé partenaire
billed_by_partner409/billing appelé à l'intérieur d'une entreprise : les entreprises sont facturées au partenaire
billing_managed_elsewhere422La boutique est facturée via Shopify, Wix ou WooCommerce.com. Changez de plan, résiliez ou mettez à jour le paiement là-bas
return_url_not_allowed422return_url doit commencer par une URL enregistrée pour cette boutique (POST /redirect_urls)
plan_limits_exceeded422Changement de plan : la boutique utilise plus que ce que le plan cible autorise. Réduisez l'utilisation ou choisissez un plan plus grand
no_payment_method_yet / no_subscription_yet422La boutique n'a pas encore de facturation Stripe. Abonnez-vous d'abord avec POST /billing/plan_change_link
already_canceled / already_canceling / nothing_to_cancel422Résiliation : l'abonnement est déjà résilié, se termine déjà à la fin de la période, ou il n'y a rien à résilier (essai, pas d'abonnement Stripe)
trial_not_available422La boutique ne peut pas relancer d'essai
billing_provider_error502Stripe ou PayPal n'a pas renvoyé de page. 409 quand PayPal refuse la modification. Réessayez plus tard
billing_links_unavailable503Les liens de facturation ne sont pas encore disponibles. Gérez l'abonnement depuis le tableau de bord Nembol
account_suspended / account_closed409Écritures sur une entreprise suspendue (facture partenaire impayée) ou fermée
product_limit_reached409La limite de produits du plan de l'entreprise est atteinte. Changez son plan ou supprimez des produits
channel_slots_full422Il ne reste aucun emplacement libre pour ce canal. Déconnectez d'abord un compte
plan_channel_not_included403Le plan de la boutique n'inclut pas ce canal. Passez à un plan supérieur pour le connecter
channel_not_disconnectable422La boutique paie son abonnement Nembol via ce compte, il ne peut donc pas être déconnecté
connection_not_awaiting_choice409choose sur une connexion qui n'est pas needs_choice
choice_expired410Plus d'une heure s'est écoulée depuis la connexion du vendeur. Créez un nouveau lien
link_expired / link_already_usedn/a(sur return_url) le lien de connexion a expiré ou a déjà été utilisé. Créez-en un nouveau
different_channel_accountn/a(dans connection.error et sur return_url) le vendeur s'est connecté à une autre boutique que celle en cours de reconnexion (channel_account_id, ou un compte déconnecté que l'on reconnecte : reconnects_shop). Rien n'a changé. Connectez-vous à cette boutique, ou connectez la nouvelle avec new_account: true (sans channel_account_id)
channel_login_failedn/a(sur return_url et dans connection.error) la connexion au canal n'a pas démarré ou n'a pas abouti. Créez un nouveau lien
channel_credentials_rejectedn/a(dans connection.error) le canal a refusé les identifiants envoyés
plan_not_eligible / subscription_inactive / slot_no_longer_availablen/a(sur return_url, erreur de connexion) la boutique ne peut plus connecter ce canal
no_account_to_connectn/a(erreur de connexion) le compte de canal du vendeur ne contient rien que Nembol puisse connecter

De nouveaux codes sont ajoutés au fil du temps ; gérez les codes inconnus en vous rabattant sur type.

Dernière mise à jour le 21 octobre 2026

Besoin d'aide ?

Écrivez-nous et une personne vous répond, généralement sous un jour ouvré.

Sur cette page