For developers

An email API that stays out of your way.

Send receipts, password resets and alerts with one simple request. Retries are safe, keys only do what you allow, and every message is easy to find later.

curl -X POST https://app.getread.com/api/v1/transactional/send \
  -H "Authorization: Bearer gr_api_…" \
  -H "Idempotency-Key: order-1048-shipped" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "[email protected]",
    "subject": "Your order is on its way",
    "template_id": "0b9e5c3a-6f1d-4c2e-9a7b-2d8f4e1c6a90",
    "attributes": { "first_name": "Maya", "order_number": "1048" }
  }'
That’s the whole request. A 201 means your email is queued, and delivery carries on in the background.

Your domain

Send from your own domain, with a little help.

Add a few DNS records and we’ll check them for you. getread guides you through DKIM, SPF and DMARC, so inboxes know your email really comes from you.

Once your domain is verified and your workspace is approved, you’re ready to send.

  • Copy each record straight into your DNS provider
  • See at a glance when everything is verified
The domain page for acmestudio.example is marked Ready and lists the ownership, DKIM signing key and DMARC TXT records as verified, with a health panel showing every check verified.

API keys

Keys that only do what you allow.

Give each integration its own key and choose exactly what it can do. Read and write are separate, so a key never gets more access than it needs.

  • Scopes like transactional:send and templates:read
  • An optional expiry date for each key
  • Revoke a key whenever it’s no longer needed
The Create API Key dialog for a key named Storefront integration, with separate read and write checkboxes for campaigns, templates, automations and webhooks plus a transactional send permission. Four permissions are selected.

Webhooks and history

Know what happened to every message.

Bounces and complaints reach your webhook endpoint as they happen, so your app can react on its own. Opens and clicks from your campaigns arrive the same way.

Every send also lands in Mailroom, with a step-by-step timeline that uses the provider’s own timestamps.

  • Opens on transactional email are optional, and you choose per send
  • Search any message by subject, address or message ID
Read the API docs
The event history for an order email shows a timeline from created, sending, sent and delivered to webhook delivered, followed by observed opens in Apple Mail on mobile and Chrome on desktop.

The details

Small things that make it pleasant to build on.

REST and JSON under /api/v1, with the care you’d hope for.

  • Safe retriesSend the same Idempotency-Key and payload, and you get the original send back. A different payload with the same key returns 409.
  • Saved templatesKeep your design in getread and pass a template_id with up to 16 KiB of attributes.
  • Or bring your own HTMLSend HTML, plain text or both, up to 256 KiB.
  • TagsAdd tags to a send to note what it was for.
  • Clear rate limitsSending too fast returns 429 with a Retry-After header, so you know when to try again.
  • Cursor paginationLists come back a page at a time, with a next_cursor for the next one.
  • An OpenAPI referenceDownload the OpenAPI (Swagger 2.0) reference from the API docs.
  • One shared poolTransactional and marketing email share one monthly pool. See pricing.

Questions developers ask

Do retries send duplicates?
No. Send the same Idempotency-Key with the same payload, and you’ll get the original send back. If the payload is different, the API returns 409, so nothing goes out twice by mistake.
What do I need before I can send?
A verified sending domain and an approved workspace. We guide you through the DNS records and check them for you.
What does a 201 response mean?
Your email is queued. Delivery happens in the background, and you can follow each step in Mailroom or through your webhooks.
Is there an SMTP relay or an SDK?
No. getread is a REST API with JSON, so any HTTP client works. If you’d like to generate a client, the OpenAPI reference in the API docs is there for you.
What happens if I send too fast?
You’ll get a 429 with a Retry-After header that tells you when to try again.
Do transactional emails count toward my plan?
Yes. They share one monthly pool with your marketing email, so you never have to guess how to split it. See pricing.

Send your first email today.

Verify your domain, create a key, and you’re one request away.

[TRIAL TERMS]