How to migrate from SmsManager to Bird
A developer's guide to moving an SMS/messaging integration from SmsManager to Bird, covering channel changes, request-format differences, and a step-by-step migration checklist.
SmsManager is a Czech bulk-messaging platform, run from Prague, for sending SMS, WhatsApp, Viber and RCS from a single JSON API. Bird (formerly MessageBird) is an Amsterdam-based communications infrastructure platform offering unified APIs for SMS, WhatsApp, voice and email. On the messaging.dev Score, SmsManager rates 51/100 and Bird 76/100; this guide covers what actually changes when you move an integration from one to the other.
What changes when you move
Channels. Both platforms send SMS and WhatsApp. Moving to Bird, you gain voice and email; you lose RCS, Viber and Apple Messages for Business. Neither supports MMS, Facebook Messenger or Telegram.
Compliance. Both are GDPR-aligned. Bird additionally holds ISO 27001, SOC 2 and HIPAA certifications, none of which SmsManager lists.
Data residency. SmsManager runs EU servers only, with no region choice. Bird offers both EU and US servers and lets you choose data residency — the region is even encoded in your API key.
Pricing and free credit. SmsManager uses prepaid, non-expiring pay-as-you-go credit charged per message. Bird uses usage-based transactional pricing with no platform or seat fees, plus a free email tier (1,000/month). SmsManager’s free allowance is trial credit.
SDKs and tooling. Both ship a TypeScript SDK, expose REST, offer a sandbox, and have high-quality docs. SmsManager also ships PHP; Bird also ships Python and Go and exposes SMTP for email. Country coverage is 175 (SmsManager) versus 150 (Bird).
How the request format differs
SmsManager’s quickstart send:
curl -X POST https://api.smsmngr.com/v2/message \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"body": "Hello from SmsManager!", "to": [{"phone_number": "420777123456"}]}'
Bird’s quickstart send:
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"
}'
Three things change:
- Endpoint / base URL.
https://api.smsmngr.com/v2/messagebecomes the region-prefixedhttps://us1.platform.bird.com/v1/sms/messages(use theeu1host if your key is aneu1key). - Authentication. SmsManager passes a raw key in the
x-api-keyheader. Bird passes a region-prefixed key (bk_us1_.../bk_eu1_...) as a Bearer token in theAuthorizationheader; the prefix encodes the regional host, and the official SDKs route automatically. - Payload mapping. The message body moves from
bodytotext. The recipient moves from an array of objects ("to": [{"phone_number": "..."}]) to a single E.164 string with a leading+("to": "+14155550100"). SmsManager’s quickstart omits a sender, whereas Bird expects afrom. Bird also adds acategoryfield (for exampleauthentication) to classify traffic; SmsManager has no equivalent.
Migration checklist
- Create a Bird account (self-onboarding) and generate an API key. Pick the EU or US region to match your data-residency needs — the key prefix locks you to that host.
- Map the request fields:
body→text, thetoarray → a singletostring in E.164 format with a leading+, addfrom, and addcategory. - Re-point your sending code: swap the endpoint to the region host and switch auth from the
x-api-keyheader toAuthorization: Bearer. - Re-test in Bird’s sandbox (it has one) before sending live traffic.
- Update webhooks / delivery callbacks to Bird’s payload format and register the new callback URLs.
- Run both providers in parallel, comparing delivery results on a slice of traffic.
- Cut over fully, then decommission your SmsManager keys.
For a from-scratch walkthrough, see How to start with Bird, and check the full Bird vs SmsManager comparison before committing.
Watch out for
- Lost channels. RCS, Viber and Apple Messages for Business have no Bird equivalent — re-plan any flows that depend on them.
- Fewer countries. Bird covers 150 countries versus SmsManager’s 175; verify your key destinations.
- Recipient shape. The recipient is now a single string, not an array, so batch/multi-recipient sends need restructuring — and numbers must be E.164 with a leading
+. - Region-locked keys. The
bk_us1_/bk_eu1_prefix must match the host you call, or requests fail. - No PHP SDK. SmsManager ships one; Bird’s official SDKs are TypeScript, Python and Go only.