API documentation
Rate limits
How many requests and uploads your plan allows per minute, and what to do on a 429.
Last updated October 16, 2026
When you go over a limit, the API returns 429 rate_limited with a Retry-After header holding the seconds to wait. Limits are per account and depend on your plan. All of your keys share the same budget.
| Plan | Requests per minute | Uploads per minute |
|---|---|---|
| Researcher | 60 | 5 |
| Archivist | 120 | 10 |
| Professional | 300 | 20 |
Uploads count twice
A POST /records upload counts against the request budget and the upload budget, and so do a GEDCOM upload (POST /gedcom/imports) and its confirm. Whichever runs out first returns a 429. A bulk request counts as one request.
When you are limited
You get 429 rate_limited with a Retry-After header. It holds the number of seconds to wait.
curl -i https://kleiobase.com/api/v1/workspaces \
-H "Authorization: Bearer kb_live_YOUR_KEY"
HTTP/2 429
Retry-After: 12
Wait that long, then retry. For bulk work, spread requests out rather than bursting.
Failed authentication
Repeated failed authentication from one IP address is limited per IP. This does not use your plan budget. A script with a bad key should stop on the first 401.
Other limits
These sit alongside the per-minute limits:
- Monthly credits for processing records. See Uploads.
- A cap on how many records can process at once.
- Your plan's person limit.
The public OpenAPI document needs no key and is rate limited per IP.
Building a product on KleioBase? Contact us.