> For the complete documentation index, see [llms.txt](https://help.citrusad.com/retail-media-interface/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.citrusad.com/retail-media-interface/partner/fr/partner-api-overview/error-handling.md).

# Gestion des erreurs

Epsilon Retail Media Les API partenaires suivent une approche de gestion des erreurs structurée et cohérente. Cela garantit que les réponses d'erreur sont prévisibles, faciles à analyser et utiles pour le débogage.

## Structure de la réponse d'erreur

Lorsqu'une erreur se produit, l'API renvoie :

* Un code d'état HTTP standard.
* Un corps JSON structuré avec un code, un message et un champ de détails facultatif.
* Une liste de violations au niveau des champs (le cas échéant), permettant aux clients de corriger plusieurs problèmes en une seule fois.

## Stratégies de base pour gérer les erreurs

Lorsque vous rencontrez une erreur, suivez ces étapes :

1. **Lisez attentivement le message d'erreur** - La réponse d'erreur fournit des informations spécifiques sur ce qui a mal tourné et sur le champ qui a causé le problème.
2. **Consultez la page du point d'accès** - Si vous ne savez pas comment procéder, consultez la page spécifique du point d'accès que vous utilisez.
3. **Contacter le support** - Si vous continuez à rencontrer des problèmes, vous pouvez ouvrir un ticket dans notre Portail de support. Veuillez fournir :
   * L'appel d'API exact que vous effectuez.
   * Le détaillant et l'équipe spécifiques.
   * L'entité spécifique que vous créez/mettez à jour.
   * La réponse d'erreur complète que vous voyez.

Ces informations permettront à notre équipe de vous aider de manière efficace et performante.

### Exemple de violation unique

```json
{
  "code": 3,
  "message": "Invalid argument(s) for product campaign creation",
  "details": [
    {
      "@type": "type.googleapis.com/google.rpc.BadRequest",
      "fieldViolations": [
        {
          "field": "maxBid",
          "description": "[maxBid] must be greater or equal [minBid]"
        }
      ]
    }
  ]
}
```

### Exemple de violations multiples

```json
{
  "code": 3,
  "message": "Invalid argument(s) for product campaign update",
  "details": [
    {
      "@type": "type.googleapis.com/google.rpc.BadRequest",
      "fieldViolations": [
        {
          "field": "strategy.fixedTenancy.catalogCosts",
          "description": "all catalog cost percentages for fixed tenancy must sum to 100%"
        },
        {
          "field": "strategy.fixedTenancy.catalogCosts",
          "description": "fixed tenancy catalog cost [...] is duplicated in the list"
        }
      ]
    }
  ]
}
```

## Codes d'état HTTP standard

| Code d'état HTTP          | Signification                       | Quand cela se produit                                |
| ------------------------- | ----------------------------------- | ---------------------------------------------------- |
| 200 OK                    | La requête a réussi                 | Appel d'API réussi                                   |
| 204 No Content            | Succès, aucun corps de réponse      | Requête réussie sans charge utile de retour          |
| 400 Bad Request           | Saisie non valide                   | Requête mal formée ou échec de validation            |
| 401 Unauthorized          | Jeton manquant ou non valide        | Jeton non fourni ou expiré                           |
| 403 Forbidden             | Accès refusé                        | Jeton valide mais autorisations insuffisantes        |
| 404 Not Found             | Ressource non trouvée               | Point d'accès ou identifiant de ressource non valide |
| 409 Conflict              | Données en double ou conflictuelles | La ressource existe déjà ou viole des contraintes    |
| 429 Too Many Requests     | Limite de débit dépassée            | Trop de requêtes dans un court laps de temps         |
| 500 Internal Server Error | Problème côté serveur               | Erreur inattendue sur le serveur                     |
| 503 Service Unavailable   | Interruption temporaire             | Le service est indisponible ou en maintenance        |

## Mappage des codes d'erreur gRPC vers HTTP

| Code gRPC | Nom gRPC             | Code HTTP | Nom HTTP                                 |
| --------- | -------------------- | --------- | ---------------------------------------- |
| 0         | OK                   | 200       | OK                                       |
| 1         | CANCELLED            | 499       | Client Closed Request                    |
| 2         | UNKNOWN              | 500       | Internal Server Error                    |
| 3         | INVALID\_ARGUMENT    | 400       | Bad Request                              |
| 4         | DEADLINE\_EXCEEDED   | 504       | Délai d'attente de la passerelle dépassé |
| 5         | NOT\_FOUND           | 404       | Non trouvé                               |
| 6         | ALREADY\_EXISTS      | 409       | Conflit                                  |
| 7         | PERMISSION\_DENIED   | 403       | Interdit                                 |
| 8         | RESOURCE\_EXHAUSTED  | 429       | Trop de requêtes                         |
| 9         | FAILED\_PRECONDITION | 400       | Bad Request                              |
| 10        | ABORTED              | 409       | Conflit                                  |
| 11        | OUT\_OF\_RANGE       | 400       | Bad Request                              |
| 12        | UNIMPLEMENTED        | 501       | Non implémenté                           |
| 13        | INTERNAL             | 500       | Internal Server Error                    |
| 14        | UNAVAILABLE          | 503       | Service indisponible                     |
| 15        | DATA\_LOSS           | 500       | Internal Server Error                    |
| 16        | UNAUTHENTICATED      | 401       | Non autorisé                             |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://help.citrusad.com/retail-media-interface/partner/fr/partner-api-overview/error-handling.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
