How to migrate from Bird to Vonage
A developer-focused guide to migrating from Bird to Vonage, covering channel gains and losses, request-format differences, and a step-by-step cutover checklist.
Bird is a communications infrastructure platform (formerly MessageBird) offering unified APIs for email, SMS, WhatsApp, and voice. Vonage is a communications-API provider (part of Ericsson) covering SMS, voice, video, and messaging. On the messaging.dev Score, Bird rates 76/100 and Vonage 89/100 — this guide covers what actually changes at the API level when you move, presented as data rather than a recommendation.
Channels: what you gain and lose
Both providers carry SMS, WhatsApp, and voice. Moving to Vonage adds four channels: MMS, RCS, Viber, and Facebook Messenger. The one channel you lose is email — Bird supports it (and exposes an SMTP API type); Vonage does not. Neither provider offers Telegram or Apple Messages for Business. Vonage’s stated footprint is ~200 countries versus Bird’s ~150.
Compliance, residency, and tooling
Compliance is unchanged: both hold GDPR, ISO 27001, SOC 2, and HIPAA alignment. Both offer EU and US data residency with region choice; Vonage additionally lists APAC and Australia. Both provide a sandbox, self-onboarding, and documentation rated high quality. SDK coverage widens — Bird ships TypeScript, Python, and Go, while Vonage ships Node.js, Python, PHP, Java, C#, Ruby, and Kotlin. Pricing stays usage-based and per-message on both, at roughly the same US SMS rate (~$0.0073 Bird vs ~$0.0072 Vonage), but the free developer credit differs: Bird’s is a recurring free email tier (1,000/month), whereas Vonage’s is a one-time €2 trial credit. See the full side-by-side.
How the request format differs
Bird (source):
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"
}'
Vonage (target):
curl -X POST 'https://rest.nexmo.com/sms/json' \
-d 'api_key=YOUR_API_KEY' \
-d 'api_secret=YOUR_API_SECRET' \
-d 'from=Vonage' \
-d 'to=15551234567' \
-d 'text=Hello from Vonage'
Three things change:
- Endpoint. Bird posts to a region-prefixed host,
https://us1.platform.bird.com/v1/sms/messages. Vonage posts tohttps://rest.nexmo.com/sms/json(legacy SMS API) orhttps://api.nexmo.com/v1/messages(Messages API). - Authentication. Bird uses a region-prefixed API key (
bk_us1_…) as a Bearer token in theAuthorizationheader. Vonage’s SMS API takes an API key + secret sent asapi_key/api_secretfields in the request body; the Messages API uses JWT auth instead. - Payload. Bird sends a JSON body (
Content-Type: application/json); Vonage’s SMS API takes URL-form-encoded fields. The core fields map closely:to→to,from→from,text→text. Note that Bird’stois E.164 with a leading+(+14155550100) while the Vonage example omits it (15551234567), and Bird’scategoryfield has no direct equivalent — Vonage instead expects the credentials inline.
Migration checklist
- Create a Vonage account and generate your API key + secret (or an application + private key if you plan to use JWT with the Messages API).
- Map each request field: endpoint, auth, and the
to/from/textpayload; dropcategoryand add the credentials. - Re-point your sending code to the new base URL and switch from a Bearer header to form credentials (or a JWT).
- Re-test in Vonage’s sandbox before sending live traffic.
- Update delivery-receipt/webhook callbacks to Vonage’s format and URLs.
- Run both providers in parallel and compare delivery.
- Cut over once delivery and callbacks match. The Vonage quickstart walks through full setup.
Watch out for
- No email. Bird’s email channel and SMTP API have no Vonage equivalent — keep a separate email provider (or a Bird account) for that traffic.
- Free-credit model changes. You move from a recurring free email tier (1,000/month) to a one-time €2 trial credit.
- Two APIs, two auth models. Vonage’s quickstart uses the legacy SMS API, which sends your secret in the request body; the newer Messages API uses JWT. Choose one deliberately.
- No hidden regressions elsewhere. All four certifications, EU/US residency with region choice, and the sandbox carry over unchanged.