AI Budget API for developers
AI Budget has a public REST API with OAuth 2.0 authorization – “Connect AI Budget”. With the user’s consent your app can read and write their expenses and download receipts and categories. The user chooses what to share and can revoke access at any time.
API referenceRegister an appHow we built it
What the API can do today
- Read, create, update and delete expenses (
/public/v1/expenses). - Sync through the changes feed
/public/v1/expenses/changes: poll it and get new, changed and deleted expenses – deletions arrive asdeleteentries (tombstones). - Download the receipt images attached to expenses.
- Read the account’s expense categories.
- Cover several accounts with one connection: the user ticks the accounts to share (personal, business, family…) and each request names its account in the
X-Account-Idheader.GET /public/v1/accountslists the shared accounts with their type. - Read, add, change and delete incomes (
/public/v1/incomes), with their own changes feed; incomes created by a transfer between accounts are read-only. - Read budgets with the progress of the current period, and create, change and delete them (
/public/v1/budgets). - Read analytics totals (
/public/v1/analytics/summary,by-category,monthly) converted into the user's display currency. - Scopes:
expenses:read,expenses:write,receipts:read,categories:read,incomes:read,incomes:write,budgets:read,budgets:write,analytics:read.
Today the API covers expenses, receipts, categories, incomes, budgets and analytics totals. Goals and further resources may come later.
Free, no review
API access is free. Any developer registers an app in AI Budget themselves (Settings → Developers) – no manual review, no waiting. Rate limits apply per connection and per app.
The user’s privacy
The user decides which accounts to share and can disconnect your app at any time in Settings → Connected apps (how it works). End-to-end encrypted accounts stay protected: an account with text encryption can be connected read-only, and a fully encrypted account cannot be connected.
Get started in 3 steps
- Register an app in Settings → Developers: give it a name and a redirect URI, and you get a
client_idandclient_secret. - Send the user to the authorize URL
https://app.ai-budget.pl/authorizewith PKCE. The user signs in, ticks the accounts and approves the scopes. - Exchange the code for a token at
POST /oauth/tokenand callhttps://api.ai-budget.pl/public/v1with anAuthorization: Bearer …header.
# 1. Send the user to the consent page (PKCE S256)
https://app.ai-budget.pl/authorize?response_type=code&client_id=aba_ci_...
&redirect_uri=https%3A%2F%2Fexample.com%2Fcallback
&scope=expenses%3Aread+categories%3Aread&state=...
&code_challenge=...&code_challenge_method=S256
# 2. Exchange the code for tokens
curl -X POST https://api.ai-budget.pl/oauth/token \
-u "$CLIENT_ID:$CLIENT_SECRET" \
-d grant_type=authorization_code -d code="$CODE" \
-d redirect_uri=https://example.com/callback -d code_verifier="$CODE_VERIFIER"
# 3. Call the API for one of the connected accounts
curl https://api.ai-budget.pl/public/v1/accounts -H "Authorization: Bearer $ACCESS_TOKEN"
curl https://api.ai-budget.pl/public/v1/expenses -H "Authorization: Bearer $ACCESS_TOKEN" \
-H "X-Account-Id: $ACCOUNT_ID"First integration: eKsięgowy AI
eKsięgowy AI connects a user’s company and private accounts through the API and keeps them strictly apart.
Documentation
Every endpoint (Swagger) with a step-by-step guide: