Skip to content

Sending Messages

Evolution API Lite provides comprehensive support for sending all types of WhatsApp messages. This guide covers every message type with detailed examples and payload structures.

All message types share these common parameters:

  • number (required): The recipient’s phone number in international format (e.g., “5511999999999”)
  • delay (optional): Delay in milliseconds before sending the message
  • quoted (optional): Reference to a message being replied to
  • mentioned (optional): Array of phone numbers to mention in the message
  • linkPreview (optional): Enable/disable link preview for text messages

Send simple text messages with optional formatting and mentions.

POST /message/{instanceName}/sendText
{
"number": "5511999999999",
"text": "Hello! This is a test message."
}
Terminal window
curl -X POST "https://your-api-url/message/your-instance/sendText" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"number": "5511999999999",
"text": "Hello from Evolution API!"
}'

Send images, videos, audio files, and documents with optional captions.

POST /message/{instanceName}/sendMedia
  • image: JPEG, PNG, WebP images
  • video: MP4, AVI, MOV videos
  • audio: MP3, WAV, OGG audio files
  • document: PDF, DOC, TXT and other document formats
{
"number": "5511999999999",
"mediatype": "image",
"media": "https://example.com/image.jpg",
"caption": "Check out this amazing photo!"
}

You can provide media in three ways:

  1. URL: Direct link to the media file
  2. Base64: Encoded media data with proper data URI format
  3. File Upload: Use multipart/form-data with a file field
Terminal window
curl -X POST "https://your-api-url/message/your-instance/sendMedia" \
-H "apikey: your-api-key" \
-F "number=5511999999999" \
-F "mediatype=image" \
-F "caption=Uploaded image" \
-F "file=@/path/to/image.jpg"

Send WhatsApp voice messages with special audio formatting.

POST /message/{instanceName}/sendWhatsAppAudio
{
"number": "5511999999999",
"audio": "https://example.com/audio.mp3"
}
Terminal window
curl -X POST "https://your-api-url/message/your-instance/sendWhatsAppAudio" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"number": "5511999999999",
"audio": "https://example.com/voice-message.mp3"
}'

Send interactive messages with clickable buttons.

POST /message/{instanceName}/sendButtons
  • reply: Simple reply button
  • url: Opens a URL
  • call: Initiates a phone call
  • copy: Copies text to clipboard
  • pix: PIX payment button (Brazil)
{
"number": "5511999999999",
"title": "Choose an Option",
"description": "Please select one of the options below:",
"footer": "Evolution API",
"buttons": [
{ "type": "reply", "displayText": "Option 1", "id": "option_1" },
{ "type": "reply", "displayText": "Option 2", "id": "option_2" }
]
}
Terminal window
curl -X POST "https://your-api-url/message/your-instance/sendButtons" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"number": "5511999999999",
"title": "Quick Actions",
"buttons": [
{
"type": "reply",
"displayText": "Yes",
"id": "yes"
},
{
"type": "reply",
"displayText": "No",
"id": "no"
}
]
}'

Send interactive lists with multiple sections and options.

POST /message/{instanceName}/sendList
{
"number": "5511999999999",
"title": "Product Catalog",
"description": "Browse our available products",
"footerText": "Select an item to learn more",
"buttonText": "View Products",
"sections": [
{
"title": "Electronics",
"rows": [
{
"title": "Smartphone",
"description": "Latest model with advanced features",
"rowId": "phone_001"
},
{
"title": "Laptop",
"description": "High-performance laptop for work",
"rowId": "laptop_001"
}
]
},
{
"title": "Accessories",
"rows": [
{
"title": "Wireless Headphones",
"description": "Premium sound quality",
"rowId": "headphones_001"
}
]
}
]
}
Terminal window
curl -X POST "https://your-api-url/message/your-instance/sendList" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"number": "5511999999999",
"title": "Menu Options",
"buttonText": "Select Option",
"sections": [
{
"title": "Main Menu",
"rows": [
{
"title": "Order Food",
"description": "Browse our menu",
"rowId": "order"
}
]
}
]
}'

Create interactive polls with multiple choice options.

POST /message/{instanceName}/sendPoll
{
"number": "5511999999999@g.us",
"name": "What's your favorite programming language?",
"selectableCount": 1,
"values": ["JavaScript", "Python", "TypeScript", "Java", "Go"]
}
  • name: The poll question
  • selectableCount: Number of options users can select (1-10)
  • values: Array of poll options (2-10 items)
Terminal window
curl -X POST "https://your-api-url/message/your-instance/sendPoll" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"number": "5511999999999@g.us",
"name": "Best time for the meeting?",
"selectableCount": 1,
"values": ["Morning", "Afternoon", "Evening"]
}'

Send animated or static stickers.

POST /message/{instanceName}/sendSticker
{
"number": "5511999999999",
"sticker": "https://example.com/sticker.webp"
}
Terminal window
curl -X POST "https://your-api-url/message/your-instance/sendSticker" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"number": "5511999999999",
"sticker": "data:image/webp;base64,UklGRiQAAABXRUJQVlA4IBgAAAAwAQCdASoBAAEAAwA0JaQAA3AA/vuUAAA="
}'

Share location coordinates with optional name and address.

POST /message/{instanceName}/sendLocation
{
"number": "5511999999999",
"latitude": -23.5505,
"longitude": -46.6333,
"name": "Sao Paulo Cathedral",
"address": "Praca da Se, Sao Paulo, SP, Brazil"
}
Terminal window
curl -X POST "https://your-api-url/message/your-instance/sendLocation" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"number": "5511999999999",
"latitude": -23.5505,
"longitude": -46.6333,
"name": "Meeting Point"
}'

Share contact information with vCard format.

POST /message/{instanceName}/sendContact
{
"number": "5511999999999",
"contact": [
{
"fullName": "John Doe",
"wuid": "5511888888888",
"phoneNumber": "+55 11 88888-8888",
"organization": "Example Company",
"email": "john@example.com",
"url": "https://johndoe.com"
}
]
}
{
"number": "5511999999999",
"contact": [
{
"fullName": "John Doe",
"wuid": "5511888888888",
"phoneNumber": "+55 11 88888-8888"
},
{
"fullName": "Jane Smith",
"wuid": "5511777777777",
"phoneNumber": "+55 11 77777-7777"
}
]
}
Terminal window
curl -X POST "https://your-api-url/message/your-instance/sendContact" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"number": "5511999999999",
"contact": [
{
"fullName": "Support Team",
"wuid": "5511888888888",
"phoneNumber": "+55 11 88888-8888"
}
]
}'

Add emoji reactions to existing messages.

POST /message/{instanceName}/sendReaction
{
"key": {
"id": "message_id_here",
"remoteJid": "5511999999999@s.whatsapp.net",
"fromMe": false
},
"reaction": "👍"
}

To remove a reaction, send an empty string:

{
"key": {
"id": "message_id_here",
"remoteJid": "5511999999999@s.whatsapp.net",
"fromMe": false
},
"reaction": ""
}
Terminal window
curl -X POST "https://your-api-url/message/your-instance/sendReaction" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"key": {
"id": "message_id_here",
"remoteJid": "5511999999999@s.whatsapp.net",
"fromMe": false
},
"reaction": "❤️"
}'

Send WhatsApp Business template messages (requires approved templates).

POST /message/{instanceName}/sendTemplate
{
"number": "5511999999999",
"name": "hello_world",
"language": "en_US",
"components": [
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "John"
}
]
}
]
}

Send messages to WhatsApp Status (Stories).

POST /message/{instanceName}/sendStatus
{
"type": "text",
"content": "Hello from Evolution API!",
"backgroundColor": "#FF5733",
"font": 1
}
  • text: Text-only status with background color
  • image: Image status with optional caption
  • video: Video status with optional caption
  • audio: Audio status

All message endpoints return standardized error responses:

{
"error": true,
"message": "Error description",
"details": {
"code": "VALIDATION_ERROR",
"field": "number"
}
}
  • Invalid number format: Phone number must be in international format
  • Instance not connected: The WhatsApp instance is not connected
  • Media validation failed: Invalid media URL or base64 format
  • Rate limit exceeded: Too many messages sent in a short period
  1. Validate Phone Numbers

Always use international format without ’+’ symbol (e.g., “5511999999999”)

  1. Handle Media Properly

For documents, always include fileName. For base64 media, ensure proper data URI format.

  1. Implement Error Handling

Always check response status and handle errors appropriately in your application.

  1. Respect Rate Limits

Implement delays between messages to avoid being blocked by WhatsApp.

  1. Use Webhooks

Configure webhooks to receive message status updates and delivery confirmations.