Account
Read your plan limits, live usage counters, and your own exposure.
GET /me/exposure
Your own breach and stealer exposure
Breach and stealer hit counts for the authenticated account's own email address. The counts are computed once and then persisted on the account, so later calls read the stored figures rather than hitting upstream again. This endpoint consumes no quota.
What comes back.
200 Exposure counts. Also returned, with `has_email: false` and zero counts, when the account has no email address on file.
success boolean required
data object
breach_count integer
stealer_count integer
checked_at string, date-time
Omitted until both the breach leg and the stealer leg have completed; a leg that failed is retried on the next call.
has_email boolean
GET /search/stats
Live usage and plan limits
What comes back.
200 Usage counters plus the ceilings they reset against. Read `metering` first: it decides whether `lookups` is a pool shared by every surface or a breach-and-device figure. Then read the two clocks: `period` and `resets_at` govern the search counters, while `unlocks_period` and `unlocks_reset_at` govern `unlocks`.
success boolean required
data object
plan string
Starter is a retired legacy id and is not a checkout target.
One of free, starter, professional, premium, team
metering string
Read this before any counter below, because it decides what
lookupsactually counts.pooled- every paid tier (Pro, Premium, Team) and any custom plan an admin authors. Onelookupspool is spent by breach search, device search, people search and API requests alike, and it resets daily.per_surface- the free tier only. Each surface holds its own small allowance:lookupsnarrows to mean breach and device searches only,people_searchesis its own counter,social_resolvesis its own, andunlocksexists. The three search counters reset daily, 25 apiece;unlocksholds 5 and resets weekly.One of pooled, per_surface
period string
The cadence the search counters reset on. It is
dailyon every plan, the free tier included. It says nothing aboutunlocks, which keeps its own cadence inunlocks_period.One of daily, weekly, monthly
unlocks_period string
The cadence the
unlockscounter resets on, deliberately not the search cadence: it readsweeklywhileperiodreadsdaily. Branch on this field rather than assuming the unlock balance refills alongside the searches.One of daily, weekly, monthly
lookups integer
lookups_limit integer
-1 = unlimited
people_searches integer
People searches spent in the current search period. It only moves under
per_surfacemetering; a pooled plan charges people search tolookupsand leaves this at zero.people_limit integer
0on every pooled plan, and there it means people search spends thelookupspool - not that the surface is locked. Underper_surfacemetering it is the real cap for the search period (25 a day on free).-1= unlimited.social_resolves integer
social_limit integer
-1 = unlimited
unlocks integer
Record unlocks spent in the current unlock period.
unlocks_limit integer
0on every paid plan, and there it means the plan has no unlock mechanism at all - not that unlocks are unlimited. Paid rows are not censored, so there is nothing to reveal. The free tier gets 5 a week, on the weekly clockunlocks_periodnames.-1= unlimited.monitors_limit integer
Saved-monitor ceiling, a hard cap rather than a counter that resets on either clock.
wildcard boolean
Whether this account may pass
wildcard: true.full_results boolean
Whether breach and device row values are unmasked. It says nothing about people search, which is uncensored on every plan. Access to values inside the per-device file browser is reported separately by
file_browser.people_full_profile boolean
Whether this account may resolve a
profile_idinto the full profile document. The drill-in is metered rather than plan-gated: it spends one unit of the people allowance, which is thelookupspool underpooledmetering andpeople_searchesunderper_surface.bulk_max_terms integer
0 = bulk disabled
social_max_depth integer
A capability rather than a counter: how many levels the recursive social resolver may expand for this account,
1on the free tier and3on paid. It bounds the reach of a single resolve instead of holding an allowance, so it never depletes and never resets on either clock. One submitted resolve spends one unit againstsocial_limithowever many levels it reaches.file_browser string
Empty means the per-device browser returns full structure with masked values.
fullmeans the values are returned.One of , full
raw_search boolean
monitor_webhooks boolean
api_access boolean
last_reset string, date-time
resets_at string, date-time
The last second of the current search period, the cadence
periodnames. It governs the search counters only. It is authoritative: use it as given rather than recomputing a boundary from it.unlocks_reset_at string, date-time
The last second of the current unlock period, the cadence
unlocks_periodnames, and so the instant the unlock allowance returns. It is a different instant fromresets_atand is authoritative in the same way.
GET /stealer/limits
Stealer-specific limits and usage
What comes back.
200 Plan + counter snapshot.
success boolean required
data object
plan string
Starter is a retired legacy id and is not a checkout target.
One of free, starter, professional, premium, team
hourly_cap integer
0 = no per-hour cap
results_per_search integer
file_browser string
''= working browser with masked values, used by Free and Pro.full= real values, used by Premium and Team.One of , full
raw_search boolean