Skip to main content

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.

You need two things to send: an API key and a verified from address. Drin gives you a shared onboarding domain so you can send before touching DNS.
1

Get an API key

Create one in the dashboard under API Keys. The secret is shown once — store it somewhere safe, e.g. as DRIN_API_KEY.
New accounts get a key automatically during onboarding, already baked into the in-dashboard snippets. This page is the version you can copy anywhere.
2

Send your first email

Every snippet hits the same contract: POST https://api.drin.run/v1/emails with a from, a to array, and subject + html (or text).
curl https://api.drin.run/v1/emails \
  -H "Authorization: Bearer $DRIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": { "email": "onboarding@yourdomain.com" },
    "to": [{ "email": "you@example.com" }],
    "subject": "Hello from Drin",
    "html": "<p>It works! 🎉</p>"
  }'
A 202 Accepted with a message id means it’s queued. PHP, Go, Java, C#, Rust, Elixir, Kotlin, Swift and a no-code SMTP recipe are all in the dashboard’s in-app quickstart too.
3

Watch it land

Every send shows up on Email Activity within seconds, with its full transit log — queued → sent → delivered → opened. Or fetch it over the API: GET /v1/emails/{id}.
4

Send from your own domain

The shared onboarding domain runs in test mode — it can only deliver to your own address. To email anyone from your own brand, verify a domain on the Domains page (DKIM + SPF + DMARC, guided). Then list your verified domains in code and use one as your from:
const [d] = await drin.domains.listVerified();
await drin.emails.send({ from: { email: `hello@${d.domain}` }, /* … */ });
Account-wide keys (keys not scoped to a single project) must name the sending project per request with the X-Drin-Product: <project-id> header — or the SDK’s sender option. Project-scoped keys don’t need it. See Authentication.

Next steps

Templates

Store reusable HTML with {{merge}} variables and send by templateId.

Receive email

Turn on receiving, create an inbox, and reply in-thread.

Webhooks

Get delivery, bounce, complaint, open and click events in real time.

Give an agent email

Wire the MCP server into Claude, Cursor, or your own agent.