Documentation
Call the API reliably
Rate limits, time budgets, pagination, idempotency, and HTTP codes for moving from a prototype to a reliable integration.
Slow down before the API has to stop you
Every response includes X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Window. Read them before you receive a 429.
| Scope | Limit | Window |
|---|---|---|
| Whole API surface | 60 | 60 seconds |
| Generate a text | 10 | 10 seconds |
| Create a document | 10 | 10 seconds |
| Create a project | 10 | 10 seconds |
| Save a source to the inbox | 10 | 60 seconds |
| Archive, trash, or restore | 60 | 60 seconds |
| Verify a certificate without a key | 30 | 60 seconds |
Set your client timeout to at least the operation’s published x-kaneme-timeout-seconds. Responses aren’t streamed.
Number of voices
1 voice included on Free; 2 per paid seat. An extra voice costs 5 credits; a Free account needs a first purchase before adding one. A refused creation returns 402 voice_limit_reached.
Keep reading until the cursor is null
Call the same endpoint with ?cursor=… until nextCursor is null. A cursor is opaque: copy it exactly and don’t parse it.
Retry the call, not the charge
Add Idempotency-Key to write operations. If the response is lost, send the identical request with the same key within 24 hours. The API rejects a different payload under that key.
Use the status for the family and the code for the cause
Every error contains a stable machine-readable code. An abstention isn’t an HTTP error: it returns 200 with probability: null.
| Status | Cause | Action |
|---|---|---|
| 401 | Missing, unknown, or revoked credential. | Create a new key in Connections. |
| 402 | Not enough credits. | Call /estimate before the operation. |
| 404 | The resource does not exist or is not yours. | Check the identifier without probing ownership. |
| 422 | The request is valid but cannot produce a result. | Read the response code for the exact reason. |
| 429 | Rate limit exceeded. | Wait for Retry-After before trying again. |
| 503 | A measurement layer is temporarily unavailable. | Retry after a short delay. |