curl -X POST "https://suasofia.online/api/user/whatsapp/send" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender_id": 12,
"template_id": 45,
"recipient_phone": "+1234567890",
"recipient_name": "John Doe",
"variables": {
"1": "John",
"2": "15 de Janeiro de 2026",
"3": "14:00"
}
}'
curl -X POST "https://suasofia.online/api/user/whatsapp/send" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender_id": 12,
"template_id": 46,
"recipient_phone": "+1234567890"
}'
const response = await fetch(
'https://suasofia.online/api/user/whatsapp/send',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
sender_id: 12,
template_id: 45,
recipient_phone: '+1234567890',
recipient_name: 'John Doe',
variables: {
'1': 'John',
'2': '15 de Janeiro de 2026',
'3': '14:00'
}
})
}
);
const data = await response.json();
console.log(data);
import requests
response = requests.post(
'https://suasofia.online/api/user/whatsapp/send',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'sender_id': 12,
'template_id': 45,
'recipient_phone': '+1234567890',
'recipient_name': 'John Doe',
'variables': {
'1': 'John',
'2': '15 de Janeiro de 2026',
'3': '14:00'
}
}
)
print(response.json())
{
"success": true,
"conversation_id": 1234,
"message_id": 567,
"whatsapp_message_id": 890,
"message_sid": "SMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"status": "queued"
}
{
"success": false,
"error": "Saldo insuficiente. Por favor, recarregue sua conta.",
"error_code": "INSUFFICIENT_BALANCE"
}
{
"success": false,
"error": "Remetente não encontrado ou não pertence a você",
"error_code": "SENDER_NOT_FOUND"
}
{
"success": false,
"error": "Modelo não encontrado ou não pertence a este remetente",
"error_code": "TEMPLATE_NOT_FOUND"
}
{
"success": false,
"error": "Modelo não aprovado. Status atual: pendente",
"error_code": "TEMPLATE_NOT_APPROVED"
}
{
"success": false,
"error": "Formato de número de telefone inválido. Use o formato E.164 (ex: +14155551234).",
"error_code": "INVALID_PHONE"
}
{
"success": false,
"error": "Remetente não está online. Status atual: Offline",
"error_code": "SENDER_OFFLINE"
}
WhatsApp
Enviar Mensagem de Modelo
Envie uma mensagem do WhatsApp usando um modelo aprovado
POST
/
user
/
whatsapp
/
send
curl -X POST "https://suasofia.online/api/user/whatsapp/send" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender_id": 12,
"template_id": 45,
"recipient_phone": "+1234567890",
"recipient_name": "John Doe",
"variables": {
"1": "John",
"2": "15 de Janeiro de 2026",
"3": "14:00"
}
}'
curl -X POST "https://suasofia.online/api/user/whatsapp/send" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender_id": 12,
"template_id": 46,
"recipient_phone": "+1234567890"
}'
const response = await fetch(
'https://suasofia.online/api/user/whatsapp/send',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
sender_id: 12,
template_id: 45,
recipient_phone: '+1234567890',
recipient_name: 'John Doe',
variables: {
'1': 'John',
'2': '15 de Janeiro de 2026',
'3': '14:00'
}
})
}
);
const data = await response.json();
console.log(data);
import requests
response = requests.post(
'https://suasofia.online/api/user/whatsapp/send',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'sender_id': 12,
'template_id': 45,
'recipient_phone': '+1234567890',
'recipient_name': 'John Doe',
'variables': {
'1': 'John',
'2': '15 de Janeiro de 2026',
'3': '14:00'
}
}
)
print(response.json())
{
"success": true,
"conversation_id": 1234,
"message_id": 567,
"whatsapp_message_id": 890,
"message_sid": "SMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"status": "queued"
}
{
"success": false,
"error": "Saldo insuficiente. Por favor, recarregue sua conta.",
"error_code": "INSUFFICIENT_BALANCE"
}
{
"success": false,
"error": "Remetente não encontrado ou não pertence a você",
"error_code": "SENDER_NOT_FOUND"
}
{
"success": false,
"error": "Modelo não encontrado ou não pertence a este remetente",
"error_code": "TEMPLATE_NOT_FOUND"
}
{
"success": false,
"error": "Modelo não aprovado. Status atual: pendente",
"error_code": "TEMPLATE_NOT_APPROVED"
}
{
"success": false,
"error": "Formato de número de telefone inválido. Use o formato E.164 (ex: +14155551234).",
"error_code": "INVALID_PHONE"
}
{
"success": false,
"error": "Remetente não está online. Status atual: Offline",
"error_code": "SENDER_OFFLINE"
}
Este endpoint envia uma mensagem do WhatsApp usando um modelo pré-aprovado. Mensagens de modelo são necessárias ao iniciar uma conversa com um usuário pela primeira vez ou ao enviar mensagens fora da janela de 24 horas.
Este endpoint tem limite de taxa de 5 requisições por segundo por usuário.
Corpo da Requisição
integer
required
O ID do remetente do WhatsApp de onde enviar (obtido do endpoint Obter Remetentes)
integer
required
O ID do modelo de mensagem a ser usado (obtido do endpoint Obter Modelos)
string
required
O número de telefone do destinatário no formato internacional (ex:
+1234567890)string
O nome do destinatário, máximo 255 caracteres (usado para rastreamento de conversas e fins de CRM)
object
Pares chave-valor para variáveis do modelo. As chaves devem corresponder aos nomes das variáveis do modelo. Se o modelo tiver variáveis
{{1}}, {{2}}, etc., forneça-as como {"1": "valor1", "2": "valor2"} ou usando as chaves nomeadas do array variables do modelo.Campos de Resposta
boolean
Se a mensagem foi enviada com sucesso
integer
O ID da conversa (nova ou existente) associada a esta mensagem
integer
O ID do registro da mensagem da conversa
integer
O ID do registro da mensagem do WhatsApp
string
O SID da mensagem do Twilio para rastreamento de entrega
string
O status inicial da entrega da mensagem (ex:
queued, sent)Respostas de Erro
curl -X POST "https://suasofia.online/api/user/whatsapp/send" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender_id": 12,
"template_id": 45,
"recipient_phone": "+1234567890",
"recipient_name": "John Doe",
"variables": {
"1": "John",
"2": "15 de Janeiro de 2026",
"3": "14:00"
}
}'
curl -X POST "https://suasofia.online/api/user/whatsapp/send" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender_id": 12,
"template_id": 46,
"recipient_phone": "+1234567890"
}'
const response = await fetch(
'https://suasofia.online/api/user/whatsapp/send',
{
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
sender_id: 12,
template_id: 45,
recipient_phone: '+1234567890',
recipient_name: 'John Doe',
variables: {
'1': 'John',
'2': '15 de Janeiro de 2026',
'3': '14:00'
}
})
}
);
const data = await response.json();
console.log(data);
import requests
response = requests.post(
'https://suasofia.online/api/user/whatsapp/send',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'sender_id': 12,
'template_id': 45,
'recipient_phone': '+1234567890',
'recipient_name': 'John Doe',
'variables': {
'1': 'John',
'2': '15 de Janeiro de 2026',
'3': '14:00'
}
}
)
print(response.json())
{
"success": true,
"conversation_id": 1234,
"message_id": 567,
"whatsapp_message_id": 890,
"message_sid": "SMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"status": "queued"
}
{
"success": false,
"error": "Saldo insuficiente. Por favor, recarregue sua conta.",
"error_code": "INSUFFICIENT_BALANCE"
}
{
"success": false,
"error": "Remetente não encontrado ou não pertence a você",
"error_code": "SENDER_NOT_FOUND"
}
{
"success": false,
"error": "Modelo não encontrado ou não pertence a este remetente",
"error_code": "TEMPLATE_NOT_FOUND"
}
{
"success": false,
"error": "Modelo não aprovado. Status atual: pendente",
"error_code": "TEMPLATE_NOT_APPROVED"
}
{
"success": false,
"error": "Formato de número de telefone inválido. Use o formato E.164 (ex: +14155551234).",
"error_code": "INVALID_PHONE"
}
{
"success": false,
"error": "Remetente não está online. Status atual: Offline",
"error_code": "SENDER_OFFLINE"
}
Notas
- Mensagens de modelo devem usar modelos aprovados. Modelos com status
pendenteourejeitadofalharão. - O remetente deve estar
online. Remetentes offline não podem enviar mensagens. - Os custos das mensagens são automaticamente deduzidos do saldo da sua conta (créditos para usuários de inquilinos, minutos para usuários diretos).
- Após enviar uma mensagem de modelo, uma janela de mensagens de 24 horas é aberta. Durante esta janela, você pode enviar mensagens livres sem precisar de um modelo.
- Se uma conversa já existir com o destinatário, a mensagem é adicionada à conversa existente.
- Limite de taxa: 5 requisições por segundo por usuário.

