curl -X POST https://api.whaapy.com/media/v1 \
-H "Authorization: Bearer wha_TU_API_KEY" \
-F "file=@/ruta/a/imagen.jpg" \
-F "type=image"
const FormData = require('form-data');
const fs = require('fs');
const formData = new FormData();
formData.append('file', fs.createReadStream('./imagen.jpg'));
formData.append('type', 'image');
const response = await fetch('https://api.whaapy.com/media/v1', {
method: 'POST',
headers: {
'Authorization': 'Bearer wha_TU_API_KEY'
},
body: formData
});
const data = await response.json();
console.log('Media ID:', data.media_id);
import requests
with open('imagen.jpg', 'rb') as f:
response = requests.post(
'https://api.whaapy.com/media/v1',
headers={'Authorization': 'Bearer wha_TU_API_KEY'},
files={'file': f},
data={'type': 'image'}
)
print('Media ID:', response.json()['media_id'])
{
"media_id": "123456789012345",
"mime_type": "image/jpeg",
"file_size": 1048576,
"type": "image"
}
Media
Subir Media
Sube archivos a Meta CDN y obtén un media_id para usar en mensajes
POST
/
media
/
v1
curl -X POST https://api.whaapy.com/media/v1 \
-H "Authorization: Bearer wha_TU_API_KEY" \
-F "file=@/ruta/a/imagen.jpg" \
-F "type=image"
const FormData = require('form-data');
const fs = require('fs');
const formData = new FormData();
formData.append('file', fs.createReadStream('./imagen.jpg'));
formData.append('type', 'image');
const response = await fetch('https://api.whaapy.com/media/v1', {
method: 'POST',
headers: {
'Authorization': 'Bearer wha_TU_API_KEY'
},
body: formData
});
const data = await response.json();
console.log('Media ID:', data.media_id);
import requests
with open('imagen.jpg', 'rb') as f:
response = requests.post(
'https://api.whaapy.com/media/v1',
headers={'Authorization': 'Bearer wha_TU_API_KEY'},
files={'file': f},
data={'type': 'image'}
)
print('Media ID:', response.json()['media_id'])
{
"media_id": "123456789012345",
"mime_type": "image/jpeg",
"file_size": 1048576,
"type": "image"
}
Sube imágenes, videos, audios o documentos directamente a Meta CDN.
Respuesta:
Casos de Uso
- Archivos grandes: Videos o documentos que excedan los límites del proxy automático
- Reutilización: Enviar el mismo archivo a múltiples destinatarios sin re-subirlo
- Control: Subir archivos de forma asíncrona antes de enviar mensajes
El
media_id expira después de aproximadamente 30 días en Meta CDN.Headers Requeridos
| Header | Valor |
|---|---|
Authorization | Bearer wha_TU_API_KEY |
Content-Type | multipart/form-data |
No uses
application/json. Este endpoint requiere multipart/form-data porque envía archivos binarios.Parámetros del Body
binary
required
El archivo binario a subir. Debe enviarse como multipart/form-data.
string
required
Tipo de media:
image, video, audio, document, stickerLímites de Tamaño
| Tipo | Formatos | Tamaño Máximo |
|---|---|---|
image | JPEG, PNG, WebP | 5 MB |
video | MP4, 3GPP | 16 MB |
audio | AAC, MP3, OGG, AMR | 16 MB |
document | PDF, DOC, XLS, PPT, TXT | 100 MB |
sticker | WebP | 500 KB |
Ejemplo con cURL
curl -X POST https://api.whaapy.com/media/v1 \
-H "Authorization: Bearer wha_TU_API_KEY" \
-F "file=@/ruta/a/imagen.jpg" \
-F "type=image"
const FormData = require('form-data');
const fs = require('fs');
const formData = new FormData();
formData.append('file', fs.createReadStream('./imagen.jpg'));
formData.append('type', 'image');
const response = await fetch('https://api.whaapy.com/media/v1', {
method: 'POST',
headers: {
'Authorization': 'Bearer wha_TU_API_KEY'
},
body: formData
});
const data = await response.json();
console.log('Media ID:', data.media_id);
import requests
with open('imagen.jpg', 'rb') as f:
response = requests.post(
'https://api.whaapy.com/media/v1',
headers={'Authorization': 'Bearer wha_TU_API_KEY'},
files={'file': f},
data={'type': 'image'}
)
print('Media ID:', response.json()['media_id'])
Respuesta Exitosa
{
"media_id": "123456789012345",
"mime_type": "image/jpeg",
"file_size": 1048576,
"type": "image"
}
Flujo Completo
Paso 1: Subir el archivo
curl -X POST https://api.whaapy.com/media/v1 \
-H "Authorization: Bearer wha_TU_API_KEY" \
-F "file=@video.mp4" \
-F "type=video"
{
"media_id": "123456789012345",
"mime_type": "video/mp4",
"file_size": 15728640,
"type": "video"
}
Paso 2: Enviar mensaje con el media_id
curl -X POST https://api.whaapy.com/messages/v1 \
-H "Authorization: Bearer wha_TU_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "+5215512345678",
"type": "video",
"video": {
"id": "123456789012345",
"caption": "Mira este video"
}
}'
Puedes usar el mismo
media_id para enviar el archivo a múltiples destinatarios. El ID es válido por 30 días.Cuándo usar este endpoint
| Escenario | Recomendación |
|---|---|
| Imagen pequeña con URL pública | Usa image.link directamente |
| Video de cualquier tamaño | Usa /media/v1 |
| Documento grande | Usa /media/v1 |
| Enviar a múltiples personas | Usa /media/v1 y reutiliza el media_id |
| URL privada o protegida | Usa /media/v1 |
Para imágenes que excedan 5MB por URL, Whaapy las comprime automáticamente. No necesitas usar este endpoint solo por el tamaño.
Errores Comunes
Tipo de archivo no permitido
{
"error": "Tipo de archivo no permitido",
"message": "Para video, los formatos permitidos son: video/mp4, video/3gpp"
}
Archivo demasiado grande
{
"error": "Archivo demasiado grande",
"message": "El tamaño máximo para video es 16MB"
}
WhatsApp no configurado
{
"error": "WhatsApp no configurado",
"message": "No se encontró configuración de WhatsApp activa para este negocio"
}
Próximos Pasos
Enviar Media
Usa el media_id para enviar imágenes, videos o documentos
Enviar Mensajes
Envía mensajes de texto simples
Was this page helpful?