Skip to main content

Vue d’ensemble

TypeDescriptionChamp principal requis
textMessage texte simpletext
imageImage avec légende optionnellemediaUrl
videoVidéo avec légende optionnellemediaUrl
audioFichier audio standardmediaUrl
voice_noteNote vocale WhatsAppmediaUrl
documentFichier ou documentmediaUrl
locationLocalisation GPSlatitude, longitude
contactPartage d’un contact du répertoirecontactId
Champs communs :
  • instanceId
  • to
  • type ou templateId
Les endpoints POST /api/v1/messages/send et POST /api/v1/messages/schedule supportent deux modes :
  • mode libre avec type
  • mode template avec templateId

Envoi libre vs envoi via template

Mode libre

Vous fournissez directement type et les champs associés.
{
  "instanceId": "inst_uuid",
  "to": "+22912345678",
  "type": "text",
  "text": "Bonjour Awa"
}

Mode template

Vous fournissez templateId et, si nécessaire, des variables custom.*.
{
  "instanceId": "inst_uuid",
  "to": "+22912345678",
  "contactId": "cnt_uuid",
  "templateId": "tmpl_uuid",
  "variables": {
    "code": "PROMO10"
  }
}
Le backend rend alors le message final avant envoi. Le type effectif est celui du template.

text

{
  "instanceId": "inst_uuid",
  "to": "+22912345678",
  "type": "text",
  "text": "Bonjour Jean,\n\nVotre commande #1234 est prête."
}
ChampTypeRequisContraintes
textstring1 à 4096 caractères

image

{
  "instanceId": "inst_uuid",
  "to": "+22912345678",
  "type": "image",
  "mediaUrl": "https://cdn.example.com/produit.jpg",
  "text": "Nouvelle collection disponible"
}
ChampTypeRequisContraintes
mediaUrlURLURL publique
textstringnonLégende optionnelle

video

{
  "instanceId": "inst_uuid",
  "to": "+22912345678",
  "type": "video",
  "mediaUrl": "https://cdn.example.com/demo.mp4",
  "text": "Découvrez notre nouveau produit"
}
ChampTypeRequisContraintes
mediaUrlURLURL publique
textstringnonLégende optionnelle

audio

{
  "instanceId": "inst_uuid",
  "to": "+22912345678",
  "type": "audio",
  "mediaUrl": "https://cdn.example.com/message.mp3"
}
Affiché comme un fichier audio standard dans WhatsApp.

voice_note

{
  "instanceId": "inst_uuid",
  "to": "+22912345678",
  "type": "voice_note",
  "mediaUrl": "https://cdn.example.com/note.ogg"
}
Affiché comme une note vocale WhatsApp.
La différence entre audio et voice_note est surtout le mode d’affichage côté WhatsApp.

document

{
  "instanceId": "inst_uuid",
  "to": "+22912345678",
  "type": "document",
  "mediaUrl": "https://cdn.example.com/facture.pdf",
  "text": "Facture avril 2026"
}
ChampTypeRequisContraintes
mediaUrlURLURL publique
textstringnonLibellé ou légende

location

{
  "instanceId": "inst_uuid",
  "to": "+22912345678",
  "type": "location",
  "latitude": 6.3654,
  "longitude": 2.4183,
  "locationName": "Boutique Cotonou Centre",
  "locationAddress": "Avenue de la Marina, Cotonou"
}
ChampTypeRequisContraintes
latitudenumberLatitude décimale
longitudenumberLongitude décimale
locationNamestringnonNom du lieu
locationAddressstringnonAdresse

contact

{
  "instanceId": "inst_uuid",
  "to": "+22912345678",
  "type": "contact",
  "contactId": "cnt_uuid"
}
Le contactId doit appartenir à votre compte MsgFlash.

Champs communs

ChampTypeRequisDescription
instanceIdUUIDInstance WhatsApp à utiliser
tostringNuméro E.164
typeenum✓ si pas de templateIdType du message libre
templateIdUUID✓ si pas de typeTemplate MsgFlash à utiliser
contactIdUUIDnonContact source ou contexte template
variablesobjectnonValeurs pour custom.*
scheduledAtISO 8601nonUtilisé uniquement sur /messages/schedule

Templates media

Un template peut être de type :
  • text
  • image
  • video
  • audio
  • document
Pour un template media, mediaUrl est obligatoire sur le template lui-même. Exemple :
{
  "name": "Brochure PDF",
  "type": "document",
  "body": "Bonjour {{contact.firstName}}, voici votre brochure.",
  "mediaUrl": "https://cdn.example.com/brochure.pdf"
}