Kanorio

API reference

Rate limits and quotas

How each Kanorio API limits request rates, which headers tell you where you stand, and the plan quotas that cap stored resources.

Rate limits keep one integration from slowing down everyone else. They are counted per credential on the Management API and per site, visitor or customer on the public APIs. Quotas are a different thing: they cap how much a site can store, such as collection items or webhook endpoints, and depend on the plan.

When you hit a limit

The API returns 429 with code RATE_LIMITED and a Retry-After header in seconds. Wait at least that long, then retry with backoff.

{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Too many requests.",
    "details": { "retryAfter": 12 }
  }
}

Some operations return 429 with a more specific code when the backend is busy rather than when you sent too much, for example SEARCH_BUSY or ANALYTICS_BUSY. Handle them the same way.

Management API

Each token has its own budget. Most operations share the default tier. Analytics queries are heavier, so they have a lower tier per token and a cap per site that every token on that site shares. REST and MCP calls count against the same budgets.

Each operation in the Management API reference shows its tier, and the OpenAPI document carries it as x-kanorio-rate-limit.

Content Delivery API

Responses served from the edge cache are not counted, so a busy site with a warm cache never hits these limits. Cache misses, form writes, analytics beacons and draft previews are counted in token buckets: each bucket refills at a steady rate and allows a short burst. Counted responses carry these headers:

HeaderMeaning
X-RateLimit-LimitBucket size
X-RateLimit-RemainingRequests left right now
X-RateLimit-ResetSeconds until the bucket is full again

Build pages on your server or at build time where you can, and let the edge cache absorb visitor traffic.

Customer API

Signed-in calls are limited per customer token. Sign-in requests are limited per IP address.

Limits and quotas today

The values below are generated from the same constants the APIs enforce.

Management API tiers

TierLimitApplies to
default120/minute per tokenEvery operation not listed below
heavy20/minute per token, plus 20/minute per siteAnalytics queries (analytics.*); REST and MCP share the bucket
publish30/hour per tokenPublishing and unpublishing

Content Delivery API buckets

Cache hits are not counted. Only requests that miss the edge cache, form writes and analytics beacons use these buckets.

BucketLimit
Cache misses per site20 requests/second, burst 100
Cache misses per visitor IP10 requests/second, burst 30
Draft preview per IP2 requests/second, burst 20
Gated content per customer token5 requests/second, burst 30

Customer API buckets

BucketLimit
Per customer token5 requests/second, burst 30
Sign-in (challenge and verify) per IP1 requests/second, burst 10

Plan quotas

ResourceFreeProBusiness
Collection items included501,00010,000
Storage included200 MB10 GB200 GB
Custom domains015
Webhook endpoints per site101010
Rows per import batch1001,0002,000