Le SMS fait peau neuve

L'API SMS pour les développeurs qui doivent vraiment livrer.

Mise en place en :
Cursor

Plus de 150 pays, 240 connexions directes aux opérateurs, un seul modèle d'authentification. Environ 40 % du volume mondial de SMS commerciaux transite par le réseau Bird — nous faisons ça depuis dix ans. 95 % des messages livrés en moins de 2,5 secondes.

send-otp.ts
200 · 0.4s
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const code = generateOtp();

const { data, error } = await bird.sms.send({
  from: "Bird",
  to:   "+15005550006",
  text: `Your Bird verification code is ${code}. Reply STOP to opt out.`,
}).safe();

if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."

Today at 2:14 PM

Hey Ada — your Bird sign-in code is 482917. It'll expire in 10 minutes. Don't share it with anyone.
482917
Delivered

5 minutes entre npm install et le premier envoi

Envoyez un SMS depuis le langage que vous utilisez déjà.

Des SDK pour chaque runtime majeur. Le premier envoi est adressé à un destinataire de test autorisé (+15005550006) pour que vous puissiez intégrer un check CI avant de provisionner un numéro.

1
2
3
4
5
6
7
8
9
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const { data, error } = await bird.sms.send({
  from: "Bird",
  to:   "+15005550006",
  text: "Hello from Node.",
}).safe();

Dix choses que nous déclarons, configurons et routons à votre place.

Routage, conformité et primitives entrantes, nommés et auditables.

  1. 01

    Couverture dans plus de 150 pays

    Une seule API unifiée, une seule relation de facturation — aucun contrat par région à traquer.

  2. 02

    240 liens directs aux opérateurs

    Aucun agrégateur intermédiaire qui grignote les marges ou perd les accusés de réception entre nous et l'opérateur.

  3. 03

    Routage de niveau opérateur

    Resélection de route en temps réel quand un chemin opérateur se dégrade ; le basculement se fait avant que vous ne le remarquiez.

  4. 04

    SMS entrants bidirectionnels

    Les messages entrants arrivent sous forme de webhooks signés HMAC sur le numéro que vous avez provisionné.

  5. 05

    Des numéros de toutes formes

    Numéros longs, numéros courts, numéros gratuits et identifiants d'expéditeur alphanumériques — provisionnés via un seul endpoint.

  6. 06

    A2P 10DLC dans le tableau de bord

    L'enregistrement de marque et de campagne se fait dans la console ; le statut est interrogeable via l'API.

  7. 07

    Vérification MNP avant envoi

    Nous résolvons l'opérateur actuel du destinataire à chaque envoi pour que la route soit toujours la bonne.

  8. 08

    Conformité STOP / HELP

    Les mots-clés de désinscription sont respectés automatiquement par destinataire ; la liste de suppression est interrogeable.

  9. 09

    Accusés de réception par webhooks

    Chaque transition d'état déclenche un événement signé — de sms.queued à sms.delivered ou sms.failed.

  10. 10

    Gestion des segments et de l'Unicode

    Le SDK compte les segments avant l'envoi et alerte sur les changements d'encodage qui découperaient un message.

Le SMS n'est qu'un canal dans une boîte à outils plus vaste. Vérifiez les utilisateurs avec des codes à usage unique via Verifications, contrôlez le type de ligne et l'opérateur d'un numéro avant d'envoyer avec Lookup, ou atteignez le même combiné avec des cartes enrichies via RCS.

Pourquoi nous développons le SMS

Le SMS est le canal compliqué. Nous avons créé l'API qui le rend simple.

Chaque pays a des règles différentes, chaque opérateur a des routes différentes, chaque région a des conventions d'identifiant expéditeur différentes. Nous exploitons le SMS depuis dix ans : tout ce savoir-faire est accessible via un seul endpoint, un seul modèle d'authentification, un seul contrat de webhook. Quels que soient les changements en amont, l'appel que vous avez écrit vers bird.sms.send reste inchangé.

send-otp.ts
200 · 0.4s
import { BirdClient } from "@messagebird/sdk";

const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });

const code = generateOtp();

const { data, error } = await bird.sms.send({
  from: "Bird",
  to:   "+15005550006",
  text: `Your Bird verification code is ${code}. Reply STOP to opt out.`,
}).safe();

if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."

Chaque changement d'état est un webhook.

Payloads signés HMAC, protégés contre le rejeu, idempotents. La même enveloppe sur chaque canal Bird — apprenez-en un, vous les connaissez tous.

POST /webhooks/bird
signed
{
  "type": "sms.delivered",
  "id":   "evt_7jR42x...",
  "created_at": "2026-05-19T15:42:01.221Z",
  "data": {
    "sms_id":     "sms_4kT01Lq2m",
    "from":       "Bird",
    "to":         "+15005550006",
    "mcc_mnc":    "310-260",
    "country":    "US",
    "segments":   1,
    "latency_ms": 1284
  }
}

Calendrier de réessai : 5s, 30s, 5m, 30m, 2h, 6h, 12h. Mise en file d'attente morte après la dernière tentative ; chaque événement en file d'attente morte peut être rejoué depuis le tableau de bord ou l'API.

  • sms.queuedAccepté par l'API et mis en file d'attente pour la transmission à l'opérateur.
  • sms.sentSoumis au SMSC de l'opérateur de destination.
  • sms.deliveredAccusé de réception reçu de l'opérateur (DLR).
  • sms.failedÉchec permanent — rejet de l'opérateur, numéro invalide, suppression appliquée.
  • sms.receivedMessage entrant sur l'un de vos numéros provisionnés.
  • sms.opted_outLe destinataire a envoyé le mot-clé STOP ; les envois futurs vers ce numéro seront supprimés.

Si vous avez intégré SMS, vous avez intégré WhatsApp.

Même modèle d'authentification, même contrat d'idempotence, même enveloppe d'erreur, même forme de webhook. La différence réside dans ce que chacun fait, pas dans la façon de l'appeler.

SMS

Un verbe. Texte brut. Numéros en to/from. La structure que chaque développeur connaît par cœur.

otp.ts
await bird.sms.send({
  from: "Bird",
  to:   "+15005550006",
  text: `Your code is ${code}.`,
});

WhatsApp

Même verbe. Payload différent — modélisé, avec opt-in, sur le canal que deux milliards de personnes ouvrent chaque jour.

otp.ts
await bird.whatsapp.send({
  from: "+15551234567",
  to:   "+15005550006",
  template: { name: "otp", variables: { code } },
});

FAQ sur l'API SMS

En combien de temps puis-je envoyer mon premier SMS ?+
Installez le SDK et envoyez au destinataire de test autorisé +15005550006 en cinq minutes environ — vous pouvez livrer un contrôle CI avant même de provisionner un numéro.
Que comprend l'API SMS de Bird ?+
Un seul endpoint d'envoi, la réception bidirectionnelle, le provisionnement de numéros (long codes, short codes, toll-free et sender IDs alphanumériques), la conformité A2P 10DLC et opt-out, le routage direct-to-carrier et l'analyse de livraison — le tout sur une seule API.
Vers quels pays puis-je envoyer ?+
Bird atteint plus de 150 pays via 240 connexions direct-to-carrier, avec une re-sélection de route de qualité opérateur lorsqu'un chemin carrier se dégrade.
Gérez-vous les mots-clés STOP et HELP ?+
Oui, automatiquement par destinataire. STOP désabonne un destinataire et l'ajoute à une liste de suppression consultable, HELP renvoie une réponse d'aide automatique et START le réabonne.
Dois-je m'enregistrer pour A2P 10DLC ?+
Pour envoyer du trafic application-to-person vers des numéros américains, oui. L'enregistrement de la marque et de la campagne se fait dans le tableau de bord, et le statut est interrogeable depuis l'API.

Tarification

De moins d'un centime à quelques centimes par segment

Tarifé selon l'utilisation et le pays de destination. La grille complète par pays figure sur la page de tarification, et les remises de volume s'appliquent automatiquement au niveau du compte. Aucun frais de plateforme, aucun frais de siège, aucune fonctionnalité de palier verrouillée derrière un engagement annuel.

La confiance quotidienne des équipes qui conçoivent des logiciels de classe mondiale

Commencez avec un seul canal.
Ajoutez les autres quand vous êtes prêt.

Une clé API de test est disponible immédiatement. L'accès production se débloque dès que vous ajoutez un moyen de paiement et vérifiez un expéditeur.

Vous utilisez Claude Code, Cursor ou Codex ? Copiez un prompt de configuration et votre agent installe la CLI Bird et les compétences pour vous. Choisissez le vôtre :

Cursor