to, cc, or bcc fields.
How Sandbox Keys Work
When you send an email using a sandbox API key:- Recipients are overridden — all
to,cc, andbccaddresses are replaced with the email address of the user who created the key. - The sender domain is overridden — the
fromaddress domain is rewritten todev.uselettr.com, a pre-verified sandbox domain. The local part (before@) is preserved. - No domain verification required — you don’t need to set up or verify a sending domain to start testing.
- No billing impact — sandbox sends are free and don’t count against your monthly sending quota or daily limits.
- Traffic is isolated — sandbox emails are sent through a dedicated subaccount, fully separated from your live sending traffic.
For example, if you send to
customer@example.com from noreply@yourdomain.com, the sandbox key will actually deliver the email to your account email from noreply@dev.uselettr.com.Key Format
Sandbox API keys have a distinct prefix so you can easily identify them:lttr_ prefix. This makes it easy to spot if a sandbox key is accidentally used in production.
Creating a Sandbox Key
- Navigate to Settings > API Keys in your dashboard
- Click Create API Key
- Enter a descriptive name (e.g., “Local Development”, “CI Tests”)
- Select your desired permission level
- Set the Type to Sandbox
- Click Create
Rate Limits
Sandbox keys have stricter rate limits than live keys to prevent abuse:| Limit | Threshold | Window |
|---|---|---|
| Per-minute | 10 requests | 1 minute |
| Per-day | 100 requests | 24 hours |
429 status code with a Retry-After header.
Allowed Endpoints
Sandbox keys can access email sending and read-only endpoints. Write operations on resources like domains, webhooks, and templates are blocked. Allowed:POST /api/emails— Send an emailGET /api/emails— List sent emailsGET /api/emails/{requestId}— Get email detailsGET /api/emails/events— List email eventsPOST /api/emails/scheduled— Schedule an emailGET /api/emails/scheduled/{transmissionId}— Get scheduled email detailsDELETE /api/emails/scheduled/{transmissionId}— Cancel a scheduled emailGET /api/templates— List templatesGET /api/templates/{slug}— Get template detailsGET /api/templates/{slug}/merge-tags— Get template merge tagsGET /api/domains— List domainsGET /api/domains/{domain}— Get domain detailsGET /api/webhooks— List webhooksGET /api/webhooks/{webhookId}— Get webhook detailsGET /api/auth/check— Verify API key validity
403):
POST /api/templates— Create a templatePUT /api/templates/{slug}— Update a templateDELETE /api/templates/{slug}— Delete a templatePOST /api/domains— Create a domainPOST /api/domains/{domain}/verify— Verify a domainDELETE /api/domains/{domain}— Delete a domainPOST /api/webhooks— Create a webhookPUT /api/webhooks/{webhookId}— Update a webhookDELETE /api/webhooks/{webhookId}— Delete a webhookPOST /api/sms— Send SMSPOST /api/whatsapp— Send WhatsApp message
Data Isolation
Sandbox keys enforce strict data isolation:- Sent email lists only show emails sent to the key owner’s address
- Email event lists are filtered to the key owner’s address
- Scheduled email details are only accessible if the key owner is a recipient
- Cancelling scheduled emails requires the key owner to be a recipient
Viewing Sandbox Events in the Dashboard
You can view sandbox email events in the dashboard by toggling the Sandbox switch on the Events page. This filters the event log to show only sandbox traffic for your account.Example Usage
Use a sandbox key exactly like a live key. The only difference is the behavior behind the scenes.customer@example.com. The from address will be rewritten to noreply@dev.uselettr.com.
When to Use Sandbox Keys
Local Development
Test your integration locally without affecting real recipients or requiring a verified domain.
CI/CD Pipelines
Run integration tests that verify email sending works without delivering to actual users.
Staging Environments
Validate email flows in staging with real API calls while keeping all emails contained.
Onboarding & Demos
Explore the API and test payloads before setting up your production sending domain.