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
| Limit | Value | What counts |
|---|---|---|
| Authenticated requests | 60 per rolling minute | Admitted 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. |
| Items | 5,000 per day | Completed 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 questions | 1,000 per day for single verifications | Questions 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 keys | 5 on Free | Unexpired 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 result | Maximum |
|---|---|
| Items in one audit | 10,000, with unique type-and-id pairs |
| Records in one request's context | 50,000 |
POST /v1/verify body | 1 MiB |
POST /v1/audits body | 32 MiB |
POST /v1/sources body (a CSV, XLSX or text-PDF file) | 32 MiB |
POST /v1/audits/{id}/verifications body | 1 MiB and 1,000 marks |
| Other API request bodies | 64 KiB |
| Audit results per page | 500; the default is 100 |
| Audit results kept | 7 days after completion, or until you delete the audit sooner |
| Uploaded sources | 100 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.
| Header | Meaning |
|---|---|
RateLimit-Limit | The limit being reported. On an ordinary admitted request this is the rolling request limit; on a daily quota rejection it identifies that quota. |
RateLimit-Remaining | Remaining capacity for that reported limit. |
RateLimit-Reset | Seconds until the reported window resets, not an epoch timestamp. |
Retry-After | On a rate-limit response, the seconds to wait before trying again. |
OpenAuditor-Usage | When 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
- Prove the mapping with one record. Validate the fields, context and outcomes before submitting a larger population.
- 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.
- 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.
- Poll gradually. Status requests count toward the rolling limit. Increase the interval while a long audit is running and stop on completion or failure.
- Download every page. Follow
next_cursoruntil 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.