Retrieve a Scan
Retrieve a scan by ID. Poll this endpoint until status is "completed" or "failed".
Endpoint
Path parameters
idstringrequiredThe scan ID returned by POST /v1/scans.
Example: scn_01hx7m2d3e4f5g6h7j8k9l0mn
Request headers
AuthorizationstringrequiredBearer exo_live_... or Bearer exo_test_...
Response
idstringThe scan ID.
statusstring"processing" | "completed" | "failed"
created_atstringISO 8601 timestamp of when the scan was created.
completed_atstringISO 8601 timestamp of when the scan completed. Present only when status is "completed" or "failed".
companyobjectThe company the scan was run for.
name(string): company name as submittedwebsite(string): company website as submitted
resultobjectThe full scan result. Present only when status is "completed". See Scan Result for the complete schema.
errorobjectPresent only when status is "failed". Contains code, message, and optionally hint.
Polling
The recommended polling interval is 10 seconds. The response includes a Retry-After header while status is "processing", which suggests how many seconds to wait before the next poll:
Most scans complete in 30–120 seconds. Set a reasonable timeout in your polling loop (e.g. 5 minutes) and handle a persistent "processing" status as a soft error.
Examples
Response: Processing
Response: Completed
Response: Failed
Error codes
| Code | HTTP | Description |
|---|---|---|
SCAN_NOT_FOUND | 404 | No scan exists with this ID under your API key. |
AUTHENTICATION_REQUIRED | 401 | No API key provided. |
INVALID_API_KEY | 401 | The provided key is invalid or revoked. |