Reports have their own flow. For search-result exports, monitor match downloads and original leak files, see Downloads and exports. Attack Surface assessments have their own reports: see Attack Surface reports.
Availability and cost
Availability: Credential Report, included in every plan. Monthly schedules are also in every plan and need only a license in force. An active schedule holds a Scheduled reports slot. Cost: 1 unit of your monthly Credential Report allowance for each report you generate on demand. The unit is taken before the report is created and refunded ifgenerate_credential_comparison_report returns anything other than 2xx. A report that ends in Error keeps its unit, and so does a report you delete. Reports that a schedule produces use the schedule’s slot, not Credential Report units. Status, list, download and delete calls use no units.
Without the feature, or when your license is not active, generate_credential_comparison_report returns 403:
get_report_status, list_report_requests, download_report and delete_report have no plan or license check, so the reports you already generated stay readable. The schedule endpoints, including list_scheduled_reports, need a license in force.
When the month’s allowance is spent, generate_credential_comparison_report returns 429 and no report is created:
limit is your monthly allowance, packs included. The allowance resets at 00:00 UTC on the 1st of the month. Do not retry before then. A 429 whose body reads "message": "Rate limit exceeded" comes from the per-second rate limit or the API Calls allowance instead. See Rate limits.
Report schedules have their own refusals, including 409 when no slot is free.
On demand or every month
A schedule runs on the 1st of each month and covers the previous calendar month. You track, download and delete its reports the same way as on-demand ones.
Credential comparison report
Request fields, validation rules, and how to create, pause and edit a monthly schedule.
Generate, track and download
1
Start the report
Send the domains to compare and the period, in The call returns Keep the
dd-mm-yyyy:201:report_id. The status, download and delete calls all take it.2
Poll until it ends
Call
get_report_status with the report_id.id— the report ID.type— the report type,credential_comparison.status— the generation state, as readable text.metadata— what the report covers:domain,period_type,started_at,ended_atandmask_passwords.domaintakes the same form as on the list rows.
get_report_status returns readable text. The list calls return the same states as short codes. Compare against the value of the call you use.Poll every 30 to 60 seconds and stop at
Report ready or Error. Each poll that returns 200 uses one API call.3
Download the ZIP file
Once the status is The response streams the file with the content type and file name the report service sets.
Report ready, fetch the file with download_report.--fail stops curl from saving a JSON error body as the file.Called before the report is ready, download_report returns 400 with a message. Keep polling, then retry.List reports
list_report_requests returns your organization’s reports, on-demand and scheduled, one page at a time.
page— 1-based. Defaults to1.page_size— defaults to10, max100.report_type—credential_comparisonreturns only credential comparison reports.status—started,in_progress,readyorerror.domain— filters on the report’sdomainfield.ordering—create_date,-create_date,update_dateor-update_date.
page until it reaches total_pages. Each row carries:
id— thereport_idfor the status, download and delete calls.typeandstatus— the report type and its generation state.domain— the domains the report covers. On a credential comparison report it can hold them as a JSON-encoded list, as in the example. Parse it when it starts with[.from_date/to_date— the report period, indd-mm-yyyy.frequency—on_demandfor a one-off report,monthlyfor a report a schedule produced.mask_passwords— whether leaked passwords are masked in the report.created_at/updated_at— when the report was created and last updated, indd-mm-yyyy HH:MM:SS.
list_scheduled_reports. See Credential comparison report.
Delete a report
delete_report removes a report and returns 204. Deleting does not refund the report’s Credential Report unit.
409. Delete it once its status is ready or error.
Errors
Any other
429 on generate_credential_comparison_report comes from the report service, and its unit is refunded. After a 502 or 504 on generate_credential_comparison_report, list your reports before you send it again: the report may have started. Errors explains how to handle each status.