Skip to main content
Your organization’s plan decides what the API lets you do. A call can be refused by four checks, always in this order. Not every endpoint runs all four: Plan features lists which calls check a feature, and which need only a license in force or only a valid key. Each refusal has its own body, with one exception explained under License in force. Each guide names its plan feature in an Availability line and what a call uses in a Cost line. This page explains both. There are no credits and no per-endpoint daily limits.

The four checks

Your API key is checked first. A missing, revoked or expired key returns 401 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:
Match the start of detail, not the whole string.
A lapsed license can look like a missing feature. On an endpoint that needs a plan feature, a lapsed license returns "This feature is not included in your plan." instead. If a call that used to work starts returning that message, check your license status first.
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 return 403:
Some features are checked on every endpoint. Others are checked only on the call that starts a search or changes a setting, and reading the results needs less. The Checked on column says which. Most feature names match the plan in the dashboard, under Manage → Buy more. See Where to see your plan and usage. 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:

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-2xx response. A 2xx response 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.com and ACME.com count 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 returns 429 and does not run:
  • resource is the allowance from the table above. Branch on it, not on detail.
  • period is the window that ran out. It is month for every allowance except Domain takedowns, which use year. Read it from the body rather than assume it.
  • limit is your organization’s units for the window, packs included.
This 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_analysis returns 409 for any domain, including one you already scan. To scan a monitored domain again, use analysis_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_active set to false holds no slot. To pause or resume a schedule, update_report_schedule needs the schedule’s domains and mask_passwords in the body as well as is_active, for example {"domains": ["acme.com"], "is_active": false, "mask_passwords": true}. See Change, pause or resume a schedule.
Admin seats and client workspaces are slots too. You manage them in the dashboard. Registered assets hold no slot.

API Calls allowance

Every request made with an API key counts toward your organization’s monthly API Calls allowance. Only 2xx 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.
From the API:
  • limit in every 429 allowance body and every 409 capacity body gives your current total.
  • get_api_call_usage returns 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.

Client workspaces

Most partners serve every client from their own organization, which the dashboard calls a workspace. They register each client’s domains and other assets in it and use one API key. Every check then uses your own license, plan features, allowances, slots and limits. A client workspace is a separate organization, bought for a client that signs in to the dashboard itself. It has its own plan. A key created for a client workspace acts as that workspace, so every check uses its own license, plan features, allowances, slots, API Calls allowance and per-second rate limit. Its calls also need the managing organization’s license in force. See Client organizations for the keys. System Admins and System Users see every client workspace under Manage → Workspaces.

Endpoints