Cargar un activo en la biblioteca de medios
/media_library/create
Utiliza este endpoint para añadir un activo a la biblioteca de medios de Braze utilizando una URL alojada externamente (
asset_url) o datos de archivo binario enviados en el cuerpo de la solicitud (asset_file). Este endpoint admite imágenes, documentos y archivos ZIP que los contengan. Para ver la lista completa, consulta Tipos de archivo compatibles.
Tipos de archivo compatibles
Este endpoint admite los siguientes tipos de archivo, tanto si los cargas a través de asset_url como de asset_file.
| Tipo de activo | Tipos de archivo compatibles | Tamaño máximo |
|---|---|---|
| Imagen | GIF, ICO, JPEG, JPG, PNG, WebP | 5 MB |
| Imagen vectorial | SVG | 5 MB |
| Documento | DOC, DOCX, PDF, PPT, PPTX, XLS, XLSX | 5 MB |
| Archivo comprimido | ZIP | 50 MB en total, 5 MB por archivo dentro del ZIP |
Si cargas un tipo de archivo que no aparece aquí, el endpoint devuelve un error UNSUPPORTED_FILE_TYPE.
Para archivos ZIP, cada archivo dentro del archivo comprimido también debe ser uno de los tipos de archivo compatibles enumerados aquí, y todos los archivos deben estar en la raíz del archivo ZIP (sin subdirectorios). Cualquier archivo no compatible se omite y se devuelve en el array errors de la respuesta, y el resto del archivo comprimido se carga igualmente.

Los archivos de contacto virtual (.vcf) y los archivos de video se pueden cargar en la biblioteca de medios, pero solo a través de la interfaz del panel (Contenido > Biblioteca de medios), no a través de este endpoint de API.

También puedes llamar a este endpoint a través del servidor MCP de Braze utilizando la función create_media_library_asset. Esto permite que herramientas de IA como Claude y Cursor carguen activos en tu biblioteca de medios mediante indicaciones en lenguaje natural.
Requisitos previos
Para utilizar este endpoint, necesitarás una clave de API con el permiso media_library.create.
Límite de velocidad
Este endpoint tiene un límite de velocidad de 100 solicitudes por hora, como se documenta en Límites de velocidad de la API.
Cuerpo de la solicitud
Cuando incluyes asset_url, el endpoint descarga el archivo desde la URL. Cuando incluyes asset_file, el endpoint utiliza los datos binarios del cuerpo de la solicitud.
Ejemplo de cuerpo de solicitud para asset_url:
1
2
3
4
{
"asset_url": "https://cdn.example.com/assets/cat.jpg",
"name": "Cat Graphic"
}
Ejemplo de cuerpo de solicitud para asset_file:
1
2
3
4
{
"asset_file": <BINARY FILE DATA>,
"name": "Cat Graphic"
}
El cuerpo de la solicitud incluye los siguientes parámetros:
| Parámetro | Obligatorio | Tipo de datos | Descripción |
|---|---|---|---|
asset_url |
Opcional | Cadena | Una URL de acceso público para el activo que se va a cargar en Braze. |
asset_file |
Opcional | Binario | Datos de archivo binario. |
name |
Opcional | Cadena | Nombre que aparecerá en la biblioteca de medios para este activo. |

asset_url y asset_file son mutuamente excluyentes; solo debes incluir uno de ellos en tu solicitud de API.
Nombres de los archivos cargados
En esta sección se explica cómo el endpoint asigna nombres a los archivos cargados en función de si incluyes el parámetro name.
Cargas de archivos individuales
| Escenario | Resultado |
|---|---|
name proporcionado |
El valor de name se utiliza como nombre del activo en la biblioteca de medios. |
name excluido |
Se utiliza el nombre de archivo original de la URL o del archivo cargado. |
Cargas de archivos ZIP
| Escenario | Resultado |
|---|---|
name proporcionado |
El valor de name se utiliza como prefijo, con un número incremental añadido como sufijo (por ejemplo, “Mi archivo 1”, “Mi archivo 2”, “Mi archivo 3”). |
name excluido |
Cada archivo conserva su nombre original dentro del archivo ZIP. |
Ejemplo de solicitud
Esta sección incluye dos ejemplos de solicitudes curl, una para añadir un activo utilizando una URL y otra utilizando datos de archivo binario.
Esta solicitud muestra un ejemplo de cómo añadir un activo a la biblioteca de medios utilizando un asset_url.
1
2
3
4
curl -X POST --location 'https://rest.iad-01.braze.com/media_library/create' \
--header 'Authorization: Bearer YOUR-REST-API-KEY' \
--header 'Content-Type: application/json' \
--data '{"asset_url": "https://cdn.example.com/assets/cat.jpg", "name": "Cat Graphic"}'
Esta solicitud muestra un ejemplo de cómo añadir un activo a la biblioteca de medios utilizando un asset_file.
1
2
3
4
curl -X POST --location 'https://rest.iad-01.braze.com/media_library/create' \
--header 'Authorization: Bearer YOUR-REST-API-KEY' \
--header 'Content-Type: application/json' \
--data '{"asset_file":<BINARY FILE DATA>, "name":"Cat Graphic"}'
Respuestas de error
En esta sección se enumeran los posibles errores y sus correspondientes mensajes y descripciones.
Errores de validación
Los errores de validación devuelven una estructura como esta:
1
2
3
{
"message": (String) Human-readable error description
}
Esta tabla enumera los posibles errores de validación.
| Estado HTTP | Mensaje | Descripción |
|---|---|---|
| 400 | “Either asset_url or asset_file must be provided.” | No se proporcionó ningún parámetro de activo en la solicitud. |
| 400 | “Both asset_url and asset_file cannot be provided. Please provide only one.” | Se proporcionaron ambos parámetros de activo; solo se permite uno. |
| 403 | “Media Library Public APIs are not enabled for this company.” | La característica de biblioteca de medios no está habilitada para este espacio de trabajo. |
Errores de procesamiento
Los errores de procesamiento devuelven una respuesta diferente con códigos de error:
1
2
3
4
5
{
"message": (String) Human-readable error description,
"error_code": (String) error code,
"meta": { }
}
Esta tabla enumera los posibles errores de procesamiento.
| Código de error | Estado HTTP | Descripción |
|---|---|---|
UNSUPPORTED_FILE_TYPE |
400 | El tipo de archivo cargado no es compatible. Consulta Tipos de archivo compatibles. El objeto meta incluye el file_type que fue rechazado. |
ASSET_SIZE_EXCEEDS_LIMIT |
400 | El archivo supera el tamaño máximo permitido de 5 MB. |
MEDIA_LIBRARY_LIMIT_REACHED |
400 | El espacio de trabajo ha alcanzado su número máximo de activos (200 de forma predeterminada para las empresas con versión de prueba gratuita, ilimitado en los demás casos). El objeto meta incluye el limit actual. |
ASSET_UPLOAD_FAILED |
400 | El activo no se pudo cargar debido a problemas de procesamiento. |
INVALID_ASSET_URL |
400 | El valor de asset_url no es un URI válido. El objeto meta incluye asset_url. |
ZIP_UPLOAD_ERROR |
400 | El archivo ZIP está dañado o no se puede abrir. El objeto meta incluye el mensaje original_error. |
ZIP_FILE_TOO_LARGE |
400 | El tamaño total sin comprimir del archivo ZIP supera el límite de 50 MB. El objeto meta incluye el zip_file_name y el zip_file_size. |
ZIPPED_ENTITY_HAS_NO_NAME |
400 | Una entrada de archivo dentro del ZIP no tiene nombre. Asegúrate de que el archivo ZIP no esté dañado y añade un nombre a cualquier entrada de archivo sin nombre. |
ZIPPED_ENTITY_CANNOT_HAVE_NESTED_DIRECTORY |
400 | El archivo ZIP contiene directorios anidados, que no son compatibles. Todos los archivos deben estar en el nivel raíz del ZIP. |
GENERIC_ERROR |
500 | Se produjo un error inesperado durante la carga. El objeto meta incluye el mensaje original_error para la depuración. Vuelve a intentarlo o ponte en contacto con Soporte. |
Respuesta
Hay cinco respuestas de código de estado para este endpoint: 200, 400, 403, 429 y 500.
El siguiente JSON muestra el formato esperado de la respuesta.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"new_assets": [
{
"name": (String) the name of the asset,
"size": (Integer) the byte size of the asset,
"url": (String) the URL to access the asset,
"ext": (String) the file extension (e.g., "png", "jpg", "gif")
}
],
"errors": [
{
"name": (String) the name of the asset,
"size": (Integer) the byte size of the asset,
"ext": (String) the file extension (e.g., "png", "jpg", "gif"),
"error": (String) the error that occurred
}
],
"dashboard_url": (String) the URL to view this asset in the Braze dashboard
}