> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pulse-sell.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Format des réponses

> Enveloppes de succès et d'erreur, montants, dates et en-têtes de réponse.

Toutes les réponses sont du JSON en UTF-8, avec des noms de champs en `snake_case`.

## Une ressource

```json theme={null}
{
  "data": { "id": "cm1prod001", "name": "Guide du vendeur", "status": "published" }
}
```

## Une liste

```json theme={null}
{
  "data": [ { "id": "cm1prod001" }, { "id": "cm1prod002" } ],
  "pagination": {
    "count": 2,
    "path": "https://api.pulse-sell.com/v1/products",
    "per_page": 10,
    "next_cursor": null,
    "next_page_url": null,
    "has_more_pages": false,
    "has_pages": false
  }
}
```

Voir [Pagination](https://docs.pulse-sell.com/concepts/pagination.md).

## Une erreur

```json theme={null}
{
  "message": "Le nom est requis.",
  "code": "validation_failed",
  "errors": { "name": ["name est requis."] }
}
```

`code` est stable et fait pour être lu par une machine ; `message` est fait pour un humain et peut évoluer. Branchez votre logique sur `code`. Voir [Erreurs](https://docs.pulse-sell.com/concepts/errors.md).

## Montants

Un montant est toujours un objet, jamais un nombre seul, pour qu'une devise ne soit jamais oubliée :

```json theme={null}
{ "value": 25000, "formatted": "25 000 F CFA", "short": "25 k", "currency": "XOF" }
```

* `value` : la valeur numérique, à utiliser pour vos calculs.
* `formatted` : le texte prêt à afficher.
* `currency` : le code ISO 4217 en majuscules.

## Dates

Toutes les dates sont au format ISO 8601 en UTC, par exemple `2026-10-29T16:17:10.000Z`. Un champ sans valeur vaut `null`.

## En-têtes de réponse

| En-tête | Rôle |
| - | - |
| `X-Request-Id` | Identifiant unique de la requête. Indiquez-le au support : il retrouve exactement votre appel. |
| `X-RateLimit-Limit` | Nombre de requêtes autorisées par minute pour cette clé. |
| `X-RateLimit-Remaining` | Requêtes restantes dans la fenêtre en cours. |
| `X-RateLimit-Reset` | Fin de la fenêtre, en secondes Unix. |
| `Retry-After` | Sur une 429 : secondes à attendre. |
| `Idempotent-Replayed` | `true` si la réponse est une relecture d'une requête déjà traitée. |

Les réponses ne sont jamais mises en cache (`Cache-Control: no-store`).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.