- Base URL:
https://api.modem.dev/v1 - Auth: organization API key via a bearer token
- Format: JSON over HTTPS
The interactive playground on each endpoint page lets you make live, authenticated requests. Paste an API key into the Authorization
field to try it out.
Authentication
Every request must include an organization API key in theAuthorization header:
modem_ prefix.
Create your first key
- Open the Modem dashboard and go to Settings → API Keys. (Key management is restricted to organization owners.)
- Click Create Key and give it a name.
- Copy the key immediately — it is displayed once and cannot be retrieved again. If you lose it, revoke it and create a new one.
Make a request
List the most recent topics for your organization:401 Unauthorized. A key for one organization can
never read another organization’s data.
Rate limits
Each API key is rate limited to 120 requests per minute. When a key exceeds its limit, requests return429 Too Many Requests until the window resets — back off and
retry. Limits are per key, so you can isolate workloads by minting separate keys.
A shared edge firewall also applies coarse, IP-based protection in front of the per-key limit. Well-behaved clients will only ever
encounter the per-key
429.Idempotency
Write requests (POST and PATCH) accept an optional Idempotency-Key header so that a
retried request — after a network blip, a timeout, or an ambiguous failure — can’t create
duplicate people or companies, or re-trigger a cost-bearing enrichment. Idempotency is
opt-in: omit the header and the request runs normally, and safe methods (GET, HEAD)
ignore it entirely.
Send a unique value per logical operation, and reuse the same key when you retry that
operation. A UUID or ULID is ideal; keys can be up to 255 characters.
Errors
Errors use standard HTTP status codes and a JSON body:| Status | Meaning |
|---|---|
401 | Missing, invalid, or expired API key |
404 | The resource does not exist (or isn’t in your org) |
409 | Idempotency conflict — the Idempotency-Key was reused with a different payload, or a request with the same key is still in progress |
422 | The request failed validation |
429 | The key exceeded its rate limit — back off and retry |
500 | An unexpected server error |