API
Base URL: /api/v1 on the shared backend. Auth with a JWT cookie/Bearer or a personal cr_… token.
Response shape
{ "data": { ... } }
{ "error": { "code": "...", "message": "..." } }Projects
GET /projects: projects you’re a member ofPOST /projects:{ "name": "Web" }(you become owner)GET|PATCH|DELETE /projects/:idGET|POST /projects/:id/cases: querytag,suiteId,limit,cursorGET|POST /projects/:id/suitesGET|POST /projects/:id/runs: body{ name?, suiteId?, tag?, caseIds? }
Test cases & suites
GET|PATCH|DELETE /cases/:idPATCH|DELETE /suites/:id
Runs
GET /runs/:idGET /runs/:id/resultsPATCH /runs/:id/results/:caseId:{ "status": "pass"|"fail"|"blocked"|"untested", "note?" }GET /runs/:id/summary
Tokens
GET|POST /tokensDELETE /tokens/:id
Example
curl -s http://localhost:8080/api/v1/projects \ -H "Authorization: Bearer cr_…"
Next: Agents