Skip to content
Transactional email API

Send email in one typed call.

Password resets, receipts, invites, and alerts go out from your domain with one call. Every send comes back as events you can act on, so a missing login link is something you see, not something a user reports.

A 200 from the API only means the request was accepted. What your user needs is the email in their inbox, and what you need is to know when it didn't get there.

Send, retry, schedule, and hear back.

  1. Call send.

    From the TypeScript SDK (async/await or Effect), REST, the CLI, or hosted MCP. Other languages use the public OpenAPI document.

  2. Retry without doubles.

    Send an idempotency key. A retried request inside 24 hours returns the first result.

  3. Schedule it if it can wait.

    Set a send time. Cancel or resume it before it goes.

  4. Hear what happened.

    Sent, delivered, bounced, complained, and failed events reach your webhook, signed and retried up to 8 times. Opens and clicks on tracked sends do too.

send.tsTypeScript
import { createClient } from "samva";

const samva = createClient({ apiKey: process.env.SAMVA_API_KEY! });

const message = await samva.email.send(
  {
    to: "ada@example.com",
    subject: "Reset your password",
    html: "<p>Use this link to choose a new password.</p>",
    text: "Use this link to choose a new password.",
  },
  { idempotencyKey: "password-reset-4417" },
);
  • One typed call
  • 24-hour idempotency
  • Signed events with 8 retries
  • OpenAPI 3.1 at /v1/openapi.json

Comparing providers? Read the transactional email API checklist.

Read next: Send email with Node.js · Send email with Python · Replace Amazon SES · Samva vs Amazon SES · Changelog

Common questions.

What counts as transactional email?

Email a person triggers or expects: sign-in links, password resets, receipts, invites, and alerts. Samva also sends announcements to a list through campaigns.

Which languages can I use?

The TypeScript SDK, plain REST from any language, or a client generated from the OpenAPI document.

What happens if my request times out and I retry?

Use an idempotency key. Samva returns the original result for 24 hours instead of sending a second email.

How do I know an email arrived?

Subscribe to delivery webhooks. Each event is signed so you can verify it came from Samva.

The rest of the email API.

Send your first email in minutes.

Related Resources