API reference
The complete surface area. Sending uses an API key; the management API uses a session token. All requests are JSON over HTTPS.
Base URL
https://api.mailkite.dev
Check service health any time with
GET /api/health → { ok: true }.
Endpoints
Grouped by area — each group has its own page, and every endpoint on it expands to its request and response schema:
email.received — the request we make to you
auth: Signed Machine-readable schemas
Every request and response body is described by a
JSON Schema
(draft-07) — the same schemas our SDKs and MCP server validate against, so
they can't drift from what the API enforces. Fetch them all from
GET /v1/schemas, or one at a time:
# every schema, with its URL
curl https://api.mailkite.dev/v1/schemas
# one schema — point a validator straight at it
curl https://api.mailkite.dev/v1/schemas/send-request.json
curl https://api.mailkite.dev/v1/schemas/email-received-event.json
Contract version 0.19.0. Schemas are served as
application/schema+json with an absolute $id, and are
additive — we add fields, we don't remove or repurpose them.
Conventions
- IDs are prefixed by type:
dom_,rte_,msg_,dlv_,usr_. - Timestamps are Unix epoch milliseconds. Where a timestamp is central — like the inbound event's
receivedAt— an ISO 8601 twin sits alongside it. - Errors use standard HTTP status codes with a JSON body — see Errors.
- Webhook signatures use the
x-mailkite-signatureheader — see Verifying signatures. - Requests must be HTTPS (localhost over HTTP is allowed only for webhook testing).
New here? Start with the Quickstart.