Limits

OpenAuditor's current plan is free at $0, with no credit card required. Plan around the account's request rate, daily allowances and the size of each submission. All API keys and the browser console share the same limits.

See Pricing for the plan, the console guide for a browser review, or the quickstart for a complete API request.

Account quotas

LimitValueWhat counts
Authenticated requests60 per rolling minuteAdmitted API requests, including progress checks, result retrieval and requests later rejected for invalid data. Public schema, health and evaluation reads do not use this account allowance.
Items5,000 per dayCompleted single verifications, including false or uncertain results, and all items in an accepted batch. A later batch failure does not undo that item usage.
Model questions1,000 per day for single verificationsQuestions actually asked by /v1/verify. Cached answers add no question usage. Batches add no question usage, but exhausted daily quotas block new submissions.
Active API keys5 on FreeUnexpired keys that have not been revoked. A paid plan may allow more; keys beyond a lower limit keep working after a downgrade, but no new key can be created until the count is below it.

Daily quotas reset at 00:00 UTC. View today's counts and the reset time on your account page, or read them from an integration with GET /api/v1/usage: the plan, its limits, today's usage and what remains. That request counts toward the rolling limit and adds no item or question usage. A batch's items are counted when the audit is accepted, rather than as each result is read.

When either daily quota is exhausted, new verification and audit submissions are blocked until reset. Reading progress and existing results remains possible, subject to the rolling request limit. There is no automatic overage billing. If Pro is offered on Pricing, its account allowances apply after confirmed payment; your account page shows the limits currently in force.

Keep each submission within your remaining daily allowance. The per-request maximum of 10,000 audit items describes what a request can contain; it does not increase the free account's 5,000-item daily allowance. Usage is added from the operation's response, so the admission check is not a reservation of capacity for concurrent submissions.

Request and result sizes

Request or resultMaximum
Items in one audit10,000, with unique type-and-id pairs
Records in one request's context50,000
POST /v1/verify body1 MiB
POST /v1/audits body32 MiB
POST /v1/sources body (a CSV, XLSX or text-PDF file)32 MiB
POST /v1/audits/{id}/verifications body1 MiB and 1,000 marks
Other API request bodies64 KiB
Audit results per page500; the default is 100
Audit results kept7 days after completion, or until you delete the audit sooner
Uploaded sources100 and 256 MiB per account, each kept 7 days after upload or until you delete it sooner

MiB and KiB are byte limits: 1 MiB is 1,048,576 bytes. Count the full UTF-8 JSON body, including context, rather than just the item list. A short population with long source passages can reach the body limit before the item limit.

Send uncompressed JSON with Content-Type: application/json and a Content-Length header; an upload to /v1/sources is the file itself, sent as text/csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet or application/pdf. Clients such as curl calculate the length when sending a file. Item fields also have schema-specific bounds; read the chosen use case's schema before building a large export.

Read the rate headers

After a credential has been accepted and the account admission check has run, authenticated responses report the applicable rate limit. Authentication errors and early request rejections may occur before those headers are available.

HeaderMeaning
RateLimit-LimitThe limit being reported. On an ordinary admitted request this is the rolling request limit; on a daily quota rejection it identifies that quota.
RateLimit-RemainingRemaining capacity for that reported limit.
RateLimit-ResetSeconds until the reported window resets, not an epoch timestamp.
Retry-AfterOn a rate-limit response, the seconds to wait before trying again.
OpenAuditor-UsageWhen returned by a verification or accepted audit, the items and questions counted for that operation. These are usage counts, not monetary charges. An audit is counted once, even when a submission is repeated with the same Idempotency-Key.

Use error.code to distinguish rate_limited, daily_item_quota and daily_question_quota. Repeatedly retrying a daily quota error will not make the reset arrive sooner.

Plan a population review

  1. Prove the mapping with one record. Validate the fields, context and outcomes before submitting a larger population.
  2. Keep related records together. Duplicate, split and relationship checks can read submitted batch peers as well as context records. When partitioning batches, preserve the comparison records needed across the boundaries; more requests do not automatically preserve the original scope.
  3. Leave room for follow-up work. Corrected resubmissions consume usage too. A dry run with a few records is easier to diagnose than a full day's allowance.
  4. Poll gradually. Status requests count toward the rolling limit. Increase the interval while a long audit is running and stop on completion or failure.
  5. Download every page. Follow next_cursor until it is null and export results before their retention window ends.

A verification request that takes more than 60 seconds at the origin can return origin_timeout. Use an asynchronous audit for a population instead of trying to fit many independent records into an interactive call.

Sign-in limits are separate

Email-code requests have separate abuse limits per email address, IP address and across the service. A code expires after 10 minutes, works once and allows at most five verification attempts. If sign-in is limited, wait for the indicated retry interval rather than requesting codes from several tabs.

See Errors and recovery for response codes, or return to the quickstart for a complete request.