# Envoyer des messages

> 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

Un message texte est inclus dans chaque produit. Photos, fichiers, notes vocales, contacts, positions, liens, sondages, transfert, modification et suppression viennent avec **Developer** (fonction `media`).

<a id="alert-send"></a>

### Envoyer un message texte

`POST /api/v1/alert/send`

Met un message texte en file d'attente. Il part quelques secondes plus tard avec l'indicateur « écrit… », comme un humain (`high` saute cette étape). Le numéro est d'abord vérifié sur WhatsApp.

- Débloqué par: tous les produits (`send`)
- Clé de numéro : oui

> Suivez le message avec `GET /messages` ou les [événements webhook](https://wahasend.com/docs/fr/webhooks.md) `message.*`. `messageId` est l'identifiant WahaSend, pas celui de WhatsApp. `containerId` est le numéro qui l'envoie ; avec [plusieurs numéros](https://wahasend.com/docs/fr/phone-numbers.md#several-numbers), il peut passer à un autre numéro du groupe si celui-ci tombe, et `GET /messages` et les webhooks montrent alors le numéro qui l'a vraiment envoyé.

**Corps de la requête**

| Champ | Type | Obligatoire | Description |
| --- | --- | --- | --- |
| `phone` | string | oui | Numéro international (`+22212345678`) ou identifiant WhatsApp finissant par `@lid`. Voir [Numéros](https://wahasend.com/docs/fr/phone-numbers.md). |
| `message` | string | oui | Le texte, 1 à 4096 caractères. Les liens ont un aperçu. |
| `priority` | "high" \| "normal" \| "low" | non | Par défaut `normal`. `high` passe devant et saute la simulation de frappe ; à garder pour les alertes urgentes. |
| `containerId` | uuid | non | Lequel de vos numéros WhatsApp utiliser ; il l'emporte toujours. Par défaut : votre numéro par défaut (sinon un numéro connecté), ou un numéro du groupe quand [plusieurs numéros](https://wahasend.com/docs/fr/phone-numbers.md#several-numbers) est activé. Ignoré avec une clé de numéro, qui utilise toujours son numéro. |

**Exemple**

curl:

```bash
curl -X POST https://app.wahasend.com/api/v1/alert/send \
  -H "X-API-Key: $WAHASEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "phone": "+22212345678",
  "message": "Your order #1042 is ready for pickup.",
  "priority": "normal"
}'
```

JavaScript:

```js
const res = await fetch('https://app.wahasend.com/api/v1/alert/send', {
  method: 'POST',
  headers: { 'X-API-Key': process.env.WAHASEND_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "phone": "+22212345678",
    "message": "Your order #1042 is ready for pickup.",
    "priority": "normal"
  }),
});
const data = await res.json();
```

Python:

```python
import os
import requests

r = requests.post(
    "https://app.wahasend.com/api/v1/alert/send",
    headers={"X-API-Key": os.environ["WAHASEND_API_KEY"]},
    json={
        "phone": "+22212345678",
        "message": "Your order #1042 is ready for pickup.",
        "priority": "normal",
    },
)
print(r.json())
```

**Réponse 201**

```json
{
  "success": true,
  "messageId": "4f0c6a1e-2b7d-4c1a-9e35-7d8f2a6b1c90",
  "status": "queued",
  "priority": "normal",
  "containerId": "6d2b9c1e-8f4a-4e37-a5c2-1b9e7d3f0a64"
}
```

**Erreurs possibles**

- [`VALIDATION_ERROR`](https://wahasend.com/docs/fr/errors.md#validation_error) (400): Validation failed. Check the details for specific field errors.
- [`NUMBER_NOT_ON_WHATSAPP`](https://wahasend.com/docs/fr/errors.md#number_not_on_whatsapp) (400): This number is not on WhatsApp.
- [`NUMBER_VALIDATION_UNAVAILABLE`](https://wahasend.com/docs/fr/errors.md#number_validation_unavailable) (503): Numbers cannot be checked right now. Try again shortly.
- [`NO_SESSION_CONFIGURED`](https://wahasend.com/docs/fr/errors.md#no_session_configured) (400): This account has no connected WhatsApp number.
- [`NOT_FOUND`](https://wahasend.com/docs/fr/errors.md#not_found) (404): Not found.

<a id="alert-send-image"></a>

### Envoyer une photo

`POST /api/v1/alert/send-image`

Envoie une image depuis un lien, avec une légende facultative.

- Débloqué par: Developer (`media`)
- Clé de numéro : oui

> Envoyé tout de suite par votre numéro (pas de file d'attente, pas de simulation de frappe) et enregistré dans `GET /messages` comme `sent` : les [événements](https://wahasend.com/docs/fr/webhooks.md) `message.delivered` / `message.read` suivent. `messageId` est l'identifiant WahaSend (pour modifier, supprimer ou transférer le message) ; `wahaMessageId` est celui de WhatsApp.

**Corps de la requête**

| Champ | Type | Obligatoire | Description |
| --- | --- | --- | --- |
| `phone` | string | oui | Numéro international (`+22212345678`) ou identifiant WhatsApp finissant par `@lid`. Voir [Numéros](https://wahasend.com/docs/fr/phone-numbers.md). |
| `imageUrl` | string (URL) | oui | Lien vers l'image (JPEG, PNG ou WebP). Doit être une adresse publique : les adresses privées ou locales sont refusées. |
| `caption` | string | non | Texte sous le fichier, 1024 caractères max. |
| `filename` | string | non | Nom du fichier affiché au contact, 255 caractères max. |
| `mimetype` | string | non | Type MIME, p. ex. `application/pdf` (100 caractères max). Deviné s'il manque. |
| `containerId` | uuid | non | Lequel de vos numéros WhatsApp utiliser ; il l'emporte toujours. Par défaut : votre numéro par défaut (sinon un numéro connecté), ou un numéro du groupe quand [plusieurs numéros](https://wahasend.com/docs/fr/phone-numbers.md#several-numbers) est activé. Ignoré avec une clé de numéro, qui utilise toujours son numéro. |

**Exemple**

curl:

```bash
curl -X POST https://app.wahasend.com/api/v1/alert/send-image \
  -H "X-API-Key: $WAHASEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "phone": "+22212345678",
  "imageUrl": "https://example.com/menu.jpg",
  "caption": "Today'\''s menu"
}'
```

JavaScript:

```js
const res = await fetch('https://app.wahasend.com/api/v1/alert/send-image', {
  method: 'POST',
  headers: { 'X-API-Key': process.env.WAHASEND_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "phone": "+22212345678",
    "imageUrl": "https://example.com/menu.jpg",
    "caption": "Today's menu"
  }),
});
const data = await res.json();
```

Python:

```python
import os
import requests

r = requests.post(
    "https://app.wahasend.com/api/v1/alert/send-image",
    headers={"X-API-Key": os.environ["WAHASEND_API_KEY"]},
    json={
        "phone": "+22212345678",
        "imageUrl": "https://example.com/menu.jpg",
        "caption": "Today's menu",
    },
)
print(r.json())
```

**Réponse 201**

```json
{
  "success": true,
  "messageId": "3d7f1b2c-5e8a-4c69-b0d3-8f2a6c4e1b95",
  "wahaMessageId": "true_22212345678@c.us_3EB0C767D26A1D2E5A8F",
  "containerId": "6d2b9c1e-8f4a-4e37-a5c2-1b9e7d3f0a64"
}
```

**Erreurs possibles**

- [`VALIDATION_ERROR`](https://wahasend.com/docs/fr/errors.md#validation_error) (400): Validation failed. Check the details for specific field errors.
- [`NO_SESSION_CONFIGURED`](https://wahasend.com/docs/fr/errors.md#no_session_configured) (400): This account has no connected WhatsApp number.
- [`WAHA_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_error) (502): WhatsApp could not complete the request. Try again.
- [`WAHA_SESSION_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_session_error) (503): WhatsApp is not connected.
- [`PRODUCT_REQUIRED`](https://wahasend.com/docs/fr/errors.md#product_required) (403): This feature is not included in your products.

<a id="alert-send-video"></a>

### Envoyer une vidéo

`POST /api/v1/alert/send-video`

Envoie une vidéo MP4 depuis un lien.

- Débloqué par: Developer (`media`)
- Clé de numéro : oui

> Envoyé tout de suite par votre numéro (pas de file d'attente, pas de simulation de frappe) et enregistré dans `GET /messages` comme `sent` : les [événements](https://wahasend.com/docs/fr/webhooks.md) `message.delivered` / `message.read` suivent. `messageId` est l'identifiant WahaSend (pour modifier, supprimer ou transférer le message) ; `wahaMessageId` est celui de WhatsApp.

**Corps de la requête**

| Champ | Type | Obligatoire | Description |
| --- | --- | --- | --- |
| `phone` | string | oui | Numéro international (`+22212345678`) ou identifiant WhatsApp finissant par `@lid`. Voir [Numéros](https://wahasend.com/docs/fr/phone-numbers.md). |
| `videoUrl` | string (URL) | oui | Lien vers le fichier MP4. Doit être une adresse publique : les adresses privées ou locales sont refusées. |
| `caption` | string | non | Texte sous le fichier, 1024 caractères max. |
| `filename` | string | non | Nom du fichier affiché au contact, 255 caractères max. |
| `mimetype` | string | non | Type MIME, p. ex. `application/pdf` (100 caractères max). Deviné s'il manque. |
| `containerId` | uuid | non | Lequel de vos numéros WhatsApp utiliser ; il l'emporte toujours. Par défaut : votre numéro par défaut (sinon un numéro connecté), ou un numéro du groupe quand [plusieurs numéros](https://wahasend.com/docs/fr/phone-numbers.md#several-numbers) est activé. Ignoré avec une clé de numéro, qui utilise toujours son numéro. |

**Exemple**

curl:

```bash
curl -X POST https://app.wahasend.com/api/v1/alert/send-video \
  -H "X-API-Key: $WAHASEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "phone": "+22212345678",
  "videoUrl": "https://example.com/demo.mp4",
  "caption": "How it works"
}'
```

JavaScript:

```js
const res = await fetch('https://app.wahasend.com/api/v1/alert/send-video', {
  method: 'POST',
  headers: { 'X-API-Key': process.env.WAHASEND_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "phone": "+22212345678",
    "videoUrl": "https://example.com/demo.mp4",
    "caption": "How it works"
  }),
});
const data = await res.json();
```

Python:

```python
import os
import requests

r = requests.post(
    "https://app.wahasend.com/api/v1/alert/send-video",
    headers={"X-API-Key": os.environ["WAHASEND_API_KEY"]},
    json={
        "phone": "+22212345678",
        "videoUrl": "https://example.com/demo.mp4",
        "caption": "How it works",
    },
)
print(r.json())
```

**Réponse 201**

```json
{
  "success": true,
  "messageId": "3d7f1b2c-5e8a-4c69-b0d3-8f2a6c4e1b95",
  "wahaMessageId": "true_22212345678@c.us_3EB0C767D26A1D2E5A8F",
  "containerId": "6d2b9c1e-8f4a-4e37-a5c2-1b9e7d3f0a64"
}
```

**Erreurs possibles**

- [`VALIDATION_ERROR`](https://wahasend.com/docs/fr/errors.md#validation_error) (400): Validation failed. Check the details for specific field errors.
- [`NO_SESSION_CONFIGURED`](https://wahasend.com/docs/fr/errors.md#no_session_configured) (400): This account has no connected WhatsApp number.
- [`WAHA_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_error) (502): WhatsApp could not complete the request. Try again.
- [`WAHA_SESSION_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_session_error) (503): WhatsApp is not connected.
- [`PRODUCT_REQUIRED`](https://wahasend.com/docs/fr/errors.md#product_required) (403): This feature is not included in your products.

<a id="alert-send-file"></a>

### Envoyer un fichier

`POST /api/v1/alert/send-file`

Envoie un document (PDF, tableur…) depuis un lien.

- Débloqué par: Developer (`media`)
- Clé de numéro : oui

> Envoyé tout de suite par votre numéro (pas de file d'attente, pas de simulation de frappe) et enregistré dans `GET /messages` comme `sent` : les [événements](https://wahasend.com/docs/fr/webhooks.md) `message.delivered` / `message.read` suivent. `messageId` est l'identifiant WahaSend (pour modifier, supprimer ou transférer le message) ; `wahaMessageId` est celui de WhatsApp.

**Corps de la requête**

| Champ | Type | Obligatoire | Description |
| --- | --- | --- | --- |
| `phone` | string | oui | Numéro international (`+22212345678`) ou identifiant WhatsApp finissant par `@lid`. Voir [Numéros](https://wahasend.com/docs/fr/phone-numbers.md). |
| `fileUrl` | string (URL) | oui | Lien vers le fichier. Doit être une adresse publique : les adresses privées ou locales sont refusées. |
| `filename` | string | non | Nom du fichier affiché au contact, 255 caractères max. |
| `caption` | string | non | Texte sous le fichier, 1024 caractères max. |
| `mimetype` | string | non | Type MIME, p. ex. `application/pdf` (100 caractères max). Deviné s'il manque. |
| `containerId` | uuid | non | Lequel de vos numéros WhatsApp utiliser ; il l'emporte toujours. Par défaut : votre numéro par défaut (sinon un numéro connecté), ou un numéro du groupe quand [plusieurs numéros](https://wahasend.com/docs/fr/phone-numbers.md#several-numbers) est activé. Ignoré avec une clé de numéro, qui utilise toujours son numéro. |

**Exemple**

curl:

```bash
curl -X POST https://app.wahasend.com/api/v1/alert/send-file \
  -H "X-API-Key: $WAHASEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "phone": "+22212345678",
  "fileUrl": "https://example.com/invoice-1042.pdf",
  "filename": "invoice-1042.pdf",
  "caption": "Your invoice"
}'
```

JavaScript:

```js
const res = await fetch('https://app.wahasend.com/api/v1/alert/send-file', {
  method: 'POST',
  headers: { 'X-API-Key': process.env.WAHASEND_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "phone": "+22212345678",
    "fileUrl": "https://example.com/invoice-1042.pdf",
    "filename": "invoice-1042.pdf",
    "caption": "Your invoice"
  }),
});
const data = await res.json();
```

Python:

```python
import os
import requests

r = requests.post(
    "https://app.wahasend.com/api/v1/alert/send-file",
    headers={"X-API-Key": os.environ["WAHASEND_API_KEY"]},
    json={
        "phone": "+22212345678",
        "fileUrl": "https://example.com/invoice-1042.pdf",
        "filename": "invoice-1042.pdf",
        "caption": "Your invoice",
    },
)
print(r.json())
```

**Réponse 201**

```json
{
  "success": true,
  "messageId": "3d7f1b2c-5e8a-4c69-b0d3-8f2a6c4e1b95",
  "wahaMessageId": "true_22212345678@c.us_3EB0C767D26A1D2E5A8F",
  "containerId": "6d2b9c1e-8f4a-4e37-a5c2-1b9e7d3f0a64"
}
```

**Erreurs possibles**

- [`VALIDATION_ERROR`](https://wahasend.com/docs/fr/errors.md#validation_error) (400): Validation failed. Check the details for specific field errors.
- [`NO_SESSION_CONFIGURED`](https://wahasend.com/docs/fr/errors.md#no_session_configured) (400): This account has no connected WhatsApp number.
- [`WAHA_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_error) (502): WhatsApp could not complete the request. Try again.
- [`WAHA_SESSION_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_session_error) (503): WhatsApp is not connected.
- [`PRODUCT_REQUIRED`](https://wahasend.com/docs/fr/errors.md#product_required) (403): This feature is not included in your products.

<a id="alert-send-voice"></a>

### Envoyer une note vocale

`POST /api/v1/alert/send-voice`

Envoie un fichier audio comme note vocale. Utilisez OGG/Opus pour qu'il s'affiche en note vocale.

- Débloqué par: Developer (`media`)
- Clé de numéro : oui

> Envoyé tout de suite par votre numéro (pas de file d'attente, pas de simulation de frappe) et enregistré dans `GET /messages` comme `sent` : les [événements](https://wahasend.com/docs/fr/webhooks.md) `message.delivered` / `message.read` suivent. `messageId` est l'identifiant WahaSend (pour modifier, supprimer ou transférer le message) ; `wahaMessageId` est celui de WhatsApp.

**Corps de la requête**

| Champ | Type | Obligatoire | Description |
| --- | --- | --- | --- |
| `phone` | string | oui | Numéro international (`+22212345678`) ou identifiant WhatsApp finissant par `@lid`. Voir [Numéros](https://wahasend.com/docs/fr/phone-numbers.md). |
| `audioUrl` | string (URL) | oui | Lien vers le fichier audio. Doit être une adresse publique : les adresses privées ou locales sont refusées. |
| `containerId` | uuid | non | Lequel de vos numéros WhatsApp utiliser ; il l'emporte toujours. Par défaut : votre numéro par défaut (sinon un numéro connecté), ou un numéro du groupe quand [plusieurs numéros](https://wahasend.com/docs/fr/phone-numbers.md#several-numbers) est activé. Ignoré avec une clé de numéro, qui utilise toujours son numéro. |

**Exemple**

curl:

```bash
curl -X POST https://app.wahasend.com/api/v1/alert/send-voice \
  -H "X-API-Key: $WAHASEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "phone": "+22212345678",
  "audioUrl": "https://example.com/welcome.ogg"
}'
```

JavaScript:

```js
const res = await fetch('https://app.wahasend.com/api/v1/alert/send-voice', {
  method: 'POST',
  headers: { 'X-API-Key': process.env.WAHASEND_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "phone": "+22212345678",
    "audioUrl": "https://example.com/welcome.ogg"
  }),
});
const data = await res.json();
```

Python:

```python
import os
import requests

r = requests.post(
    "https://app.wahasend.com/api/v1/alert/send-voice",
    headers={"X-API-Key": os.environ["WAHASEND_API_KEY"]},
    json={
        "phone": "+22212345678",
        "audioUrl": "https://example.com/welcome.ogg",
    },
)
print(r.json())
```

**Réponse 201**

```json
{
  "success": true,
  "messageId": "3d7f1b2c-5e8a-4c69-b0d3-8f2a6c4e1b95",
  "wahaMessageId": "true_22212345678@c.us_3EB0C767D26A1D2E5A8F",
  "containerId": "6d2b9c1e-8f4a-4e37-a5c2-1b9e7d3f0a64"
}
```

**Erreurs possibles**

- [`VALIDATION_ERROR`](https://wahasend.com/docs/fr/errors.md#validation_error) (400): Validation failed. Check the details for specific field errors.
- [`NO_SESSION_CONFIGURED`](https://wahasend.com/docs/fr/errors.md#no_session_configured) (400): This account has no connected WhatsApp number.
- [`WAHA_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_error) (502): WhatsApp could not complete the request. Try again.
- [`WAHA_SESSION_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_session_error) (503): WhatsApp is not connected.
- [`PRODUCT_REQUIRED`](https://wahasend.com/docs/fr/errors.md#product_required) (403): This feature is not included in your products.

<a id="alert-send-contact"></a>

### Partager des contacts

`POST /api/v1/alert/send-contact`

Envoie 1 à 10 fiches contact.

- Débloqué par: Developer (`media`)
- Clé de numéro : oui

> Envoyé tout de suite par votre numéro (pas de file d'attente, pas de simulation de frappe) et enregistré dans `GET /messages` comme `sent` : les [événements](https://wahasend.com/docs/fr/webhooks.md) `message.delivered` / `message.read` suivent. `messageId` est l'identifiant WahaSend (pour modifier, supprimer ou transférer le message) ; `wahaMessageId` est celui de WhatsApp.

**Corps de la requête**

| Champ | Type | Obligatoire | Description |
| --- | --- | --- | --- |
| `phone` | string | oui | Numéro international (`+22212345678`) ou identifiant WhatsApp finissant par `@lid`. Voir [Numéros](https://wahasend.com/docs/fr/phone-numbers.md). |
| `contacts` | array | oui | 1 à 10 contacts. |
| `contacts[].fullName` | string | oui | Nom, 1 à 255 caractères. |
| `contacts[].phoneNumber` | string | oui | Son numéro, 5 à 20 caractères. |
| `containerId` | uuid | non | Lequel de vos numéros WhatsApp utiliser ; il l'emporte toujours. Par défaut : votre numéro par défaut (sinon un numéro connecté), ou un numéro du groupe quand [plusieurs numéros](https://wahasend.com/docs/fr/phone-numbers.md#several-numbers) est activé. Ignoré avec une clé de numéro, qui utilise toujours son numéro. |

**Exemple**

curl:

```bash
curl -X POST https://app.wahasend.com/api/v1/alert/send-contact \
  -H "X-API-Key: $WAHASEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "phone": "+22212345678",
  "contacts": [
    {
      "fullName": "Front desk",
      "phoneNumber": "+22245250000"
    }
  ]
}'
```

JavaScript:

```js
const res = await fetch('https://app.wahasend.com/api/v1/alert/send-contact', {
  method: 'POST',
  headers: { 'X-API-Key': process.env.WAHASEND_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "phone": "+22212345678",
    "contacts": [
      {
        "fullName": "Front desk",
        "phoneNumber": "+22245250000"
      }
    ]
  }),
});
const data = await res.json();
```

Python:

```python
import os
import requests

r = requests.post(
    "https://app.wahasend.com/api/v1/alert/send-contact",
    headers={"X-API-Key": os.environ["WAHASEND_API_KEY"]},
    json={
        "phone": "+22212345678",
        "contacts": [
            {
                "fullName": "Front desk",
                "phoneNumber": "+22245250000",
            },
        ],
    },
)
print(r.json())
```

**Réponse 201**

```json
{
  "success": true,
  "messageId": "3d7f1b2c-5e8a-4c69-b0d3-8f2a6c4e1b95",
  "wahaMessageId": "true_22212345678@c.us_3EB0C767D26A1D2E5A8F",
  "containerId": "6d2b9c1e-8f4a-4e37-a5c2-1b9e7d3f0a64"
}
```

**Erreurs possibles**

- [`VALIDATION_ERROR`](https://wahasend.com/docs/fr/errors.md#validation_error) (400): Validation failed. Check the details for specific field errors.
- [`NO_SESSION_CONFIGURED`](https://wahasend.com/docs/fr/errors.md#no_session_configured) (400): This account has no connected WhatsApp number.
- [`WAHA_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_error) (502): WhatsApp could not complete the request. Try again.
- [`WAHA_SESSION_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_session_error) (503): WhatsApp is not connected.
- [`PRODUCT_REQUIRED`](https://wahasend.com/docs/fr/errors.md#product_required) (403): This feature is not included in your products.

<a id="alert-send-location"></a>

### Envoyer une position

`POST /api/v1/alert/send-location`

Envoie un point sur la carte.

- Débloqué par: Developer (`media`)
- Clé de numéro : oui

> Envoyé tout de suite par votre numéro (pas de file d'attente, pas de simulation de frappe) et enregistré dans `GET /messages` comme `sent` : les [événements](https://wahasend.com/docs/fr/webhooks.md) `message.delivered` / `message.read` suivent. `messageId` est l'identifiant WahaSend (pour modifier, supprimer ou transférer le message) ; `wahaMessageId` est celui de WhatsApp.

**Corps de la requête**

| Champ | Type | Obligatoire | Description |
| --- | --- | --- | --- |
| `phone` | string | oui | Numéro international (`+22212345678`) ou identifiant WhatsApp finissant par `@lid`. Voir [Numéros](https://wahasend.com/docs/fr/phone-numbers.md). |
| `latitude` | number | oui | De −90 à 90. |
| `longitude` | number | oui | De −180 à 180. |
| `title` | string | non | Nom du lieu, 255 caractères max. |
| `address` | string | non | Adresse, 500 caractères max. |
| `containerId` | uuid | non | Lequel de vos numéros WhatsApp utiliser ; il l'emporte toujours. Par défaut : votre numéro par défaut (sinon un numéro connecté), ou un numéro du groupe quand [plusieurs numéros](https://wahasend.com/docs/fr/phone-numbers.md#several-numbers) est activé. Ignoré avec une clé de numéro, qui utilise toujours son numéro. |

**Exemple**

curl:

```bash
curl -X POST https://app.wahasend.com/api/v1/alert/send-location \
  -H "X-API-Key: $WAHASEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "phone": "+22212345678",
  "latitude": 18.0858,
  "longitude": -15.9785,
  "title": "Our shop",
  "address": "Tevragh Zeina, Nouakchott"
}'
```

JavaScript:

```js
const res = await fetch('https://app.wahasend.com/api/v1/alert/send-location', {
  method: 'POST',
  headers: { 'X-API-Key': process.env.WAHASEND_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "phone": "+22212345678",
    "latitude": 18.0858,
    "longitude": -15.9785,
    "title": "Our shop",
    "address": "Tevragh Zeina, Nouakchott"
  }),
});
const data = await res.json();
```

Python:

```python
import os
import requests

r = requests.post(
    "https://app.wahasend.com/api/v1/alert/send-location",
    headers={"X-API-Key": os.environ["WAHASEND_API_KEY"]},
    json={
        "phone": "+22212345678",
        "latitude": 18.0858,
        "longitude": -15.9785,
        "title": "Our shop",
        "address": "Tevragh Zeina, Nouakchott",
    },
)
print(r.json())
```

**Réponse 201**

```json
{
  "success": true,
  "messageId": "3d7f1b2c-5e8a-4c69-b0d3-8f2a6c4e1b95",
  "wahaMessageId": "true_22212345678@c.us_3EB0C767D26A1D2E5A8F",
  "containerId": "6d2b9c1e-8f4a-4e37-a5c2-1b9e7d3f0a64"
}
```

**Erreurs possibles**

- [`VALIDATION_ERROR`](https://wahasend.com/docs/fr/errors.md#validation_error) (400): Validation failed. Check the details for specific field errors.
- [`NO_SESSION_CONFIGURED`](https://wahasend.com/docs/fr/errors.md#no_session_configured) (400): This account has no connected WhatsApp number.
- [`WAHA_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_error) (502): WhatsApp could not complete the request. Try again.
- [`WAHA_SESSION_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_session_error) (503): WhatsApp is not connected.
- [`PRODUCT_REQUIRED`](https://wahasend.com/docs/fr/errors.md#product_required) (403): This feature is not included in your products.

<a id="alert-send-link"></a>

### Envoyer un lien avec un aperçu choisi

`POST /api/v1/alert/send-link`

Envoie un texte avec un aperçu de lien que vous choisissez (titre, description, image).

- Débloqué par: Developer (`media`)
- Clé de numéro : oui

> Envoyé tout de suite par votre numéro (pas de file d'attente, pas de simulation de frappe) et enregistré dans `GET /messages` comme `sent` : les [événements](https://wahasend.com/docs/fr/webhooks.md) `message.delivered` / `message.read` suivent. `messageId` est l'identifiant WahaSend (pour modifier, supprimer ou transférer le message) ; `wahaMessageId` est celui de WhatsApp.

**Corps de la requête**

| Champ | Type | Obligatoire | Description |
| --- | --- | --- | --- |
| `phone` | string | oui | Numéro international (`+22212345678`) ou identifiant WhatsApp finissant par `@lid`. Voir [Numéros](https://wahasend.com/docs/fr/phone-numbers.md). |
| `text` | string | oui | Texte du message, 1 à 4096 caractères. Mettez-y le lien. |
| `previewUrl` | string (URL) | oui | Le lien concerné par l'aperçu. Doit être une adresse publique : les adresses privées ou locales sont refusées. |
| `previewTitle` | string | oui | Titre de l'aperçu, 1 à 255 caractères. |
| `previewDescription` | string | non | 500 caractères max. |
| `previewImageUrl` | string (URL) | non | Lien public vers l'image de l'aperçu. |
| `containerId` | uuid | non | Lequel de vos numéros WhatsApp utiliser ; il l'emporte toujours. Par défaut : votre numéro par défaut (sinon un numéro connecté), ou un numéro du groupe quand [plusieurs numéros](https://wahasend.com/docs/fr/phone-numbers.md#several-numbers) est activé. Ignoré avec une clé de numéro, qui utilise toujours son numéro. |

**Exemple**

curl:

```bash
curl -X POST https://app.wahasend.com/api/v1/alert/send-link \
  -H "X-API-Key: $WAHASEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "phone": "+22212345678",
  "text": "Track your order: https://example.com/t/1042",
  "previewUrl": "https://example.com/t/1042",
  "previewTitle": "Order #1042"
}'
```

JavaScript:

```js
const res = await fetch('https://app.wahasend.com/api/v1/alert/send-link', {
  method: 'POST',
  headers: { 'X-API-Key': process.env.WAHASEND_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "phone": "+22212345678",
    "text": "Track your order: https://example.com/t/1042",
    "previewUrl": "https://example.com/t/1042",
    "previewTitle": "Order #1042"
  }),
});
const data = await res.json();
```

Python:

```python
import os
import requests

r = requests.post(
    "https://app.wahasend.com/api/v1/alert/send-link",
    headers={"X-API-Key": os.environ["WAHASEND_API_KEY"]},
    json={
        "phone": "+22212345678",
        "text": "Track your order: https://example.com/t/1042",
        "previewUrl": "https://example.com/t/1042",
        "previewTitle": "Order #1042",
    },
)
print(r.json())
```

**Réponse 201**

```json
{
  "success": true,
  "messageId": "3d7f1b2c-5e8a-4c69-b0d3-8f2a6c4e1b95",
  "wahaMessageId": "true_22212345678@c.us_3EB0C767D26A1D2E5A8F",
  "containerId": "6d2b9c1e-8f4a-4e37-a5c2-1b9e7d3f0a64"
}
```

**Erreurs possibles**

- [`VALIDATION_ERROR`](https://wahasend.com/docs/fr/errors.md#validation_error) (400): Validation failed. Check the details for specific field errors.
- [`NO_SESSION_CONFIGURED`](https://wahasend.com/docs/fr/errors.md#no_session_configured) (400): This account has no connected WhatsApp number.
- [`WAHA_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_error) (502): WhatsApp could not complete the request. Try again.
- [`WAHA_SESSION_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_session_error) (503): WhatsApp is not connected.
- [`PRODUCT_REQUIRED`](https://wahasend.com/docs/fr/errors.md#product_required) (403): This feature is not included in your products.

<a id="alert-send-poll"></a>

### Envoyer un sondage

`POST /api/v1/alert/send-poll`

Envoie un sondage de 2 à 12 choix. Les votes arrivent en [événements webhook](https://wahasend.com/docs/fr/webhooks.md) `poll.vote`.

- Débloqué par: Developer (`media`)
- Clé de numéro : oui

> Envoyé tout de suite par votre numéro (pas de file d'attente, pas de simulation de frappe) et enregistré dans `GET /messages` comme `sent` : les [événements](https://wahasend.com/docs/fr/webhooks.md) `message.delivered` / `message.read` suivent. `messageId` est l'identifiant WahaSend (pour modifier, supprimer ou transférer le message) ; `wahaMessageId` est celui de WhatsApp.

**Corps de la requête**

| Champ | Type | Obligatoire | Description |
| --- | --- | --- | --- |
| `phone` | string | oui | Numéro international (`+22212345678`) ou identifiant WhatsApp finissant par `@lid`. Voir [Numéros](https://wahasend.com/docs/fr/phone-numbers.md). |
| `question` | string | oui | 1 à 255 caractères. |
| `options` | string[] | oui | 2 à 12 choix de 1 à 100 caractères. |
| `multipleAnswers` | boolean | non | Autoriser plusieurs réponses. Par défaut `false`. |
| `containerId` | uuid | non | Lequel de vos numéros WhatsApp utiliser ; il l'emporte toujours. Par défaut : votre numéro par défaut (sinon un numéro connecté), ou un numéro du groupe quand [plusieurs numéros](https://wahasend.com/docs/fr/phone-numbers.md#several-numbers) est activé. Ignoré avec une clé de numéro, qui utilise toujours son numéro. |

**Exemple**

curl:

```bash
curl -X POST https://app.wahasend.com/api/v1/alert/send-poll \
  -H "X-API-Key: $WAHASEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "phone": "+22212345678",
  "question": "Which delivery day suits you?",
  "options": [
    "Monday",
    "Wednesday",
    "Friday"
  ]
}'
```

JavaScript:

```js
const res = await fetch('https://app.wahasend.com/api/v1/alert/send-poll', {
  method: 'POST',
  headers: { 'X-API-Key': process.env.WAHASEND_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "phone": "+22212345678",
    "question": "Which delivery day suits you?",
    "options": [
      "Monday",
      "Wednesday",
      "Friday"
    ]
  }),
});
const data = await res.json();
```

Python:

```python
import os
import requests

r = requests.post(
    "https://app.wahasend.com/api/v1/alert/send-poll",
    headers={"X-API-Key": os.environ["WAHASEND_API_KEY"]},
    json={
        "phone": "+22212345678",
        "question": "Which delivery day suits you?",
        "options": [
            "Monday",
            "Wednesday",
            "Friday",
        ],
    },
)
print(r.json())
```

**Réponse 201**

```json
{
  "success": true,
  "messageId": "3d7f1b2c-5e8a-4c69-b0d3-8f2a6c4e1b95",
  "wahaMessageId": "true_22212345678@c.us_3EB0C767D26A1D2E5A8F",
  "containerId": "6d2b9c1e-8f4a-4e37-a5c2-1b9e7d3f0a64"
}
```

**Erreurs possibles**

- [`VALIDATION_ERROR`](https://wahasend.com/docs/fr/errors.md#validation_error) (400): Validation failed. Check the details for specific field errors.
- [`NO_SESSION_CONFIGURED`](https://wahasend.com/docs/fr/errors.md#no_session_configured) (400): This account has no connected WhatsApp number.
- [`WAHA_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_error) (502): WhatsApp could not complete the request. Try again.
- [`WAHA_SESSION_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_session_error) (503): WhatsApp is not connected.
- [`PRODUCT_REQUIRED`](https://wahasend.com/docs/fr/errors.md#product_required) (403): This feature is not included in your products.

<a id="alert-forward"></a>

### Transférer un message

`POST /api/v1/alert/forward`

Transfère un message de votre numéro vers une autre conversation. Le destinataire voit « Transféré ». Enregistré dans `GET /messages` comme les envois de médias.

- Débloqué par: Developer (`media`)
- Clé de numéro : oui

**Corps de la requête**

| Champ | Type | Obligatoire | Description |
| --- | --- | --- | --- |
| `fromPhone` | string | non | Inutile (WhatsApp retrouve le message par son identifiant) ; toujours accepté. |
| `messageId` | string | oui | Le message : le `messageId` WahaSend d'un message envoyé, ou un identifiant WhatsApp (p. ex. le `wahaMessageId` d'un événement `message.inbound`). |
| `toPhone` | string | oui | Numéro international, 8 à 20 caractères (`+22212345678`). Les identifiants `@lid` ne sont pas acceptés ici. |
| `containerId` | uuid | non | Lequel de vos numéros WhatsApp utiliser ; il l'emporte toujours. Par défaut : votre numéro par défaut (sinon un numéro connecté), ou un numéro du groupe quand [plusieurs numéros](https://wahasend.com/docs/fr/phone-numbers.md#several-numbers) est activé. Ignoré avec une clé de numéro, qui utilise toujours son numéro. |

**Exemple**

curl:

```bash
curl -X POST https://app.wahasend.com/api/v1/alert/forward \
  -H "X-API-Key: $WAHASEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "messageId": "true_22212345678@c.us_3EB0C767D26A1D2E5A8F",
  "toPhone": "+22287654321"
}'
```

JavaScript:

```js
const res = await fetch('https://app.wahasend.com/api/v1/alert/forward', {
  method: 'POST',
  headers: { 'X-API-Key': process.env.WAHASEND_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "messageId": "true_22212345678@c.us_3EB0C767D26A1D2E5A8F",
    "toPhone": "+22287654321"
  }),
});
const data = await res.json();
```

Python:

```python
import os
import requests

r = requests.post(
    "https://app.wahasend.com/api/v1/alert/forward",
    headers={"X-API-Key": os.environ["WAHASEND_API_KEY"]},
    json={
        "messageId": "true_22212345678@c.us_3EB0C767D26A1D2E5A8F",
        "toPhone": "+22287654321",
    },
)
print(r.json())
```

**Réponse 201**

```json
{
  "success": true,
  "messageId": "3d7f1b2c-5e8a-4c69-b0d3-8f2a6c4e1b95",
  "wahaMessageId": "true_22212345678@c.us_3EB0C767D26A1D2E5A8F",
  "containerId": "6d2b9c1e-8f4a-4e37-a5c2-1b9e7d3f0a64"
}
```

**Erreurs possibles**

- [`MESSAGE_NOT_FOUND`](https://wahasend.com/docs/fr/errors.md#message_not_found) (404): No message with this id was sent by this account.
- [`MESSAGE_NOT_SENT`](https://wahasend.com/docs/fr/errors.md#message_not_sent) (409): This message has not been sent yet (or it failed). Only sent messages can be edited or deleted.
- [`MESSAGE_WRONG_NUMBER`](https://wahasend.com/docs/fr/errors.md#message_wrong_number) (403): This message was sent from another WhatsApp number than the one this request uses.
- [`VALIDATION_ERROR`](https://wahasend.com/docs/fr/errors.md#validation_error) (400): Validation failed. Check the details for specific field errors.
- [`NO_SESSION_CONFIGURED`](https://wahasend.com/docs/fr/errors.md#no_session_configured) (400): This account has no connected WhatsApp number.
- [`WAHA_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_error) (502): WhatsApp could not complete the request. Try again.
- [`WAHA_SESSION_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_session_error) (503): WhatsApp is not connected.
- [`PRODUCT_REQUIRED`](https://wahasend.com/docs/fr/errors.md#product_required) (403): This feature is not included in your products.

<a id="alert-edit"></a>

### Modifier un message envoyé

`PUT /api/v1/alert/edit`

Change le texte d'un message envoyé par votre numéro. WhatsApp ne le permet que peu de temps après l'envoi.

- Débloqué par: Developer (`media`)
- Clé de numéro : oui

> Avec l'identifiant WahaSend le message est retrouvé dans votre historique : il doit être parti (`sent`, `delivered` ou `read`, sinon `MESSAGE_NOT_SENT`), à vous (sinon `MESSAGE_NOT_FOUND`) et envoyé par le numéro de la requête (clé de numéro ou `containerId` ; sinon `MESSAGE_WRONG_NUMBER`). Son texte dans `GET /messages` est aussi mis à jour.

**Corps de la requête**

| Champ | Type | Obligatoire | Description |
| --- | --- | --- | --- |
| `messageId` | string | oui | Le message à modifier. Le `messageId` WahaSend (de `/alert/send`, d'un envoi de média ou de `GET /messages` ; le message doit être parti), ou l'identifiant WhatsApp comme avant (`phone` est alors obligatoire). |
| `text` | string | oui | Nouveau texte, 1 à 4096 caractères. |
| `phone` | string | non | Le numéro ou l'identifiant `@lid` de la conversation. Obligatoire avec un identifiant WhatsApp ; avec l'identifiant WahaSend il vient du message (s'il est donné, il doit correspondre). |
| `containerId` | uuid | non | Lequel de vos numéros WhatsApp utiliser ; il l'emporte toujours. Par défaut : votre numéro par défaut (sinon un numéro connecté), ou un numéro du groupe quand [plusieurs numéros](https://wahasend.com/docs/fr/phone-numbers.md#several-numbers) est activé. Ignoré avec une clé de numéro, qui utilise toujours son numéro. |

**Exemple**

curl:

```bash
curl -X PUT https://app.wahasend.com/api/v1/alert/edit \
  -H "X-API-Key: $WAHASEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "messageId": "4f0c6a1e-2b7d-4c1a-9e35-7d8f2a6b1c90",
  "text": "Your order #1042 is ready (counter 2)."
}'
```

JavaScript:

```js
const res = await fetch('https://app.wahasend.com/api/v1/alert/edit', {
  method: 'PUT',
  headers: { 'X-API-Key': process.env.WAHASEND_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "messageId": "4f0c6a1e-2b7d-4c1a-9e35-7d8f2a6b1c90",
    "text": "Your order #1042 is ready (counter 2)."
  }),
});
const data = await res.json();
```

Python:

```python
import os
import requests

r = requests.put(
    "https://app.wahasend.com/api/v1/alert/edit",
    headers={"X-API-Key": os.environ["WAHASEND_API_KEY"]},
    json={
        "messageId": "4f0c6a1e-2b7d-4c1a-9e35-7d8f2a6b1c90",
        "text": "Your order #1042 is ready (counter 2).",
    },
)
print(r.json())
```

**Réponse 200**

```json
{
  "success": true,
  "messageId": "4f0c6a1e-2b7d-4c1a-9e35-7d8f2a6b1c90",
  "wahaMessageId": "true_22212345678@c.us_3EB0C767D26A1D2E5A8F"
}
```

**Erreurs possibles**

- [`MESSAGE_NOT_FOUND`](https://wahasend.com/docs/fr/errors.md#message_not_found) (404): No message with this id was sent by this account.
- [`MESSAGE_NOT_SENT`](https://wahasend.com/docs/fr/errors.md#message_not_sent) (409): This message has not been sent yet (or it failed). Only sent messages can be edited or deleted.
- [`MESSAGE_WRONG_NUMBER`](https://wahasend.com/docs/fr/errors.md#message_wrong_number) (403): This message was sent from another WhatsApp number than the one this request uses.
- [`VALIDATION_ERROR`](https://wahasend.com/docs/fr/errors.md#validation_error) (400): Validation failed. Check the details for specific field errors.
- [`NO_SESSION_CONFIGURED`](https://wahasend.com/docs/fr/errors.md#no_session_configured) (400): This account has no connected WhatsApp number.
- [`WAHA_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_error) (502): WhatsApp could not complete the request. Try again.
- [`WAHA_SESSION_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_session_error) (503): WhatsApp is not connected.
- [`PRODUCT_REQUIRED`](https://wahasend.com/docs/fr/errors.md#product_required) (403): This feature is not included in your products.

<a id="alert-delete"></a>

### Supprimer un message envoyé

`POST /api/v1/alert/delete`

Supprime pour tous un message envoyé par votre numéro.

- Débloqué par: Developer (`media`)
- Clé de numéro : oui

> Mêmes règles que [modifier](https://wahasend.com/docs/fr/api/sending.md#alert-edit). Avec un identifiant WhatsApp, envoyez aussi `phone` : `{ "phone": "+22212345678", "messageId": "true_…" }`.

**Corps de la requête**

| Champ | Type | Obligatoire | Description |
| --- | --- | --- | --- |
| `messageId` | string | oui | Le message à supprimer. Le `messageId` WahaSend (de `/alert/send`, d'un envoi de média ou de `GET /messages` ; le message doit être parti), ou l'identifiant WhatsApp comme avant (`phone` est alors obligatoire). |
| `phone` | string | non | Le numéro ou l'identifiant `@lid` de la conversation. Obligatoire avec un identifiant WhatsApp ; avec l'identifiant WahaSend il vient du message (s'il est donné, il doit correspondre). |
| `containerId` | uuid | non | Lequel de vos numéros WhatsApp utiliser ; il l'emporte toujours. Par défaut : votre numéro par défaut (sinon un numéro connecté), ou un numéro du groupe quand [plusieurs numéros](https://wahasend.com/docs/fr/phone-numbers.md#several-numbers) est activé. Ignoré avec une clé de numéro, qui utilise toujours son numéro. |

**Exemple**

curl:

```bash
curl -X POST https://app.wahasend.com/api/v1/alert/delete \
  -H "X-API-Key: $WAHASEND_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "messageId": "4f0c6a1e-2b7d-4c1a-9e35-7d8f2a6b1c90"
}'
```

JavaScript:

```js
const res = await fetch('https://app.wahasend.com/api/v1/alert/delete', {
  method: 'POST',
  headers: { 'X-API-Key': process.env.WAHASEND_API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({
    "messageId": "4f0c6a1e-2b7d-4c1a-9e35-7d8f2a6b1c90"
  }),
});
const data = await res.json();
```

Python:

```python
import os
import requests

r = requests.post(
    "https://app.wahasend.com/api/v1/alert/delete",
    headers={"X-API-Key": os.environ["WAHASEND_API_KEY"]},
    json={
        "messageId": "4f0c6a1e-2b7d-4c1a-9e35-7d8f2a6b1c90",
    },
)
print(r.json())
```

**Réponse 200**

```json
{
  "success": true,
  "messageId": "4f0c6a1e-2b7d-4c1a-9e35-7d8f2a6b1c90",
  "wahaMessageId": "true_22212345678@c.us_3EB0C767D26A1D2E5A8F"
}
```

**Erreurs possibles**

- [`MESSAGE_NOT_FOUND`](https://wahasend.com/docs/fr/errors.md#message_not_found) (404): No message with this id was sent by this account.
- [`MESSAGE_NOT_SENT`](https://wahasend.com/docs/fr/errors.md#message_not_sent) (409): This message has not been sent yet (or it failed). Only sent messages can be edited or deleted.
- [`MESSAGE_WRONG_NUMBER`](https://wahasend.com/docs/fr/errors.md#message_wrong_number) (403): This message was sent from another WhatsApp number than the one this request uses.
- [`VALIDATION_ERROR`](https://wahasend.com/docs/fr/errors.md#validation_error) (400): Validation failed. Check the details for specific field errors.
- [`NO_SESSION_CONFIGURED`](https://wahasend.com/docs/fr/errors.md#no_session_configured) (400): This account has no connected WhatsApp number.
- [`WAHA_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_error) (502): WhatsApp could not complete the request. Try again.
- [`WAHA_SESSION_ERROR`](https://wahasend.com/docs/fr/errors.md#waha_session_error) (503): WhatsApp is not connected.
- [`PRODUCT_REQUIRED`](https://wahasend.com/docs/fr/errors.md#product_required) (403): This feature is not included in your products.
