API vzdáleného účetnictví
Naposledy aktualizováno: 10. května 2026
Zaznamenávejte záznamy z cURL, Zkratek iOS nebo automatizačních skriptů pomocí osobního API tokenu. Token je pouze pro zápis — umí vkládat transakce a číst seznamy kategorií / tagů, ale nemůže číst ani mazat žádná transakční data.
1. Získat token
Přihlaste se jako admin, otevřete Nastavení → 🔑 API vzdáleného účetnictví a klikněte na „Vygenerovat token".
Token v otevřené podobě se zobrazí pouze jednou — okamžitě jej zkopírujte. Server uchovává jen jeho SHA-256 hash, takže ztracený token lze nahradit pouze rotací (která zneplatní starý).
Formát tokenu: bb_<userId>_<secret>. Posílejte v každém požadavku jako Authorization: Bearer <token>.
2. POST /api/ingest — vložit jednu transakci
Tělo požadavku je JSON objekt s následujícími poli:
title(string, povinné) — název transakceamount(number, povinné) — musí být kladnétype(string, volitelné, výchozíexpense) — jedno zexpense/income/prepaid_expense/pending_incomecategory(string, volitelné) — název kategorienote(string, volitelné) — volná poznámkacreated_at(string, volitelné) — ISO 8601; výchozí nyní
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 — seznam kategorií
Vrací názvy kategorií admina v pořadí rozbalovacího menu na dashboardu. Odpověď obsahuje pouze názvy — žádná ids, user ids ani transakční data.
curl https://billbook.me/api/ingest/categories \
-H "Authorization: Bearer bb_<userId>_<secret>"
# response: 200
{ "categories": ["Food", "Rent", "..."] }4. GET /api/ingest/tags — nedávno použité tagy
Vrací nejnověji aktualizované předpony tagů (značky #XXX vložené v titulech). Výchozí 20; použijte ?limit= k přepsání (max. 100).
Vrací prázdné pole místo chyby, pokud tabulka tag_prefixes ještě neexistuje.
curl "https://billbook.me/api/ingest/tags?limit=20" \
-H "Authorization: Bearer bb_<userId>_<secret>"
# response: 200
{ "tags": ["#management-fee", "#travel", "..."] }5. Chybové kódy
Všechny chyby jsou JSON: { "error": "zpráva" }.
401— chybí autorizace, špatný formát tokenu, zrušený nebo neshodný402— předplatné vypršelo; pro zápis je potřeba obnovit405— metoda není podporována (např. GET na/api/ingest)501— serveru chybíSUPABASE_SERVICE_ROLE_KEY500— jiná interní chyba
6. Bezpečnost a omezení
Záměrně může token zapisovat pouze do své vlastní organizace — nemůže se vydávat za jiné orgs ani číst existující data:
user_idje vždy vlastník tokenu; nelze jej padělatorg_idje vždy org vlastníka; zápisy mezi org jsou nemožné- Tokeny se vydávají pouze roli admin (manager / staff dostanou 403)
- Odpovědi nikdy neunikají jiné řádky — vrací se pouze
{ id, created_at } - Zrušení je okamžité; rotujte kdykoli z Nastavení
7. Příklad Zkratky iOS
Přidejte akci „Získat obsah URL", URL https://billbook.me/api/ingest, metoda POST, hlavičky Authorization: Bearer bb_... a Content-Type: application/json, tělo požadavku jako JSON: {"title":"Káva","amount":120,"type":"expense"}. Propojte title a amount se vstupem Zkratky nebo proměnnými „Zeptat se pokaždé".
Tento dokument je rychlý odkaz; skutečné chování určuje kód backendu.