Gli SMS si stanno evolvendo

L'API SMS per gli sviluppatori che devono davvero rilasciare.

Configurazione in:
Cursor

Oltre 150 paesi, 240 connessioni dirette agli operatori, un unico modello di autenticazione. Circa il 40% del volume globale di SMS commerciali transita attraverso la rete Bird — lo facciamo da un decennio. Il 95% dei messaggi viene consegnato in meno di 2,5 secondi.

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 minuti da npm install al primo invio

Invia un SMS dal linguaggio che già utilizzi.

SDK per ogni runtime principale. Il primo invio va a un destinatario di test autorizzato (+15005550006) così puoi integrare un check CI prima di acquistare un numero.

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();

Dieci cose che registriamo, configuriamo e instraiamo al posto vostro.

Routing, conformità e primitive inbound, con nomi definiti e tracciabili.

  1. 01

    Copertura in oltre 150 Paesi

    Un'unica API, un unico rapporto di fatturazione — nessun contratto per singola regione da rincorrere.

  2. 02

    240 connessioni dirette con gli operatori

    Nessun aggregatore intermediario che erode i margini o perde le ricevute tra noi e l'operatore mobile.

  3. 03

    Routing di livello operatore

    Riselezione delle rotte in tempo reale quando un percorso verso l'operatore si degrada; il failover avviene prima che te ne accorga.

  4. 04

    SMS bidirezionali in ingresso

    I messaggi in ingresso arrivano come webhook firmati HMAC sul numero che hai attivato.

  5. 05

    Numeri di ogni tipo

    Numeri lunghi, numeri brevi, numeri verdi e Sender ID alfanumerici — tutti attivabili tramite un unico endpoint.

  6. 06

    A2P 10DLC nel dashboard

    Registrazione di brand e campagne gestita nella console; lo stato è interrogabile via API.

  7. 07

    Lookup MNP prima dell'invio

    Verifichiamo l'operatore attuale del destinatario a ogni invio, così la rotta è sempre corretta.

  8. 08

    Conformità STOP / HELP

    Le keyword di opt-out vengono rispettate automaticamente per ogni destinatario; la lista di soppressione è interrogabile.

  9. 09

    Ricevute di consegna come webhook

    Ogni transizione di stato genera un evento firmato — da sms.queued fino a sms.delivered o sms.failed.

  10. 10

    Segmenti e sicurezza Unicode

    L'SDK conta i segmenti prima dell'invio e avvisa in caso di cambi di codifica che dividerebbero il messaggio.

L'SMS è un canale all'interno di un toolkit più ampio. Verifica gli utenti con codici monouso tramite Verifications, controlla il line type e il carrier di un numero prima di inviare con Lookup, oppure raggiungi lo stesso dispositivo con rich card via RCS.

Perché sviluppiamo SMS

SMS è il canale caotico. Abbiamo costruito l'API che lo rende noioso.

Ogni paese ha regole diverse, ogni operatore ha rotte diverse, ogni regione ha convenzioni diverse per il sender ID. Gestiamo gli SMS da dieci anni, quindi tutta questa conoscenza è dietro un unico endpoint, un unico modello di autenticazione, un unico contratto webhook. Qualunque cosa cambi a monte, la chiamata che avete scritto su bird.sms.send resta invariata.

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..."

Ogni cambio di stato è un webhook.

Payload firmati HMAC, protetti da replay, idempotenti. Lo stesso formato su ogni canale Bird — impara uno, li conosci tutti.

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

Pianificazione dei retry: 5s, 30s, 5m, 30m, 2h, 6h, 12h. Dead-letter dopo l'ultimo tentativo; ogni evento in dead-letter è riproducibile dal dashboard o via API.

  • sms.queuedAccettato dall'API e accodato per il passaggio all'operatore.
  • sms.sentInoltrato all'SMSC dell'operatore di destinazione.
  • sms.deliveredRicevuta di consegna ricevuta dall'operatore (DLR).
  • sms.failedErrore permanente — rifiuto dell'operatore, numero non valido, corrispondenza nella lista di soppressione.
  • sms.receivedMessaggio in ingresso su uno dei tuoi numeri attivi.
  • sms.opted_outIl destinatario ha inviato la keyword STOP; i futuri invii a questo numero verranno soppressi.

Se hai integrato SMS, hai integrato WhatsApp.

Stesso modello di auth, stesso contratto di idempotency, stesso envelope di errore, stessa forma di webhook. La differenza sta in cosa fa ciascuno, non in come lo chiami.

SMS

Un verbo. Testo semplice. To/from numerico. La struttura che ogni sviluppatore ha già nelle dita.

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

WhatsApp

Stesso verbo. Payload diverso — con template, con opt-in, nel canale che due miliardi di persone aprono ogni giorno.

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

FAQ sull'API SMS

Quanto velocemente posso inviare il mio primo SMS?+
Installa l'SDK e invia al destinatario di test autorizzato +15005550006 in circa cinque minuti — puoi rilasciare un controllo CI prima ancora di provisionare un numero.
Cosa include l'API SMS di Bird?+
Un endpoint di invio, traffico inbound bidirezionale, provisioning dei numeri (long code, short code, toll-free e alpha sender ID), conformità A2P 10DLC e opt-out, routing direct-to-carrier e analisi di consegna — tutto su un'unica API.
Verso quali paesi posso inviare?+
Bird raggiunge oltre 150 paesi tramite 240 connessioni direct-to-carrier, con riselezione delle rotte di livello operatore quando un percorso carrier si degrada.
Gestite le keyword STOP e HELP?+
Sì, automaticamente per destinatario. STOP esclude un destinatario e lo aggiunge a una lista di soppressione consultabile, HELP restituisce una risposta di aiuto automatica e START lo iscrive di nuovo.
Devo registrarmi per A2P 10DLC?+
Per inviare traffico application-to-person verso numeri USA, sì. La registrazione di brand e campagne si gestisce nel dashboard e lo stato è interrogabile dall'API.

Prezzi

Da meno di un centesimo a pochi centesimi per segmento

Prezzo in base all'utilizzo e al paese di destinazione. La griglia completa per paese è sulla pagina dei prezzi e gli sconti per volume si applicano automaticamente a livello di account. Nessuna platform fee, nessuna seat fee, nessuna funzionalità di livello bloccata dietro impegni annuali.

Scelto ogni giorno dai team che creano software di livello mondiale

Inizia con un canale.
Aggiungi gli altri quando sei pronto.

Una chiave API di test è subito tua. La produzione si sblocca quando aggiungi un metodo di pagamento e verifichi un mittente.

Usi Claude Code, Cursor o Codex? Copia un prompt di configurazione e il tuo agente installerà la CLI e le skill di Bird per te. Scegli il tuo:

Cursor