curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "text",
"text": {
"body": "Hello! Your order #1234 has been shipped.",
"preview_url": false
},
"callback_url": "https://example.com/webhooks/wa",
"metadata": { "order_id": "1234" }
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "template",
"template": {
"name": "order_confirmation",
"language": "en_US",
"components": [
{
"type": "body",
"parameters": [
{ "type": "text", "text": "Rahul" },
{ "type": "text", "text": "#1234" }
]
}
]
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "interactive",
"interactive": {
"type": "button",
"body": { "text": "Would you like to schedule a site visit?" },
"action": {
"buttons": [
{ "id": "yes", "title": "Yes, book now" },
{ "id": "no", "title": "Not now" },
{ "id": "info", "title": "More info" }
]
}
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "interactive",
"interactive": {
"type": "list",
"body": { "text": "Choose a property to explore:" },
"action": {
"button": "View Properties",
"sections": [
{
"title": "Mumbai",
"rows": [
{ "id": "prop_1", "title": "Godrej Reserve", "description": "Kandivali East, from 1.2 Cr" },
{ "id": "prop_2", "title": "Lodha Palava", "description": "Dombivli, from 65L" }
]
}
]
}
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "location",
"location": {
"latitude": 19.2094,
"longitude": 72.8567,
"name": "Godrej Reserve Sales Gallery",
"address": "Kandivali East, Mumbai 400101"
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "image",
"image": {
"link": "https://cdn.example.com/brochure.jpg",
"caption": "Project brochure"
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": ["+919876543210", "+919876543211", "+919876543212"],
"type": "template",
"template": {
"name": "hello_world",
"language": "en_US"
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "text",
"text": { "body": "Thanks for your interest! Here are the details..." },
"context": { "message_id": "wamid.HBgMOTE4MDEwNzE5MzEw..." }
}'
const response = await fetch('https://api.notvis.com/v1/whatsapp/messages', {
method: 'POST',
headers: {
'Authorization': 'Bearer nc_live_your_api_key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
to: '+919876543210',
type: 'template',
template: {
name: 'order_confirmation',
language: 'en_US',
components: [{
type: 'body',
parameters: [
{ type: 'text', text: 'Rahul' },
{ type: 'text', text: '#1234' },
],
}],
},
callback_url: 'https://example.com/webhooks/wa',
}),
});
const data = await response.json();
console.log(data.message_id);
import requests
response = requests.post(
'https://api.notvis.com/v1/whatsapp/messages',
headers={'Authorization': 'Bearer nc_live_your_api_key'},
json={
'to': '+919876543210',
'type': 'text',
'text': {'body': 'Hello from Notvis!'},
'callback_url': 'https://example.com/webhooks/wa',
},
)
print(response.json()['message_id'])
{
"message_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"status": "queued",
"to": "+919876543210",
"created_at": "2026-10-31T10:00:00Z"
}
{
"messages": [
{
"message_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"status": "queued",
"to": "+919876543210",
"created_at": "2026-10-31T10:00:00Z"
},
{
"message_id": "a23bc45d-67ef-8901-b234-5c6d7e8f9012",
"status": "queued",
"to": "+919876543211",
"created_at": "2026-10-31T10:00:00Z"
}
]
}
{
"message_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"status": "scheduled",
"to": "+919876543210",
"created_at": "2026-10-31T10:00:00Z"
}
{
"code": 400,
"message": "validation failed",
"details": {
"to": "invalid phone number: 12345 (expected E.164 format like +919876543210)",
"type": "must be one of: text, template, image, document, video, audio, sticker, location, contacts, interactive"
}
}
WhatsApp
Send WhatsApp Message
Send a WhatsApp message — text, template, media, interactive, location, or contacts.
POST
/
v1
/
whatsapp
/
messages
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "text",
"text": {
"body": "Hello! Your order #1234 has been shipped.",
"preview_url": false
},
"callback_url": "https://example.com/webhooks/wa",
"metadata": { "order_id": "1234" }
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "template",
"template": {
"name": "order_confirmation",
"language": "en_US",
"components": [
{
"type": "body",
"parameters": [
{ "type": "text", "text": "Rahul" },
{ "type": "text", "text": "#1234" }
]
}
]
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "interactive",
"interactive": {
"type": "button",
"body": { "text": "Would you like to schedule a site visit?" },
"action": {
"buttons": [
{ "id": "yes", "title": "Yes, book now" },
{ "id": "no", "title": "Not now" },
{ "id": "info", "title": "More info" }
]
}
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "interactive",
"interactive": {
"type": "list",
"body": { "text": "Choose a property to explore:" },
"action": {
"button": "View Properties",
"sections": [
{
"title": "Mumbai",
"rows": [
{ "id": "prop_1", "title": "Godrej Reserve", "description": "Kandivali East, from 1.2 Cr" },
{ "id": "prop_2", "title": "Lodha Palava", "description": "Dombivli, from 65L" }
]
}
]
}
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "location",
"location": {
"latitude": 19.2094,
"longitude": 72.8567,
"name": "Godrej Reserve Sales Gallery",
"address": "Kandivali East, Mumbai 400101"
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "image",
"image": {
"link": "https://cdn.example.com/brochure.jpg",
"caption": "Project brochure"
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": ["+919876543210", "+919876543211", "+919876543212"],
"type": "template",
"template": {
"name": "hello_world",
"language": "en_US"
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "text",
"text": { "body": "Thanks for your interest! Here are the details..." },
"context": { "message_id": "wamid.HBgMOTE4MDEwNzE5MzEw..." }
}'
const response = await fetch('https://api.notvis.com/v1/whatsapp/messages', {
method: 'POST',
headers: {
'Authorization': 'Bearer nc_live_your_api_key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
to: '+919876543210',
type: 'template',
template: {
name: 'order_confirmation',
language: 'en_US',
components: [{
type: 'body',
parameters: [
{ type: 'text', text: 'Rahul' },
{ type: 'text', text: '#1234' },
],
}],
},
callback_url: 'https://example.com/webhooks/wa',
}),
});
const data = await response.json();
console.log(data.message_id);
import requests
response = requests.post(
'https://api.notvis.com/v1/whatsapp/messages',
headers={'Authorization': 'Bearer nc_live_your_api_key'},
json={
'to': '+919876543210',
'type': 'text',
'text': {'body': 'Hello from Notvis!'},
'callback_url': 'https://example.com/webhooks/wa',
},
)
print(response.json()['message_id'])
{
"message_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"status": "queued",
"to": "+919876543210",
"created_at": "2026-10-31T10:00:00Z"
}
{
"messages": [
{
"message_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"status": "queued",
"to": "+919876543210",
"created_at": "2026-10-31T10:00:00Z"
},
{
"message_id": "a23bc45d-67ef-8901-b234-5c6d7e8f9012",
"status": "queued",
"to": "+919876543211",
"created_at": "2026-10-31T10:00:00Z"
}
]
}
{
"message_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"status": "scheduled",
"to": "+919876543210",
"created_at": "2026-10-31T10:00:00Z"
}
{
"code": 400,
"message": "validation failed",
"details": {
"to": "invalid phone number: 12345 (expected E.164 format like +919876543210)",
"type": "must be one of: text, template, image, document, video, audio, sticker, location, contacts, interactive"
}
}
Request Headers
string
required
Bearer token. Format:
Bearer nc_live_your_api_keystring
Unique key to prevent duplicate sends. Responses are cached for 24 hours. See Idempotency.
Request Body
string | string[]
required
Recipient WhatsApp number(s) in E.164 format (e.g.,
+919876543210). Accepts a single string or an array of up to 1,000 numbers for batch sending.string
required
Message type. One of:
text, template, image, document, video, audio, sticker, location, contacts, interactive.Text Message
object
Template Message
object
Required when
type is template.Show Properties
Show Properties
string
required
Template name as approved by Meta.
string
required
Template language code (e.g.,
en_US, hi).array
Template components with dynamic parameters.
Show Component properties
Show Component properties
Media Messages
object
object
object
object
object
Location Message
object
Contacts Message
array
Required when
type is contacts. Array of contact cards.Show Contact properties
Show Contact properties
Interactive Message
object
Required when
type is interactive. Supports buttons, lists, and CTA URLs.Show Properties
Show Properties
string
required
Interactive type:
button, list, or cta_url.object
Optional header with
type (text, image, video, document) and corresponding content.object
required
Message body:
{ text: "..." }.object
Optional footer:
{ text: "..." }.object
required
Action content depends on the interactive type. See examples below.
Optional Fields
object
Reply to a specific message.
{ message_id: "wamid.xxx" }string
ISO 8601 timestamp for scheduled delivery. Must be in the future, max 7 days ahead.
string
HTTPS URL to receive delivery status webhooks (
sent, delivered, read, failed).string[]
Tags for categorization. Maximum 10 tags.
object
Custom key-value pairs passed through to webhooks.
Response
Single recipient (202 Accepted)
string
Unique identifier for the queued message.
string
"queued" or "scheduled".string
Normalized E.164 phone number.
string
ISO 8601 timestamp.
Batch (multiple recipients)
array
Array of message objects, one per recipient.
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "text",
"text": {
"body": "Hello! Your order #1234 has been shipped.",
"preview_url": false
},
"callback_url": "https://example.com/webhooks/wa",
"metadata": { "order_id": "1234" }
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "template",
"template": {
"name": "order_confirmation",
"language": "en_US",
"components": [
{
"type": "body",
"parameters": [
{ "type": "text", "text": "Rahul" },
{ "type": "text", "text": "#1234" }
]
}
]
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "interactive",
"interactive": {
"type": "button",
"body": { "text": "Would you like to schedule a site visit?" },
"action": {
"buttons": [
{ "id": "yes", "title": "Yes, book now" },
{ "id": "no", "title": "Not now" },
{ "id": "info", "title": "More info" }
]
}
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "interactive",
"interactive": {
"type": "list",
"body": { "text": "Choose a property to explore:" },
"action": {
"button": "View Properties",
"sections": [
{
"title": "Mumbai",
"rows": [
{ "id": "prop_1", "title": "Godrej Reserve", "description": "Kandivali East, from 1.2 Cr" },
{ "id": "prop_2", "title": "Lodha Palava", "description": "Dombivli, from 65L" }
]
}
]
}
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "location",
"location": {
"latitude": 19.2094,
"longitude": 72.8567,
"name": "Godrej Reserve Sales Gallery",
"address": "Kandivali East, Mumbai 400101"
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "image",
"image": {
"link": "https://cdn.example.com/brochure.jpg",
"caption": "Project brochure"
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": ["+919876543210", "+919876543211", "+919876543212"],
"type": "template",
"template": {
"name": "hello_world",
"language": "en_US"
}
}'
curl -X POST https://api.notvis.com/v1/whatsapp/messages \
-H "Authorization: Bearer nc_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+919876543210",
"type": "text",
"text": { "body": "Thanks for your interest! Here are the details..." },
"context": { "message_id": "wamid.HBgMOTE4MDEwNzE5MzEw..." }
}'
const response = await fetch('https://api.notvis.com/v1/whatsapp/messages', {
method: 'POST',
headers: {
'Authorization': 'Bearer nc_live_your_api_key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
to: '+919876543210',
type: 'template',
template: {
name: 'order_confirmation',
language: 'en_US',
components: [{
type: 'body',
parameters: [
{ type: 'text', text: 'Rahul' },
{ type: 'text', text: '#1234' },
],
}],
},
callback_url: 'https://example.com/webhooks/wa',
}),
});
const data = await response.json();
console.log(data.message_id);
import requests
response = requests.post(
'https://api.notvis.com/v1/whatsapp/messages',
headers={'Authorization': 'Bearer nc_live_your_api_key'},
json={
'to': '+919876543210',
'type': 'text',
'text': {'body': 'Hello from Notvis!'},
'callback_url': 'https://example.com/webhooks/wa',
},
)
print(response.json()['message_id'])
{
"message_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"status": "queued",
"to": "+919876543210",
"created_at": "2026-10-31T10:00:00Z"
}
{
"messages": [
{
"message_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"status": "queued",
"to": "+919876543210",
"created_at": "2026-10-31T10:00:00Z"
},
{
"message_id": "a23bc45d-67ef-8901-b234-5c6d7e8f9012",
"status": "queued",
"to": "+919876543211",
"created_at": "2026-10-31T10:00:00Z"
}
]
}
{
"message_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"status": "scheduled",
"to": "+919876543210",
"created_at": "2026-10-31T10:00:00Z"
}
{
"code": 400,
"message": "validation failed",
"details": {
"to": "invalid phone number: 12345 (expected E.164 format like +919876543210)",
"type": "must be one of: text, template, image, document, video, audio, sticker, location, contacts, interactive"
}
}