ExonaExona API
API Reference

API Overview

Base URL, authentication, request format, and response conventions.

Base URL

https://platform.exonalab.com/api/v1

All endpoints are relative to this base URL. All requests must be made over HTTPS.


Authentication

All requests require a Bearer token in the Authorization header.

Authorization: Bearer exo_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

See Authentication for how to obtain and manage API keys.


Request format

All POST request bodies must be JSON with the Content-Type: application/json header set.


Response format

All responses are JSON. All successful responses are wrapped in a consistent top-level structure. All error responses use the standard error envelope.


Response headers

Every response includes the following headers:

HeaderDescription
X-Request-IDA unique identifier for this request. Include this in any support communications.
X-RateLimit-LimitMaximum requests allowed in the current window.
X-RateLimit-RemainingRequests remaining in the current window.
X-RateLimit-ResetUnix timestamp when the rate limit window resets.

Rate limiting

The default rate limit is 100 requests per hour per API key. If you exceed this limit, you receive a 429 Too Many Requests response with a Retry-After header indicating how many seconds to wait before retrying.

HTTP 429 Too Many Requests
Retry-After: 47
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1743602000

If your use case requires higher limits, contact support@exonalab.com.


HTTP status codes

CodeMeaning
200 OKSuccessful retrieval.
201 CreatedScan successfully created.
400 Bad RequestInvalid request: see the error body for details.
401 UnauthorizedMissing or invalid API key.
403 ForbiddenValid key but access denied (e.g. IP not in allowlist).
404 Not FoundThe requested resource does not exist.
429 Too Many RequestsRate limit exceeded.
500 Internal Server ErrorExona-side error. The X-Request-ID header is always present: include it in support requests.

Endpoints

MethodPathDescription
POST/v1/scansCreate a new scan for a company.
GET/v1/scans/{id}Retrieve a scan by ID.

On this page