The four checks
Your API key is checked first. A missing, revoked or expired key returns401 before any of these checks run (see Authentication).
A call refused at check 1 or 2 never reaches the rate limiter, so it uses none of your API Calls allowance. A call refused at check 4 returns a non-
2xx status, so its API call is refunded.
Every error body is listed once in Handle API errors.
License in force
A license is in force when its status is one of these:
A suspended or expired license is not in force. Status changes run once a day. A demo license has no grace period: it works through its end date and stops the next day.
A client workspace needs two licenses in force: its own and the license of the organization that manages it. When the managing organization’s license lapses, every client workspace it manages is refused too. See Client workspaces.
Without a license in force, most calls return
403:
detail, not the whole string.
get_direct_org_info still answers without a license in force, so you can confirm which organization a key acts as.
Plan features
A plan feature unlocks a group of endpoints. Without the feature, the endpoints that check it return403:
Report schedules for the credential comparison report check a separate report feature that every plan includes. You meet its
403 only when your license is not in force.
Which plans include each feature
The standard plans include these features. Manage → Buy more in the dashboard shows what your own plan includes.
API keys need an API Calls allowance. See Authentication.
What needs only a license in force
These endpoints check no plan feature. A license in force is enough:- Quick search. Each source still needs its own feature. A source your plan excludes comes back with
"status": "not_entitled", and the other sources still run. - Leaked credentials: Raw Data, Filtered credentials, the ULP feed, stealer logs, Credential Check and credential exposure analytics.
- SSL Transparency Logs, new domain registrations and Data Brokers listings.
- Risk score.
- Monitor matches, exclusions and metrics, and email delivery to recipients.
- The export service and leak-file downloads in Downloads and exports. A source’s own file endpoint follows its source. For example, the Code exposure export needs Exposed Code Detection, and the Attack Surface report download needs an Attack Surface feature.
- Every other endpoint of Credit cards, Tor & I2P and Email References, such as results, status, details and deletes. Only the search call checks the feature.
- Reading custom senders and email templates.
- The two Live Data Broker purchase endpoints.
What needs only a valid API key
These endpoints check neither a license nor a plan feature. They answer whenever your API key is valid:- Every phishing references endpoint.
- The results of Open cloud storage, URL shortener, App store and Infra search requests, and
infra_search_stats. - Listing credential comparison reports, checking their status, downloading them and deleting them.
get_direct_org_info.
Monitors and their data sources
Creating or updating a monitor checks the plan feature of its data source:
Every other data source needs only a license in force.
Metered allowances
Some features come with an allowance: a number of units per window. The call that starts the work takes its units before it runs.
Every other plan feature has no allowance. Its calls are limited only by the rate limit and, with an API key, the API Calls allowance.
How units are counted
- Taken before the call runs. Reads, polling, results, lists and deletes use no units.
- Refunded on any non-
2xxresponse. A2xxresponse keeps its units, even if the job it started fails later or you delete it. - All or nothing. A call that needs more units than remain is refused whole. No units are taken.
- Counted per unique keyword for Code exposure. Keywords are compared case-insensitively across every source in one request. The request below uses 2 units:
acme.comandACME.comcount once.
Windows
A monthly allowance resets on the 1st of each month at 00:00 UTC. The Domain takedowns allowance is yearly and runs per contract year: it resets at 00:00 UTC on each anniversary of your license’s start date. Unused units do not carry over.Packs
A pack adds units to an allowance, or slots to a capacity, once it is paid. A monthly pack adds its units to every monthly window, and a yearly takedown pack adds its takedowns to the contract year. Manage → Buy more in the dashboard lists the packs your plan can add.When an allowance is spent
The call returns429 and does not run:
resourceis the allowance from the table above. Branch on it, not ondetail.periodis the window that ran out. It ismonthfor every allowance except Domain takedowns, which useyear. Read it from the body rather than assume it.limitis your organization’s units for the window, packs included.
429 has no Retry-After header. Retrying fails until the window resets or a pack is added. A 429 with "message": "Rate limit exceeded" is a different refusal: see API Calls allowance.
Capacity slots
Some things you keep, rather than run, hold a slot for as long as they exist. Slots never reset. You free one by removing what holds it.
When every slot is in use, the call that would take one more returns
409:
limit is your organization’s slot count, packs included. Nothing is created. Free a slot or add a pack, then send the call again.
- Monitors. One monitor holds one slot until you delete it.
- Domain monitoring. Each scanned domain holds a slot from the same Monitored Assets pool as your monitors. At the limit,
start_domain_analysisreturns409for any domain, including one you already scan. To scan a monitored domain again, useanalysis_rescan, which needs no free slot. - Report schedules. Only active schedules hold a slot. A plan can include zero schedule slots, and then every active schedule is refused. A schedule created with
is_activeset tofalseholds no slot. To pause or resume a schedule,update_report_scheduleneeds the schedule’sdomainsandmask_passwordsin the body as well asis_active, for example{"domains": ["acme.com"], "is_active": false, "mask_passwords": true}. See Change, pause or resume a schedule.
API Calls allowance
Every request made with an API key counts toward your organization’s monthly API Calls allowance. Only2xx responses count: every other response is refunded. You can create API keys only when your plan includes API Calls (see Authentication). A separate per-second rate limit applies to every caller and is counted per organization.
When either limit is hit, the call returns 429 with "message": "Rate limit exceeded", a Retry-After header and retry_after_seconds. The X-RateLimit-* headers describe these two limits only, never a feature allowance or a slot. Rate limits explains both limits, the headers and how to pace a batch job.
Where to see your plan and usage
In the dashboard, both pages show the workspace you are in. With client workspaces, pick one in the workspace switcher at the top of the sidebar.- Manage → Usage shows what is used and left of each allowance and slot, and when each one resets. Org Admins, System Admins and System Users can open it.
- Manage → Buy more shows the features your plan includes and the packs it can add. Org Admins and System Admins can buy packs and change the plan there.
limitin every429allowance body and every409capacity body gives your current total.get_api_call_usagereturns every request your organization made, from the dashboard and with API keys, per month and per day, broken down by status code. It is a traffic log, not your API Calls allowance balance.