Monitors
Continuous watchers on assets you own. Email/webhook fan-out when new hits surface.
GET /monitors
List your monitors
What comes back.
200 All monitors owned by the authenticated user.
success boolean required
data object
monitors array of object
id string
user_id string
asset string
asset_type string
One of email, username, domain, ip
status string
One of active, paused
surface string
One of all, stealer
notify_email boolean
notify_webhook string
notify_webhook_secret string
stealer_first_seen_only boolean
last_checked string, date-time
last_hit_count integer
last_source_preview array of string
last_stealer_count integer
last_stealer_preview array of string
hits_total integer
last_hit_at string, date-time
last_notified_at string, date-time
created_at string, date-time
updated_at string, date-time
limit integer
used integer
webhooks_allowed boolean
Whether the plan allows webhook delivery at all. Premium and Team only.
POST /monitors
Create a monitor
What you send.
JSON body, required.
asset string required
The thing to watch - email, username, domain, or IP.
asset_type string required
One of email, username, domain, ip
surface string default "all"
Which surfaces the monitor watches.
allcovers the breach index and the stealer logs.stealerwatches stealer logs only and is an admin-granted mode.One of all, stealer
notify_email boolean default false
notify_webhook string, uri
URL for webhook delivery. Both
https://andhttp://are accepted. Webhook delivery itself is Premium and Team only.notify_webhook_secret string
Shared secret for the webhook. Carries the integration key when the webhook is a PagerDuty endpoint, in which case it is required.
stealer_first_seen_only boolean default false
Admin-granted feature. Only notify for stealer credentials this monitor has not recorded before.
What comes back.
200 Monitor created.
success boolean required
data object
id string
user_id string
asset string
asset_type string
One of email, username, domain, ip
status string
One of active, paused
surface string
One of all, stealer
notify_email boolean
notify_webhook string
notify_webhook_secret string
stealer_first_seen_only boolean
last_checked string, date-time
last_hit_count integer
last_source_preview array of string
last_stealer_count integer
last_stealer_preview array of string
hits_total integer
last_hit_at string, date-time
last_notified_at string, date-time
created_at string, date-time
updated_at string, date-time
400 The request was malformed or invalid.
success boolean required
error string required
code string
Machine-readable error tag. Omitted whenever it is empty, which is most generic errors, so branch on status too.
One of quota_exceeded, hourly_limit, file_access_limit, plan_upgrade_required, upgrade_required, feature_not_enabled, email_verification_required, monitor_limit, monitor_surface_not_allowed, monitor_first_seen_not_allowed, monitor_webhook_invalid, monitor_webhook_not_allowed, monitor_webhook_key_required
403 A monitor setting your plan or account doesn't allow.
The same shape as 400.
GET /monitors/{id}
Fetch a single monitor
In the URL.
id in path string required
What comes back.
200 Monitor object.
success boolean required
data object
id string
user_id string
asset string
asset_type string
One of email, username, domain, ip
status string
One of active, paused
surface string
One of all, stealer
notify_email boolean
notify_webhook string
notify_webhook_secret string
stealer_first_seen_only boolean
last_checked string, date-time
last_hit_count integer
last_source_preview array of string
last_stealer_count integer
last_stealer_preview array of string
hits_total integer
last_hit_at string, date-time
last_notified_at string, date-time
created_at string, date-time
updated_at string, date-time
404 Resource doesn't exist or isn't owned by the authenticated user.
success boolean required
error string required
code string
Machine-readable error tag. Omitted whenever it is empty, which is most generic errors, so branch on status too.
One of quota_exceeded, hourly_limit, file_access_limit, plan_upgrade_required, upgrade_required, feature_not_enabled, email_verification_required, monitor_limit, monitor_surface_not_allowed, monitor_first_seen_not_allowed, monitor_webhook_invalid, monitor_webhook_not_allowed, monitor_webhook_key_required
PATCH /monitors/{id}
Update monitor settings
In the URL.
id in path string required
What you send.
JSON body, required.
status string
One of active, paused
notify_email boolean
notify_webhook string
Pass empty string to clear.
notify_webhook_secret string
Shared secret for the webhook, or the PagerDuty integration key. Pass empty string to clear.
stealer_first_seen_only boolean
Only notify for stealer credentials this monitor has not recorded before.
What comes back.
200 Updated monitor.
success boolean required
data object
id string
user_id string
asset string
asset_type string
One of email, username, domain, ip
status string
One of active, paused
surface string
One of all, stealer
notify_email boolean
notify_webhook string
notify_webhook_secret string
stealer_first_seen_only boolean
last_checked string, date-time
last_hit_count integer
last_source_preview array of string
last_stealer_count integer
last_stealer_preview array of string
hits_total integer
last_hit_at string, date-time
last_notified_at string, date-time
created_at string, date-time
updated_at string, date-time
400 The request was malformed or invalid.
success boolean required
error string required
code string
Machine-readable error tag. Omitted whenever it is empty, which is most generic errors, so branch on status too.
One of quota_exceeded, hourly_limit, file_access_limit, plan_upgrade_required, upgrade_required, feature_not_enabled, email_verification_required, monitor_limit, monitor_surface_not_allowed, monitor_first_seen_not_allowed, monitor_webhook_invalid, monitor_webhook_not_allowed, monitor_webhook_key_required
403 A monitor setting your plan or account doesn't allow.
The same shape as 400.
404 Resource doesn't exist or isn't owned by the authenticated user.
The same shape as 400.
DELETE /monitors/{id}
Delete a monitor
In the URL.
id in path string required
What comes back.
200 Deletion ack.
success boolean required
data object
message string
404 Resource doesn't exist or isn't owned by the authenticated user.
success boolean required
error string required
code string
Machine-readable error tag. Omitted whenever it is empty, which is most generic errors, so branch on status too.
One of quota_exceeded, hourly_limit, file_access_limit, plan_upgrade_required, upgrade_required, feature_not_enabled, email_verification_required, monitor_limit, monitor_surface_not_allowed, monitor_first_seen_not_allowed, monitor_webhook_invalid, monitor_webhook_not_allowed, monitor_webhook_key_required