
Test your agents against APIs that behave like the real thing.
A sandboxed Resend twin for testing email workflows. Describe the state you need, get a live URL, and point Resend’s own SDK at it.
Sandboxes
A working copy of someone else's API, in about a minute.
Pick a provider, say what state you want it in, and you get a hostname of your own. Nothing to install, nothing to reset between runs, and nothing shared with anyone else.
Every sandbox gets its own hostname. Nothing is shared with another run, another test, or another team.
resend-a1c93f.semva.runDescribe the situation you need to test and the seeder writes the records it implies. Or start from a template.
scenario → recordsThe sandbox issues a credential shaped like the real one, so your key handling and auth errors get exercised too.
re_semva_9f2a…Change anything after seeding, from the dashboard or through the API. Whatever your code writes, the sandbox keeps.
read · write · resetEvery call your agent made, with its body, status and latency, so you can see what it actually did.
method · status · msImport production data into a sandbox, and a full recording of every provider call, response and state change across an agent run. Waitlist teams vote on the order and get them first.
Why it works
A mock that lies is worse than no mock.
A test double that happily returns a plausible body for a call the real API would reject gives you a green build on broken code. Everything here exists so the twin fails where production would fail.
The catalog
Hand-built where it matters, generated everywhere else.
Behavioural twins are written by hand for the providers agents lean on hardest, and every one of them has to pass the vendor's official SDK before it ships. Everything else comes from a specification, and says so.
How it works
Describe the state. Get a URL.
A sandbox is rows in a database rather than a container, so it exists the moment you ask for it, costs nothing while it sits idle, and has no cold start when your suite comes back to it.
Pick an API
Choose the available Resend twin. Its code-defined behavior is verified against the official SDK.
Describe the state
Start from a template, or write a sentence: a customer with three failed payments and a subscription about to lapse. The seeder writes the records that scenario implies.
Point your SDK at it
You get a hostname and a key in the provider's own format. Change the base URL and run the code you already have — nothing else moves.
What a twin will never do
- Invent a response for a route it does not model.
- Return a 404 for an endpoint that exists but is unmodelled.
- Claim behavioural fidelity without the vendor's SDK passing in CI.
- Share state with another sandbox, or with anyone else.
Developers
Point the SDK somewhere else. Change nothing else.
Create a sandbox in the Semva web app, then use its base URL and provider-shaped key with the SDK you already have.
- One line of config: the base URL your SDK already supports.
- Credentials in the provider's own format, so key handling is exercised too.
- Every request logged with its body, status and latency.
Or open the dashboard and press⌘Kto describe a sandbox in plain language.
you
Create a Resend sandbox with a segment containing one hard-bounce recipient.
semva
Created and seeded the sandbox from the web app.
- twin selected resend · behavioural
- scenario seeded segment · hard-bounce recipient
- credential issued re_semva_9f2a… (shown once)
- ready https://resend-a1c93f.semva.run
you
Will the official Resend SDK work against it?
semva
Yes. The pinned resend-python conformance suite runs against this twin in CI.
FAQ
What engineers ask us first.
Anything else, email hello@semva.dev and a human will answer.
Private beta · Waitlist open
Give your agents an API worth testing against.
Behavioural twins for the providers your agents lean on hardest, shape twins for everything else. Semva is free for academic researchers.
One email when your slot opens, and nothing else.

