L'API SMS pour les développeurs qui doivent vraiment livrer.
150+ countries, 240 direct-to-carrier connections, one auth model. About 40% of the world's commercial SMS volume transits the Bird network. We've been at this a decade. 95% of messages delivered in under 2.5 seconds.
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.`,
category: "authentication",
}).safe();
if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."
Today at 2:14 PM
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.
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.sms.send({
to: "+15005550006",
text: "Hello from Node.",
category: "transactional",
}).safe();Dix choses que nous déclarons, configurons et routons à votre place.
Routage, conformité et primitives entrantes, nommés et auditables.
- 01
Couverture dans plus de 150 pays
One unified API, one billing relationship. No per-region contracts to chase down.
- 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.
- 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.
- 04
SMS entrants bidirectionnels
Les messages entrants arrivent sous forme de webhooks signés HMAC sur le numéro que vous avez provisionné.
- 05
Des numéros de toutes formes
Long codes, short codes, toll-free, and alphanumeric sender IDs, provisioned via one endpoint.
- 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.
- 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.
- 08
Conformité STOP / HELP
Les mots-clés de désinscription sont respectés automatiquement par destinataire ; la liste de suppression est interrogeable.
- 09
Accusés de réception par webhooks
Every state transition fires a signed event: sms.accepted through sms.delivered or sms.failed.
- 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.
Explorez la plateforme SMS
Chaque capacité en détail. Une seule API, un seul jeu de clés.
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é.
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.`,
category: "authentication",
}).safe();
if (error) throw error;
console.log(data.id);
// → "sms_4kT01Lq2m..."
Chaque changement d'état est un webhook.
HMAC-signed payloads, replay-protected, idempotent. The same envelope on every Bird channel: learn one, you've learned them all.
{
"type": "sms.delivered",
"timestamp": "2026-05-19T15:42:01.221Z",
"data": {
"sms_id": "sms_4kT01Lq2m",
"workspace_id": "ws_8KQ2",
"to": "+15005550006",
"from": "Bird",
"tags": [{ "name": "campaign", "value": "otp" }],
"metadata": { "user_id": "usr_12345" },
"carrier": "Verizon",
"mcc_mnc": "311480"
}
}
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.acceptedAccepté 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.rejectedRejected before carrier hand-off: invalid destination, suppression, or a content policy guard.sms.undeliveredL'opérateur a signalé un échec de livraison non permanent.sms.failedTerminal failure: the message will not be delivered.
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.
await bird.sms.send({
to: "+15005550006",
text: `Your code is ${code}.`,
category: "authentication",
});
Same verb. Different payload: templated, opted-in, in the channel two billion people open daily.
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 ?
Que comprend l'API SMS de Bird ?
Vers quels pays puis-je envoyer ?
Gérez-vous les mots-clés STOP et HELP ?
Dois-je m'enregistrer pour A2P 10DLC ?
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.