This summary tracks the current maintained API documentation scope, not the older 2026-02 rollout snapshot.
- Canonical REST base is
/api/v1 - Canonical profile surface is
/api/v1/voice/profiles/* - Compatibility helper routes still exist under
/api/v1/profiles/* /api/v1/profiles/{id}/samples*routes have one registered handler family; legacy DB functions are callable compatibility delegates, not duplicate Flask rules.- Default Socket.IO namespace (
/) carries conversion and training events /karaokeis the dedicated live-session namespace- The maintained training REST surface includes:
GET /training/jobsPOST /training/jobsGET /training/jobs/{job_id}POST /training/jobs/{job_id}/cancelPOST /training/jobs/{job_id}/pausePOST /training/jobs/{job_id}/resumeGET /training/jobs/{job_id}/telemetryPOST /training/preview/{job_id}
The docs are considered in sync when all of the following stay true:
/api/v1/openapi.jsonreturns a valid OpenAPI 3 document/api/v1/openapi.yamlis parseable YAML/docsserves Swagger UI- the generated spec includes the training control and preview routes
- markdown docs do not describe a separate
/trainingSocket.IO namespace