Your test suite
A REST API with an API key: list emails, fetch the latest one, read attachments, delete. Works from any test runner over HTTP. For Node.js, use the zyntramail-api SDK.
Email testing API · receive-only
Send mail to {teamId}.{anytext}@zyntramail.com and read it back over a REST API — no inbox to create first, nothing to clean up.
curl -G "https://api.zyntra.app/emails/last" \
--data-urlencode "[email protected]" \
-H "X-API-Key: $ZYNTRA_API_KEY"{
"to_address": "[email protected]",
"from_address": "[email protected]",
"subject": "Confirm your email address",
"received_at": "2026-10-16T09:41:07.000Z",
"links": [
{
"url": "https://staging.your-app.com/verify?token=8f3c…",
"text": "Confirm email"
}
],
…
}How it works
{teamId} is your team's ID; {anytext} is up to you. Use a new tag for every test run and parallel runs never read each other's mail. Nothing has to be created first.
Sign up with that address on staging. The email goes out through your own email provider and is delivered to a real mail server, the same path it takes to your users.
GET /emails/last returns the newest email for the address. Links from the email are already extracted into links, so your test opens the confirmation URL without parsing HTML.
Who reads the email
A REST API with an API key: list emails, fetch the latest one, read attachments, delete. Works from any test runner over HTTP. For Node.js, use the zyntramail-api SDK.
Create named inboxes like {teamId}[email protected] in the dashboard and read every email in a web viewer. Mail stays 7, 30 or 90 days, depending on your plan.
Connect the hosted MCP server to Claude Code, Cursor or any other coding agent that supports MCP. Your agent fetches the latest email, reads the link or code in it, and cleans up. It can read and delete mail, never send it.
Inboxes for AI agents →Guides with full test code
Read the sign-up email inside a Playwright test with the request fixture.
Read the sign-up email with cy.request and follow the link.
Read the sign-up email over HTTP from a Python or Java Selenium test.
Check that sign-up sends a confirmation link that works.
Request a reset, follow the link, sign in with the new password.
Sign in from the emailed link and check it works only once.
Read a one-time code from the email body and enter it.
Limits, stated plainly
/emails/last waits up to 30 seconds for mail to a fresh address. There are no webhooks.{teamId}.{anytext}@zyntramail.com accepts mail as soon as you have a team. Create a permanent inbox in the dashboard only when you want to read its mail in the browser and keep it longer.zyntramail-api./emails/last answers at once when the address already has mail, and otherwise holds the request open for up to 30 seconds until the email arrives. There are no webhooks.[email protected] lands in the same real mailbox, so your test has to sign in to Gmail and filter, and parallel runs read the same inbox. In Zyntra every tag is its own inbox, read with one HTTP request, with the links already pulled out of the email.