Enviar Mensajes

Enviar Multimedia

Envía un archivo multimedia a un contacto. El archivo debe estar accesible en una URL pública. Tipos disponibles: • image: Imagen (JPG, PNG, GIF, WebP). Admite pie de foto mediante text. • video: Video (MP4, AVI, MOV). Admite pie de foto mediante text. • audio: Audio como archivo (MP3, OGG, WAV). Aparece con ícono de archivo de audio. • ptt: Push-to-Talk: audio que aparece como mensaje de voz (burbuja de micrófono). Ideal para humanizar automatizaciones. • myaudio: Audio nativo de WhatsApp (OGG/Opus). Similar a ptt, úsalo cuando ya tengas el archivo en el formato correcto. • ptv: Mensaje de video (nota de video redonda). Siempre llega en formato circular; el video 16:9 se recorta en el centro. Ignora el pie de foto (el campo text no aparece). Usa MP4 H.264. Acepta duraciones largas (probado de 15 a 180 s) y tamaño dentro del límite de multimedia. • document: Documento (PDF, DOCX, XLSX, etc.). Usa docName para definir el nombre mostrado en el chat. • sticker: Sticker animado o estático (WebP). Límite de tamaño (envío por URL): imagen, video y audio hasta ~190 MB; documento hasta ~500 MB. Por encima de eso WhatsApp lo rechaza (HTTP 413 / error de carga). Nota: al enviar el archivo en base64 en el cuerpo de la solicitud por la API pública (/api/v1), el límite baja a ~2 MB. Por eso, para archivos más grandes, envía siempre por URL.

POSThttps://api.zapzapapi.com/api/v1/{instanceId}/send/media

Autenticación con los encabezados x-api-key y x-api-secret.

Parámetros

NombreTipoDóndeObligatorioDescripción
numbertextcuerpoSíNúmero (con código de país)
typeselectcuerpoSíTipo de multimedia
filetextcuerpoSíURL del archivo
texttextcuerpoNoPie de foto: imágenes y videos
mentionstextcuerpoNoEtiquetar miembros (solo grupo)
docNametextcuerpoNoNombre del archivo: obligatorio para document
delaynumbercuerpoNoDelay (ms)
digitandoselectcuerpoNoMuestra un indicador automático de "escribiendo..." proporcional al tamaño del mensaje antes de enviarlo. Activado por defecto (humaniza y reduce el riesgo de bloqueo). Envía false para desactivarlo y responder más rápido. La respuesta sigue siendo síncrona.

Ejemplo de solicitud

curl

curl -X POST "https://api.zapzapapi.com/api/v1/{instanceId}/send/media" \
  -H "x-api-key: TU_API_KEY" \
  -H "x-api-secret: TU_API_SECRET" \
  -H "Content-Type: application/json" \
  -d '{"number":"5511999999999","type":"image","file":"https://..."}'

Node.js

const res = await fetch("https://api.zapzapapi.com/api/v1/{instanceId}/send/media", {
  method: "POST",
  headers: {
    "x-api-key": "TU_API_KEY",
    "x-api-secret": "TU_API_SECRET",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    "number": "5511999999999",
    "type": "image",
    "file": "https://..."
  }),
});
console.log(await res.json());

Python

import requests

res = requests.post(
    "https://api.zapzapapi.com/api/v1/{instanceId}/send/media",
    headers={"x-api-key": "TU_API_KEY", "x-api-secret": "TU_API_SECRET"},
    json={"number":"5511999999999","type":"image","file":"https://..."},
)
print(res.json())

Ejemplo de respuesta

JSON

{
  "messageId": "ABCDEF123456",
  "status": "sent"
}

Los valores son ilustrativos; los campos siguen el formato real de la respuesta.

Ver la referencia completa

Consigue tus claves de API

Crea tu cuenta, conecta un número en minutos y empieza a usar la API. R$15 por número activo/mes, con un crédito de bienvenida al crear la cuenta, sujeto a la campaña vigente.