Skip to content
Claim your free business email

Transactional email API: Email your product sends, delivered.

Receipts, password resets and alerts go out over one REST call, and every message keeps a timeline you can read back.

Northwind · Emails
Emails
ToStatus
maya@example.comDelivered
leo@example.comDelivered
priya@example.comOpened
sam@example.comScheduled
ops@example.comSent
old@example.comBounced

em_8f2c41…

Your receipt for order #2041

From
receipts@mail.northwind.dev
To
maya@example.com
Template
receipt · v3

Timeline

  1. Queued10:04:12.031
  2. Sent10:04:12.418
  3. Delivered10:04:13.207
  4. Opened10:06:40.992

Webhooks

email.delivered200
What every send gets

The hard parts are already built. Retries, templates, domains and events come with the first request, not the fiftieth.

One call sends it. Post one request over plain HTTPS from any language, with typed clients for Node and Python coming soon. Every call lands in your request log.

Email API →

// checkout.ts

await rasket.emails.send(

{

from: "receipts@mail.northwind.dev",

to: ["maya@example.com"],

template: { id: "receipt" },

},

{ idempotencyKey: "order-2041" },

);

Request log

  • POST /emails200184 ms
  • POST /emails200replayed
  • POST /emails/batch200212 ms
  • PATCH /emails/em_…20096 ms

Safe to retry.

Put an Idempotency-Key on a send. For 24 hours a repeat returns the first response instead of a second email.

Idempotency-Key24 hoursno duplicates

Batch and schedule.

Send up to a hundred messages in one request, or schedule one up to thirty days ahead and move or cancel it while it waits.

POST /emails/batchscheduled_atcancel

Write it once. Keep the content out of your code. Send a published template by ID or alias and pass the values.

Templates →
Templates › receiptv3 · publishedv4 · draft

Subject: Your receipt for order {{order_id}}

Hi {{first_name}},

Thanks for your order. We charged {{total}} to your card ending {{card_last4}}.

View your order

Variables

  • first_namestring · “there”
  • order_idstring
  • totalnumber
  • card_last4string

Typed variables.

Each variable has a type and an optional fallback. A wrong or missing value is refused, not rendered.

stringnumberbooleanobjectlist

Versioned.

Edits open a draft. Sends use the published version, and every email records the version it used.

v2v3 · publishedv4 · draft

Signed as you. Add a domain and we generate its records. Publish them and verification runs on its own.

Domains →
mail.northwind.devVerified
TypeNameStatus
TXTrasket._domainkeyVerified
CNAMErasketVerified
TXT_dmarcOptional

A key per domain.

A 2048-bit DKIM key, SPF, and a custom return path so bounces land on the message's timeline.

DKIM 2048-bitSPFReturn pathDMARC

Dedicated IPs.

An add-on on Scale. The address is set up when you buy it and warms up on its own schedule while your mail keeps flowing.

Scale add-onautomatic warm-up

Nothing goes missing. Deliveries, bounces, complaints, opens and clicks are recorded on the email and posted to your endpoint.

Webhooks →

em_8f2c · Reset your password

  1. Queued10:03:02.114
  2. Sent10:03:02.530
  3. Delivered10:03:03.318
  4. Clicked10:04:51.006

Webhook deliveries

Replay
  • email.delivered200
  • email.clicked500 · retry 2 of 10
  • email.bounced200
  • suppression.added200

Signed webhooks.

Every request is signed, delivered up to ten times over about 16 hours, and kept so you can replay it.

HMAC-SHA256retriesreplay

Suppressions.

A permanent bounce or a spam complaint adds the address to your suppression list. Later sends to it are skipped and recorded.

email.bouncedemail.complainedemail.suppressed

Let your agent set it up. Connect an assistant to the MCP server and it can take an empty account to a verified domain and a sent email.

For AI agents →
Set up Rasket for mail.northwind.dev and send me a test email.
  1. ✓Added the domain mail.northwind.dev
  2. ✓Gave you three DNS records to publish
  3. ✓Domain verified
  4. ✓Sent a test email · em_91ad…

Connected with OAuth · scopes: domains, emails · no API key in the prompt

No key in the prompt.

The assistant signs in with OAuth for one team, with only the scopes you approved. You can revoke it at any time.

OAuthscopesrevocable

Docs as Markdown.

Add .md to any docs URL. The whole API is also served as an OpenAPI document.

.mdtext/markdownOpenAPI
Integrate

Integrate now. One prompt to your agent, or one request from your code.

1. Connect, once
claude mcp add --transport http rasket "https://api.rasket.com/mcp?toolset=setup,send"
2. Then say
Set up Rasket for this project: create my account if I don't have one, add and verify my sending domain, and send me a test email.

Claude opens a browser tab to sign you in to Rasket (create an account there if you're new) and asks for the permissions it needs. It then adds the domain, hands you the DNS records, waits for them to verify, and sends. No API key ever touches the prompt.

Read the API reference →

Pricing

Start free. Move up when your volume does.

See all plans
  • Free

    $0/ mo

    3,000 emails a month

    • 100 emails a day
    • 3 domains
  • Pro

    From$20/ mo

    50,000 emails a month

    • 10 domains
    • No daily email limit
  • Scale

    From$90/ mo

    100,000 emails a month

    • 1,000 domains
    • Priority support
Questions

Before you send. What people ask first.

Does a 200 mean the email was delivered?

No. A 200 with an ID means we have recorded the message and taken responsibility for sending it. Delivery is reported later, as an event on the email and on your webhook endpoints, usually within seconds.

How do I stop a retry from sending the same email twice?

Send an Idempotency-Key header and reuse it for every retry of the same work. For 24 hours a repeat returns the first response instead of sending again, and a different payload under a used key is refused.

What happens if I send to an address that has bounced?

Nothing goes out to it. A permanent bounce or a spam complaint puts the address on your suppression list, and a later send is skipped and recorded as suppressed. The request still answers 200 with an ID.

Do I have to move my DNS?

No. Your DNS stays where it is and you add three records to it. We check them as soon as you add the domain and keep re-checking, so it verifies on its own once they resolve.