Sign inGet Started

Autenticazione e chiavi API

Ogni richiesta programmatica alle Bird API si autentica con una chiave API passata come bearer token. Le chiavi appartengono a uno spazio di lavoro, hanno permessi modificabili e vengono mostrate per intero una sola volta.
Per la distinzione tra credenziali di servizio e accesso delegato, vedi Chiavi API e token OAuth.

Come si autenticano le richieste

Passa la tua chiave nell'header Authorization in ogni richiesta. Gli SDK e la CLI accettano la chiave una sola volta e impostano l'header per te:
import { BirdClient } from "@messagebird/sdk";

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

await bird.email.send({
  from: "hello@yourdomain.com",
  to: ["delivered@messagebird.dev"],
  subject: "Hi",
  text: "Hello.",
});
La regione nel prefisso della chiave indica quale host chiamare: le chiavi bk_us1_... vanno a https://us1.platform.bird.com, le chiavi bk_eu1_... a https://eu1.platform.bird.com. Gli SDK ufficiali Bird e la CLI leggono la regione dalla chiave e selezionano l'host per te. Una chiave inviata all'host regionale sbagliato restituisce 421 (tipo misdirected_error); vedi Regioni.
Una chiave mancante o non valida restituisce 401. Una chiave valida priva del permesso richiesto dall'endpoint restituisce 403. La semantica degli header e le risposte di errore si trovano nel riferimento all'autenticazione.

Anatomia di una chiave

Esempio di codice
bk_us1_Ab3xKq9mP2wR5tY8uI1oL4n3A3aww
└┬┘└┬┘ └──────────┬──────────┘└─┬──┘
 │  │          payload      checksum
 │  └ region (routes the request)
 └ Bird key prefix
  • Prefisso: bk_{region}_ indica il tipo di credenziale e la sua regione. Il prefisso fisso e distintivo è ciò che permette ai secret scanner di riconoscere una chiave Bird nel codice, e il segmento di regione instrada la richiesta all'host corretto.
  • Payload: 23 caratteri casuali con 136 bit di entropia.
  • Checksum: gli ultimi 6 caratteri sono un checksum del resto della chiave, così un SDK o la API possono rifiutare immediatamente una chiave digitata male o troncata, prima ancora di cercarla.
La chiave completa viene restituita una sola volta, nella risposta che la crea. Non puoi recuperare il testo in chiaro in seguito. Le risposte successive includono i primi 15 caratteri come key_prefix, ad esempio bk_us1_Ab3xKq9m. Includono anche un fingerprint stabile di 12 caratteri per abbinare una chiave nei log e nelle conversazioni con il supporto senza esporne il valore.
Se perdi una chiave, ruotala per ottenere un nuovo segreto oppure revocala e creane una nuova.

Creare una chiave

Crea le chiavi nella dashboard in Platform tools > Chiavi API. Una chiave viene creata con un nome, uno o più scope e una scadenza facoltativa. La risposta che la crea è l'unica che contiene il campo token (la chiave completa): salvala subito nel tuo secret manager.
Puoi anche crearne una senza browser, con bird api-keys create. L'emissione delle chiavi richiede lo scope api_keys:write, che il profilo di login in sola lettura non include, quindi richiedilo quando effettui l'accesso:
Esempio di codice
bird auth login --scope api_keys:write
bird api-keys create --body-file - <<'JSON'
{
  "name": "Email operations production key",
  "scopes": [{ "scope": "emails", "level": "write" }]
}
JSON
Esegui bird api-keys create --example per stampare un body completo da modificare.
Gli scope sono l'unica cosa che una chiave non può concedersi da sola: api_keys:write non è disponibile per le chiavi API, quindi una chiave non può mai emetterne un'altra. L'emissione avviene come te, in una sessione della dashboard o con un grant CLI o MCP.
La pagina Chiavi API nella dashboard Bird, con l'elenco delle chiavi, il prefisso mascherato, gli scope e l'ultimo utilizzo
Puoi gestire una chiave dopo averla creata:
  • Gli scope sono modificabili. La modifica sostituisce l'insieme dei permessi mantenendo lo stesso segreto. Puoi concedere scope di cui dispone il tuo account. Se la chiave è stata creata prima che potesse supportare un permesso come voice, ruotala per aggiungerlo. Le chiavi revocate e quelle già sostituite da una rotazione non possono essere modificate.
  • La scadenza è fissa. Imposta expires_at quando una chiave deve smettere di funzionare a un momento noto (l'incarico di un collaboratore, una finestra di migrazione). Superato quel momento la chiave restituisce 401; una chiave senza scadenza resta attiva fino alla revoca.
  • La gestione delle chiavi resta alle persone. Creare, modificare e revocare chiavi richiede il permesso api_keys:write, assegnato ai ruoli admin e developer dello spazio di lavoro (vedi Utenti, team e ruoli) e mai concedibile a una chiave API stessa. Una chiave compromessa non può generarne altre.
La pagina delle chiavi API elenca ogni chiave con il proprio key_prefix, gli scope e la data di last_used_on (precisione al giorno), così puoi individuare a colpo d'occhio le chiavi inutilizzate. Le chiavi revocate restano escluse dall'elenco, a meno che tu non scelga di mostrarle.

Scope e livelli

Ogni scope su una chiave è una coppia {scope, level}, dove level è read o write (write include read). Le chiavi API hanno questi scope:
Scopereadwrite
emailsLettura dei messaggi inviati e dello stato di consegnaInvio di email
email_managementLettura di soppressioni, configurazione email e templateGestione di soppressioni, configurazione email e template
email_marketingLettura di contatti, audience e broadcastGestione di contatti, audience e broadcast
domainsLettura dei domini di invio e dei relativi record DNSAggiunta, verifica e gestione dei domini di invio
smsLettura degli SMS inviati e dello stato di consegnaInvio di SMS
sms_managementLettura di sender, registrazioni, soppressioni, risposte a keyword, destinazioni e templateGestione di sender, registrazioni, soppressioni, risposte a keyword, destinazioni e template
whatsappLettura dei messaggi WhatsApp inviati e del relativo statoInvio di messaggi WhatsApp
whatsapp_managementLettura di template e impostazioni WhatsAppGestione di template e impostazioni WhatsApp
verifyLettura dello stato di verificaInvio e controllo dei codici di verifica
realtimeLettura di app Realtime, canali e membri dei canaliCreazione di app e pubblicazione di eventi
voiceLettura dei log delle leg e delle statistiche di chiamataAutenticazione delle chiamate SIP e creazione di credenziali di sessione
voice_managementLettura di trunk, gateway, numeri, caller ID e destinazioniGestione di trunk, gateway, numeri, caller ID e destinazioni
mailboxLettura di caselle di posta, thread e messaggiInvio e risposta ai messaggi delle caselle di posta
mailbox_managementLettura delle regole di ricezione e della configurazione delle caselle di postaCreazione, aggiornamento ed eliminazione di caselle di posta e regole di ricezione
assetsLettura di asset e cartelleCaricamento, aggiornamento ed eliminazione di asset e cartelle
workspaceLettura del nome, dell'ID organizzazione e delle impostazioni dello spazio di lavoroNon disponibile
webhooksLettura delle sottoscrizioni webhook e dei relativi tentativi di consegnaCreazione, aggiornamento, eliminazione, test, replay e rotazione del segreto di un webhook
lookupNon disponibileRicerca di numeri di telefono, indirizzi email e corrispondenze di identità
La modifica delle impostazioni dello spazio di lavoro, la gestione dei membri, l'emissione di chiavi e la gestione dei pool IP non sono intenzionalmente concedibili alle chiavi API, quindi vengono eseguite come persona e non come chiave: tramite la dashboard, oppure tramite la CLI o il server MCP con un grant che possiede lo scope. Concedi l'insieme più ristretto possibile: una chiave che invia solo email dovrebbe avere emails:write e nient'altro.
lookup non ha operazioni a livello di lettura: ogni endpoint di ricerca, incluso il recupero di un risultato esistente, richiede write.

Revocare una chiave

Revoca una chiave dalla sua riga in Platform tools > Chiavi API. La revoca è permanente: una chiave revocata non può essere riattivata e il suo record viene conservato per audit con revoked_at impostato.
La revoca si propaga rapidamente ma non istantaneamente. La validazione delle chiavi passa attraverso una cache a breve durata, quindi una chiave appena revocata può continuare a funzionare per alcuni secondi (cinque al massimo) prima che ogni richiesta con essa restituisca 401.

Ruotare una chiave

La rotazione emette una sostituta per una chiave che già possiedi e ne restituisce il token una sola volta, in quella risposta. La sostituta eredita nome, scope e restrizioni IP sorgente della chiave originale. Inizia senza scadenza. Ruota una chiave dalla sua riga in Platform tools > Chiavi API, oppure senza browser con bird api-keys rotate e lo strumento api_keys_rotate MCP:
Esempio di codice
bird auth login --scope api_keys:write
bird api-keys rotate key_01hqz8kp3v9x2m --yes
La chiave precedente continua a funzionare per un periodo di grazia, 24 ore per impostazione predefinita, così puoi distribuire il nuovo token prima che il vecchio smetta di funzionare. Passa grace_period: 0 (--grace-period 0 sulla CLI) per revocare immediatamente la chiave precedente, che è quanto serve per una chiave compromessa: non c'è sovrapposizione e ogni richiesta che la utilizza ancora inizia a fallire. Una chiave già impostata per scadere prima del periodo di grazia mantiene la propria scadenza, perché la rotazione non estende mai la vita di una chiave.
Prima di automatizzare la rotazione delle chiavi, tieni presenti due vincoli. Una rotazione non trasferisce mai la scadenza, quindi la sostituzione di una chiave che scadeva a una data nota resta attiva fino alla revoca; riemettila con create quando la scadenza è importante. Inoltre una chiave può essere ruotata una sola volta: una seconda rotazione della stessa chiave restituisce 409, quindi invia un Idempotency-Key e un nuovo tentativo riprodurrà la risposta originale. Senza di esso, una rotazione la cui risposta non hai mai ricevuto ha generato una chiave attiva il cui token non puoi più leggere.
Sovrapporre due chiavi manualmente è comunque il percorso più sicuro quando non puoi prevedere quanto durerà il passaggio, perché il periodo di grazia è fissato al momento della rotazione e non può essere esteso in seguito:
  1. Crea una nuova chiave con gli stessi scope.
  2. Distribuisci la nuova chiave ai tuoi servizi.
  3. Monitora il last_used_on della vecchia chiave finché il traffico non si è spostato.
  4. Revoca la vecchia chiave.

Le chiavi appartengono allo spazio di lavoro

Una chiave API è legata al tuo spazio di lavoro e si autentica con l'autorità di quello spazio di lavoro. I permessi personali di chi l'ha creata non la influenzano. Questo ha due conseguenze pratiche:
  • Le chiavi sopravvivono alle partenze. Quando un dipendente lascia l'azienda e il suo account utente viene rimosso, le chiavi che ha creato continuano a funzionare. Non avrai mai un'interruzione in produzione perché la persona che ha cliccato "create" ha lasciato l'azienda. (La sua partenza è comunque un buon motivo per ruotare le chiavi a cui aveva accesso.)
  • Il raggio d'azione della chiave si ferma allo spazio di lavoro. Non può mai eseguire operazioni a livello di organizzazione: fatturazione, membri dell'organizzazione, impostazioni dell'organizzazione.
Poiché la chiave è vincolata allo spazio di lavoro, le richieste con una chiave non richiedono contesto aggiuntivo; vedi Spazio di lavoro per capire come lo spazio di lavoro e l'organizzazione superiore suddividono ciò che puoi raggiungere.

Il percorso delegato: token OAuth per la CLI e il server MCP

Le chiavi API sono per i servizi. La Bird CLI e il server Bird MCP usano OAuth quando una persona effettua l'accesso. Accedi tramite il browser, scegli uno spazio di lavoro e concedi un sottoinsieme dei tuoi permessi. Lo strumento riceve quindi un token utente bt_{region}_... a breve durata.
Ogni token è limitato ai permessi che possiedi. Puoi revocare l'accesso per ogni strumento in Profile > Connected apps. Gli strumenti gestiscono questi token per te, quindi non copiarli né salvarli in un secret manager. Usa le chiavi API per i carichi di lavoro lato server.

Passaggi successivi