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

Projects

GET /api/projects

Lista hasta 50 proyectos (id, name, updatedAt, width, height).

POST /api/projects

{ "name": "Mi short" }

Body vacío → nombre por defecto. Respuesta: { project }.

GET /api/projects/:id

Proyecto con timeline parseado, assets (probe), últimos jobs y transcript reciente si existe.

PATCH /api/projects/:id

{
  "name": "Nuevo nombre",
  "fps": 30,
  "width": 1080,
  "height": 1920,
  "timeline": { }
}

timeline es el JSON del modelo Project (máx. ~5 MB). Validación Zod en servidor.

DELETE /api/projects/:id

Elimina el proyecto.

POST /api/projects/from-prompt

{ "prompt": "Explica X en 30s", "name": "Draft" }

Crea un proyecto 1080×1920 con asset placeholder. Rate limit ~20/min. Superficie experimental (feature prompt→video); el preset prompt-to-video aún no es el happy path de Automate.

curl -sS -X POST "$BASE/api/projects" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Agent demo"}'