Headers de media en plantillas
Al crear o editar una plantilla con header de media (IMAGE, VIDEO, GIF, DOCUMENT), tienes cuatro modos mutuamente excluyentes de proveer la media. Aplican solo a headers no-TEXT.
Los cuatro modos
| Modo | Descripción | Caso de uso |
|---|---|---|
url | URL https pública de la media | El archivo ya está hosteado |
base64 | Media codificada en base64 en el body | Tienes los bytes del archivo |
handler | Handler de Meta ya existente (4::...) | Ya subiste la media antes |
file | Multipart con un part file binario | Subida directa desde el cliente |
header_source y header_handle son mutuamente excluyentes. Si envías ambos, la API devuelve 400 con header_source and header_handle are mutually exclusive for media headers.Modo url
{
"name": "test_img",
"language": "es",
"category": "MARKETING",
"components": [
{
"type": "HEADER",
"format": "IMAGE",
"example": {
"header_source": {
"mode": "url",
"value": "https://cdn.example.com/banner.jpg"
}
}
},
{
"type": "BODY",
"text": "Mirá nuestra nueva colección {{1}}.",
"example": { "body_text": [["Primavera"]] }
}
]
}Modo base64
{
"type": "HEADER",
"format": "IMAGE",
"example": {
"header_source": {
"mode": "base64",
"value": "/9j/4AAQSkZJRgABAQAAAQABAAD/..."
}
}
}Modo handler
{
"type": "HEADER",
"format": "IMAGE",
"example": {
"header_source": {
"mode": "handler",
"value": "4::1234567890"
}
}
}Modo file (multipart)
El request debe ser multipart/form-data con dos parts: template (JSON) y file (binario):
curl --request POST \
--url 'https://api.chattigo.com/v1/templates/{did}' \
--header 'Authorization: Bearer <token>' \
-F 'template={
"name": "test_img",
"language": "es",
"category": "MARKETING",
"components": [{
"type": "HEADER",
"format": "IMAGE",
"example": { "header_source": { "mode": "file" } }
}]
};type=application/json' \
-F 'file=@/ruta/banner.jpg'Reglas de validación
| Regla | Detalle |
|---|---|
| HTTPS obligatorio | mode=url con http:// → 400 |
| Sin IPs privadas | mode=url apuntando a IP privada/loopback → 400 (bloqueado por seguridad) |
| Límites de tamaño | Cada categoría tiene un cap configurable (media.upload.max_bytes) |
Header TEXT ignora header_source | Si el header es TEXT, header_source se ignora |
file requiere multipart | mode=file con application/json → 400 |
| Faltan parts | Multipart sin part template o sin part file → 400 |
| Multipart bomb | Part file que excede el cap → 413 |
| GIF | Solo Marketing Messages API, MP4, max 3.5MB |
Categorías de media y tamaños
| Formato | Tamaño máximo | MIME |
|---|---|---|
| IMAGE | según categoría (configurable) | image/* |
| VIDEO | según categoría (configurable) | video/* |
| DOCUMENT | según categoría (configurable) | application/* |
| GIF | 3.5MB | video/mp4 (Marketing Messages API) |