POST /v1/messages : envoyer un template approuvé, avec idempotence et remboursement sur échec.
POST /v1/messages — scope messages:send
Envoie un template APPROVED à un destinataire. Retourne 202. Le frais de plateforme est débité avant l'envoi ; si Meta rejette, il est automatiquement remboursé.
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
to | string | Oui | Destinataire au format E.164, ex. +237699123456. |
template.name | string | Oui | Nom d'un template APPROVED. |
template.language | string | Oui | Code langue, ex. en, fr, en_US. |
template.variables | string[] | Non | Remplit {{1}}…{{n}} dans l'ordre. |
template.header_image_url | string | Non | Uniquement si le template a un en-tête IMAGE. |
idempotency_key | string | Non | Rejouer la même clé renvoie le résultat d'origine (retries sûrs). |
Requête
curl -X POST https://wa-api.geskap.com/v1/messages \
-H "Authorization: Bearer sk_live_…" \
-H "Content-Type: application/json" \
-d '{
"to": "+237699123456",
"template": { "name": "order_update", "language": "en", "variables": ["Jean", "#8842"] },
"idempotency_key": "order-8842"
}'
Réponse (202)
{
"id": "6f1c…",
"status": "sent",
"wa_message_id": "wamid…",
"to": "2376****3456",
"credits_charged": 1,
"credits_remaining": 4197,
"created_at": "2026-08-04T09:14:07Z"
}
Note — En-têtes de réponse
La réponse pose X-Credits-Remaining (solde après débit). Le destinataire est masqué dans les réponses et les logs (2376****3456).
Astuce — Idempotence
Passez une idempotency_key stable (ex. l'ID de commande). Rejouer la même clé renvoie le résultat d'origine sans réenvoyer — vos retours-arrière et reprises ne double-envoient jamais.