curl --request POST \
--url https://api.wppfy.com/send/media \
--header 'Content-Type: application/json' \
--header 'token: <api-key>' \
--data '
{
"number": "5511999999999",
"type": "image",
"file": "https://exemplo.com/foto.jpg"
}
'{
"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": "Medio enviado correctamente",
"fileUrl": "https://mmg.whatsapp.net/..."
}
}{
"error": "Tipo de medio o formato de archivo inválido"
}{
"error": "Token inválido"
}{
"error": "El tamaño del archivo excede el límite"
}{
"error": "Formato de multimedia no soportado"
}{
"error": "Error al subir el contenido multimedia"
}Enviar medios (imagen, video, audio o documento)
Envía diferentes tipos de medios a un contacto, grupo o canal/newsletter. Soporta URLs o archivos base64.
Tipos de Medios Soportados
image: Imágenes (preferentemente JPG)video: Videos (solo MP4)videoplay: Video con comportamiento visual de autoplay/loop en WhatsAppdocument: Documentos (PDF, DOCX, XLSX, etc)audio: Audio común (MP3 u OGG)myaudio: Mensaje de voz (alternativa a PTT)ptt: Mensaje de voz (Push-to-Talk)ptv: Mensaje de video (Push-to-Video)sticker: Sticker
Recursos Específicos
- Carga por URL o base64
- Caption/leyenda opcional con soporte de placeholders
- Nombre personalizado para documentos (
docName) - Generación automática de miniaturas para imágenes y videos cuando no se informa
thumbnail - Compresión optimizada según el tipo
viewOncerecomendado para medios compatibles
Envío a Newsletter
Para enviar medios a un canal, use el mismo campo number, pero informe el JID completo del canal:
- Ejemplo:
120363123456789012@newsletter
{
"number": "120363123456789012@newsletter",
"type": "image",
"file": "https://exemplo.com/foto.jpg",
"text": "Imagem publicada no canal"
}
Campos Comunes
Este endpoint soporta todos los campos opcionales comunes documentados en la tag “Enviar Mensagem”, incluyendo:
delay, readchat, readmessages, replyid, mentions, forward, track_source, track_id, placeholders y envío a grupos.
Ejemplos Básicos
Visualización Única (viewOnce)
El campo viewOnce se recomienda cuando se desea un medio de visualización única y actualmente tiene efecto para los tipos:
image, video, videoplay, ptv, audio, myaudio y ptt.
Para document, sticker y los demás endpoints de envío, el campo se ignora silenciosamente.
Miniatura personalizada
Use thumbnail en image, video, videoplay, ptv o
document. Acepta URL HTTP/HTTPS, Data URL o imagen en base64 de hasta
1 MiB y 4096 px por dimensión. La API la convierte a JPEG y prioriza esta
imagen sobre la miniatura automática. Para documentos, envíe una
imagen de al menos 480 px para una vista previa más nítida en WhatsApp Web.
Los documentos sin thumbnail no reciben miniatura automática.
Al reenviar el mismo documento, reutilice la misma miniatura: WhatsApp puede asociar la vista previa al contenido del archivo también en mensajes antiguos.
Imagen Simple
{
"number": "5511999999999",
"type": "image",
"file": "https://exemplo.com/foto.jpg"
}
Documento con Nombre
{
"number": "5511999999999",
"type": "document",
"file": "https://exemplo.com/contrato.pdf",
"docName": "Contrato.pdf",
"text": "Segue o documento solicitado"
}
curl --request POST \
--url https://api.wppfy.com/send/media \
--header 'Content-Type: application/json' \
--header 'token: <api-key>' \
--data '
{
"number": "5511999999999",
"type": "image",
"file": "https://exemplo.com/foto.jpg"
}
'{
"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": "Medio enviado correctamente",
"fileUrl": "https://mmg.whatsapp.net/..."
}
}{
"error": "Tipo de medio o formato de archivo inválido"
}{
"error": "Token inválido"
}{
"error": "El tamaño del archivo excede el límite"
}{
"error": "Formato de multimedia no soportado"
}{
"error": "Error al subir el contenido multimedia"
}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"
Tipo de multimedia (image, video, videoplay, document, audio, myaudio, ptt, ptv, sticker)
image, video, videoplay, document, audio, myaudio, ptt, ptv, sticker "image"
URL o base64 del archivo
"https://exemplo.com/imagem.jpg"
Texto descriptivo (caption) - acepta placeholders
"¡Mira esta foto!"
Nombre del archivo (solo para documents)
"relatorio.pdf"
URL HTTP/HTTPS, Data URL o base64 de imagen para image, video, videoplay, ptv y document. Hasta 1 MiB y 4096 px por dimensión. Tiene prioridad sobre la miniatura automática; los documentos sin este campo no reciben miniatura automática.
"https://exemplo.com/thumb.jpg"
MIME type del archivo (opcional, detectado automáticamente)
"application/pdf"
ID del mensaje al que se responderá
"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...' o 'Grabando audio...'
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
false
Recomendado para medios de visualización única en tipos compatibles (image, video, videoplay, ptv, audio, myaudio, ptt). En tipos no compatibles, el campo se ignora silenciosamente.
false
Respuesta
Medio 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
