Koo API
The Koo REST API gives you programmatic access to everything the console does: accounts, apps, services, deployments, domains, notifications, and observability.
Base URL
https://api.koo.ioAll requests and responses are JSON with camelCase field names. There is no version prefix — the surface is stable and additive.
Authentication
Every request carries a bearer token:
curl https://api.koo.io/me \ -H "Authorization: Bearer <token>"Two token kinds work everywhere:
- Session tokens — the short-lived identity token your signed-in session uses (this is what the console sends).
- API tokens Coming soon —
kc_-prefixed machine tokens minted from a service account, for CI and agents. See API tokens & service accounts.
Errors
Errors use one stable envelope:
{ "error": { "code": "quota_exceeded", "message": "Your plan does not allow another service of this size.", "details": {}, "requestId": "req_8f3k2m" }}The code is stable and machine-matchable; message is human-readable and may change. Include the requestId when you contact support.
Pagination
List endpoints use cursor pagination: pass ?limit= and the cursor from the previous page; responses return { "data": [...], "page": { "nextCursor": "...", "hasMore": true } }.
Idempotency
Creating POST requests accept an Idempotency-Key header — retries with the same key return the original result instead of creating twice.
Explore the reference
Browse the object models and endpoint groups in the sidebar, or start with the Environment object and the Service object.