Developer API

Query the index
from your code

JSON over HTTPS. One key, your tier, your tokens. Every feature of the console — search, reveal, exports, saved queries — is an API call.

Endpoints ↓ Get an API key →

Authentication

API key (recommended for automation)

Send your 64-character key in the X-API-KEY header with every request. Keys are created in the console: Profile → API keys. A key inherits your permission tier and token balance — requests are billed exactly like console usage.

curl -X POST https://taynopis.com/secure/api/search \
  -H "X-API-KEY: <your-64-char-key>" \
  -H "Content-Type: application/json" \
  -d '{"filters": {"full_domain": "example.com"}, "page_size": 100}' 

Session cookie (browser/console)

The same endpoints power the web console. Calls from an authenticated browser session are accepted without an API key.

Endpoints

POST /secure/api/reveal

Reveal record fields

Pay tokens to unmask specific fields of specific records (by recordhash_full). A revealed record stays open for your account forever — no double-charging.

API key or session billing: ≈ 1 token per character of each revealed value (minimum 1)

Parameters

NameTypeDefaultDescription
requests array — List of {"recordhash": "<full 64-char hash>", "field": "username"|"password"|"url"}.

Request

curl -X POST /secure/api/reveal \
  -H "X-API-KEY: $KEY" -H "Content-Type: application/json" \
  -d '{
    "requests": [
      {"recordhash": "014012e391bfcd64…ac6", "field": "username"},
      {"recordhash": "014012e391bfcd64…ac6", "field": "password"}
    ]
  }' 

Response 200

{
  "revealed": {
    "014012e391bfcd64…ac6": {
      "username": "[email protected]",
      "password": "Hunter2summer"
    }
  },
  "spent": 26,
  "balance": 49970,
  "errors": []
}
  • Already-revealed fields are returned for free and not charged again.
  • Requests for fields outside your tier are filtered out.
  • On insufficient balance nothing is charged and an error is returned.
POST /secure/api/export_estimate

Estimate export cost

Calculate how many tokens opening all hidden fields in an export would cost — before spending anything.

API key or session billing: free

Parameters

NameTypeDefaultDescription
filters object {} Same filter map as search.

Request

curl -X POST /secure/api/export_estimate \
  -H "X-API-KEY: $KEY" -H "Content-Type: application/json" \
  -d '{"filters": {"full_domain": "accounts.google.com"}}' 

Response 200

{
  "records": 10000,
  "hidden_fields": {"password": 9132, "url": 10000, "username": 9715},
  "tokens_to_open": 746700,
  "tokens_available": 999517,
  "enough": true
}
POST /secure/api/filters_help

Filter value suggestions

Autocomplete helper: returns the most frequent values for a filter field that also match the current filters.

API key or session billing: free

Parameters

NameTypeDefaultDescription
search string "" Partial value to narrow suggestions.
filters object {} Context filters (same format as search).

Request

curl -X POST /secure/api/filters_help \
  -H "X-API-KEY: $KEY" -H "Content-Type: application/json" \
  -d '{"search": "goo", "filters": {"domain_tld": "com"}}' 

Response 200

[
  {"key": "accounts.google.com", "doc_count": 48122},
  {"key": "google.com", "doc_count": 21018},
  {"key": "docs.google.com", "doc_count": 9107}
]
POST /secure/api/saved_searches

Saved searches

Persist and list reusable queries. The console saves automatically — the same store is available via API.

API key or session billing: free

Parameters

NameTypeDefaultDescription
(POST) filters, page_size, page_number — — Query snapshot to save.
(GET) — — — Returns the list of saved searches.

Request

# save
curl -X POST /secure/api/saved_searches \
  -H "X-API-KEY: $KEY" -H "Content-Type: application/json" \
  -d '{"filters": {"full_domain": "example.com"}, "page_size": 100, "page_number": 1}'

# list
curl /secure/api/saved_searches -H "X-API-KEY: $KEY"

Response 200

[
  {"id": 12, "filters": {"full_domain": "example.com"},
   "page_size": 100, "page_number": 1, "created_at": "2026-09-13T19:40:41Z"}
]
  • Single item: GET/DELETE /secure/api/saved_searches/<id>.
POST /secure/api/delrecord

Delete a record

Removes a document from the index by id. Admin permission (delrec) required.

admin tier billing: free

Parameters

NameTypeDefaultDescription
id string — Document _id (equals full recordhash).

Request

curl -X POST /secure/api/delrecord \
  -H "X-API-KEY: $ADMIN_KEY" -H "Content-Type: application/json" \
  -d '{"id": "014012e391bfcd64a493adf9ffe110f2…"}' 

Response 200

{
  "msg": "Document 014012e3… deleted. success:4, failed:0"
}
  • The id is returned in search results as id for admin-tier keys.

Filters reference

Filters are a flat JSON object passed to search, export_estimate and filters_help. Arrays mean OR; prefix a key with ! to exclude.

KeyTypeDescription
full_domain string | string[] Full domain, e.g. accounts.google.com. Wildcards: *.example.com.
domain_main string | string[] Main domain label without TLD, e.g. google.
domain_tld string | string[] TLD, e.g. com.
full_domain_parts string | string[] Any subdomain parts, e.g. accounts matches accounts.*.
subdomain1..9 string Specific subdomain level (1 = closest to main domain).
protocol string | string[] http, https, ftp…
domain_port string Port if present in the URL.
domain_host_ipaddress string Host IP address if the URL uses one.
stealerid int | int[] Stealer family id (4=RedLine, 5=Raccoon v2, 7=RisePro, 12=Taurus… — see the Family column in the console).
username string Login/username (requires loginview).
username_email_domain string E-mail domain part of the username (requires loginview).
username_login string E-mail local part (requires loginview).
password string Exact password match (requires passview).
url_full string Full URL (requires urlview).
url_path / url_path_array string | string[] URL path or its segments (requires urlview).
url_path_args / url_path_args_array string | string[] Query string / its params (requires urlview).
logpath / logpath_full string Source log path (requires logpathview; displayed as MD5 fingerprint).
adddate_text {gte, lte} Date range: {"gte": "2026-09-01", "lte": "2026-09-08"}.
!<any filter> same Prefix a filter with ! to exclude values: "!domain_tld": ["ru", "cn"].
query string Query-language string, combined with the filters: tld:com AND main:google, user:@gmail.com, wildcards url:*.example.com, date>=2026-09-01, AND OR NOT ( ); a bare word = domain OR username. Parsed and compiled server-side.
__domains__ string[] UI domain-chips: restrict to your verified domains. Validated server-side.

Errors & limits

HTTP / shapeMeaning
401Missing/invalid API key or session.
403Endpoint outside your permission tier (e.g. reveal without passview).
400Malformed request body (see error field).
402-like{"error": "Insufficient tokens…", "tokens_required", "tokens_available"} — nothing charged.
429Rate limit exceeded — retry after pause.
  • API keys are limited by your plan (requests/minute).
  • Every search request costs 1 token + 1 token per returned record; failures cost nothing.
  • Revealing values costs ~1 token per character (see Reveal endpoint).