Finance Tracking API β Base URL: https://bandit.claw.clawy.io/api/finance
All endpoints require a scoped API key via Authorization header:
Authorization: Bearer fin_<your_key>
API keys are scoped per user. Manage keys via the CoinBandit settings.
List all categories, ordered by type and sort_order.
{
"id": 3,
"name": "Supermarkt",
"type": "expense", // "expense" | "income"
"emoji": "π",
"sort_order": 3
}
Create a new category.
// Request Body
{
"name": "Drogerie",
"type": "expense",
"emoji": "π§΄",
"sort_order": 4 // optional, default 0
}
Delete a category by ID.
| ID | Name | Type | Emoji |
|---|---|---|---|
| 1 | Kredit | expense | π¦ |
| 2 | Haus | expense | π |
| 3 | Supermarkt | expense | π |
| 9 | Drogerie | expense | π§΄ |
| 4 | Sonstiges | expense | π¦ |
| 8 | Urlaub | expense | ποΈ |
| 5 | GehΓ€lter | income | πΌ |
| 6 | Geschenke | income | π |
| 7 | Sonstiges | income | π₯ |
List entries for a month. Returns entries with category info.
// Response
{
"id": 1371,
"category_id": 8,
"amount": "512.00",
"description": "Flug FRA β Dallas",
"date": "2026-03-15",
"recurring": false,
"tags": ["Polynesien 2026"],
"category_name": "Urlaub",
"category_type": "expense",
"category_emoji": "ποΈ"
}
Create a new entry.
// Request Body
{
"category_id": 8, // required β category ID
"amount": 512.00, // required β positive number
"description": "Flug FRA", // optional
"date": "2026-03-15", // optional, default today
"recurring": false, // optional, default false
"tags": ["Polynesien 2026"] // optional, string array
}
Update an entry. All fields optional β only provided fields are changed.
// Request Body (all optional)
{
"amount": 520.00,
"description": "Flug korrigiert",
"category_id": 3,
"date": "2026-03-16",
"tags": ["Reise", "Flug"]
}
Delete an entry by ID.
Tags are flexible string arrays on entries. Use them to group expenses across categories (e.g. by trip, project, or event).
// Example: Tag a flight and hotel for the same trip
POST /api/finance/entries
{ "amount": 512, "category_id": 8, "description": "Flug", "tags": ["Polynesien 2026"] }
POST /api/finance/entries
{ "amount": 150, "category_id": 8, "description": "Hotel", "tags": ["Polynesien 2026"] }
// Update tags on existing entry
PATCH /api/finance/entries/1371
{ "tags": ["Polynesien 2026", "FlΓΌge"] }
Get spending/income breakdown by category.
Parameters:
period=month&month=YYYY-MM β single monthperiod=year&year=YYYY β full yearperiod=all β all time// Response
{
"categories": [
{ "type": "expense", "category": "Supermarkt", "emoji": "π", "total": "175.34", "count": "4" },
{ "type": "income", "category": "GehΓ€lter", "emoji": "πΌ", "total": "7340.00", "count": "4" }
],
"topDescriptions": [ ... ]
}
Get monthly totals (total income, total expenses, balance).
List all bank accounts.
{
"name": "Sparda Hauptkonto",
"bank": "Sparda-Bank Hamburg",
"emoji": "π¦",
"initial_balance": 5000,
"is_default": true
}
Update account. Fields: name, bank, emoji, current_balance, is_default.
Delete account. Entries linked to it will have account_id set to NULL.
List API keys for the authenticated user. Requires session cookie auth (management endpoint).
Generate a new API key. Requires session cookie auth.
{ "name": "My App Key" }
π¦ CoinBandit API v2 β Last updated: March 2026