API de WhatsApp SENDO

Envía mensajes de WhatsApp a tus clientes.


Enviar mensaje con plantilla

POSThttps:/api.sendo.cloud/api/whatsapp/send-message

Este endpoint se utiliza para enviar mensajes de WhatsApp a un destino específico usando una plantilla.

Atributos requeridos


CampoTipoDescripciónValor por DefectoOpcionalEjemplo
templateNamestringEl nombre del template a utilizar para el mensaje.ningunoNotemplate-name
senderNumberstringNúmero de teléfono del remitente.ningunoNo+1234567890
recipientNumberstringNúmero de teléfono del destinatario.ningunoNo+1234567890
variablesobjectUn objeto que contiene variables a ser insertadas en el cuerpo del mensaje.ningunoNo { "name": "John Doe", "age": 30, "city": "New York" }

Cuerpo de la petición.


curl --location 'https:/api.sendo.cloud/api/whatsapp/send-message' 
--header 'apikey: API-KEY' 
--header 'Content-Type: application/json' 
--data-raw  '{
"templateName": "url_button_test",
"senderNumber": "593967793436",
"recipientNumber": "+50584533001",
"variables": {"nombre":"Jasson"}
}'
Respuesta .
CódigoDescripción
200Exitoso
{
  "status": {
    "messageId": "68c9802d-1910-4dba-9048-4a6c98787a0e",
    "message": "Mensaje recibido",
  }
}

Respuestas del servidor.

Enviar mensaje sin plantilla

POSThttps:/api.sendo.cloud/api/whatsapp/interaction

Este endpoint se utiliza para enviar mensajes de WhatsApp a un destino específico sin una plantilla.

NOTA: Solo puedes llamar a este endpoint una vez que el usuario haya interactuado con tu negocio, ya sea enviando un mensaje a tu número o respondiendo a un mensaje que fue entregado a través de una plantilla.

CampoTipoDescripciónValor por DefectoOpcionalComentariosEjemplo
senderNumberstringEl número de teléfono del remitente.ningunoNo1234567890
recipientNumberstringEl número de teléfono del destinatario.ningunoNo+1234567890
typestringTipo de mensajes como texto, video, imagen o documentoningunoNotext

NOTA: Consulta la tabla a continuación para conocer más sobre los tipos de mensajes.


Tipos de Interacción

Mensaje de Texto.
CampoTipoDescripciónValor por DefectoOpcionalComentariosEjemplo
bodystringEl texto del mensaje.ningunoNoHola mundo
preview_urlbooleanMuestra una prevista de la url en el cuerpo del mensajeningunotrue


Cuerpo de la petición.

curl --location 'https:/api.sendo.cloud/api/whatsapp/send-message' \
--header 'apikey: API-KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"senderNumber": "593967793436",
"recipientNumber": "+50584533001",
"type": "text",
"text": {"body":"Este es un mensaje de ejemplo"}
}'
Respuesta
CódigoDescripción
200Exitoso
{
  "status": {
    "messageId": "68c9802d-1910-4dba-9048-4a6c98787a0e",
    "message": "Mensaje recibido"
  }
}

Respuestas del servidor.

Mensaje de Imagen.
CampoTipoDescripciónValor por DefectoOpcionalComentariosEjemplo
linkstringEnlace de la imagen.ningunoNohttps://www.sendo.cloud/images/logo.png
captionstringTítulo de la imagen.ningunoEsta es una imagen de ejemplo

NOTA: Consulta esta tabla para ver las imágenes soportadas por META.


Cuerpo de la petición.

curl --location 'https:/api.sendo.cloud/api/whatsapp/send-message' \
--header 'apikey: API-KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"senderNumber": "593967793436",
"recipientNumber": "+50584533001",
"type": "image",
"image": {"link":"https://www.sendo.cloud/images/logo.png","caption":"Esta es una imagen de ejemplo"}
}'
Respuesta
CódigoDescripción
200Exitoso
{
  "status": {
    "messageId": "68c9802d-1910-4dba-9048-4a6c98787a0e",
    "message": "Mensaje recibido"
  }
}

Mensaje de Video.
CampoTipoDescripciónValor por DefectoOpcionalComentariosEjemplo
linkstringEnlace del video.ningunoNohttps://www.sendo.cloud/images/test.mp4
captionstringTítulo del video.ningunoEste es un video de ejemplo

NOTA: Consulta esta tabla para ver las imágenes soportadas por META.


Cuerpo de la petición.

curl --location 'https:/api.sendo.cloud/api/whatsapp/send-message' \
--header 'apikey: API-KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"senderNumber": "593967793436",
"recipientNumber": "+50584533001",
"type": "video",
"video": {"link":"https://www.sendo.cloud/images/test.mp4","caption":"Este es un video de ejemplo"}
}'
Respuesta
CódigoDescripción
200Exitoso
{
  "status": {
    "messageId": "68c9802d-1910-4dba-9048-4a6c98787a0e",
    "message": "Mensaje recibido"
  }
}

Mensaje de Documento.
CampoTipoDescripciónValor por DefectoOpcionalComentariosEjemplo
linkstringEnlace del documento.ningunoNohttps://www.sendo.cloud/images/test_document.pdf
filenamestringNombre del archivo del documento.ningunoNotest_document.pdf
captionstringTítulo del documento.ningunoEste es un documento de ejemplo

NOTA: Consulta esta tabla para ver las imágenes soportadas por META.


Cuerpo de la petición.

curl --location 'https:/api.sendo.cloud/api/whatsapp/send-message' \
--header 'apikey: API-KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"senderNumber": "593967793436",
"recipientNumber": "+50584533001",
"type": "document",
"document": {"link":"https://www.sendo.cloud/images/test_document.pdf","filename":"test_document.pdf","caption":"Este es un documento de ejemplo"}
}'
Respuesta
CódigoDescripción
200Exitoso
{
  "status": {
    "messageId": "68c9802d-1910-4dba-9048-4a6c98787a0e",
    "message": "Mensaje recibido"
  }
}

Mensaje de Audio.
CampoTipoDescripciónValor por DefectoOpcionalComentariosEjemplo
linkstringEnlace del audio.ningunoNohttps://www.sendo.cloud/images/test_audio.mp4

NOTA: Consulta esta tabla para ver las imágenes soportadas por META.


Cuerpo de la petición.

curl --location 'https:/api.sendo.cloud/api/whatsapp/send-message' \
--header 'apikey: API-KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"senderNumber": "593967793436",
"recipientNumber": "+50584533001",
"type": "audio",
"audio": {"link":"https://www.sendo.cloud/images/test_audio.mp4"}
}'
Respuesta
CódigoDescripción
200Exitoso
{
  "status": {
    "messageId": "68c9802d-1910-4dba-9048-4a6c98787a0e",
    "message": "Mensaje recibido"
  }
}

Descargar Archivo de Media de WhatsApp

GEThttps:/api.sendo.cloud/api/whatsapp/file?id=<FILE_ID>

Este endpoint se utiliza para descargar un archivo enviado por el usuario.

NOTA: Este endpoint entrega el archivo vía streaming, por lo que la respuesta es un flujo de bytes.

CampoTipoDescripciónValor por DefectoOpcionalComentariosEjemplo
FILE_IDstringEl id del archivo proporcionado por META WhatsAppningunoNo1234567890

Respuesta .
CódigoDescripción
200Exitoso
El archivo se envía vía streaming

Respuestas del servidor.


Webhook

Callback

POSThttps://yourdomain/api/webhook

Los webhooks le permiten recibir notificaciones HTTP en tiempo real sobre eventos en la Plataforma Sendo, como notificaciones de eventos o mensajes de clientes.

Campos Requeridos


CampoTipoDescripciónEjemplo
message_idstringIdentificador interno del mensaje en la plataforma Sendo8fe793e2-3a5e-452e-a92a-363666248098
waba_idstringIdentificador de la cuenta de whatsapp generado por Meta432857389903424
valueobjectDetalles de atributos del evento procesado, Ver Definición del campo Value
fieldstringIndica el tipo de Evento que se ha solicitado.messages

Cuerpo de la Petición

Ejemplo de Respuesta : Actualización del estado del evento

  {
    "message_id": "8fe793e2-3a5e-452e-a92a-363666248098",
    "waba_id": "432857389903424",
    "value": {
        "messaging_product": "whatsapp",
        "metadata": {
            "display_phone_number": "593967793436",
            "phone_number_id": "401156743081691"
        },
        "statuses": [
            {
                "id": "wamid.HBgLNTA1ODY3MjA3NzUVAgARGBIzM0U2M0VFNEM2Njc5ODU1ODEA",
                "status": "sent",
                "timestamp": "1737575163",
                "recipient_id": "50586720775",
                "conversation": {
                    "id": "634fb63c5b96fa266692ca32f5494304",
                    "expiration_timestamp": "1737661620",
                    "origin": {
                        "type": "marketing"
                    }
                }
            }
        ]
    },
    "field": "messages"
}

Ejemplo 2 de Respuesta : Texto enviado por un cliente como respuesta

{
    "message_id": "8fe793e2-3a5e-452e-a92a-363666248098",
    "waba_id": "432857389903424",
    "value": {
        "messaging_product": "whatsapp",
        "metadata": {
            "display_phone_number": "593967793436",
            "phone_number_id": "401156743081691"
        },
        "contacts": [
            {
                "profile": {
                    "name": "Jorge Argeñal"
                },
                "wa_id": "50586720775"
            }
        ],
        "messages": [
            {
                "from": "50586720775",
                "id": "wamid.HBgLNTA1ODY3MjA3NzUVAgASGBQzQTREQTFCRTU1MkFBOTIxMjlCMQA=",
                "timestamp": "1737575679",
                "text": {
                    "body": "Si acepto"
                },
                "type": "text"
            }
        ]
    },
    "field": "messages"
}

Ejemplo 3 de Respuesta : Video enviado por un cliente como respuesta

{
    "message_id": "8fe793e2-3a5e-452e-a92a-363666248098",
    "waba_id": "432857389903424",
    "value": {
        "messaging_product": "whatsapp",
        "metadata": {
            "display_phone_number": "593967793436",
            "phone_number_id": "401156743081691"
        },
        "contacts": [
            {
                "profile": {
                    "name": "Jorge Argeñal"
                },
                "wa_id": "50586720775"
            }
        ],
        "messages": [
            {
                "from": "50586720775",
                "id": "wamid.HBgLNTA1ODY3MjA3NzUVAgASGBQzQTYxMDgxMTk1MUJBNkQ3MTkxQQA=",
                "timestamp": "1738183832",
                "type": "video",
                "video": {
                    "caption":"Hola",
                    "mime_type": "video/mp4",
                    "sha256": "8D96O65u2ZpA+OQBdw1PvKQOH0dSDNtXENfnue8z8DM=",
                    "id": "1804954366989548"
                }
            }
        ]
    },
    "field": "messages"
}

Ejemplo 4 de Respuesta : Imagen enviada por un cliente como respuesta

{
    "message_id": "8fe793e2-3a5e-452e-a92a-363666248098",
    "waba_id": "432857389903424",
    "value": {
        "messaging_product": "whatsapp",
        "metadata": {
            "display_phone_number": "593967793436",
            "phone_number_id": "401156743081691"
        },
        "contacts": [
            {
                "profile": {
                    "name": "Jorge Argeñal"
                },
                "wa_id": "50586720775"
            }
        ],
        "messages": [
            {
                "from": "50586720775",
                "id": "wamid.HBgLNTA1ODY3MjA3NzUVAgASGBQzQUQyQURFMDI1OUEzRDlCQzQ3RAA=",
                "timestamp": "1738183940",
                "type": "image",
                "image": {
                    "caption":"Hola",
                    "mime_type": "image/jpeg",
                    "sha256": "jVIbmT753LbDCN5/msrHSOE2DKEPbwfvltygDNRTdpo=",
                    "id": "957620909803014"
                }
            }
        ]
    },
    "field": "messages"
}

Ejemplo 5 de Respuesta : Documento enviado por un cliente como respuesta

{
    "message_id": "8fe793e2-3a5e-452e-a92a-363666248098",
    "waba_id": "432857389903424",
    "value": {
        "messaging_product": "whatsapp",
        "metadata": {
            "display_phone_number": "593967793436",
            "phone_number_id": "401156743081691"
        },
        "contacts": [
            {
                "profile": {
                    "name": "Jorge Argeñal"
                },
                "wa_id": "50586720775"
            }
        ],
        "messages": [
            {
                "from": "50586720775",
                "id": "wamid.HBgLNTA1ODY3MjA3NzUVAgASGBQzQTk0ODlBNzQ4M0U4NzdBMDE5RgA=",
                "timestamp": "1738184020",
                "type": "document",
                "document": {
                    "caption":"Hola",
                    "filename": "01_BTS_Sendo_v1.0-2.docx",
                    "mime_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
                    "sha256": "pX/nG5rjWwc+FY7vZSCmJGbkyXpVTW+/IPNL+1jZRMk=",
                    "id": "2143224972803342"
                }
            }
        ]
    },
    "field": "messages"
}

Respuesta del Callback

El webhook espera una respuesta HTTP que puede ser:

CódigoDescripción
200Exitoso con retorno de datos
201Exitoso sin retorno de datos
204Exitoso sin retorno de datos

Definiciones de Atributos

Value

CampoTipoDescripciónEjemplo
messaging_productstringTipo de producto o servicio en Meta
metadataobjectObjeto que contiene detalles del remitente.
contactsobjectObjeto que contiene detalles de destino
statusesobjectObjeto que contiene detalles del evento del mensaje, incluidos los estados enviado, entregado, leído y otros. Ver Definición del campo Statuses
messagesobjectObjeto que contiene atributos del mensaje. Ver Definición del campo Messages

Statuses

CampoTipoDescripción
idstringID del mensaje de WhatsApp proporcionado por Meta
statusstringEvento de estado
timestampstringFecha y hora cuando ocurrió el evento.
recipient_idstringNúmero de teléfono del cliente
conversationobjectObjeto que contiene detalles de la conversación

Messages

CampoTipoDescripción
idstringIdentificación del mensaje de WhatsApp proporcionada por Meta
timestampstringFecha y hora en que ocurrió el evento.
fromstringNúmero de teléfono del cliente
textobjectObjeto que contiene detalles del texto.
videoobjectObjeto que contiene detalles del video.
imageobjectObjeto que contiene detalles de la imagen
documentobjectObjeto que contiene detalles del documento.
typestringTipo de mensajes como texto, video, imagen o documento


Tipos de Medios Soportados por META

Imagen

Tipo de ImagenExtensiónTipo MIMETamaño Máximo
JPEG.jpgimage/jpeg5MB
PNG.pngimage/png5MB

Video

NOTA: Solo se admiten códec de video H.264 y códec de audio AAC. Solo flujo de audio único o sin flujo de audio.

Tipo de VideoExtensiónTipo MIMETamaño Máximo
3GPP.3gpvideo/3gpp16MB
Video MP4.mp4video/mp416MB

Documento

Tipo de DocumentoExtensiónTipo MIMETamaño Máximo
Texto.txttext/plain100 MB
Microsoft Excel.xlsapplication/vnd.ms-excel100 MB
Microsoft Excel.xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet100 MB
Microsoft Word.docapplication/msword100 MB
Microsoft Word.docxapplication/vnd.openxmlformats-officedocument.wordprocessingml.document100 MB
Microsoft PowerPoint.pptapplication/vnd.ms-powerpoint100 MB
Microsoft PowerPoint.pptxapplication/vnd.openxmlformats-officedocument.presentationml.presentation100 MB
PDF.pdfapplication/pdf100 MB

Audio

Audio TypeExtensionMIME TypeMax Size
AAC.aacaudio/aac16 MB
AMR.amraudio/amr16 MB
MP3.mp3audio/mpeg16 MB
MP4 Audio.m4aaudio/mp416 MB
OGG Audio.oggaudio/ogg (OPUS codecs only; base audio/ogg not supported; mono input only)16 MB