# Test against the real pipeline, dry

> An email testing sandbox that runs the real pipeline dry: real validation, rendering, and events, a hosted capture inbox, and nothing ever leaves.

Canonical: https://emailfast.dev/features/sandbox

## A test mode that isn't a mock

Most email testing sandbox setups stub the interesting parts. Ours doesn't:
sandbox keys (ef_sandbox_…) that run the real pipeline dry: real validation, real rendering, real events, a hosted capture inbox — and no email leaves. It's free and unlimited on every plan, and it's live today.

## How it works

1. Create a key with the `ef_sandbox_` prefix. The prefix is the mode — there's no separate environment to configure.
2. Point anything at it: REST sends, batches, templates, the browser SDK. Requests run the entire pipeline — validation, rendering, event generation — and stop at the wire.
3. Open the hosted capture inbox and see each message exactly as it would have left.
4. Assert on the event stream or webhook deliveries in CI — the same event shapes production emits.

Sandbox rows never touch production reputation ledgers. Test as loudly as you like;
warmup schedules and reputation stats don't hear it.

## The evidence

:::panel Same call, sandbox key
```bash
curl https://api.emailfast.dev/v1/emails \
  -H "Authorization: Bearer ef_sandbox_..." \
  -d '{ "to": "test@example.com", "subject": "CI run 1847", "html": "<p>ok</p>" }'
```
A real `202`, a real message id, a real timeline — and the message lands in the
capture inbox instead of the internet.
:::

## Honest limits

:::tradeoffs Dry means dry
The sandbox proves your integration, not your reputation. There is no remote mail
server in the loop, so delivery outcomes are simulated, and it can't tell you how a
real mailbox provider will treat your domain — those questions need live sending,
which opens at launch. It also isn't a rendering matrix: the capture inbox shows the
compiled message, not screenshots across twenty clients.
:::

## Where to go next

Wire it into a test suite with the [Node quickstart](/docs/quickstart-node), then
browse the [full API surface](/features/email-api) it exercises and the
[webhooks](/features/webhooks) it feeds. If you currently pay for a separate service
just to test email, the [comparison](/compare/mailgun-alternative) is worth five
minutes.

## Is the sandbox really free?

Yes — free and unlimited on every plan, including the free tier. Sandbox sends never count toward your sending volume.

## Do webhooks and events fire for sandbox sends?

Yes. Sandbox messages generate the same event shapes production emits, delivered over the same signed webhooks , so your CI can assert on real behavior.

## Can sandbox testing hurt my sender reputation?

No. Sandbox rows never touch production reputation ledgers — a thousand test blasts leave warmup schedules, reputation scores, and suppression stats exactly as they were.

## How is this different from a separate capture service?

It runs your actual provider's pipeline — the same validation, rendering, suppression logic, and event stream your production sends will use — rather than a generic trap that catches SMTP and tells you nothing about your integration.
