Stop gluing Twilio Verify, SendGrid, and your own token store together. One API for email OTP and magic links — with a sandbox your Playwright tests can actually read.
Your backend
|otpmagiclink
Waiting for request…
Events
The problem
Real sandbox testing costs real money, so your CI ends up running a mock that never matches production behaviour.
You cross a monthly-active-user threshold and the price jumps — for a login flow that’s basically one email + one code.
One user retrying three times is three times the bill, whether or not they ever verify.
Your verification vendor doesn’t have magic links, so you stitch together SendGrid + a token table + expiration logic.
Coming from Twilio Verify or Auth0? Read the Twilio Verify alternative comparison or the Auth0 alternative for OTP and magic links.
Developer-first
POST /api/v1/verifications
Authorization: Bearer sk_...
{
"identifier": "user@example.com",
"channel": "EMAIL",
"kind": "MAGIC_LINK"
}POST /api/v1/verifications/{id}/check
{ "token": "482910" }
→ { "valid": true, "identifier": "..." }Create a verification. Check the token. Done — no token storage on your side.
Fetch OTPs and magic links via API. Playwright-friendly. No Mailtrap.
Resend, SendGrid, Postmark, or SMTP — your domain, your reputation.
HMAC tokens, rate limits, encrypted credentials, audit logs.
Get notified on verified, expired, and failed events in real time.
Isolated projects, API keys, delivery config, and rate limits per customer.