POST /v1/templates : corps, exemples, en-tête image, boutons, et soumission à Meta.
POST /v1/templates — scope templates:write
Soumet un template pour revue Meta. Retourne la ligne créée au statut PENDING. Sondez GET /v1/templates jusqu'à APPROVED avant l'envoi.
Paramètres
| Paramètre | Type | Requis | Description |
|---|---|---|---|
name | string | Oui | Nom du template (minuscules, chiffres et _). Unique par langue. |
language | string | Oui | Code langue, ex. en, fr, en_US. |
category | string | Oui | UTILITY, AUTHENTICATION ou MARKETING. |
body_text | string | Oui | Le corps, avec {{1}}, {{2}}… ou {{nom}} pour les variables. |
example_values | string[] | Oui | Une valeur d'exemple par variable, dans l'ordre (requis par Meta). |
footer_text | string | Non | Pied de page court, sans variable. |
buttons | object[] | Non | Max 2 boutons du même type (voir plus bas). |
header_image_base64 | string | Non | En-tête image encodé en base64. |
header_image_mime | string | Non | Type MIME de l'en-tête image, ex. image/jpeg. |
Requête
curl -X POST https://wa-api.geskap.com/v1/templates \
-H "Authorization: Bearer sk_live_…" \
-H "Content-Type: application/json" \
-d '{
"name": "order_update",
"language": "en",
"category": "UTILITY",
"body_text": "Hi {{1}}, your order {{2}} is confirmed.",
"example_values": ["Jean", "#8842"],
"footer_text": "Geskap"
}'
Réponse (201)
{
"name": "order_update",
"language": "en",
"status": "PENDING",
"category": "UTILITY",
"variables_count": 2
}
Un en-tête image se fournit via header_image_base64 + header_image_mime. Les boutons (max 2) sont soit des liens URL, soit des réponses rapides — ne mélangez pas les deux types.
Boutons
// bouton URL
{ "kind": "url", "text": "Suivre", "url": "https://exemple.com/suivi" }
// bouton réponse rapide
{ "kind": "quick_reply", "text": "Confirmer" }
Important — Meta interdit les liens wa.me
Un lien wa.me / WhatsApp dans un bouton URL est rejeté par Meta (code 2388081). Utilisez un bouton quick_reply à la place.