API keys and scopes
Create scoped API keys to read and write your data over the REST API.
API access is available on plans that include integrations. Create a key in Settings, then Integrations. The key is shown once on creation, so store it safely. Keys begin with kbd_.
Authentication
Send the key as a Bearer token in the Authorization header on every request.
curl https://kabaido.ai/api/v1/products/bulk \
-H "Authorization: Bearer kbd_live_..." \
-H "Content-Type: application/json" \
-d '{ "products": [ { "sku": "EM-1204", "name": "End mill 12mm" } ] }'Scopes
Each key carries scopes that limit what it can do. A request that needs a scope the key does not hold is rejected with 403. Grant only the scopes a given integration needs.
| Scope | Allows |
|---|---|
| products:read | List and search products |
| products:write | Bulk upsert products |
| quotes:read | List quotes and read one with lines |
| quotes:write | Reserved for quote writes |
| orders:read | List orders and read one with lines |
| customers:read | List customers and read one with contacts |
| customers:write | Upsert customers |
| requests:read | List request threads and read messages |
| requests:write | Open requests from text |
Key security
Keys are stored as salted hashes, so Kabaido itself cannot recover a lost key; create a new one instead. The list in Settings shows each key's prefix and when it was last used, and revoking takes effect immediately.
Rate limits
Requests are throttled per key at 600 requests per minute. A request over the limit receives a 429 response; retry after a short pause.
Reading a quote
GET /api/v1/quotes/{id} returns a quote with its lines. The key must hold the quotes:read scope, or the request is rejected with 403. A quote that does not exist in your organisation returns 404. Money fields are integer minor units, so a total_minor of 58200 in GBP is £582.00. Lines are ordered by position and carry a line_type of product, configured, service or manual.
curl https://kabaido.ai/api/v1/quotes/7f0c0000-0000-0000-0000-000000000000 \
-H "Authorization: Bearer kbd_your_key_here"{
"id": "7f0c0000-0000-0000-0000-000000000000",
"number": "Q-1024",
"status": "accepted",
"currency": "GBP",
"subtotal_minor": 48500,
"discount_minor": 0,
"vat_minor": 9700,
"total_minor": 58200,
"valid_until": "2026-07-01",
"customer_id": "...",
"sent_at": "2026-06-02T10:30:00Z",
"decided_at": "2026-06-04T08:12:00Z",
"created_at": "2026-06-01T15:00:00Z",
"updated_at": "2026-06-04T08:12:00Z",
"lines": [
{
"id": "...",
"position": 0,
"line_type": "product",
"description": "12mm 4 flute end mill",
"qty": 10,
"uom": "EA",
"unit_price_minor": 4850,
"discount_pct": 0,
"vat_exempt": false,
"lead_time_days": 5
}
]
}Listing and writing products over the API is covered on the products API page in the Catalog section. The full endpoint reference is on the API reference page.