---
title: Quickstart
description: Send your first transactional email in under five minutes.
---

This guide takes you from a fresh account to a sent message in
under five minutes. Everything here runs in sandbox mode, so you
don't need to verify a domain or wait for approval.

## 1. Create an account

Sign up at [console.zevsend.com](https://console.zevsend.com).
Your first team is created automatically and starts in sandbox.

## 2. Grab a test key

From the dashboard, open **Settings → API keys** and create one.
Copy the value once shown — we never store it in a recoverable
form. Test-mode keys start with `sk_test_`; production keys start
with `sk_live_` and only appear after your team goes live.

```text
sk_test_a1b2c3d4e5f6...
```

## 3. Send your first email

The body of your email is generated in your own codebase the
same way you'd render it for any other transactional email
service. Pass the HTML and we deliver it.

```bash
curl https://api.zevsend.com/v1/emails \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "to": "you@example.com",
    "subject": "Hello from ZevSend",
    "html": "<p>If you can see this, the integration works.</p>"
  }'
```

In sandbox the `from` is locked to a platform sender, so you
don't need to specify it. Once you verify a domain, you'll pass
your own `from` and the platform sender goes away.

You should get back a `202 Accepted` with the message id:

```json
{
  "id": "eml_01HXYZ...",
  "to": "you@example.com",
  "from": "onboarding@zevsend.dev",
  "subject": "Hello from ZevSend",
  "status": "sending",
  "sandbox": true,
  "created_at": "2025-05-24T12:34:56.789Z"
}
```

Open the **Messages** page in the dashboard and watch the state
transition from `sending` → `sent` → `delivered` in real time.

## 4. (Optional) Try SMS or WhatsApp

SMS and WhatsApp run through pre-approved templates rather than
raw bodies. Every team ships with a starter template you can use
for the first send — find its id on the **Templates** page.

```bash
curl https://api.zevsend.com/v1/sms \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+2348012345678",
    "template_id": "tpl_xxxxxxxxxxxxx",
    "variables": { "code": "847291" }
  }'
```

The response shape is identical to email — the same `id`,
`status`, `sandbox`, and `created_at` fields. One client; three
channels.

## What's next

- Set up a [verified domain](/guide/domains) so your live emails
  send from your own brand.
- Subscribe to [webhooks](/webhooks/) so your app reacts to
  delivery, bounce, and complaint events.
- Browse the [API reference](/api/) for the full surface,
  including every error code and parameter.