Migration guide

Migrate to SMTP Senpai: keep your code

SMTP Senpai accepts send requests in the same format as 14 transactional email APIs. Change the base URL and the API key; keep your paths, fields, SDK and error handling.

14 days free · up to 100 emails a day · card required · if you don’t cancel within 14 days, the plan you chose starts

  • 14 request formats
  • Sending servers and log in the EU
  • 14-day free trial
how it works

Three steps, about five minutes

1

Get your key

In the SMTP Senpai area of your account, copy the API key that starts with msp_.

2

Verify your domain

Add the DNS records shown in the area: the sender must be on a verified domain signed with DKIM.

3

Change URL and key

Point your SDK or HTTP client to the base URL or dedicated host in the table, with your msp_ key. Where the original API has a test mode, try it first.

14 apis, one key

Base URL, host and key for each format

A. Base URL with path, for SDKs that accept a full URL. B. Dedicated host, for SDKs that only let you change the host name (Symfony Mailer DSNs, some Java, PHP and Ruby clients). After the base, the paths stay those of the original API.

API formatA. Base URLB. Dedicated hostWhere the key goesGuide
SendGrid…/relay/compat/sendgridsendgrid-api.mailsenpai.comAuthorization: Bearer msp_…Open SendGrid
Mailgun…/relay/compat/mailgunmailgun-api.mailsenpai.comBasic auth, user api, password msp_…Open Mailgun
Postmark…/relay/compat/postmarkpostmark-api.mailsenpai.comX-Postmark-Server-Token: msp_…Open Postmark
Resend…/relay/compat/resendresend-api.mailsenpai.comAuthorization: Bearer msp_…Open Resend
Brevo…/relay/compat/brevo/v3brevo-api.mailsenpai.com/v3api-key: msp_…Open Brevo
Mailjet…/relay/compat/mailjetmailjet-api.mailsenpai.comBasic auth: API key and secret key = msp_…Open Mailjet
SparkPost…/relay/compat/sparkpostsparkpost-api.mailsenpai.comAuthorization: msp_…Open SparkPost
Mandrill (Mailchimp Transactional)…/relay/compat/mandrill/api/1.0mandrill-api.mailsenpai.com/api/1.0"key": "msp_…" in the JSON bodyOpen Mandrill
MailerSend…/relay/compat/mailersend/v1mailersend-api.mailsenpai.com/v1Authorization: Bearer msp_…Open MailerSend
Amazon SES…/relay/compat/sesses-api.mailsenpai.comAccess Key ID and Secret Access Key = msp_… (any region)Open Amazon SES
Elastic Email…/relay/compat/elasticemail/v4elasticemail-api.mailsenpai.com/v4X-ElasticEmail-ApiKey: msp_…Open Elastic Email
SMTP2GO…/relay/compat/smtp2go/v3smtp2go-api.mailsenpai.com/v3X-Smtp2go-Api-Key: msp_… (or api_key in the body)Open SMTP2GO
Postal…/relay/compat/postalpostal-api.mailsenpai.comX-Server-API-Key: msp_…Open Postal
Plunk…/relay/compat/plunk/v1plunk-api.mailsenpai.com/v1Authorization: Bearer msp_…Open Plunk

… = https://app.mailsenpai.com

good to know

The same rules for every format

Limits

Up to 50 recipients per message, 500 copies per request (over 50 they are queued and leave within about a minute), 10 attachments and 10 MB per message, 20 MB per request. Executable attachments are refused.

Templates and scheduling

Stored templates and scheduled sending are not supported: they are refused with the native error. Send the final content when you want it to leave.

Events and webhooks

Results come from the SMTP Senpai API: GET /relay/v1/eventi or a signed webhook. The id in each send response is the message_id of those events.

Suppression list

Addresses that bounced, complained or that you added are always held and recorded as dropped, whatever the request says.

Idempotency

Where the original API has it (Idempotency-Key, or headers.idempotencyKey for the Brevo format), a repeated request within 24 hours returns the first response without sending again.

Deliverability headers

List-Unsubscribe with One-Click, List-Id, Feedback-ID, Precedence and a few more are accepted and signed with DKIM. Headers that decide identity or routing are ignored and named in X-MailSenpai-Ignored.

Frequently asked questions

Do I need to change my code?

Only the base URL (or host) and the API key. Paths, fields, responses and error shapes stay those of the API you use today, so SDKs and error handling keep working.

Which SDKs have you tested?

For each format we ran the official Node.js SDK against the SMTP Senpai endpoints, and the Python SDKs for SendGrid, Resend and Amazon SES. Settings for other languages were read in the SDK source code and are marked as such on each page.

Are templates, scheduled sending and contact lists supported?

No. SMTP Senpai sends the content you give it, when you call it. Template, scheduling and list features of the original services are refused with their native error.

Where do I see bounces, opens and clicks?

In the SMTP Senpai log and through the SMTP Senpai API (GET /relay/v1/eventi) or a signed webhook, with the same key.

Can I also use SMTP?

Yes: relay.mailsenpai.com, port 2525 with STARTTLS, with the username and password in your SMTP Senpai area.

Try it with the code you already have

A 14-day trial: change the base URL and the key, send your real emails and check every result in the log. Then decide.

SendGrid is a trademark of Twilio Inc. or its affiliates. Mailgun and Mailjet are trademarks of Sinch group companies (Mailgun Technologies, Inc.; Mailjet SAS). Postmark is a trademark of the ActiveCampaign group (AC PM, LLC). Mailchimp and Mandrill are trademarks of The Rocket Science Group LLC, an Intuit company. Amazon SES, Amazon Web Services and AWS are trademarks of Amazon.com, Inc. or its affiliates. Brevo is a trademark of Sendinblue SAS. SparkPost is a trademark of the Bird group (formerly MessageBird). MailerSend is a trademark of MailerSend, Inc. Resend is a trademark of Plus Five Five, Inc. Elastic Email is a trademark of Elastic Email Inc. SMTP2GO is a trademark of Sand Dune Mail Ltd. Postal is open-source software (MIT licence, © Krystal Hosting Ltd and contributors). Plunk is an open-source project (useplunk) and a trademark of its owner. They are named only to describe the request formats SMTP Senpai accepts. MailSenpai is not affiliated with these companies or projects and this page is not approved by them. Information checked on 9 October 2026.

14 days freeFree trial