Skip to main content

Endpoint

POST /api/v1/messages/schedule
Authentification : x-api-key: <api_key> La différence avec /messages/send est le champ scheduledAt.

Paramètres

Body

ChampTypeRequisDescription
instanceIdUUIDouiInstance WhatsApp
tostringouiNuméro destinataire
scheduledAtISO 8601ouiDate future d’envoi
typeenumoui si pas de templateIdType du message libre
templateIdUUIDoui si pas de typeTemplate à rendre
variablesobjectnonValeurs custom.*
Pas de path params ni query params.

Exemple

curl -X POST https://srv.msgflash.com/api/v1/messages/schedule \
  -H "x-api-key: msgf_live_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "instanceId": "YOUR_INSTANCE_ID",
    "to": "+22912345678",
    "templateId": "TEMPLATE_UUID",
    "contactId": "CONTACT_UUID",
    "variables": {
      "code": "PROMO10"
    },
    "scheduledAt": "2026-04-02T08:00:00.000Z"
  }'

Les autres champs suivent les mêmes règles que Envoyer un message.

Réponse

{
  "data": {
    "id": "msg_uuid",
    "status": "queued",
    "body": "Bonjour Awa, votre code PROMO10 est prêt."
  }
}
Le message reste en queued jusqu’au traitement effectif.

Erreurs courantes

CodeHTTPQuand
VALIDATION_ERROR400Body invalide
TEMPLATE_INVALID400Template invalide
TEMPLATE_VARIABLES_MISSING400Variables template manquantes
NOT_FOUND404Instance, contact ou template introuvable
MONTHLY_OUTBOUND_QUOTA_EXCEEDED429Quota déjà épuisé au moment de la planification

Règles importantes

  • scheduledAt est attendu en UTC
  • une date passée est acceptée et conduit à un envoi immédiat
  • le quota mensuel est vérifié à la planification puis au moment de l’envoi effectif
  • si l’instance est déconnectée lors du traitement, le message passe en failed
  • les messages planifiés survivent à un redémarrage grâce à BullMQ + Redis