API overview
The current OpenAPI spec is authoritative. This page records the conventions that should not be guessed.
Base URL and paths
https://webagent.qoni.aiUser-facing routes use /api/v1 and are project-scoped:
/api/v1/projects/{pid}/...| Capability | Create path |
|---|---|
| DoAnything | POST /api/v1/projects/{pid}/do_anything/runs |
| Track | POST /api/v1/projects/{pid}/track/tracks |
| DeepResearch | POST /api/v1/projects/{pid}/deep_research/runs |
| WebSearch | POST /api/v1/projects/{pid}/web_search/runs |
Authentication
Raw HTTP can use a project API key:
Authorization: Bearer wa_xxxxxxxxxxxxxxxxxxxxxxxxThe Node SDK uses Qoni AK/SK plus delegateToken(); it injects the project path internally. Never expose AK/SK in a browser.
Async runs and SSE
DoAnything, DeepResearch, and WebSearch creation returns 202 and a run envelope. Poll the run detail or consume .../events; the Node SDK provides run.wait().
Common statuses are pending, running, awaiting_input, succeeded, failed, and canceled. done is a terminal reason, not a status.
SSE supports Last-Event-ID; the SDK's events() / wait() handle normal reconnection. Use event.raw only when you need wire details.
Errors
Errors are JSON envelopes with a stable code and human-readable detail. Branch on code, not on detail text. See errors and retries.
The Track path describes the current backend contract. The legacy Track entry in npm 0.9.0 is incompatible and the SDK repair candidate is unpublished; see Track.