Documentation Index
Fetch the complete documentation index at: https://docs.oathnet.org/llms.txt
Use this file to discover all available pages before exploring further.
Scanners
Scanners let you monitor for newly indexedstealer or breach results and receive notifications through email, Discord webhooks, or custom HTTP webhooks.
What Scanners Actually Monitor
Scanners are incremental monitors. They only look for data indexed after the current scanner baseline.
- scanners run on an hourly schedule
- the window is based on
indexed_at, notpwned_at - historical data is not replayed when you create a scanner
- material query changes reset the baseline and begin monitoring from the update time
Scanner Types
| Type | Backing search surface | Typical use |
|---|---|---|
stealer | /service/v2/stealer/search | Monitor credentials, domains, usernames, passwords, subdomains, or log IDs |
breach | /service/v2/breach/search | Monitor breach records, dbnames, names, phone numbers, email domains, and similar fields |
Query Config Rules
query_config is close to the live v2 search filters, but it is not a raw request replay.
- allowed flat filters depend on
scanner_type filterandfilter_idare supported- canonical JSON keys such as
domain,email_domain,dbname, andusernameare preferred - bracketed variants such as
domain[]are also accepted - runtime-only parameters are rejected because scanners manage them automatically:
fromtocursorpage_sizeformatdebugsearch_id
- scanners always search with
date_field=indexed_at
- if the scanner can be described with exact-match fields, keep
query_configflat - if the scanner needs
or,contains,exists, ranges, or nested groups, usequery_config.filter
filter grammar, step-by-step examples, and filter_id behavior.
Notifications
| Notification type | Notes |
|---|---|
email | Sends to your OathNet account email |
discord | Requires a Discord webhook URL |
webhook | Requires a custom HTTP or HTTPS endpoint reachable by OathNet |
Webhook Security Modes
signed_jsonDefault mode for new custom webhook scanners.signed_encryptedSigned and encrypted delivery for custom webhook scanners.api_keyLegacy-only mode. New scanners cannot opt into it.
- only
httpandhttpsare allowed - IP addresses are rejected
- localhost and internal hostnames are rejected
- Discord scanners must use a Discord webhook URL
Creating a Scanner via API
UsePOST /scanners/create with a normalized query_config and delivery target.
POST /scanners/test-delivery.
Delivery Payload
Webhook and Discord notifications include scanner and run metadata plus a sample of matching results. The exactresults.sample shape depends on scanner_type.
GET /scanners/{scanner_uid}/webhook-security to inspect the configured verification method and delivery headers.
Operational Endpoints
GET /scanners/quotaView current scanner quota.POST /scanners/{scanner_uid}/testSend a real test notification for an existing scanner.POST /scanners/{scanner_uid}/triggerQueue an immediate run for an active scanner.POST /scanners/{scanner_uid}/pausePause scheduling without deleting the scanner.POST /scanners/{scanner_uid}/resumeResume a paused or disabled scanner.GET /scanners/{scanner_uid}/runsReview recent run history.GET /scanners/{scanner_uid}/runs/{run_uid}Inspect a specific run and its notification attempts.
Troubleshooting
No results found
- scanners only look for newly indexed data after the current baseline
- use regular search endpoints to inspect historical data
- verify that
query_configcontains valid filters for the scanner type - verify that structured filters target allowed fields for that scanner type
Not receiving notifications
- use
POST /scanners/test-deliveryorPOST /scanners/{scanner_uid}/test - check
GET /scanners/{scanner_uid}/webhook-security - inspect run history for delivery failures
- verify the webhook target returns a
2xxresponse
Scanner disabled
- scanners are auto-disabled after repeated failures
- fix the delivery or query issue, then resume the scanner
- check quota and plan access if creation or execution is blocked