Enviar multimedia
Imagen, video, audio, documento y ubicación. Todos los tipos multimedia comparten el mismo patrón:
envías una URL pública HTTPS del archivo, o un id de archivo previamente subido.
Resumen de límites
| Tipo | Formatos | Tamaño máx | Caption |
|---|---|---|---|
image | JPEG, PNG | 5 MB | ✓ Sí |
video | MP4, 3GPP | 16 MB | ✓ Sí |
audio | AAC, MP3, OGG (opus), M4A, AMR | 16 MB | ✗ No |
document | PDF, DOCX, XLSX, PPTX, ZIP, TXT, CSV… | 100 MB | ✓ Sí |
location | — | — | — |
Imagen
Por URL
{
"messaging_product": "whatsapp",
"to": "593999999999",
"type": "image",
"image": {
"link": "https://midominio.com/factura.jpg",
"caption": "Aquí tu factura del mes 📄"
}
}Por media_id
Si previamente subiste el archivo al endpoint /media/upload, puedes referenciarlo:
{
"messaging_product": "whatsapp",
"to": "593999999999",
"type": "image",
"image": {
"id": "1234567890",
"caption": "Aquí tu factura"
}
}Para mejor compatibilidad: usa imágenes JPEG con dimensiones de hasta 1920×1080 px. Las PNG con transparencia se pueden ver con fondo gris en algunos clientes.
Video
{
"messaging_product": "whatsapp",
"to": "593999999999",
"type": "video",
"video": {
"link": "https://midominio.com/promo.mp4",
"caption": "Mira nuestra nueva promo 🎬"
}
}Codec recomendado: H.264 para video, AAC para audio. Si tu video usa otros codecs, WhatsApp puede que no lo reproduzca correctamente.
Audio
Soporta audio normal y notas de voz (PTT). Los audios no aceptan caption.
Audio normal
{
"messaging_product": "whatsapp",
"to": "593999999999",
"type": "audio",
"audio": {
"link": "https://.../audio.mp3"
}
}Por media_id
{
"messaging_product": "whatsapp",
"to": "593999999999",
"type": "audio",
"audio": {
"id": "9876543210"
}
}Documento
Para PDFs, hojas de cálculo, presentaciones, archivos comprimidos, etc.
{
"messaging_product": "whatsapp",
"to": "593999999999",
"type": "document",
"document": {
"link": "https://midominio.com/factura-A001-4521.pdf",
"filename": "factura-A001-4521.pdf",
"caption": "Factura electrónica de tu compra"
}
}El campo filename es muy importante en documentos:
es el nombre que verá el cliente al descargar. Si no lo envías, WhatsApp lo derivará de la URL,
y el resultado puede no ser amigable.
Ubicación
Comparte coordenadas geográficas con etiqueta y dirección opcionales.
{
"messaging_product": "whatsapp",
"to": "593999999999",
"type": "location",
"location": {
"latitude": -0.180653,
"longitude": -78.467838,
"name": "NOUXSOFT HQ",
"address": "Av. Amazonas N34-451, Quito, Ecuador"
}
}| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
latitude | number | requerido | Latitud en grados decimales. |
longitude | number | requerido | Longitud en grados decimales. |
name | string | opcional | Nombre del lugar (ej: "Sucursal Norte"). |
address | string | opcional | Dirección textual. |
Implementación PHP genérica para multimedia
function enviarMediaWischat($tid, $token, $to, $tipo, $link, $caption = '', $filename = null) { $media = ['link' => $link]; if ($caption && in_array($tipo, ['image', 'video', 'document'])) { $media['caption'] = $caption; } if ($filename && $tipo === 'document') { $media['filename'] = $filename; } $payload = [ 'messaging_product' => 'whatsapp', 'to' => $to, 'type' => $tipo, $tipo => $media, ]; $ch = curl_init("https://api.wis.chat/v22.0/{$tid}/messages"); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => json_encode($payload), CURLOPT_HTTPHEADER => [ "Authorization: Bearer {$token}", 'Content-Type: application/json', ], ]); $res = json_decode(curl_exec($ch), true); curl_close($ch); return $res; } // Imagen enviarMediaWischat(15, 'TOKEN', '593999999999', 'image', 'https://midominio.com/foto.jpg', 'Mira esto'); // Documento enviarMediaWischat(15, 'TOKEN', '593999999999', 'document', 'https://midominio.com/factura.pdf', 'Tu factura', 'factura-4521.pdf');