API overview
Base: http://127.0.0.1:3000 (local). Auth: Auth.
Endpoints
| Method | Path | Notas |
|---|---|---|
| GET | /api/presets | Lista pipelines canónicos |
| GET | /api/projects | Hasta 50 proyectos |
| POST | /api/projects | { name? } |
| POST | /api/projects/from-template | { templateId, name?, values? } → instancia |
| POST | /api/projects/:id/apply-variables | Reaplica url/texto/logo/color |
| GET | /api/projects/:id | Proyecto + assets + jobs recientes (+ sourceTemplateId / variableValues) |
| PATCH | /api/projects/:id | name / fps / size / timeline |
| DELETE | /api/projects/:id | Borra proyecto |
| POST | /api/projects/from-prompt | Prompt → proyecto borrador (experimental) |
| GET | /api/templates | Lista plantillas (sistema + usuario) |
| POST | /api/templates | { projectId, name?, bindings? } guardar como plantilla |
| GET | /api/templates/:id | Detalle + snapshot + bindings |
| DELETE | /api/templates/:id | Solo origin: user |
| GET | /api/assets | Hasta 50 assets |
| POST | /api/assets | multipart file (+ projectId opcional) |
| GET | /api/assets/:id/timeline-preview | Estado / encola preview |
| GET | /api/assets/:id/timeline/:file | waveform.png / filmstrip.jpg |
| GET | /api/media/:assetId | Stream del fichero fuente |
| GET | /api/jobs | Últimos 30 jobs |
| POST | /api/jobs | Encola pipeline / export / probe / … |
| GET | /api/jobs/:id | Job + steps + result |
| POST | /api/jobs/:id/cancel | Cancela |
| POST | /api/jobs/:id/retry | Reencola failed/cancelled |
| POST | /api/jobs/:id/resume | Tras awaiting_review |
| GET | /api/exports/:jobId/:file | Artefactos allowlist |
Detalle por recurso: projects, assets, jobs, exports, presets, media.
Job types (POST /api/jobs)
pipeline (default) | export | probe | transcribe | preview
Worker
Los jobs no avanzan sin el proceso worker. Arranque: pnpm worker en el monorepo.
Playbooks
| Playbook | Uso |
|---|---|
| Talking head | Face-cam → Short pack |
| Maestros 1 clip | Clip fútbol → plantilla canal |
| Maestros batch | Carpeta MP4 → varios proyectos (2–4 clips) |