Account

Read your plan limits, live usage counters, and your own exposure.

GET /me/exposure

Your own breach and stealer exposure

Send your key with this call.

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

Send your key with this call.

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 lookups actually counts.

        pooled - every paid tier (Pro, Premium, Team) and any custom plan an admin authors. One lookups pool 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: lookups narrows to mean breach and device searches only, people_searches is its own counter, social_resolves is its own, and unlocks exists. The three search counters reset daily, 25 apiece; unlocks holds 5 and resets weekly.

        One of pooled, per_surface

      • period string

        The cadence the search counters reset on. It is daily on every plan, the free tier included. It says nothing about unlocks, which keeps its own cadence in unlocks_period.

        One of daily, weekly, monthly

      • unlocks_period string

        The cadence the unlocks counter resets on, deliberately not the search cadence: it reads weekly while period reads daily. 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_surface metering; a pooled plan charges people search to lookups and leaves this at zero.

      • people_limit integer

        0 on every pooled plan, and there it means people search spends the lookups pool - not that the surface is locked. Under per_surface metering 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

        0 on 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 clock unlocks_period names. -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_id into the full profile document. The drill-in is metered rather than plan-gated: it spends one unit of the people allowance, which is the lookups pool under pooled metering and people_searches under per_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, 1 on the free tier and 3 on 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 against social_limit however many levels it reaches.

      • file_browser string

        Empty means the per-device browser returns full structure with masked values. full means 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 period names. 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_period names, and so the instant the unlock allowance returns. It is a different instant from resets_at and is authoritative in the same way.

GET /stealer/limits

Stealer-specific limits and usage

Send your key with this call.

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