curl --request POST \
--url https://api.wppfy.com/send/text \
--header 'Content-Type: application/json' \
--header 'token: <api-key>' \
--data '
{
"number": "5511999999999",
"text": "Olá! Como posso ajudar?"
}
'{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"messageid": "<string>",
"chatid": "<string>",
"sender": "<string>",
"senderName": "<string>",
"isGroup": false,
"fromMe": false,
"messageType": "<string>",
"source": "<string>",
"messageTimestamp": 0,
"status": "<string>",
"text": "",
"quoted": "",
"edited": "",
"reaction": "",
"vote": "",
"convertOptions": "",
"buttonOrListid": "",
"owner": "",
"error": "",
"content": {},
"wasSentByApi": true,
"pinned": true,
"sendFunction": "<string>",
"sendPayload": {},
"fileURL": "<string>",
"callPeer": {
"jid": "<string>",
"name": "<string>",
"imagePreviewUrl": "<string>"
},
"send_folder_id": "<string>",
"track_source": "<string>",
"track_id": "<string>",
"ai_metadata": {
"agent_id": "<string>",
"turn": "<string>",
"flow_id": "<string>",
"request": {
"messages": "<array>",
"tools": "<array>",
"options": {
"model": "<string>",
"temperature": 123,
"maxTokens": 123,
"topP": 123,
"frequencyPenalty": 123,
"presencePenalty": 123
}
},
"response": {
"choices": "<array>",
"toolResults": "<array>",
"error": "<string>"
},
"outcome": {
"status": "sent",
"texts": 123,
"audio": true,
"menus": 123,
"files": 123,
"handoff": "<string>",
"lead": [
"<string>"
],
"detail": "<string>"
}
},
"sender_pn": "<string>",
"sender_lid": "<string>",
"sender_image_preview_url": "<string>",
"response": {
"status": "success",
"message": "Mensaje enviado correctamente"
}
}Enviar mensaje de texto
Envía un mensaje de texto a un contacto, grupo o canal/newsletter.
Recursos específicos
- Vista previa de enlaces con soporte para personalización automática o a medida
- Formato básico del texto
- Sustitución automática de placeholders dinámicos
Envío a newsletter
Para enviar texto a un canal, use el mismo campo number, pero indique el JID completo del canal:
- Ejemplo:
120363123456789012@newsletter
{
"number": "120363123456789012@newsletter",
"text": "Post publicado no canal"
}
Responder encuesta, lista o botón
Use este mismo endpoint para responder a un mensaje interactivo que esté guardado en el historial local de la instancia. Envíe:
number: chat donde se recibió o envió el mensaje original;replyid: ID del mensaje interactivo original;text: selección iniciada por>.
El marcador > es obligatorio para generar una respuesta interactiva. Sin él,
la API envía solo un mensaje de texto citando el original.
Responder una encuesta
Use la posición de la opción, comenzando en 1. En esta documentación pública, responda solo una opción por solicitud.
{
"number": "5511999999999",
"replyid": "3EB0ID_DA_ENQUETE",
"text": ">1"
}
Responder una lista
Prefiera el rowId configurado al crear la lista. También se aceptan el texto
exacto del elemento o su posición (>1).
{
"number": "5511999999999",
"replyid": "3EB0ID_DA_LISTA",
"text": ">plano_pro"
}
Responder un botón
Prefiera el ID del botón de respuesta rápida. También se aceptan el texto exacto
mostrado o su posición (>1). Esto aplica a botones rápidos legados,
templates, native flow y carrusel. Los botones de URL, llamada o copia ejecutan
su propia acción y no se responden mediante este flujo.
{
"number": "5511999999999",
"replyid": "3EB0ID_DOS_BOTOES",
"text": ">confirmar"
}
La API devuelve un error cuando el mensaje original no está disponible o la opción indicada no existe.
Campos comunes
Este endpoint admite todos los campos opcionales comunes documentados en la tag “Enviar Mensaje”, incluidos:
delay, readchat, readmessages, replyid, mentions, forward, track_source, track_id, placeholders y envío a grupos.
Vista previa de enlaces
Vista previa automática
{
"number": "5511999999999",
"text": "Confira: https://exemplo.com",
"linkPreview": true
}
Vista previa personalizada
{
"number": "5511999999999",
"text": "Confira nosso site! https://exemplo.com",
"linkPreview": true,
"linkPreviewTitle": "Título Personalizado",
"linkPreviewDescription": "Uma descrição personalizada do link",
"linkPreviewImage": "https://exemplo.com/imagem.jpg",
"linkPreviewLarge": true
}
curl --request POST \
--url https://api.wppfy.com/send/text \
--header 'Content-Type: application/json' \
--header 'token: <api-key>' \
--data '
{
"number": "5511999999999",
"text": "Olá! Como posso ajudar?"
}
'{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"messageid": "<string>",
"chatid": "<string>",
"sender": "<string>",
"senderName": "<string>",
"isGroup": false,
"fromMe": false,
"messageType": "<string>",
"source": "<string>",
"messageTimestamp": 0,
"status": "<string>",
"text": "",
"quoted": "",
"edited": "",
"reaction": "",
"vote": "",
"convertOptions": "",
"buttonOrListid": "",
"owner": "",
"error": "",
"content": {},
"wasSentByApi": true,
"pinned": true,
"sendFunction": "<string>",
"sendPayload": {},
"fileURL": "<string>",
"callPeer": {
"jid": "<string>",
"name": "<string>",
"imagePreviewUrl": "<string>"
},
"send_folder_id": "<string>",
"track_source": "<string>",
"track_id": "<string>",
"ai_metadata": {
"agent_id": "<string>",
"turn": "<string>",
"flow_id": "<string>",
"request": {
"messages": "<array>",
"tools": "<array>",
"options": {
"model": "<string>",
"temperature": 123,
"maxTokens": 123,
"topP": 123,
"frequencyPenalty": 123,
"presencePenalty": 123
}
},
"response": {
"choices": "<array>",
"toolResults": "<array>",
"error": "<string>"
},
"outcome": {
"status": "sent",
"texts": 123,
"audio": true,
"menus": 123,
"files": 123,
"handoff": "<string>",
"lead": [
"<string>"
],
"detail": "<string>"
}
},
"sender_pn": "<string>",
"sender_lid": "<string>",
"sender_image_preview_url": "<string>",
"response": {
"status": "success",
"message": "Mensaje enviado correctamente"
}
}Autorizaciones
Cuerpo
ID del chat al que se enviará el mensaje. Puede ser un número de teléfono en formato internacional, un ID de grupo (@g.us), un ID de usuario (con @s.whatsapp.net o @lid) o un ID de canal/newsletter (@newsletter).
"5511999999999"
Texto del mensaje. Para responder a una encuesta, lista o botón, use una selección que comience con > junto con replyid. Acepta placeholders en mensajes de texto comunes.
"¡Hola {{name}}! ¿En qué puedo ayudar?"
Activa/desactiva la vista previa de enlaces. Si es true, busca automáticamente un enlace en el texto para generar la vista previa.
Comportamiento:
- Si solo linkPreview=true: genera una vista previa automática del primer enlace encontrado en el texto
- Si se proporcionan campos personalizados (title, description, image): usa los valores proporcionados
- Si los campos personalizados son parciales: los combina con datos automáticos del enlace como fallback
- Título o descripción con solo espacios: la vista previa sale sin ese campo, sin buscarlo en el enlace
true
Define un título personalizado para la vista previa del enlace. Vacío usa el título del enlace; con solo un espacio (" "), la vista previa sale sin título.
"Título personalizado"
Define una descripción personalizada para la vista previa del enlace. Vacía usa la descripción del enlace; con solo un espacio (" "), la vista previa sale sin descripción.
"Descripción personalizada del enlace"
URL o Base64 de la imagen que se usará en la vista previa del enlace
"https://exemplo.com/imagem.jpg"
Si es true, genera una vista previa grande con carga de la imagen. Si es false, genera una vista previa pequeña sin carga
true
ID del mensaje original. Con text iniciado por >, genera la respuesta nativa de encuesta, lista o botón cuando el tipo original es compatible.
"3EB0538DA65A59F6D8A251"
Números a mencionar (separados por coma)
"5511999999999,5511888888888"
Marca la conversación como leída después del envío
true
Marca los últimos mensajes recibidos como leídos
true
Retraso en milisegundos antes del envío; durante el retraso aparecerá 'Escribiendo...'
1000
Marca el mensaje como reenviado en WhatsApp
true
Origen de rastreo del mensaje
"chatwoot"
ID para el seguimiento del mensaje (acepta valores duplicados)
"msg_123456789"
Si es true, envía el mensaje de forma asíncrona mediante la cola interna. Útil para un alto volumen de mensajes.
false
Respuesta
Mensaje enviado correctamente
Representa un mensaje intercambiado en el sistema
ID único interno del mensaje (formato r + 7 caracteres hex aleatorios)
ID original del mensaje en el proveedor
ID de la conversación relacionada
ID del remitente del mensaje
Nombre visible del remitente
Indica si es un mensaje de grupo
Indica si el mensaje fue enviado por el usuario
Tipo de contenido del mensaje
Plataforma de origen del mensaje
Timestamp original del mensaje en milisegundos
Estado del ciclo de vida del mensaje.
Ejemplos comunes: Queued, Canceled, Failed, Sent, Delivered, Read.
En mensajes de grupo, sigue al participante más avanzado: Delivered cuando al menos uno lo recibió, Read cuando al menos uno lo leyó y Played cuando al menos uno lo escuchó.
Texto original del mensaje
ID del mensaje citado/respondido
Historial de ediciones del mensaje
ID del mensaje al que se reaccionó
Datos de votación de encuestas y listas
Conversión de opciones del mensaje, lista, encuesta y botones
ID del botón o elemento de lista seleccionado
Propietario del mensaje
Mensaje de error en caso de que el envío haya fallado
Contenido bruto del mensaje (JSON serializado o texto)
Indica si el mensaje fue enviado vía API
Mensaje fijado en la conversación (fijar y desfijar también llegan en messages_update, tipos Pinned y Unpinned)
Función usada para enviar el mensaje (cuando se envía vía API)
Payload utilizado en el envío cuando está disponible. Los datos de medios en base64 se omiten.
URL o referencia de archivo del mensaje
Contacto conocido asociado a una llamada, cuando está disponible en messageType: call.
Show child attributes
Show child attributes
Carpeta asociada al envío (cuando corresponda)
Origen de rastreo
ID de seguimiento (puede repetirse)
Registro de una ronda de la IA. El completo (solicitud al modelo, respuesta y outcome) queda una sola vez, en el último mensaje del contacto al que respondió la ronda, incluso cuando no salió nada (error, respuesta descartada). Cada mensaje enviado por la IA lleva solo agent_id y turn (el id de ese mensaje del contacto).
Show child attributes
Show child attributes
JID PN resuelto del remitente (cuando esté disponible)
LID original del remitente (cuando esté disponible)
URL temporal de vista previa del remitente, cuando se conoce. La hidratación de esta versión completa los mensajes recibidos en grupos; el campo puede omitirse. No provoca consulta de foto a WhatsApp en el listado.
Show child attributes
Show child attributes
