How to migrate from SMSAPI to Bird
A developer-focused guide to moving an existing SMSAPI integration to Bird: channel and compliance differences, request-format mapping, and a step-by-step migration checklist.
SMSAPI is a Polish business-messaging platform (a brand of LINK Mobility Poland) that exposes bulk SMS, MMS, RCS, WhatsApp and voice over a REST API. Bird (formerly MessageBird) is a communications infrastructure platform offering unified APIs for email, SMS, WhatsApp and voice. On the messaging.dev Score, SMSAPI rates 44/100 and Bird 76/100; this guide covers, as data rather than endorsement, what actually changes when you move an existing SMSAPI integration to Bird.
What changes at a glance
Channels you keep: SMS, WhatsApp and voice exist on both. Channel you gain: email — Bird adds a first-class email channel. Channels you lose: MMS and RCS, both supported by SMSAPI but not by Bird. Neither provider offers Viber, Facebook Messenger, Telegram or Apple Messages for Business, so nothing changes there.
Compliance: both are GDPR-compliant and ISO 27001 certified. Bird additionally carries SOC 2 and HIPAA, which SMSAPI does not — a net gain if you need either.
Data residency: SMSAPI hosts in the EU only, with no region choice. Bird runs both EU and US regions and lets you choose data residency, encoded in its region-prefixed API keys (see below).
Pricing: SMSAPI uses prepaid pay-as-you-go credit with a minimum top-up around €30 and SMS from ~€0.04. Bird uses usage-based transactional pricing with no platform or seat fees and published per-country rates (US SMS from $0.0073). Free developer credit differs in kind: SMSAPI gives free test SMS on signup; Bird gives a free email tier (1,000/month), not free SMS.
SDKs: SMSAPI ships PHP, Python, JavaScript, Java, C#, Go and Bash; Bird ships TypeScript, Python and Go. If your code uses the PHP, Java, C# or Bash SDKs, you will call Bird’s REST API directly or move to TypeScript/Python/Go. Both offer a sandbox and both rate “high” on docs quality.
How the request format differs
SMSAPI:
curl -X POST -H "Authorization: Bearer YOUR_API_TOKEN" "https://api.smsapi.com/sms.do?to=48500000000&from=SenderName&message=Hello+world&format=json"
Bird:
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: you move from
https://api.smsapi.com/sms.dotohttps://us1.platform.bird.com/v1/sms/messages(or theeu1host). - Authentication: SMSAPI uses an OAuth 2.0 API token as
Authorization: Bearer <token>. Bird also uses a Bearer token, but the key is region-prefixed (bk_us1_.../bk_eu1_...) and the prefix selects the regional host; SDKs route automatically. - Payload: SMSAPI passes parameters in the URL query string (
to,from,message, plusformat=json). Bird sends a JSON body withContent-Type: application/json. Field mapping:to→to(but Bird expects E.164, e.g.+14155550100),from→from, and the message bodymessage→text. Bird also expects acategoryfield (e.g.authentication); there is noformatparameter.
Migration checklist
- Create a Bird account and generate a region-prefixed API key (
bk_us1_...orbk_eu1_...) for the region where you want data resident. - Map request fields:
message→text, keepto/from, convert recipients to E.164, add acategory, and move parameters from the query string into a JSON body. - Re-point your sending code to Bird’s base URL and the new Bearer key; switch to the TypeScript/Python/Go SDK if you used one.
- Re-test in Bird’s sandbox before sending live traffic (Bird provides one).
- Update delivery/status webhooks and callbacks to Bird’s format.
- Run both integrations in parallel and compare delivery results.
- Cut over once Bird matches your baseline, then stop topping up SMSAPI credit.
Watch out for
- No MMS or RCS on Bird — if you send picture or RCS messages today, you will need another channel or provider.
- Narrower SDK coverage: no official PHP, Java, C#, JavaScript or Bash SDK; plan for REST or TypeScript/Python/Go.
- Free credit is email only (1,000/month), not free SMS — budget for paid SMS testing.
- Stricter request shape: Bird requires E.164 recipients and a
categoryon every message, so requests that worked with SMSAPI’s local number format and query-string params will fail until reformatted.
See how to start with Bird for a full quickstart, and Bird vs SMSAPI for the side-by-side data.