POST /v1/actions/send-text-message

Envoie un message texte libre à un contact pendant la fenêtre de service client de 24 heures.

Envoie un message texte libre. Valable uniquement à l'intérieur de la fenêtre de service client de 24 heures — c'est-à-dire que le contact vous a envoyé un message dans les dernières 24 heures.

Si la fenêtre est fermée, Meta rejette le message avec le code 131047 (Re-engagement message). Utilisez send-template-message pour réengager.

POST /api/v1/actions/send-text-message

Corps de la requête

Champ Type Requis Notes
phone string oui Format international avec +
message string oui Jusqu'à 4096 caractères. Prend en charge le balisage WhatsApp (*bold*, _italic_, ~strike~, `code`).
curl -X POST https://www.qyvo.io/api/v1/actions/send-text-message \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "+14155550123",
    "message": "Yes, we ship to Canada — flat rate $14 CAD."
  }'
fetch('https://www.qyvo.io/api/v1/actions/send-text-message', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.QYVO_TOKEN}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    phone: '+14155550123',
    message: 'Yes, we ship to Canada — flat rate $14 CAD.',
  }),
});
Http::withToken(env('QYVO_TOKEN'))
    ->post('https://www.qyvo.io/api/v1/actions/send-text-message', [
        'phone' => '+14155550123',
        'message' => 'Yes, we ship to Canada — flat rate $14 CAD.',
    ])->json();
httpx.post(
    'https://www.qyvo.io/api/v1/actions/send-text-message',
    headers={'Authorization': f"Bearer {os.environ['QYVO_TOKEN']}"},
    json={'phone': '+14155550123', 'message': 'Yes, we ship to Canada — flat rate $14 CAD.'},
).raise_for_status()

Réponse — 200 OK

{
  "id": "01J1Z...",
  "status": "sent",
  "whatsapp_message_id": "wamid.HBgL...",
  "contact_id": "01J1Y..."
}

Erreurs

Statut Cause
422 Message rejeté par Meta — le plus souvent 131047 Re-engagement message (fenêtre fermée). Passez à un template.
422 No WhatsApp account configured — onboardez d'abord un numéro
422 Erreur de validation (téléphone vide, message > 4096 caractères)

Pourquoi la fenêtre compte

La politique de Meta distingue :

  • Texte libre — autorisé uniquement quand le contact vous a écrit dans les dernières 24 h. Gratuit.
  • Templates — pré-approuvés par Meta, peuvent être envoyés à tout moment. Facturés par catégorie (utility, marketing, authentication).

Si vous ne savez pas si la fenêtre est ouverte, regardez le last_message_at du contact (renvoyé par get-contact). S'il est plus ancien que 24 h, envoyez un template.