Assets
POST /api/assets
multipart/form-data:
| Campo | Requerido | Descripción |
|---|---|---|
file | sí | Binario del medio |
projectId | no | Si se omite, se crea proyecto + asset |
Límite: MAX_UPLOAD_BYTES (default 500 MiB).
Tipos: mp4/webm/mov, mp3/m4a/wav, jpg/png/webp, glb/gltf. Validación MIME + magic bytes.
Respuestas
Sin projectId:
{ "asset": { "id": "...", "kind": "video", "...": "..." }, "project": { "id": "...", "...": "..." } }
Con projectId:
{ "asset": { "...": "..." }, "projectId": "..." }
Errores frecuentes: 413 demasiado grande, 415 tipo no soportado, 400 contenido ≠ tipo declarado, 404 project no encontrado.
curl -sS -X POST "$BASE/api/assets" \
-H "Authorization: Bearer $TOKEN" \
-F "file=@./clip.mp4"
GET /api/assets
Hasta 50 assets recientes.
Preview de timeline
GET /api/assets/:id/timeline-preview?projectId=...— estado (ready/missing/pending).POST /api/assets/:id/timeline-preview— genera poster (1 frame) y/o waveform inline (ffmpeg).GET /api/assets/:id/timeline/waveform.png|filmstrip.jpg— ficheros generados.