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

# Pulses

> Créez et pilotez vos notifications sortantes signées.

Permissions : `pulses.read`, `pulses.write` (inclut la lecture). Concepts : [Présentation des Pulses](https://docs.pulse-sell.com/pulses/overview.md).

## L'objet Pulse

```json theme={null}
{
  "id": "cm1pulse01", "name": "Mon CRM", "url": "https://exemple.com/webhooks/pulse-sell",
  "events": ["sale.completed", "license.issued"], "product_ids": [], "source": "manual",
  "status": "active", "disabled_reason": null, "disabled_at": null, "consecutive_failures": 0,
  "secret_hint": "••••a3Zk", "last_delivery_at": "2026-10-29T16:17:12.000Z", "last_status": "success",
  "created_at": "2026-10-20T09:00:00.000Z", "updated_at": "2026-10-29T16:17:12.000Z"
}
```

Le secret n'est **jamais** renvoyé ici : seulement ses 4 derniers caractères (`secret_hint`).

## Lister les Pulses

`GET /pulses` — `pulses.read`

## Obtenir un Pulse

`GET /pulses/{id}` — `pulses.read`

Inclut `stats` : les chiffres des 7 derniers jours.

## Créer un Pulse

`POST /pulses` — `pulses.write` — `201`

| Champ | Requis | Description |
| - | - | - |
| `name` | oui | Nom lisible. |
| `url` | oui | Adresse HTTPS de votre serveur. |
| `events` | oui | Liste d'[événements](https://docs.pulse-sell.com/pulses/events.md), ou `["*"]` pour tous, y compris les futurs. |
| `product_ids` | non | Filtre par produits (50 maximum). Vide = tous. |
| `source` | non | `manual` (défaut), `zapier`, `make`, `n8n`. |

**La réponse contient `secret` : c'est la seule fois que l'API le renvoie.**

```bash cURL theme={null}
curl -X POST https://api.pulse-sell.com/v1/pulses \
  -H "Authorization: Bearer $PULSESELL_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"name": "Zapier — ventes", "url": "https://hooks.zapier.com/hooks/catch/123/abc/", "events": ["sale.completed"], "source": "zapier"}'
```

## Modifier, activer, désactiver

`PATCH /pulses/{id}` — `pulses.write`

Tous les champs de la création, optionnels, plus `status` : `active` ou `disabled`. Réactiver un Pulse remet son compteur d'échecs à zéro.

```bash cURL theme={null}
curl -X PATCH https://api.pulse-sell.com/v1/pulses/cm1pulse01 \
  -H "Authorization: Bearer $PULSESELL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status": "active"}'
```

## Supprimer

`DELETE /pulses/{id}` — `pulses.write` — `204`. L'historique d'envoi est supprimé.

## Envoyer un test

`POST /pulses/{id}/test` — `pulses.write`

Envoie immédiatement un événement `pulse.test` et renvoie le résultat. N'influence pas le compteur d'échecs.

## Changer le secret

`POST /pulses/{id}/rotate-secret` — `pulses.write`

L'ancien secret cesse de signer **immédiatement** ; le nouveau est renvoyé une seule fois : `{ "data": { "secret": "pulse_whsec_…" } }`.

## Historique d'envoi

`GET /pulses/{id}/deliveries` — `pulses.read`

| Paramètre | Description |
| - | - |
| `per_page`, `cursor` | [Pagination](https://docs.pulse-sell.com/concepts/pagination.md). |
| `status` | `pending`, `success` ou `failed`. |

```json Réponse theme={null}
{
  "data": [ {
    "id": "cm1del001", "event": "sale.completed", "event_id": "sale.completed:cm1sale001", "status": "success", "attempts": 1,
    "http_status": 200, "error": null, "duration_ms": 184, "is_test": false,
    "next_attempt_at": null, "created_at": "2026-10-29T16:17:11.000Z", "delivered_at": "2026-10-29T16:17:12.000Z"
  } ]
}
```


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