Przejdź do głównej treści
Każde zapytanie do Railmail API musi być uwierzytelnione kluczem API przypisanym do projektu. Zapytania bez ważnego klucza zwracają 401.

Klucze API

Klucze mają format rm_(live|test)_<losowy>:
PrefiksŚrodowiskoZastosowanie
rm_live_...ProdukcyjneRuch produkcyjny na prawdziwych subskrybentach i kampaniach.
rm_test_...TestoweRozwój i testy bez wpływu na dane produkcyjne.
Klucz odpowiada dokładnie jednemu projektowi. Wszystkie odczyty i zapisy są automatycznie izolowane do tego projektu i jego tenanta — klucz nie może odczytać ani zmodyfikować danych innego projektu.
Traktuj klucze API jak hasła. Nigdy nie umieszczaj ich w repozytorium ani w kodzie po stronie klienta. Przechowuj je w zmiennych środowiskowych lub menedżerze sekretów.

Wysyłanie klucza

Przekaż klucz w nagłówku X-API-Key:
curl https://api.railmail.app/api/v1/subscribers \
  -H "X-API-Key: rm_live_twoj_klucz"
Alternatywnie wyślij go jako token bearer — przydatne z klientami obsługującymi tylko Authorization:
curl https://api.railmail.app/api/v1/subscribers \
  -H "Authorization: Bearer rm_live_twoj_klucz"
Oba sposoby są równoważne. Użyj tego, który jest wygodniejszy w Twoim kliencie HTTP.

Zakresy

Każdy klucz posiada zestaw zakresów (scopes). Każda operacja wymaga określonego zakresu, opisanego w jej opisie (na przykład Requires scope: subscribers:write). Zapytanie, którego klucz nie ma wymaganego zakresu, zwraca 403 — to różnica względem 401, który oznacza brak lub nieważny klucz. Pełna taksonomia zakresów:
ZasóbZakresy
Subskrybencisubscribers:read, subscribers:write
Tematytopics:read, topics:write
Segmentysegments:read, segments:write
Kampaniecampaigns:read, campaigns:write
Automatyzacjeautomations:read, automations:write
Pola niestandardowecustom_fields:read, custom_fields:write
Domeny wysyłkowesending_domains:read, sending_domains:write
Zgodyconsents:manage
Wykluczeniasuppressions:manage
Raportyreports:read
Rozliczeniabilling:read
Kredyty AIcredits:read
Przyznawaj każdemu kluczowi tylko te zakresy, których potrzebuje. Klucz służący wyłącznie do synchronizacji subskrybentów nie potrzebuje campaigns:write ani billing:read.