# 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

```text
https://api.koo.io
```

All 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:

```bash
curl https://api.koo.io/me \
  -H "Authorization: Bearer <token>"
```

Two token kinds work everywhere:

- 
- (Coming soon)

## Errors

Errors use one stable envelope:

```json
{
  "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](/api/objects/environment) and the [Service object](/api/objects/service).
