All mutating and read endpoints except /healthz, /auth/dev-login, /webhooks/test, and /email/* require either the dashboard session cookie or Authorization: Bearer <api-token>.
Core endpoints:
POST /auth/dev-loginGET /meGET|POST /orgs/:orgId/projectsGET|PUT|DELETE /projects/:projectIdGET|POST /projects/:projectId/suitesGET|PUT|DELETE /suites/:suiteIdGET|POST /suites/:suiteId/testsGET|PUT|DELETE /tests/:testIdPOST /tests/:testId/versionsPOST /tests/:testId/runPOST /suites/:suiteId/runGET /runs/:runIdGET /runs/:runId/stepsGET /runs/:runId/artifactsPOST /runs/:runId/commentsPOST /runs/:runId/accept-baselineGET|POST /suites/:suiteId/schedulesPUT|DELETE /schedules/:scheduleIdGET|PUT|POST /suites/:suiteId/variablesGET|POST /projects/:projectId/environmentsPUT|DELETE /environments/:environmentIdGET|POST /suites/:suiteId/data-sourcesPUT|DELETE /data-sources/:dataSourceIdGET|POST /orgs/:orgId/notification-endpointsPUT|DELETE /notification-endpoints/:endpointIdGET /email/:mailboxGET /email/:mailbox/latestPOST /webhooks/testGET /healthz
Run creation body:
{
"startUrl": "https://example.test",
"environmentId": "env_id",
"variables": { "email": "qa@example.test" },
"trace": true,
"video": true
}Webhook payload:
{
"runId": "run_id",
"testId": "test_id",
"suiteId": "suite_id",
"status": "passed",
"queuedAt": "2026-05-05T20:00:00.000Z",
"startedAt": "2026-05-05T20:00:01.000Z",
"finishedAt": "2026-05-05T20:00:04.000Z",
"durationMs": 3000,
"artifactUrls": [{ "kind": "finalScreenshot", "url": "http://localhost:9000/..." }],
"visualStatus": "passed",
"failedSteps": []
}