
Create an isolated identity
Create a new inbox or phone number for the run, or reserve a long-lived identity for an application or agent.
Provision an identity, receive the real email or SMS, and assert the result in the test framework and language you already use.
import { test, expect } from "@playwright/test";import { MailSlurp } from "mailslurp-client"; test("sign up with email OTP", async ({ page }) => { const mailslurp = new MailSlurp({ apiKey: process.env.MAILSLURP_API_KEY! }); const inbox = await mailslurp.createInbox(); await page.goto("/signup"); await page.getByLabel("Email").fill(inbox.emailAddress!); await page.getByRole("button", { name: "Create account" }).click(); const email = await mailslurp.waitForLatestEmail(inbox.id!, 30000); const code = email.body!.match(/\b\d{6}\b/)![0]; await page.getByLabel("Code").fill(code); await expect(page.getByText("Welcome")).toBeVisible();});Trusted by top companies worldwide



MailSlurp gives the test a real identity, waits for the real message, and keeps the assertion with the build.

Create a new inbox or phone number for the run, or reserve a long-lived identity for an application or agent.

Wait for email or SMS, match content, extract an OTP or link, and inspect headers and attachments.

Run the customer journey in Playwright, Cypress, Selenium, Postman, or your own test runner and keep the evidence.
MailSlurp SDKs and REST APIs support TypeScript, JavaScript, Python, Go, .NET, Ruby, PHP, Kotlin, Swift, and the rest of your delivery stack.
Emails processed
500 million+
Infrastructure that scales.
Mobile networks
20+
Leverage global telecom networks.
Mature platform
10+ years
Stable and dependable.