
Keep parallel tests separate
Reserve a number from a pool for each test run. Wait for messages received after your test starts, so an old code cannot satisfy a new check.
Explore phone poolsBuild SMS into your applications with MailSlurp. Receive messages through APIs and webhooks, feed ingest pipelines, power AI agents and support conversations, or automate OTP tests.
Free account. Phone numbers require a paid plan and number rental.

Trusted by teams at



Choose dedicated SMS numbers across supported countries. Assign them to applications, AI agents, support workflows or test environments and keep incoming messages in one place.
Review number types, receiving and sending capabilities, availability and rental pricing in the app. Keep a number for an ongoing workflow, or use pools and locks to reserve one for a test.

| Country | Calling code | Variants |
|---|---|---|
| US (+1) | Local · Toll-free · Non-VoIP | |
| GB (+44) | Mobile · Non-VoIP | |
| AU (+61) | Mobile · Non-VoIP | |
| CA (+1) | Local | |
| EE (+372) | Mobile | |
| PL (+48) | Mobile | |
| NL (+31) | Mobile | |
| IL (+972) | Mobile | |
| FI (+358) | Mobile | |
| SE (+46) | Mobile | |
| Contact us about other regions. | ||
Non-VoIP is an optional number filter. Types and availability vary by inventory and billing currency; check receiving and sending capabilities in the app.
Turn incoming SMS into an application event. Use webhooks to feed an ingest pipeline, trigger a background job or route a customer message to support. Read the sender, message body and history through the API.
Use the REST API or official SDKs for JavaScript, TypeScript, Python, Java, C#, PHP, Ruby and more. Add SMS to the language and test framework your team already uses.
Read the SMS API docsSubmit a MailSlurp number in your application, wait for its SMS and extract the one-time code. Enter it in the browser and check that your customer can complete verification.
Cover new-account verification, two-factor login and account recovery. Use built-in code extraction to find the OTP, with length and pattern options to match your application.
Follow the SMS OTP guideMailSlurp received the SMS OTP and your test can submit it automatically.
The browser test fills this field with the code MailSlurp captured.

Reserve a number from a pool for each test run. Wait for messages received after your test starts, so an old code cannot satisfy a new check.
Explore phone pools
Bring SMS into Playwright, Cypress, Selenium or your own API tests. Run the same verification journey in CI.
See the Cypress guide
Test email confirmation and SMS verification in one suite, including fallback and recovery journeys.
Explore email and SMS testingA customer texts an order number, a delivery request or a support question. Extract the fields your application needs, then pass structured JSON into your CRM, database or next workflow.
Define the fields with a prompt and output schema, or attach a reusable AI Transformer to a phone number. Review the extracted values before taking action. AI features require an eligible plan; token usage applies.
Explore SMS data extractionimport { StructuredOutputSchemaTypeEnum as SchemaType } from "mailslurp-client";
import { MailSlurp } from "mailslurp-client";
const mailslurp = new MailSlurp({
apiKey: process.env.MAILSLURP_API_KEY!,
});
// SMS_ID is the ID of a received message in your account.
const extracted = await mailslurp.aiController.generateStructuredContentFromSms({
generateStructuredContentSmsOptions: {
smsId: process.env.SMS_ID!,
instructions: "Extract the order ID and requested delivery day. Use null if absent.",
outputSchema: {
type: SchemaType.object,
properties: {
orderId: { type: SchemaType.string, nullable: true },
requestedDay: { type: SchemaType.string, nullable: true },
},
required: ["orderId", "requestedDay"],
},
},
});
// Validate the result before updating your system.
console.log(extracted.result);
Turn free-form texts into order IDs, request types and customer details. Choose the fields and formats your software expects.
Review extraction results
Receive a webhook when a text arrives. Store the original message alongside extracted data, trigger a job, or connect it to your CRM or support system.
Connect incoming SMS
Assign numbers with scoped access to messages and conversation history. Enable permitted replies separately, and use claims and handoffs to coordinate agents and people.
Explore agent SMS workflowsReceive a customer message, look up the context and send a reply from the same number. Build support conversations and status updates into your application, with message history available to your team and agents.
Choose a number with sending capability and confirm recipient permission. By default, replies are limited to people who have contacted your number first. Route requests that need a person into your support workflow.
Explore two-way SMSimport { MailSlurp } from "mailslurp-client";
const mailslurp = new MailSlurp({
apiKey: process.env.MAILSLURP_API_KEY!,
});
// Use the smsId from a NEW_SMS webhook after verifying the event.
const sms = await mailslurp.smsController.getSmsMessage({
smsId: process.env.SMS_ID!,
});
console.log(sms.fromNumber, sms.body);
// Match the sender to a customer or route the message to your team.
Allow or block incoming SMS from specific numbers or matching patterns. Apply rules to a particular number to keep unwanted messages out of your workflow.
Configure sender rules
Check webhook signatures before accepting an event. Store each message ID in a durable queue so repeated deliveries do not create duplicate work.
Connect verified webhooks
Inspect delivery results and HTTP responses when a webhook fails. MailSlurp retries unsuccessful deliveries; you can fix your receiver and replay affected events.
See webhook recoveryGive developers, QA and support a shared place to work with SMS. Review numbers and messages in the dashboard, or build the same workflows into your own software through the API.

Review received texts and message threads without passing around a handset. Connect customer messages to your support workflow; replies require sending capability and recipient permission.
See the SMS dashboard guide
Name and tag numbers for development, staging, production or a customer workflow. Use pools and reservations to allocate numbers to parallel tests.
Manage number pools
Use roles and scoped API keys to control access. Enterprise options add SSO, SCIM provisioning and audit logs for teams with central access requirements.
Explore MailSlurp EnterpriseConnect a real number to the application, agent or test you already run.

Create a free account, review number types and rental pricing, then add a number for your workflow.

Set up a webhook to your server, or use an SDK to wait for incoming SMS and read its contents.

Store it in your pipeline, route it to an agent or support team, or extract a code to complete an automated test.
MailSlurp offers dedicated SMS numbers in supported countries, including mobile and toll-free options where available. Check the live number catalogue for number type, receiving and sending capabilities, availability and rental pricing. A third-party service may apply its own rules to verification messages. Review phone numbers and capabilities.
Yes. Connect an incoming-SMS webhook to your server to trigger a job, store a message or pass it into your application. You can also read messages and their history through the REST API or SDKs, or wait for a new message when your workflow needs one. Connect SMS webhooks.
Yes. Use a prompt and output schema to extract fields from an SMS, or connect a reusable AI Transformer to a phone number. Review results as structured JSON and connect them to your own workflow. AI features require an eligible plan; token usage applies. For verification codes, use the separate built-in pattern extraction API. Set up an SMS transformer.
Yes. Assign a number to an agent with scoped access so it can read messages and conversation history. Enable sending separately when replies are needed, and use conversation claims and handoffs to coordinate agents and people. Sending remains subject to the number's capabilities and recipient permissions. Read the agent SMS guide.
Yes. Keep a dedicated number for incoming customer messages, review SMS threads in the dashboard or your own application, and route messages to your support workflow. Replies require sending capability and recipient permission; by default, sending is limited to recipients who have contacted your number first. Review SMS receiving and sending.
Yes. Create or assign a MailSlurp phone number, reserve it for the current test, submit it to the application, wait for the inbound SMS, extract the OTP, complete the verification step, and release or retain the number according to your test policy. Run an OTP test with Playwright. Run an OTP test with Cypress.
No. Allocate numbers by environment, worker, suite, tenant, or customer journey. Number pools, locks, tags, and message history keep parallel runs isolated and make failures easier to trace. Review the SMS verification API workflow.
Yes. MailSlurp provides programmable inboxes and phone numbers under one API model, so a test can validate email confirmation, SMS fallback, OTP, MFA, and recovery paths in the same suite. Explore programmable email and SMS APIs. Explore authentication testing.
You can create a free account and explore the dashboard. Phone numbers require a paid plan and number rental. Review the available numbers, capabilities and pricing in the app before adding one. Keep a number for an ongoing application or release it when you no longer need it. Open the phone and SMS docs.
Start with a free account and explore the phone number dashboard. Review number availability, capabilities and rental pricing before adding your first number.
