Every request authenticates with an API key sent as a Bearer token:Documentation Index
Fetch the complete documentation index at: https://drin.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
POST /v1/api-keys). The secret is shown once at creation — store it
immediately; you can’t read it back.
Choosing the sending project
A Drin account can hold several projects (each its own sender identity, domains, and keys). Two kinds of key decide how the project is chosen:Project-scoped key
Tied to one project. The project is implied — send with just the
Authorization header, nothing else.Account-wide key
Spans every project. You must name the project per request so Drin knows
who’s sending.
X-Drin-Product header:
X-Drin-Product is the canonical header. X-Drin-Sender is an accepted alias
(it’s what the SDK’s sender option, the CLI’s --sender flag, and the
DRIN_SENDER env var send). All three name the same thing.sender once when you construct the client:
Request headers
| Header | Required | Purpose |
|---|---|---|
Authorization | Always | Bearer <api-key>. |
Content-Type | On POST/PATCH | application/json. |
X-Drin-Product | Account-wide keys | Names the sending project (alias: X-Drin-Sender). |
Idempotency-Key | Optional | Safe-retry a POST (see below). |
Idempotency
Pass anIdempotency-Key on any POST to make it safe to retry — if the same
key arrives twice, Drin returns the original result instead of sending again.
Keys are honored for 24 hours, per sending project.
429 and 5xx) with
exponential backoff — and it only retries a POST when you’ve supplied an
Idempotency-Key, so a send is never duplicated.