Aller au contenu principal

Codes d'erreur

Toute réponse d'erreur de l'API partenaire est un Problem Details au sens de la RFC 7807, servi avec le Content-Type: application/problem+json.

HTTP/1.1 403 Forbidden
Content-Type: application/problem+json

{
"type": "https://docs.pesia.fr/partner/errors/insufficient_scope",
"title": "Insufficient Scope",
"status": 403,
"detail": "An error occurred.",
"code": "insufficient_scope",
"missing": ["dpae:write"],
"instance": "/partner/v1/dpae/submissions",
"timestamp": "2026-08-14T09:12:44.318Z"
}

Les champs​

ChampToujours présentContenu
typeouiURL de cette documentation, propre au code. Identifiant stable : la même valeur en sandbox et en production.
titleouiLibellé court, lisible. Non stable — ne branchez pas dessus.
statusouiStatut HTTP, identique à celui de la réponse.
detailouiMessage lisible propre à cette occurrence. Non stable — ne branchez pas dessus.
codeouiIdentifiant machine. C'est le seul champ sur lequel brancher votre logique.
instanceouiChemin de la requête à l'origine de l'erreur.
timestampouiHorodatage ISO 8601 de la réponse.
correlationIdselon la requêteReprend votre header X-Correlation-Id quand vous en envoyez un. À citer si vous nous contactez.

Certains codes ajoutent des extensions — des champs supplémentaires documentés sur la page du code concerné (par exemple missing pour insufficient_scope).

Brancher votre code​

Utilisez code, jamais title ni detail :

curl -s -X POST https://api.pesia.fr/partner/v1/dpae/submissions \
-H "Authorization: Bearer $TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d @submission.json \
| jq -r '.code // "ok"'

type est un identifiant stable, pas une adresse : sa valeur est identique dans tous les environnements. Traitez-la comme une chaîne de comparaison, et suivez le lien uniquement pour lire cette documentation.

Un code que vous ne connaissez pas peut apparaître : de nouveaux codes sont ajoutés au fil des fonctionnalités. Prévoyez un cas par défaut qui se rabat sur status.

Erreurs générales​

Ces codes peuvent apparaître sur n'importe quel endpoint.

CodeStatutQuand
unauthorized401Jeton d'accès absent, mal formé, expiré ou invalide.
insufficient_scope403Le jeton n'a pas le scope requis par l'endpoint.
forbidden403Accès refusé sans cause plus précise.
not_found404Chemin inconnu, ressource hors de votre périmètre, ou date sans barème SMIC.
validation_error400Le corps ou les paramètres de la requête ne respectent pas le schéma.
idempotency_key_required400Header Idempotency-Key absent sur une requête mutante.
idempotency_key_invalid_format400Idempotency-Key n'est ni un UUIDv4 ni un ULID.
idempotency_key_conflict409La clé a déjà servi pour une requête au corps différent.
conflict409Conflit d'état sans cause plus précise.
unprocessable422Requête bien formée mais métier impossible, sans cause plus précise.
rate_limited429Quota de requêtes dépassé.
webhook_subscription_duplicate409Une subscription existe déjà pour cette URL dans cet environnement.
webhook_subscription_has_deliveries409L'abonnement a encore des livraisons : supprimez-les d'abord.
webhook_subscription_limit_reached422Nombre maximal de subscriptions actives atteint.
internal_error500Erreur inattendue côté Pesia.

DPAE​

Voir DPAE pour le détail des endpoints.

CodeStatutQuand
DPAE_AGENCY_NOT_FOUND404Le code d'agence envoyé n'existe pas dans votre organisation.
DPAE_AGENCY_PROFILE_INCOMPLETE400L'agence n'a pas les informations légales nécessaires pour déclarer.
DPAE_MANDATE_MISSING422Le mandat de déclaration URSSAF de l'agence n'est pas actif.
DPAE_SUBMISSION_NOT_FOUND404La soumission demandée n'existe pas ou n'appartient pas à votre organisation ou à votre environnement.
DPAE_NOT_CANCELLABLE409L'envoi a commencé (dès SENDING) ou la soumission ne peut plus être annulée.
DPAE_UPSTREAM_UNAVAILABLE503Le service de déclarations est momentanément indisponible.

Lots de paie​

Voir Lots de paie pour le détail des endpoints.

CodeStatutQuand
PARTNER_PAYROLL_BATCH_AGENCY_NOT_FOUND404Le code d'agence envoyé n'existe pas dans votre organisation.
PARTNER_PAYROLL_BATCH_AGENCY_INCOMPLETE400L'agence n'a pas les informations légales ou les paramètres de paie nécessaires.
PARTNER_PAYROLL_BATCH_INVALID_INPUT400Le contexte de paie de l'agence est refusé : donnée de la fiche légale absente, ou aucun taux AT/MP intérimaire en vigueur pour la période.
PARTNER_PAYROLL_BATCH_LOT_CLOSED409Le lot de la période visée est clôturé.
PARTNER_PAYROLL_BATCH_NOT_FOUND404Le lot demandé n'existe pas ou n'appartient pas à votre organisation.

SMIC​

CodeStatutQuand
SMIC_UPSTREAM_UNAVAILABLE503Le barème SMIC est momentanément indisponible.

Codes de résultat par élément​

Les endpoints qui traitent plusieurs éléments en une requête (dépôt de DPAE, soumission d'un lot de paie) répondent en 2xx même quand certains éléments échouent. Ces échecs sont portés par le corps de la réponse, élément par élément — ils ne sont pas des Problem Details et n'ont pas de page ici. Voir DPAE et Lots de paie.

Voir aussi : Authentification · Scopes · Idempotence · Stabilité du contrat