De SMS API voor developers die écht moeten shippen.
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 "@bird/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..."5 minuten van npm install tot eerste verzending
Verstuur een SMS vanuit de taal die u al gebruikt.
SDK's in elke belangrijke runtime. De eerste verzending gaat naar een goedgekeurde testontvanger (+15005550006), zodat u een CI-check kunt shippen voordat u een nummer aanvraagt.
import { BirdClient } from "@bird/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();Ten things we file, configure, and route so you don't.
Routing, compliance, and inbound primitives, named and audit-able.
- 01
150+ landen dekking
Eén uniforme API, één factureringsrelatie — geen per-regio contracten om achteraan te jagen.
- 02
240 directe carrierverbindingen
Geen tussenpersoon-aggregator die marge afroomt of ontvangstbewijzen laat vallen tussen ons en de MNO.
- 03
Operator-grade routing
Real-time route-herselectie wanneer een carrierpad verslechtert; failover vindt plaats voordat u het merkt.
- 04
Tweerichtings-SMS inbound
Inkomende berichten komen binnen als HMAC-ondertekende webhooks op het nummer dat u hebt aangevraagd.
- 05
Nummers in elke vorm
Lange codes, korte codes, gratis nummers en alfanumerieke afzender-ID's — aangevraagd via één endpoint.
- 06
A2P 10DLC in het dashboard
Merk- en campagneregistratie wordt afgehandeld in de console; de status is opvraagbaar via de API.
- 07
MNP-lookup vóór verzending
We resolven de huidige carrier van de ontvanger bij elke verzending, zodat de route altijd klopt.
- 08
STOP / HELP compliance
Opt-out-trefwoorden worden automatisch per ontvanger gehonoreerd; de suppressielijst is opvraagbaar.
- 09
Afleverbevestigingen als webhooks
Elke statuswijziging triggert een ondertekend event — van sms.queued tot sms.delivered of sms.failed.
- 10
Segment- en Unicode-veiligheid
De SDK telt segmenten vóór verzending en waarschuwt bij encodingwisselingen die een bericht zouden splitsen.
Why we build SMS
SMS is het rommelige kanaal. Wij hebben de API gebouwd die het saai maakt.
Every country has different rules, every carrier has different routes, every region has different sender-ID conventions. We've been running SMS for ten years, so that knowledge lives behind one endpoint, one auth model, one webhook contract. Whatever changes upstream, the call you wrote against bird.sms.send doesn't.
import { BirdClient } from "@bird/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..."Elke statuswijziging is een webhook.
HMAC-ondertekende payloads, replay-beschermd, idempotent. Dezelfde envelope op elk Bird-kanaal — leer er één, en u kent ze allemaal.
{
"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
}
}Retry-schema: 5s, 30s, 5m, 30m, 2u, 6u, 12u. Dead-letter na de laatste poging; elk dead-lettered event is opnieuw afspeelbaar vanuit het dashboard of de API.
sms.queuedGeaccepteerd door de API en in de wachtrij voor de carrier-overdracht.sms.sentIngediend bij de SMSC van de bestemmingscarrier.sms.deliveredAfleverbevestiging ontvangen van de carrier (DLR).sms.failedPermanente fout — carrierafwijzing, ongeldig nummer, suppressie-hit.sms.receivedInkomend bericht op een van uw aangevraagde nummers.sms.opted_outOntvanger heeft een STOP-trefwoord gestuurd; toekomstige verzendingen naar dit nummer worden onderdrukt.
Als u SMS hebt geïntegreerd, hebt u WhatsApp geïntegreerd.
Hetzelfde auth-model, hetzelfde idempotency-contract, dezelfde error-envelope, dezelfde webhook-structuur. Het verschil is wat elk doet — niet hoe u het aanroept.
SMS.
await bird.sms.send({
from: "Bird",
to: "+15005550006",
text: `Your code is ${code}.`,
});Eén werkwoord. Platte tekst. Numeriek van/naar. De structuur waarvoor elke developer al spiergeheugen heeft.
WhatsApp.
await bird.whatsapp.send({
from: "+15551234567",
to: "+15005550006",
template: { name: "otp", variables: { code } },
});Hetzelfde werkwoord. Andere payload — getemplated, opted-in, in het kanaal dat twee miljard mensen dagelijks openen.
Landafhankelijk. Van minder dan een cent tot een paar cent per segment.
Geprijsd op basis van gebruik. SMS-tarieven hangen af van bestemmingsland en route — het volledige overzicht staat op de prijspagina. Volumekortingen worden automatisch op accountniveau toegepast. Geen stoelkosten, geen functies achter een jaarlijkse commitmentmuur.