Référence

Messages

Envoi transactionnel WhatsApp (texte, média, petit lot). Par défaut le destinataire n’est pas ajouté à la base contacts — passez saveContact: true pour un find-or-create. Quota messages dashboard inchangé. En-tête optionnel Idempotency-Key sur send / send-media.

Base URL : https://sandbox-api.reachflow.me/api/v1

Modèle de données

Champs

NomTypeDescription
messageIdstring (uuid)Identifiant du message sortant API.
statusenumqueued, processing, sent, delivered, failed, cancelled.
tostringDestinataire (format international).
providerIdstring (uuid)Channel provider utilisé.
queuedAttimestampDate de mise en file.
sentAttimestamp | nullDate d’envoi effectif.
deliveredAttimestamp | nullAccusé de livraison WhatsApp.
POST/api/v1/messages/send

Envoyer un message texte

Met en file un message texte vers un destinataire. Le provider doit être connecté.

Scope requis : messages:send

Attributs requis

NomTypeDescription
providerId*string (uuid)Provider expéditeur.
to*stringNuméro destinataire (8–20 car.).
message*stringCorps du message (1–4096 car.).
variablesobjectVariables pour modèle {{clé}}.
scheduleAtstring (ISO 8601)Envoi différé optionnel.
saveContactbooleanfalse (défaut) : envoi sans créer de contact. true : find-or-create en base (quota contacts).

Requête

curl --request POST \
  "https://sandbox-api.reachflow.me/api/v1/messages/send" \
  --header "X-API-Key: rfl_live_VOTRE_CLE" \
  --header "Content-Type: application/json" \
  --header "Accept: application/json"
  --data '{ "providerId": "a3f1b2c4-1234-4abc-9def-000011112222", "to": "22996123456", "message": "Bonjour depuis ReachFlow !" }'

Réponse

JSON
{
  "messageId": "7f9e1234-abcd-4ef0-8765-aabbccddeeff",
  "status": "queued",
  "queuedAt": "2026-05-30T10:45:00.000Z"
}
POST/api/v1/messages/send-media

Envoyer un média

Envoie une image, vidéo, audio ou document via URL publique.

Scope requis : messages:send

Attributs requis

NomTypeDescription
providerId*string (uuid)Provider expéditeur.
to*stringNuméro destinataire.
mediaUrl*string (url)URL HTTPS du fichier.
mediaType*enumimage, document, audio, video.
captionstringLégende optionnelle.

Requête

curl --request POST \
  "https://sandbox-api.reachflow.me/api/v1/messages/send-media" \
  --header "X-API-Key: rfl_live_VOTRE_CLE" \
  --header "Content-Type: application/json" \
  --header "Accept: application/json"
  --data '{ "providerId": "a3f1b2c4-1234-4abc-9def-000011112222", "to": "22996123456", "mediaUrl": "https://example.com/photo.jpg", "mediaType": "image", "caption": "Votre reçu" }'
POST/api/v1/messages/send-bulk

Envoi en lot

Envoie le même modèle à plusieurs destinataires (limites selon plan). Les refus partiels sont listés dans rejections.

Scope requis : messages:send

Attributs requis

NomTypeDescription
providerId*string (uuid)Provider expéditeur.
messageTemplate*stringTexte avec variables {{clé}}.
recipients*arrayListe { to, variables? }.
scheduleAtstring (ISO 8601)Planification optionnelle.

Requête

curl --request POST \
  "https://sandbox-api.reachflow.me/api/v1/messages/send-bulk" \
  --header "X-API-Key: rfl_live_VOTRE_CLE" \
  --header "Content-Type: application/json" \
  --header "Accept: application/json"
  --data '{ "providerId": "a3f1b2c4-1234-4abc-9def-000011112222", "messageTemplate": "Bonjour {{name}}", "recipients": [ { "to": "22996111111", "variables": { "name": "Alice" } }, { "to": "22996222222", "variables": { "name": "Bob" } } ] }'

Réponse

JSON
{
  "bulkId": "b1c2d3e4-5678-90ab-cdef-111122223333",
  "accepted": 2,
  "rejected": 0,
  "rejections": [],
  "messageIds": [
    "…",
    "…"
  ]
}
GET/api/v1/messages/{id}

Statut d’un message

Consulte le cycle de vie d’un message API précédemment accepté.

Scope requis : messages:read

Paramètres

NomTypeEmplacementDescription
id*string (uuid)pathIdentifiant message (messageId).

Requête

curl --request GET \
  --get "https://sandbox-api.reachflow.me/api/v1/messages/7f9e1234-abcd-4ef0-8765-aabbccddeeff" \
  --header "X-API-Key: rfl_live_VOTRE_CLE" \
  --header "Content-Type: application/json" \
  --header "Accept: application/json"

Réponse

JSON
{
  "messageId": "7f9e1234-abcd-4ef0-8765-aabbccddeeff",
  "status": "delivered",
  "to": "22996123456",
  "providerId": "a3f1b2c4-1234-4abc-9def-000011112222",
  "queuedAt": "2026-05-30T10:45:00.000Z",
  "sentAt": "2026-05-30T10:45:02.000Z",
  "deliveredAt": "2026-05-30T10:45:08.000Z",
  "failedAt": null,
  "failureCode": null,
  "failureReason": null
}