curl --request POST \
--url https://api.notifique.dev/v1/whatsapp/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"to": [
"5511999999999"
],
"type": "text",
"payload": {
"message": "Olá!"
},
"from": "clxx..."
}
'{
"success": true,
"data": {
"messageIds": [
"clxx1...",
"clxx2..."
],
"count": 2,
"status": "QUEUED",
"scheduledAt": null,
"sandbox": false,
"localization": {
"appliedAiLocales": [
"en"
],
"fallbackLocales": [
"pt"
],
"aiTranslatedRecipientCount": 1
}
}
}{
"success": false,
"error": "Bad Request",
"message": "Validation failed",
"details": [
{
"field": "payload.message",
"message": "text type requires payload.message"
}
],
"code": "BAD_REQUEST"
}{
"success": false,
"error": "Bad Request",
"code": "VALIDATION_ERROR",
"message": "Campo inválido ou ausente."
}{
"success": false,
"error": "Bad Request",
"code": "VALIDATION_ERROR",
"message": "Campo inválido ou ausente."
}{
"success": false,
"error": "Bad Request",
"code": "VALIDATION_ERROR",
"message": "Campo inválido ou ausente."
}{
"success": false,
"error": "Bad Request",
"code": "VALIDATION_ERROR",
"message": "Campo inválido ou ausente."
}{
"success": false,
"error": "Too Many Requests",
"code": "WARMUP_DAILY_LIMIT",
"message": "This instance is in the warm-up period (first 3 days). Daily send limit is 20. Try again tomorrow or wait until warm-up ends."
}{
"success": false,
"error": "Service Unavailable",
"message": "Failed to enqueue message",
"code": "SERVICE_UNAVAILABLE"
}Enviar mensagem WhatsApp
Envia mensagem no WhatsApp para um ou vários números. Contrato canônico: type + payload (texto, mídia, botões, lista, carrossel ou type: template com payload.templateId). Na não oficial, type=carousel e type=buttons estão disponíveis; podem deixar de funcionar a qualquer momento.
curl --request POST \
--url https://api.notifique.dev/v1/whatsapp/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"to": [
"5511999999999"
],
"type": "text",
"payload": {
"message": "Olá!"
},
"from": "clxx..."
}
'{
"success": true,
"data": {
"messageIds": [
"clxx1...",
"clxx2..."
],
"count": 2,
"status": "QUEUED",
"scheduledAt": null,
"sandbox": false,
"localization": {
"appliedAiLocales": [
"en"
],
"fallbackLocales": [
"pt"
],
"aiTranslatedRecipientCount": 1
}
}
}{
"success": false,
"error": "Bad Request",
"message": "Validation failed",
"details": [
{
"field": "payload.message",
"message": "text type requires payload.message"
}
],
"code": "BAD_REQUEST"
}{
"success": false,
"error": "Bad Request",
"code": "VALIDATION_ERROR",
"message": "Campo inválido ou ausente."
}{
"success": false,
"error": "Bad Request",
"code": "VALIDATION_ERROR",
"message": "Campo inválido ou ausente."
}{
"success": false,
"error": "Bad Request",
"code": "VALIDATION_ERROR",
"message": "Campo inválido ou ausente."
}{
"success": false,
"error": "Bad Request",
"code": "VALIDATION_ERROR",
"message": "Campo inválido ou ausente."
}{
"success": false,
"error": "Too Many Requests",
"code": "WARMUP_DAILY_LIMIT",
"message": "This instance is in the warm-up period (first 3 days). Daily send limit is 20. Try again tomorrow or wait until warm-up ends."
}{
"success": false,
"error": "Service Unavailable",
"message": "Failed to enqueue message",
"code": "SERVICE_UNAVAILABLE"
}Autorizações
API Key no header Authorization. Exemplo: Authorization: Bearer sk_live_xxxxx
Cabeçalhos
Chave única para idempotência. Alternativa: x-idempotency-key.
Corpo
Destinatários: números com DDI (ex.: 5511999999999) ou JID de grupo (ex.: 120363295648424210@g.us). Uma mensagem por item.
1 - 500 elementsTipo da mensagem. Use template com payload.templateId para templates do workspace (oficial ou não oficial).
text, image, video, audio, document, location, contact, buttons, list, carousel, template Conteúdo conforme type. text: message. image|video|audio|document: mediaUrl, fileName, mimetype (obrigatórios); caption opcional. location: latitude, longitude, name, address. contact: contact ou contactId. buttons: title, description, buttons (1 a 3; reply | copy | url | call | pix). list: title, description, buttonText, listSections. carousel: cards (1 a 10). template: templateId, variables, headerMediaUrl, carouselCardMediaUrls.
Show child attributes
Show child attributes
Remetente WhatsApp: id da instância, id ou nome do pool, telefone E.164 ou nome da instância.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Metadados por envio, mesclados em Message.metadata (pares string→string). Respeite limites de payload.
Show child attributes
Show child attributes
Tradução por destinatário (manual ou IA). Campos traduzíveis: payload.message, payload.caption.
Show child attributes
Show child attributes
Mapa locale → string ou objeto com chaves por campo (message, caption, …). Usado com localization.mode=manual.
Variáveis para substituir placeholders {{chave}} em payload.message, payload.caption e options.autoReplyText.
Show child attributes
Show child attributes
Resposta
Mensagem(ns) aceita(s). Enfileirada(s) ou agendada(s). Resposta padronizada com envelope success/data; status em MAIÚSCULO (QUEUED, SCHEDULED).
true
Conteúdo de data na resposta de envio.
Show child attributes
Show child attributes
{
"messageIds": ["clxx..."],
"status": "QUEUED",
"scheduledAt": "2025-02-10T14:00:00.000Z",
"count": 1,
"sandbox": true,
"localization": {
"appliedAiLocales": ["string"],
"fallbackLocales": ["string"],
"aiTranslatedRecipientCount": 1
}
}
Esta página foi útil?

