Migration guide

How to migrate from Prelude to Bird

A developer-focused guide to moving from Prelude to Bird, covering channel and compliance differences, request-format changes, and a step-by-step migration checklist.

Prelude is a Paris-based developer platform focused on phone and email verification (OTP), authentication, number intelligence, and anti-fraud onboarding, delivered across SMS, RCS, WhatsApp, voice, and other channels. Bird (formerly MessageBird) is an Amsterdam-based communications infrastructure platform offering unified APIs for email, SMS, WhatsApp, and voice. On the messaging.dev Score, Prelude rates 62/100 and Bird 76/100; this guide covers what actually changes at the API and product level when you move.

What changes when you move

Channels. Both providers carry SMS, WhatsApp, voice, and email, and both lack MMS, Facebook Messenger, and Apple Messages for Business. Moving to Bird you lose RCS, Viber, and Telegram, which Prelude supports but Bird does not. There are no additional channels to gain.

Compliance and residency. Both hold GDPR, ISO 27001, and SOC 2. Bird adds HIPAA, which Prelude lacks. On data residency, Prelude runs EU servers only with no region choice; Bird offers both EU and US servers with an explicit data-residency choice.

Pricing and credit. Prelude uses pay-as-you-go per-verification pricing plus at-cost per-message charges (SMS from €0.0043 to US numbers, verification fee from €0.032). Bird uses usage-based transactional pricing with no platform or seat fees (SMS from $0.0073 to US numbers) plus a free email tier of 1,000/month. Prelude offers no free developer credit.

Tooling. Both ship high-quality docs and REST APIs; Bird additionally exposes SMTP for email. SDK coverage narrows: Prelude ships seven SDKs (Node.js, Python, Go, Java, Ruby, PHP, C#) while Bird ships three (TypeScript, Python, Go). Bird provides a sandbox for pre-production testing; Prelude does not. For a full setup walkthrough, see how to start with Bird; for a side-by-side, see the Bird vs Prelude comparison.

How the request format differs

Prelude:

curl -X POST https://api.prelude.dev/v2/verification \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "target": {
      "type": "phone_number",
      "value": "+30123456789"
    }
  }'

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"
  }'

Endpoint. Prelude posts to a single verification endpoint (https://api.prelude.dev/v2/verification). Bird posts to a region-scoped SMS endpoint (https://us1.platform.bird.com/v1/sms/messages), where us1 is the regional host.

Authentication. Both use a Bearer token. Prelude uses a plain v2 API key (Authorization: Bearer YOUR_API_TOKEN). Bird uses a region-prefixed key (bk_us1_... / bk_eu1_...); the prefix encodes the regional host and the SDKs route automatically, so your key and base URL must reference the same region.

Payload mapping. This is the biggest shift. Prelude’s quickstart calls a verification API: you send only a nested target object (target.type = phone_number, target.value = the recipient), and Prelude generates and sends the OTP for you — there is no sender or message body. Bird’s quickstart is a generic SMS send: the recipient maps to a flat to, the sender to from, and you supply the full message yourself in text, plus an optional category.

Migration checklist

  1. Create a Bird account and generate a region-prefixed API key (bk_us1_... or bk_eu1_...), choosing the region that matches your data-residency needs.
  2. Map the request fields: target.valueto, add a from sender ID, move your OTP copy into text, and set a category (e.g. authentication). Generate the code yourself if you relied on Prelude’s managed verification.
  3. Re-point sending code to https://<region>.platform.bird.com/v1/sms/messages and swap the Authorization header to the Bird key.
  4. Re-test in Bird’s sandbox before sending live traffic — Prelude has none, so this step is new.
  5. Update webhooks and delivery callbacks to Bird’s delivery-status format and endpoints.
  6. Run both providers in parallel and compare delivery rates and cost.
  7. Cut over once metrics match, then decommission your Prelude credentials.

Watch out for

  • Channels dropped. RCS, Viber, and Telegram exist on Prelude but not Bird; re-home any traffic on those channels first.
  • Verification is now your job. Bird sends the text you give it, so the OTP generation, templating, and expiry logic Prelude handled must move into your app.
  • Fewer SDKs. No official Java, Ruby, PHP, or C# SDK; those stacks integrate over raw REST.
  • Region-locked keys. A bk_us1_ key will not work against the eu1 host — keep key and base URL in sync.
  • Ratings. For reference, Bird’s public G2 rating (3.9 across 73 reviews) sits below Prelude’s (4.9 across 13 reviews).