https://client-api.leak.center once the release is live.
What changes for your integration
Authenticate with an API key
To switch:
1
Create a key
Sign in to the dashboard as an Org Admin or System Admin. Open Manage → API tokens, click Create token, and copy the key from the Save your API token dialog. The key starts with
dnst_ and is shown once. Your plan must include an API Calls allowance, or the page offers no Create token button.2
Switch to the X-API-Key header
Send the key in the
X-API-Key header on every request, and remove the Authorization header everywhere. The API reads Authorization before X-API-Key, so a leftover header decides which account the request acts as, or fails the request with 401.3
Confirm the key
Call
get_direct_org_info. A 200 with your organization’s id and name confirms the key works and acts as the organization you expect.401 with {"detail": "Authentication credentials were not provided."}. An unknown, expired or revoked key returns 401 with {"detail": "Invalid or expired API key."}. Store the key in a secret manager, never in source code. Authentication covers expiry, revocation and replacing a key without downtime.
Act as one organization per key
To switch:
- Remove
org_idfrom every query string and request body. A key needs no organization parameter. - Expect
403for another organization. A request that names any organization other than the key’s own returns403with{"detail": "You don't have access to this organization"}. - Serve clients from your own organization, or create a key per client workspace. Most partners register each client’s domains and other assets in their own organization, which the dashboard calls a workspace, and use one key for all of them. A client workspace that the client signs in to is a separate organization: as a System Admin, pick it in the workspace switcher at the top of the dashboard sidebar, open Manage → API tokens and create the key there. It belongs to that client workspace. Store a key per client workspace and pick the key, not a parameter. See Client organizations.
- A client workspace’s plan applies to its key. A client workspace key gets that workspace’s plan features and allowances, and its requests count toward its API Calls allowance, not yours.
- List clients from your own records. With a key,
organization_listreturns a one-item array with the key’s own organization.organization_info/{org_id}answers only for that organization’sidand returns404for any other.
Read organization data
get_direct_org_info, organization_info and organization_list return a smaller profile.
- Country lookups use codes.
country_listreturns{code, name}instead of{id, name}, with ISO country names. If you store country IDs, map them to codes once: take each stored country’s name, match it to anamein the new list, and keep thecode. ISO names can differ from the names you stored. - No license field replaces
license. Your plan is in the dashboard under Manage → Buy more, and your usage under Manage → Usage. At call time, the refusals in Handle the new refusals tell you what the plan does not cover.
Plans replace credits and daily limits
Every request now passes these checks:
Rate limits explains the per-second limit and the API Calls allowance. Plans and quotas explains plan features, allowances and slots.
Plan features
These areas need a feature in your plan. Without it, the endpoints return403 with {"detail": "This feature is not included in your plan."}.
Monitors check the data source of each rule. See Create monitors and set up delivery.
Metered allowances
These calls take units from a monthly allowance before the work starts. A call that ends in any status other than2xx gets its units back. Allowances reset at 00:00 UTC on the 1st of each month.
Endpoints that are new in this release, such as Attack Surface assessments and domain takedowns, state their allowances in their own guides: Start an assessment and Domain takedowns.
Capacity slots
Some resources have a fixed number of slots. Creating one more than the plan allows returns409.
Creating an inactive report schedule takes no slot. Activating it later with
update_report_schedule does.
Handle the new refusals
Authentication, license, plan, capacity and allowance refusals now carry adetail field. The rate-limit 429 keeps message. Four new kinds of refusal appear.
The new refusals:
Where the API reports a license refusal,
detail begins with “Your license is not active.” Some endpoints add a sentence after it.
A refusal from the license, plan or rate-limit check uses no API call, and an allowance or capacity refusal is refunded. Errors lists every error body the API returns.
Replace removed endpoints
Two routes are removed and return404.
Start Domain monitoring scans
Domain monitoring is the API tag SpoofGuard.start_domain_analysis has a new contract.
The call also has two new refusals:
- Plan feature. Without the Domain Monitoring plan feature, it returns
403with{"detail": "This feature is not included in your plan."}. - Monitored Assets slots. Each distinct domain you scan takes one Monitored Assets slot, from the same pool as your monitors. When every slot is taken, the call returns
409.
logo_id adds Google Lens, and a wordlist_code adds domain word combination. Create logos, branding keyword sets, whitelists and word lists first, then pass their IDs. See Set up a brand library.
400:
organization_assets_create or in the dashboard under Manage → Assets. When every Monitored Assets slot is taken, the call returns 409:
Read quick search and Telegram results
The quick search Data Brokers entry answers inline
data to a few fields. items holds listings in the shape data_broker_search returns. Stop polling a forum task for the Data Brokers entry. Data Brokers describes the listings.
Two new source statuses
A source your plan excludes, or that a limit refuses, no longer reportssubmission_failed. It reports one of two new statuses, and the rest of the search goes on.
Telegram totals can be estimates
telegram-search-create returns a new boolean, total_is_estimate. When it is true, total is an estimate, not an exact count, so do not present it as exact. Discord search already returned the same field. See Telegram.
Create monitors and set up delivery
A monitor is an alert rule in the API.alert_system_alert_create_alert_rule refuses the create before it reaches the monitoring service when every slot is in use:
Every other source is in every plan. A rule whose
service is missing or unknown also returns 403. Create and manage monitors and Delivery cover the rest.
Check the integration after the cut-over
Once the release is live athttps://client-api.leak.center, run each check with your API key.