svix-id, svix-timestamp, svix-signature headers).
Mirror URL
https://resend-a7k2.mirra.run.
SDK compatibility
Official Resend SDKs work against the mirror with zero code changes when routed via the TLS proxy:- Node
- Python
- Without the TLS proxy
Supported surface
Resources
Emails
Emails
Send single emails, batch-send, retrieve by ID, list. HTML + plain text bodies, attachments, tags, reply-to, cc/bcc.
Domains
Domains
Create, verify, retrieve, list, delete. Verification status transitions (
pending → verified / failed). DNS record generation.API Keys
API Keys
Create, list, revoke. Name, scope, permission levels. Last-used tracking.
Audiences & Contacts
Audiences & Contacts
Audience CRUD. Contact add, update, unsubscribe, delete. Bulk import.
Broadcasts
Broadcasts
Create, schedule, send, list. Audience targeting. Preview.
Webhooks
All Resend webhook event types fire with vendor-correct Svix-style signatures:email.sent— immediately after a successful sendemail.delivered— a few seconds after send (configurable per fixture)email.delivery_delayed— when delivery is delayed by downstream providersemail.bounced— hard and soft bouncesemail.complained— spam complaintsemail.opened— tracking pixel hitemail.clicked— link click
Built-in fixtures
resend:empty
resend:empty
No domains, no emails. A blank Resend account.
resend:transactional-busy
resend:transactional-busy
One verified domain
mail.acme.com, 100 sent emails across the last 7 days with realistic delivery/bounce/open rates. Good for testing scale behavior.resend:bounced-domain
resend:bounced-domain
Domain with recent bounce rate above the provider’s threshold — suspended state. Good for testing your handler’s response to
email.bounced and domain suspension.resend:marketing-list
resend:marketing-list
Audience with 1,000 contacts and three prior broadcasts. Good for testing broadcast flows.
resend:over-quota
resend:over-quota
Account at monthly send limit. Any
POST /emails returns 429 with Resend’s exact rate-limit payload. Good for testing your quota-exceeded handling.Coverage gaps
- Suppression lists — not yet mirrored.
- Custom domains with CNAME proxies — mocked as always-valid.
- Open/click tracking pixels — simulated via
/_mirra/simulate, not from real client requests.
Simulating events
Real delivery timing (a few seconds betweenemail.sent and email.delivered) is simulated by the engine’s event-dispatch scheduler — you get realistic timing without waiting on actual SMTP.
To force an immediate bounce or complaint for testing:
Where to go next
Twilio
The SMS mirror.
Stripe
The payments mirror.
First scenario
Write and run a Resend scenario end-to-end.