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.

PlanRequests per minuteUploads per minute
Researcher605
Archivist12010
Professional30020

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.

We use cookies and similar technologies. Essential cookies keep the site working and secure. We only load analytics (PostHog, including masked session replays) and marketing (Meta Pixel and TikTok Pixel) with your consent. See our Privacy Policy.