# Authentification

> Index de la documentation : https://wahasend.com/docs/fr/llms.txt · Tout en un fichier : https://wahasend.com/docs/fr.md · URL de base de l'API : https://app.wahasend.com/api/v1

Envoyez votre clé dans l'en-tête `X-API-Key` à chaque requête. Chaque produit inclut les clés d'API ; une clé atteint ce que vos produits incluent, rien de plus (403 `PRODUCT_REQUIRED` sinon).

```bash
curl https://app.wahasend.com/api/v1/me -H "X-API-Key: wn_8c1f…"
```

| Clé | Forme | Où | Ce qu'elle peut appeler |
| --- | --- | --- | --- |
| Clé du compte | `wn_…` | Tableau de bord → Pour les développeurs (ou la page Connect) | Tout ce que vos produits incluent, en tant qu'**admin** de l'organisation (pas l'équipe, la propriété ni la suppression). Choisissez un numéro avec `containerId`. |
| Clé de numéro | `waha_…` | WhatsApp → le numéro → Plus de réglages | Envoyer et lire **par ce numéro seulement** : `/alert/*`, `/otp/*`, `/recipients/*`, `/chats*`, `/contacts*`, `/bulk/*`, `/mcp`, et ses propres `/session/status\|qr\|pair\|start\|reconnect\|logout\|history\|profile`. Le reste répond 403 `NUMBER_KEY_SCOPE`. |

<a id="auth-products"></a>

### Quels produits utilisent l'API

| Produit | Une clé atteint |
| --- | --- |
| **Notify** | `/alert/send`, `/alert/batch`, `/alert/validate`, `/recipients/validate`, [campagnes](https://wahasend.com/docs/fr/api/campaigns.md) `/bulk/*`, [rappels](https://wahasend.com/docs/fr/api/reminders.md) `/reminders/*` |
| **Assistant** · **Shop** | `/alert/send`, les routes d'assistant `/bots/*` (Shop : catalogue et commandes aussi), un [webhook](https://wahasend.com/docs/fr/webhooks.md) pour `bot.*` (et `commerce.order`) |
| **Developer** | Envois et lots, [OTP](https://wahasend.com/docs/fr/api/otp.md) `/otp/*`, envois de médias, modifier/supprimer/transférer, tous les événements [webhook](https://wahasend.com/docs/fr/webhooks.md) |
| **Connect** | Envois et lots, [conversations et contacts](https://wahasend.com/docs/fr/api/inbox.md), l'endpoint MCP `/mcp` |

Chaque produit atteint aussi les routes [compte et historique](https://wahasend.com/docs/fr/api/account.md) et [numéros WhatsApp](https://wahasend.com/docs/fr/api/numbers.md). OTP, envois de médias et l'ensemble des événements webhook restent dans Developer.

Donnez à chaque application la plus petite clé suffisante : une clé de numéro pour le paiement d'une boutique, la clé du compte pour votre back-office.

<a id="auth-bearer"></a>

### Bearer, pour les applications d'IA

Beaucoup de clients MCP ne savent envoyer que `Authorization: Bearer …`. Sur l'endpoint MCP (`/mcp`), `Authorization: Bearer YOUR_KEY` marche exactement comme `X-API-Key`. Ailleurs, utilisez `X-API-Key` : `Bearer` y sert aux sessions du tableau de bord.

<a id="auth-rotation"></a>

### Remplacer une clé

Régénérez une clé depuis la même page (ou `POST /me/regenerate-key`, `POST /session/:containerId/regenerate-key`). L'ancienne cesse de fonctionner **aussitôt** : préparez vos serveurs, régénérez, puis déployez la nouvelle clé. Il n'y a qu'une clé de compte à la fois. Les clés sont stockées hachées : une clé perdue ne peut pas être réaffichée, seulement remplacée.

> Une clé envoie des messages depuis votre vrai numéro. Gardez-la sur votre serveur, jamais dans une page web ou une application mobile.

Un compte désactivé répond 403 `ACCOUNT_DEACTIVATED` ; une clé absente ou fausse 401 `AUTH_ERROR` (`details.reason` : `missing_credentials` ou `invalid_api_key`).
