Skip to main content
The credential comparison report puts a set of domains side by side, such as acme.com, its country domains and its subsidiaries. It compares the leaked credentials found for each domain over a period you choose. It covers employees who use work addresses on personal accounts, outside access to internal systems, weak passwords, and leaked passwords that still meet current password policies. The download is a ZIP file with the report as a Word document and CSV files of the detailed findings. In the dashboard this is Exposure → Credential Reports, where the report is called the Leaked Credential Comparison Report. Run it once for a period you choose, or schedule it every month. Reports covers polling, downloading, listing and deleting.

Availability and cost

Availability: Credential Report, included in every plan. Report schedules are also in every plan and need only a license in force. Each active schedule holds one Scheduled reports slot. Your plan sets the number of slots, and it can be zero. Cost: 1 unit of your monthly Credential Report allowance for each report you generate on demand, refunded if the call does not return 2xx. A schedule uses no units: its slot covers the reports it produces. Listing and updating schedules uses no units or slots, except that activating a paused schedule takes a slot. Both 403s read:
When the month’s Credential Report allowance is spent, generation returns 429 and no report is created. Reports shows the body. When every slot is taken, creating or activating a schedule returns 409 and nothing changes:
limit is your slot count, packs included. Pause a schedule to free its slot. Plans and quotas explains slots.

Generate a report

generate_credential_comparison_report takes the domains to compare and a period.
The call returns 201 with the report_id:
Then poll the status and download the file. A request that breaks a rule returns 400 with the field and its error. Nothing is generated and no unit is used:

Schedule a monthly report

create_report_schedule produces a credential comparison report for the same domains every month.
The response carries the schedule’s ID:
When the schedule runs:
  • Right away, if it is active. Creating an active schedule starts a report for the previous calendar month.
  • On the 1st of each month. Each run covers the previous calendar month.
  • Until end_date. The schedule stops after that date.
A paused schedule produces no reports. If your plan has no Scheduled reports slots, you can only create paused schedules.

List schedules

list_report_schedules returns every schedule as a plain array, without pages.
  • id — the schedule_id for the update and list-reports calls.
  • org_id and org_name — your organization.
  • domains, is_active, end_date and mask_passwords — the schedule’s settings. end_date is null when none is set.
  • create_date / update_date — in dd-mm-yyyy HH:MM:SS.
Count the entries with is_active: true to see how many slots your schedules hold.

Change, pause or resume a schedule

update_report_schedule changes a schedule. Pass its id in the path. There is no delete: pause a schedule you no longer need.
Send domains and mask_passwords on every update. domains is required, and a request without it returns 400 with {"domains": ["This field is required."]}. mask_passwords defaults to false, so an update that leaves it out turns masking off. Read the schedule’s current values from list_report_schedules first.
  • is_active: false pauses the schedule and frees its slot.
  • is_active: true on a paused schedule resumes it and takes a slot. With no free slot, the call returns 409 and the schedule stays paused.
  • end_date changes the end date. Leave it out to keep the current one. Send null or "" to remove it.
  • schedule_id must be a UUID. Any other value returns 404.

List the reports a schedule produced

list_scheduled_reports returns the reports one schedule produced. page defaults to 1. page_size defaults to 10.
Each row’s id is a report_id. Pass it to get_report_status and download_report like any other report. status uses the short codes: started, in_progress, ready or error. from_date and to_date can be empty.

Errors

These are the errors of the four schedule endpoints. Reports lists the errors of generation, status, download, list and delete. Errors explains how to handle each status.

Endpoints