Demo en la nube: los cambios no se guardan (almacenamiento temporal). Edita en local para trabajo persistente.

Assets

POST /api/assets

multipart/form-data:

CampoRequeridoDescripción
fileBinario del medio
projectIdnoSi 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.