List reports
Find reports in your workspace, reconcile stored application IDs, or backfill your local report index.
Before you call
Use createdAfter/createdBefore for exclusive time bounds. External-reference filtering requires both source and ID. include=reference adds the reference to each returned report.
Required scope: reports:read.
What happens next
Read items and pass nextCursor unchanged to the next request with the same filters. null means the current list is exhausted. Reports are newest first.
Recovery
Start from the first page if filters change or a cursor is invalid. Newer reports inserted during pagination appear on a fresh first page. Old unsigned cursors are no longer accepted.
Follow the complete workflow · Errors and retries
ApiKeyAuthorizationBearer <token>limit?integerPage size, 1–100; defaults to 25.
1 <= value <= 10025externalReferenceSource?stringExternal source slug. Must be supplied with externalReferenceId.
^[a-z0-9]+(?:-[a-z0-9]+)*$1 <= length <= 64externalReferenceId?stringCase-sensitive application ID. Must be supplied with externalReferenceSource.
1 <= length <= 128include?stringSet to reference to include externalReference in report summaries; omitted by default for compatibility.
cursor?stringOpaque cursor from the previous page. Repeat all filters unchanged. Never decode or construct a cursor yourself.
1 <= length <= 2048createdAfter?stringExclusive lower creation-time bound, ISO 8601 with timezone.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$date-timecreatedBefore?stringExclusive upper creation-time bound, ISO 8601 with timezone; must be later than createdAfter.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$date-timeRead items and pass nextCursor unchanged to the next request with the same filters. null means the current list is exhausted. Reports are newest first.
application/json- response
data*# Set PROBB_URL and PROBB_API_KEY. Replace RESOURCE_ID if present.curl --fail-with-body -X GET "$PROBB_URL/api/v1/reports" \ -H "Authorization: Bearer $PROBB_API_KEY"{ "data": { "items": [ { "id": "report_example", "createdAt": "2026-09-29T12:00:00.000Z", "reportSystemVersion": "assigned-report-version", "status": "completed", "attemptId": "attempt_example", "code": null, "jobDescription": { "id": "job_example", "title": "Backend Engineer", "company": "Example Company" }, "candidate": { "name": "Alex Example", "currentRole": "Software Engineer" }, "result": { "score": 8, "summary": "Relevant backend delivery experience; validate incident response depth.", "scoreReasoning": "Strong API and database evidence, with limited detail on production incidents." } } ], "nextCursor": null }}