API Zdalnej Księgowości
Ostatnia aktualizacja: 10 maja 2026
Rejestruj wpisy z cURL, Skrótów iOS lub skryptów automatyzujących za pomocą osobistego tokenu API. Token jest tylko do zapisu — może wstawiać transakcje i odczytywać listy kategorii / tagów, ale nie może czytać ani usuwać żadnych danych transakcji.
1. Pobierz token
Zaloguj się jako admin, otwórz Ustawienia → 🔑 API Zdalnej Księgowości i kliknij „Wygeneruj token".
Token w postaci jawnej jest wyświetlany tylko raz — natychmiast go skopiuj. Serwer przechowuje wyłącznie skrót SHA-256, więc utracony token można jedynie zastąpić rotacją (która unieważnia stary).
Format tokenu: bb_<userId>_<secret>. Wysyłaj go w każdym żądaniu jako Authorization: Bearer <token>.
2. POST /api/ingest — wstaw jedną transakcję
Body żądania to obiekt JSON z następującymi polami:
title(string, wymagane) — nazwa transakcjiamount(number, wymagane) — musi być dodatnietype(string, opcjonalne, domyślnieexpense) — jedno zexpense/income/prepaid_expense/pending_incomecategory(string, opcjonalne) — nazwa kategoriinote(string, opcjonalne) — dowolna notatkacreated_at(string, opcjonalne) — ISO 8601; domyślnie teraz
curl -X POST https://billbook.me/api/ingest \
-H "Authorization: Bearer bb_<userId>_<secret>" \
-H "Content-Type: application/json" \
-d '{"title":"Coffee","amount":120,"type":"expense","category":"Food"}'
# response: 201
{ "id": "...", "created_at": "..." }3. GET /api/ingest/categories — lista kategorii
Zwraca nazwy kategorii admina w kolejności rozwijanego menu w panelu. Odpowiedź zawiera tylko nazwy — bez id, user id ani danych transakcji.
curl https://billbook.me/api/ingest/categories \
-H "Authorization: Bearer bb_<userId>_<secret>"
# response: 200
{ "categories": ["Food", "Rent", "..."] }4. GET /api/ingest/tags — ostatnio używane tagi
Zwraca ostatnio aktualizowane prefiksy tagów (znaczniki #XXX osadzane w tytułach). Domyślnie 20; użyj ?limit=, aby nadpisać (maks. 100).
Zwraca pustą tablicę zamiast błędu, jeśli tabela tag_prefixes jeszcze nie istnieje.
curl "https://billbook.me/api/ingest/tags?limit=20" \
-H "Authorization: Bearer bb_<userId>_<secret>"
# response: 200
{ "tags": ["#management-fee", "#travel", "..."] }5. Kody błędów
Wszystkie błędy są w formacie JSON: { "error": "wiadomość" }.
401— brak autoryzacji, błędny format tokenu, odwołany lub niezgodny402— subskrypcja wygasła; do zapisu wymagane odnowienie405— metoda nieobsługiwana (np. GET na/api/ingest)501— brakSUPABASE_SERVICE_ROLE_KEYna serwerze500— inny błąd wewnętrzny
6. Bezpieczeństwo i ograniczenia
Z założenia token może pisać tylko do własnej organizacji — nie może podszywać się pod inne org ani czytać istniejących danych:
user_idzawsze należy do właściciela tokenu; nie da się go sfałszowaćorg_idzawsze jest org właściciela; zapisy międzyorganizacyjne są niemożliwe- Tokeny wydawane są tylko roli admin (manager / staff dostają 403)
- Odpowiedzi nie ujawniają innych wierszy — zwracane jest tylko
{ id, created_at } - Unieważnienie działa natychmiast; rotuj w dowolnym momencie z Ustawień
7. Przykład Skrótu iOS
Dodaj akcję „Pobierz zawartość URL", URL https://billbook.me/api/ingest, metoda POST, nagłówki Authorization: Bearer bb_... i Content-Type: application/json, treść jako JSON: {"title":"Kawa","amount":120,"type":"expense"}. Podłącz title i amount do wejścia Skrótu lub zmiennych „Pytaj za każdym razem".
Ten dokument jest szybkim odniesieniem; faktyczne zachowanie określa kod backendu.