Migration guide

How to migrate from Mitto to Bird

A developer's guide to moving an SMS integration from Mitto to Bird, covering channel and compliance differences, request-format mapping, and a step-by-step cutover checklist.

Mitto is a Swiss omnichannel CPaaS that exposes SMS, RCS, WhatsApp, Viber, Telegram, Facebook Messenger and voice over REST and SMPP. Bird (formerly MessageBird) is a communications infrastructure platform built around SMS, WhatsApp, voice and email. On the messaging.dev Score Mitto rates 48/100 and Bird 76/100; this guide is a technical walkthrough of what actually changes when you move an SMS integration between them, not an endorsement. For a fuller feature breakdown see Bird vs Mitto.

What changes when you move

Channels. Both providers keep SMS, WhatsApp and voice, and neither supports MMS or Apple Messages for Business. Moving to Bird you gain email, which Mitto does not offer. You lose four channels Mitto supports and Bird does not: RCS, Viber, Facebook Messenger and Telegram. If any of your traffic runs over those, Bird has no drop-in replacement.

Compliance and residency. Both are GDPR and ISO 27001 aligned. Bird additionally carries SOC 2 and HIPAA, so you gain certifications rather than lose any. On data residency the gap is wider: Mitto publishes no EU or US hosting and no region choice, while Bird runs both EU and US regions and lets you choose where data lives.

Platform details. Bird ships official SDKs for TypeScript, Python and Go; Mitto lists none. Bird’s docs are rated high quality versus medium for Mitto. Both offer a sandbox. On pricing, both are usage-based, but Mitto’s SMS starting price is not published, whereas Bird publishes per-country rates (from $0.0073 per message to US numbers) and includes a free email tier of 1,000 messages/month — Mitto offers no free developer credit. One protocol note: Mitto’s second API type is SMPP, Bird’s is SMTP. Coverage differs too: Mitto lists 230 countries, Bird 150.

How the request format differs

Mitto quickstart:

curl -X POST 'https://rest.mittoapi.net/sms' \
  -H 'Content-Type: application/json' \
  -H 'X-Mitto-API-Key: YOUR_API_KEY' \
  -d '{
    "from": "Mitto SMS",
    "to": "41751231234",
    "text": "Hello, World!",
    "test": true
  }'

Bird quickstart:

curl -X POST "https://us1.platform.bird.com/v1/sms/messages" \
  -H "Authorization: Bearer bk_us1_..." \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+14155550100",
    "from": "Bird",
    "text": "Your Bird verification code is 481920. It expires in 10 minutes.",
    "category": "authentication"
  }'

Endpoint. The base URL moves from https://rest.mittoapi.net/sms to a region-prefixed host, https://us1.platform.bird.com/v1/sms/messages (or eu1).

Authentication. Mitto sends the key in an X-Mitto-API-Key header and also requires your source IP to be whitelisted. Bird replaces both: it uses a region-prefixed key (bk_us1_... / bk_eu1_...) passed as a Bearer token in the Authorization header, with the prefix encoding the regional host — no IP allow-listing step.

Payload mapping. The core fields carry over one to one: recipient to, sender from, body text. Two differences matter. Format the recipient in full E.164 with a leading + for Bird (+14155550100) rather than Mitto’s bare 41751231234. And Mitto’s "test": true flag has no Bird equivalent — instead Bird expects a category field (e.g. "authentication") classifying the message.

Migration checklist

  1. Create a Bird account and generate a region-prefixed API key for your chosen region (us1 or eu1).
  2. Map each request field: keep to/from/text, switch recipients to E.164, drop test, and add category.
  3. Swap the auth: replace the X-Mitto-API-Key header (and IP whitelist assumptions) with an Authorization: Bearer header.
  4. Re-point your sending code to the region-prefixed Bird endpoint, optionally adopting an official SDK (TypeScript, Python or Go).
  5. Re-test against Bird’s sandbox before sending live traffic.
  6. Update delivery-status webhooks and callbacks to Bird’s format and payloads.
  7. Run both integrations in parallel and reconcile delivery results.
  8. Cut over once Bird’s results match, then retire the Mitto path.

For a step-by-step first send, see how to start with Bird.

Watch out for

  • Lost channels. RCS, Viber, Facebook Messenger and Telegram do not exist on Bird — plan replacements before you migrate any of that traffic.
  • No SMPP. Mitto’s SMPP binding has no counterpart; Bird’s second protocol is SMTP.
  • Free credit is email-only. Bird’s free tier covers 1,000 emails/month, not SMS, so there is no free SMS testing balance.
  • Narrower country list. Bird lists 150 countries versus Mitto’s 230; verify your destinations are covered.
  • Required category field. Bird expects a message category that Mitto never asked for.