# URL de carga firmada

**POST** `/v1/utils/S3signedUploadURL`

Genera URL PUT temporales firmadas de S3 para cargar archivos directamente al almacenamiento en la nube.

El cuerpo de la solicitud debe incluir una matriz `files` no vacía. Cada elemento requiere `name` y el tipo MIME `type`, por ejemplo:

```json
{"files":[{"name":"video.mp4","type":"video/mp4"}]}
```

No envíes `{ "urls": [...] }` aquí; esa estructura corresponde al endpoint de descarga firmada `POST /v1/utils/S3signedGetURL`.

Después de recibir `signedUrl` y `fileUri`, envía los bytes originales del archivo a `signedUrl` mediante HTTP `PUT`, con el mismo `Content-Type` usado para solicitar la URL. No envíes el token Bearer de Tradly a S3. Guarda `fileUri` en los campos multimedia del anuncio; opcionalmente, crea un registro `/v1/media` para organizar el archivo en Media Manager.

Los campos multimedia de los anuncios también admiten URL externas de imágenes y vídeos. Estas URL no cargan ni almacenan los bytes del archivo en Tradly. Si una solicitud válida devuelve HTTP 5xx, se trata de un fallo del servidor al cargar o firmar, no de un ámbito que falte. Comprueba la respuesta y los registros del servidor API. Las URL multimedia externas siguen siendo una opción mientras no estén disponibles las cargas alojadas.

### Campos de respuesta

**result** Matriz de elementos de carga con `fileUri` (URL permanente accesible del archivo) y `signedUrl` (enlace temporal de carga S3 firmado).
