send0

Quickstart

Send your first email in under 5 minutes.

Quickstart

This guide walks you through sending your first email with send0. You'll go from zero to a delivered email in under 5 minutes.

1. Create an account

Sign up at app.send0.dev. You'll get a workspace with 3,000 free emails per month — no credit card required.

2. Get your API key

Navigate to Settings > API Keys in the dashboard and create a new key. You'll receive a key that starts with sk_live_.

Copy it immediately — you won't be able to see it again.

Note: Use sk_test_ keys during development. Test mode keys never send real emails — they simulate the full API flow without any actual delivery.

3. Install the SDK

npm install send0

4. Add and verify your domain

Before sending, you need to verify ownership of your sending domain. Go to Settings > Domains in the dashboard and add your domain.

You'll be given DNS records (SPF, DKIM, DMARC) to add at your domain registrar. Verification usually completes within a few minutes.

5. Send your first email

Using the SDK

import { Send0 } from 'send0';

const send0 = new Send0('sk_live_...');

const email = await send0.emails.send({
  from: 'hello@yourdomain.com',
  to: 'user@example.com',
  subject: 'Hello from send0!',
  html: '<h1>Welcome</h1><p>You just sent your first email with send0.</p>',
});

console.log(email.id); // em_xxxx

Using curl

curl -X POST https://api.send0.dev/v1/emails \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "from": "hello@yourdomain.com",
    "to": "user@example.com",
    "subject": "Hello from send0!",
    "html": "<h1>Welcome</h1><p>You just sent your first email with send0.</p>"
  }'

Both methods return a response with the email ID:

{
  "id": "em_xxxx",
  "status": "queued",
  "from": "hello@yourdomain.com",
  "to": "user@example.com",
  "subject": "Hello from send0!",
  "created_at": "2026-04-14T10:30:00Z"
}

6. Check email status

Retrieve the status of a sent email by its ID.

const status = await send0.emails.get('em_xxxx');
console.log(status.status); // "delivered"
curl https://api.send0.dev/v1/emails/em_xxxx \
  -H "Authorization: Bearer sk_live_..."

Email status progresses through: queuedsentdelivered. If something goes wrong, the status will be bounced or failed.

7. Test mode

During development, use a test API key (prefix sk_test_) instead of your live key. Test mode simulates the full API flow — validation, queuing, event generation — without sending real emails.

const send0 = new Send0('sk_test_...');

// This goes through the full flow but never hits a real inbox
await send0.emails.send({
  from: 'hello@yourdomain.com',
  to: 'user@example.com',
  subject: 'Test email',
  html: '<p>This will not be delivered.</p>',
});

Next steps

Now that you've sent your first email, explore what else send0 can do:

  • Templates — Create reusable email templates with dynamic variables.
  • Webhooks — Get real-time notifications when emails are delivered, opened, or bounced.
  • Contacts — Manage recipients and suppression lists.
  • Authentication — Learn about API key types and permissions.
  • Error Handling — Handle errors gracefully in production.