Sendry Docs

Quickstart

Send your first email with Sendry in under 5 minutes.

1. Get an API key

Sign in to the Sendry dashboard, go to API Keys, and create a new key. Copy the key — it starts with sn_live_ for live mode or sn_test_ for test mode.

Store it as an environment variable:

export SENDRY_API_KEY="sn_live_your_api_key_here"

2. Verify a sending domain

Before sending, you need at least one verified domain. Go to Domains in the dashboard, add your domain, and follow the DNS setup guide. DNS propagation usually takes a few minutes.

For testing, use test-mode API keys — they bypass domain verification and capture emails to the Test Inbox instead of delivering them.

3. Send your first email

npm install sendry-sdk
# or: bun add sendry-sdk
import { Sendry } from "sendry-sdk";

const sendry = new Sendry(process.env.SENDRY_API_KEY!);

const email = await sendry.emails.send({
  from: "you@yourdomain.com",
  to: "user@example.com",
  subject: "Hello from Sendry!",
  html: "<h1>Welcome!</h1><p>Your first email just worked.</p>",
});

console.log(email.id); // em_abc123
console.log(email.status); // "queued"
pip install sendry
import os
from sendry import Sendry

client = Sendry(api_key=os.environ["SENDRY_API_KEY"])

email = client.emails.send(
    from_="you@yourdomain.com",
    to="user@example.com",
    subject="Hello from Sendry!",
    html="<h1>Welcome!</h1><p>Your first email just worked.</p>",
)

print(email.id)     # em_abc123
print(email.status) # queued
go get github.com/sendry-dev/sendry-go
package main

import (
    "fmt"
    "os"
    "github.com/sendry-dev/sendry-go"
)

func main() {
    client := sendry.New(os.Getenv("SENDRY_API_KEY"))

    email, err := client.Emails.Send(sendry.SendEmailRequest{
        From:    "you@yourdomain.com",
        To:      "user@example.com",
        Subject: "Hello from Sendry!",
        HTML:    "<h1>Welcome!</h1><p>Your first email just worked.</p>",
    })
    if err != nil {
        panic(err)
    }

    fmt.Println(email.ID)     // em_abc123
    fmt.Println(email.Status) // queued
}
curl -X POST https://api.sendry.online/v1/emails \
  -H "Authorization: Bearer $SENDRY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "you@yourdomain.com",
    "to": "user@example.com",
    "subject": "Hello from Sendry!",
    "html": "<h1>Welcome!</h1><p>Your first email just worked.</p>"
  }'

Response:

{
  "id": "em_abc123",
  "from": "you@yourdomain.com",
  "to": ["user@example.com"],
  "subject": "Hello from Sendry!",
  "status": "queued",
  "created_at": "2025-03-12T09:00:00Z"
}

4. Check delivery status

const email = await sendry.emails.get("em_abc123");
console.log(email.status); // "delivered"

Status values: queuedsentdelivered (or bounced / complained).

5. Set up a webhook (optional)

Get notified when delivery events happen:

await sendry.webhooks.create({
  url: "https://yourapp.com/webhooks/sendry",
  events: ["email.delivered", "email.bounced", "email.opened", "email.clicked"],
});

See the Webhook Verification guide for payload signing and HMAC verification.

Next steps

On this page