Sign inGet Started

Uwierzytelnianie i klucze API

Każde programowe żądanie do Bird API uwierzytelnia się kluczem API przekazywanym jako token bearer. Klucze należą do obszaru roboczego, mają uprawnienia, które możesz zmieniać, i są wyświetlane w pełni dokładnie raz.
Różnicę między poświadczeniami serwisowymi a dostępem delegowanym opisuje sekcja Klucze API i tokeny OAuth.

Jak żądania się uwierzytelniają

Przekazuj klucz w nagłówku Authorization przy każdym żądaniu. SDK-i i CLI przyjmują klucz raz i ustawiają nagłówek za ciebie:
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.",
});
Region w prefiksie klucza wskazuje, który host wywołać: klucze bk_us1_... kierują do https://us1.platform.bird.com, klucze bk_eu1_... do https://eu1.platform.bird.com. Oficjalne SDK-i Bird i CLI odczytują region z klucza i wybierają host za ciebie. Klucz wysłany do niewłaściwego hosta regionalnego zwraca 421 (typ misdirected_error); zobacz Regiony.
Brakujący lub nieprawidłowy klucz zwraca 401. Prawidłowy klucz bez uprawnienia wymaganego przez endpoint zwraca 403. Semantykę nagłówka i odpowiedzi z błędami opisuje dokumentacja uwierzytelniania.

Budowa klucza

Przykład kodu
bk_us1_Ab3xKq9mP2wR5tY8uI1oL4n3A3aww
└┬┘└┬┘ └──────────┬──────────┘└─┬──┘
 │  │          payload      checksum
 │  └ region (routes the request)
 └ Bird key prefix
  • Prefiks: bk_{region}_ określa typ poświadczenia i jego region. Stały, charakterystyczny prefiks pozwala skanerom sekretów rozpoznać klucz Bird w kodzie, a segment regionu kieruje żądanie do właściwego hosta.
  • Payload: 23 losowe znaki niosące 136 bitów entropii.
  • Suma kontrolna: ostatnie 6 znaków to suma kontrolna reszty klucza, dzięki czemu SDK lub API mogą natychmiast odrzucić błędnie wpisany lub obcięty klucz, zanim zostanie w ogóle wyszukany.
Pełny klucz jest zwracany raz, w odpowiedzi, która go tworzy. Nie możesz później pobrać tekstu jawnego. Kolejne odpowiedzi zawierają pierwsze 15 znaków jako key_prefix, na przykład bk_us1_Ab3xKq9m. Zawierają też stały 12-znakowy fingerprint do dopasowywania klucza w logach i rozmowach z supportem bez ujawniania jego wartości.
Jeśli zgubisz klucz, zrotuj go, aby uzyskać nowy sekret, albo unieważnij go i utwórz nowy.

Tworzenie klucza

Twórz klucze w dashboardzie w sekcji Platform tools > Klucze API. Klucz jest tworzony z nazwą, jednym lub wieloma zakresami i opcjonalnym terminem wygaśnięcia. Odpowiedź, która go tworzy, jest jedyną, która kiedykolwiek zawiera pole token (pełny klucz): natychmiast zapisz go w menedżerze sekretów.
Możesz też utworzyć klucz bez przeglądarki, za pomocą bird api-keys create. Wydawanie kluczy wymaga zakresu api_keys:write, którego nie obejmuje bazowy tryb logowania tylko do odczytu, więc zażądaj go przy logowaniu:
Przykład kodu
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
Uruchom bird api-keys create --example, aby wyświetlić kompletne ciało żądania do edycji.
Zakresy to jedyna rzecz, której klucz nie może przyznać sam sobie: api_keys:write nie jest dostępne dla kluczy API, więc klucz nigdy nie może wydać innego klucza. Wydawanie odbywa się jako ty, w sesji dashboardu albo na grancie CLI lub MCP.
Strona kluczy API w dashboardzie Bird, z listą kluczy wraz z zamaskowanym prefiksem, zakresami i czasem ostatniego użycia
Po utworzeniu klucza możesz nim zarządzać:
  • Zakresy są edytowalne. Edycja zastępuje zestaw uprawnień i zachowuje ten sam sekret. Możesz przyznać zakresy, które posiada twoje konto. Jeśli klucz został utworzony, zanim mógł obsługiwać uprawnienie takie jak voice, zrotuj go, aby dodać to uprawnienie. Unieważnionych kluczy i kluczy już zastąpionych przez rotację nie można edytować.
  • Termin wygaśnięcia jest stały. Ustaw expires_at, gdy klucz powinien przestać działać w określonym momencie (zaangażowanie kontraktora, okno migracji). Po tym momencie klucz zwraca 401; klucz bez terminu wygaśnięcia działa do momentu unieważnienia.
  • Zarządzanie kluczami pozostaje przy ludziach. Tworzenie, edytowanie i unieważnianie kluczy wymaga uprawnienia api_keys:write, posiadanego przez role administratora obszaru roboczego i developera (zobacz Użytkownicy, zespoły i role) i nigdy nienadalnego samemu kluczowi API. Wyciekły klucz nie może wygenerować kolejnych kluczy.
Strona kluczy API wyświetla każdy klucz z jego key_prefix, zakresami i datą last_used_on (z dokładnością do dnia), dzięki czemu od razu widzisz nieużywane klucze. Unieważnione klucze nie pojawiają się na liście, chyba że zdecydujesz się je wyświetlić.

Zakresy i poziomy

Każdy zakres klucza to para {scope, level}, gdzie level to read lub write (write obejmuje read). Klucze API mają następujące zakresy:
Zakresreadwrite
emailsOdczyt wysłanych wiadomości i statusu dostarczeniaWysyłanie e-maili
email_managementOdczyt suppressions, konfiguracji e-mail i szablonówZarządzanie suppressions, konfiguracją e-mail i szablonami
email_marketingOdczyt kontaktów, odbiorców i kampaniiZarządzanie kontaktami, odbiorcami i kampaniami
domainsOdczyt domen wysyłkowych i ich rekordów DNSDodawanie, weryfikacja i zarządzanie domenami wysyłkowymi
smsOdczyt wysłanych SMS i statusu dostarczeniaWysyłanie SMS
sms_managementOdczyt nadawców, rejestracji, suppressions, odpowiedzi na słowa kluczowe, destynacji i szablonówZarządzanie nadawcami, rejestracjami, suppressions, odpowiedziami na słowa kluczowe, destynacjami i szablonami
whatsappOdczyt wysłanych wiadomości WhatsApp i statusuWysyłanie wiadomości WhatsApp
whatsapp_managementOdczyt szablonów i ustawień WhatsAppZarządzanie szablonami i ustawieniami WhatsApp
verifyOdczyt statusu weryfikacjiWysyłanie i sprawdzanie kodów weryfikacyjnych
realtimeOdczyt aplikacji Realtime, kanałów i członków kanałówTworzenie aplikacji i publikowanie zdarzeń
voiceOdczyt logów połączeń i statystyk rozmówUwierzytelnianie połączeń SIP i tworzenie poświadczeń sesji
voice_managementOdczyt trunków, bramek, numerów, identyfikatorów dzwoniącego i destynacjiZarządzanie trunkami, bramkami, numerami, identyfikatorami dzwoniącego i destynacjami
mailboxOdczyt skrzynek pocztowych, wątków i wiadomościWysyłanie i odpowiadanie na wiadomości skrzynek pocztowych
mailbox_managementOdczyt reguł odbioru i konfiguracji skrzynek pocztowychTworzenie, aktualizacja i usuwanie skrzynek pocztowych oraz reguł odbioru
assetsOdczyt zasobów i folderówPrzesyłanie, aktualizacja i usuwanie zasobów oraz folderów
workspaceOdczyt nazwy obszaru roboczego, ID organizacji i ustawieńNiedostępne
webhooksOdczyt subskrypcji webhooków i ich prób dostarczeniaTworzenie, aktualizacja, usuwanie, testowanie, ponawianie i rotacja sekretu webhooka
lookupNiedostępneWyszukiwanie numerów telefonów, adresów e-mail i dopasowań tożsamości
Zmiana ustawień obszaru roboczego, zarządzanie członkami, wydawanie kluczy i zarządzanie pulami IP celowo nie są nadawalne kluczom API, więc wykonuje je osoba, a nie klucz: przez dashboard albo przez CLI lub serwer MCP na grancie posiadającym odpowiedni zakres. Przyznawaj najwęższy zestaw, który działa: klucz służący tylko do wysyłania e-maili powinien mieć wyłącznie emails:write.
lookup nie ma operacji na poziomie odczytu: każdy endpoint wyszukiwania, w tym pobieranie istniejącego wyniku, wymaga write.

Unieważnianie klucza

Unieważnij klucz z jego wiersza w sekcji Platform tools > Klucze API. Unieważnienie jest trwałe: unieważnionego klucza nie można reaktywować, a jego rekord jest zachowywany do audytu z ustawionym revoked_at.
Unieważnienie propaguje się szybko, ale nie natychmiast. Walidacja klucza przechodzi przez krótkotrwały cache, więc świeżo unieważniony klucz może działać jeszcze kilka sekund (najwyżej pięć), zanim każde żądanie z nim zacznie zwracać 401.

Rotacja klucza

Rotacja wydaje zamiennik klucza, który już posiadasz, i zwraca jego token raz, w tej odpowiedzi. Zamiennik przejmuje nazwę, zakresy i ograniczenia źródłowych adresów IP klucza źródłowego. Zaczyna bez terminu wygaśnięcia. Zrotuj klucz z jego wiersza w sekcji Platform tools > Klucze API albo bez przeglądarki za pomocą bird api-keys rotate i narzędzia api_keys_rotate MCP:
Przykład kodu
bird auth login --scope api_keys:write
bird api-keys rotate key_01hqz8kp3v9x2m --yes
Poprzedni klucz działa dalej przez okres przejściowy, domyślnie 24 godziny, więc możesz wdrożyć nowy token, zanim stary przestanie działać. Przekaż grace_period: 0 (--grace-period 0 w CLI), aby natychmiast unieważnić poprzedni klucz. Właśnie tego wymaga wyciekły klucz: nie ma nakładania się i każde żądanie z nim zaczyna zwracać błąd. Klucz, którego termin wygaśnięcia jest wcześniejszy niż okres przejściowy, zachowuje swój własny termin, ponieważ rotacja nigdy nie przedłuża życia klucza.
Zanim zautomatyzujesz rotację kluczy, weź pod uwagę dwa ograniczenia. Rotacja nigdy nie przenosi daty wygaśnięcia, więc zamiennik klucza, który wygasał w określonym czasie, działa aż do odwołania; użyj create, gdy data wygaśnięcia ma znaczenie. Klucz można zrotować tylko raz: druga rotacja tego samego klucza zwraca 409, więc wysyłaj Idempotency-Key, a ponowienie odtworzy oryginalną odpowiedź. Bez niego rotacja, której odpowiedzi nigdy nie otrzymałeś, utworzyła aktywny klucz, którego tokenu nie możesz odczytać.
Ręczne nakładanie dwóch kluczy jest wciąż bezpieczniejszą ścieżką, gdy nie możesz przewidzieć, jak długo potrwa przełączenie, ponieważ okres przejściowy jest ustalany w momencie rotacji i nie można go potem wydłużyć:
  1. Utwórz nowy klucz z tymi samymi zakresami.
  2. Wdróż nowy klucz w swoich usługach.
  3. Obserwuj last_used_on starego klucza, aż ruch się przeniesie.
  4. Unieważnij stary klucz.

Klucze należą do obszaru roboczego

Klucz API jest powiązany z twoim obszarem roboczym i uwierzytelnia się z uprawnieniami tego obszaru roboczego. Osobiste uprawnienia twórcy nie mają na niego wpływu. Ma to dwie praktyczne konsekwencje:
  • Klucze przeżywają odejścia. Gdy pracownik odchodzi i jego konto użytkownika zostaje usunięte, utworzone przez niego klucze działają dalej. Nigdy nie masz awarii produkcyjnej z powodu odejścia osoby, która kliknęła "create". (Jej odejście to wciąż dobry powód, by zrotować klucze, do których miała dostęp.)
  • Zasięg klucza kończy się na obszarze roboczym. Klucz nigdy nie może wykonywać operacji na poziomie organizacji: rozliczeń, zarządzania członkami organizacji, ustawień organizacji.
Ponieważ klucz jest przypisany do obszaru roboczego, żądania z kluczem nie wymagają dodatkowego kontekstu; zobacz Obszar roboczy, aby dowiedzieć się, jak obszar roboczy i nadrzędna organizacja dzielą to, do czego masz dostęp.

Ścieżka delegowana: tokeny OAuth dla CLI i serwera MCP

Klucze API są przeznaczone dla usług. Bird CLI i serwer Bird MCP używają OAuth, gdy osoba się loguje. Logujesz się przez przeglądarkę, wybierasz obszar roboczy i przyznajesz podzbiór swoich uprawnień. Narzędzie otrzymuje wtedy krótkotrwały token użytkownika bt_{region}_....
Każdy token jest ograniczony do uprawnień, które posiadasz. Dostęp dla każdego narzędzia możesz cofnąć w sekcji Profile > Connected apps. Narzędzia zarządzają tymi tokenami za ciebie, więc nie kopiuj ich ani nie przechowuj w menedżerze sekretów. Do obciążeń serwerowych używaj kluczy API.

Następne kroki