Skip to content

Usage and limits

The Data API is metered per organization. Your plan’s included amounts and prices are on the pricing page; this page describes how each number is measured and what the API answers when a limit is reached.

These ceilings and included amounts come from the plan. kallax_requests_per_minute is a per-project ceiling, measured per minute. max_file_bytes is an organization ceiling. max_end_user_emails_per_day and max_transactional_emails_per_day are per-organization rates, counted per UTC day. The first covers auth emails sent for your end users, the second covers the send API and email triggers. max_collections is an organization counter. kallax_storage_mb and kallax_mau are included meter amounts for the organization.

Free Pro Scale
kallax_requests_per_minute 600 6000 30000
max_file_bytes 20971520 (20 MB) 104857600 (100 MB) 524288000 (500 MB)
max_end_user_emails_per_day 100 2000 10000
max_transactional_emails_per_day 100 2000 10000
max_collections 10 100 500
kallax_mau 50000 100000 1000000
kallax_storage_mb 1024 8192 102400

Webhooks are capped at 20 per project, on all plans. That cap is not one of the plan rows above.

“Database & file storage” (kallax_storage_mb) is the logical size of your documents plus the size of your uploaded files, sampled every few minutes and billed as the average over the billing period.

  • Counted: every collection’s documents and every completed file upload. Project management attachments are stored as files and count too; the usage page shows their share.
  • Not counted: indexes, end-user session and verification tokens, the API request log, and uploads that were started but never completed. Pending upload sessions expire after 15 minutes and are removed on the next upload begin or complete.

When a project is over its included storage and the organization has no on-demand billing or credit left:

Action Result
Create / update documents, start or complete a file upload 429 with "code": "quota_exceeded" and "limit_key": "kallax_storage_mb"
Read, list, download Allowed
Delete documents or files Allowed, so you can always get back under the limit

A suspended account answers 402 with "code": "payment_required" on writes and on every file endpoint.

An upload that would push the projected usage past the limit is rejected when the session starts, before any bytes are sent.

The maximum size of a single file is the plan max_file_bytes in the table above. The upload session’s maxBytes is that value. A declared size above it is rejected with 413. See Files.

Each project has a per-minute request ceiling: 600 on Free, 6000 on Pro, and 30000 on Scale. It applies to the whole project, across all clients and IPs.

When it is exceeded the API answers 429 with "code": "rate_limited", "limit_key": "kallax_requests_per_minute", a retry_after field, and a Retry-After header (seconds). The body is on REST conventions. This is a transient throttle, not a quota: retry with backoff, no upgrade is needed unless you consistently exceed the ceiling.

kallax_mau counts the distinct end users (from End-user auth) who made at least one API call since the billing period started; the highest value in the period is billed. Calls made with service tokens, API keys, or from the console do not count.

Collections, webhooks, and the request log

Section titled “Collections, webhooks, and the request log”
  • The number of collections per organization is limited by plan (max_collections); creating more answers 429 quota_exceeded.
  • A project can register at most 20 webhooks, on all plans.
  • API request events (used for the usage page and MAU) are kept for 90 days.

These are recorded on the usage page for visibility and are not priced: database API requests, file download volume, and webhook deliveries.