> ## 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.

# Produits

> Créer, modifier, publier et lister vos produits par API.

Un produit est ce que vous vendez : un téléchargement, une formation, une clé de licence… L'API vous permet de gérer tout son cycle de vie, avec les mêmes règles que le tableau de bord.

> [!NOTE]
>
> Permissions : `products.read` pour lire, `products.write` pour écrire. Référence complète : [Produits](https://docs.pulse-sell.com/api-reference/produits).

## Le cycle de vie

```mermaid theme={null}
flowchart LR
  A[Création] --> B[Brouillon]
  B -->|publish| C[Publié]
  C -->|unpublish| B
  C -->|archive| D[Archivé]
  B -->|archive| D
```

Un produit est **toujours créé en brouillon**. Pour le mettre en vente, appelez `POST /products/{id}/publish`. Le statut ne se modifie jamais par un simple `PATCH` : publier suit exactement les mêmes conditions et la même modération que dans le tableau de bord, et renvoie `422` avec le premier point bloquant si le produit n'est pas prêt.

## Créer un produit

```bash theme={null}
curl -X POST https://api.pulse-sell.com/v1/products \
  -H "Authorization: Bearer $PULSESELL_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: guide-complet-v1" \
  -d '{
    "name": "Guide complet du vendeur",
    "type": "download",
    "price": 25000,
    "short_description": "Tout pour lancer votre boutique.",
    "tags": ["guide", "débutant"]
  }'
```

La devise est celle de votre compte vendeur : on ne la fixe pas par requête.

## L'objet produit

```json theme={null}
{
  "data": {
    "id": "cm1prod001",
    "name": "Guide complet du vendeur",
    "slug": "guide-complet-du-vendeur",
    "type": "download",
    "status": "draft",
    "short_description": "Tout pour lancer votre boutique.",
    "pricing": {
      "type": "one_time",
      "price": { "value": 25000, "formatted": "25 000 F CFA", "currency": "XOF" },
      "compare_price": null,
      "effective": { "value": 25000, "formatted": "25 000 F CFA", "currency": "XOF" }
    },
    "pictures": { "thumbnail": null, "cover": null, "images": [] },
    "is_published": false,
    "url": "https://ma-boutique.pulse-sell.com/product/guide-complet-du-vendeur",
    "checkout_url": "https://ma-boutique.pulse-sell.com/buy/guide-complet-du-vendeur",
    "created_at": "2026-10-29T16:17:10.000Z"
  }
}
```

`pricing.effective` est le prix réellement payé aujourd'hui : il tient compte d'une remise de prix programmée sur le produit. Utilisez-le pour l'affichage ; `price` est le prix de base.

## Lister et rechercher

```bash theme={null}
curl "https://api.pulse-sell.com/v1/products?status=published&q=guide&per_page=50" \
  -H "Authorization: Bearer $PULSESELL_API_KEY"
```

Filtres : `status` (`draft`, `published`, `archived`), `type`, `q` (recherche dans le nom). Voir [Pagination](https://docs.pulse-sell.com/concepts/pagination.md).

## Supprimer

`DELETE /products/{id}` est une suppression douce : les ventes passées restent intactes et lisibles. Pour retirer un produit de la vente sans le perdre, préférez `unpublish` ou `archive`.

> [!TIP]
>
> Abonnez-vous à l'événement [`product.published`](https://docs.pulse-sell.com/pulses/events#product-published) pour synchroniser votre catalogue vers un autre système sans interroger l'API.


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