Base URL structure, authentication, JSON response format, error codes, amount sign conventions, and health check endpoints for the Breadbox REST API.
The Breadbox REST API gives you programmatic access to your household’s financial data — accounts, transactions, categories, rules, and more. All endpoints follow a consistent JSON request/response structure, use API key authentication, and return errors in a machine-readable envelope.
All API endpoints are served relative to your Breadbox host under the /api/v1/ prefix:
http://your-host:8080/api/v1/
For a local installation the full base URL is typically http://localhost:8080/api/v1/. Replace localhost:8080 with your actual host and port in all examples.
The curl snippets throughout this reference use http://localhost:8080 as a stand-in for your Breadbox host. Substitute your real host and port before running them — if you’re exposing Breadbox beyond your local machine, see Remote hosting for guidance on picking a URL.
The health check and version endpoints are exceptions — they sit outside the versioned prefix:
Method
Endpoint
Auth
Description
GET
/health
No
Basic liveness check — returns 200 if the HTTP server is running
GET
/health/live
No
Alias for /health
GET
/health/ready
No
Deep readiness check — verifies database connectivity and scheduler status
Every /api/v1/ endpoint requires an API key passed in the X-API-Key request header. See the Authentication page for full details on key scopes and management.
All successful responses return JSON with a Content-Type: application/json header.List endpoints use one of two shapes depending on whether the endpoint is cursor-paginated:
Small, finite lists (GET /accounts, GET /categories, GET /connections, GET /users, GET /reports) return a top-level JSON array. No pagination is applied — all matching records fit in a single response.
Cursor-paginated lists (GET /transactions, GET /rules) wrap results in a resource-named array alongside next_cursor and has_more. See Pagination for the full iteration contract.
Negative amount — money entering the account (credits, deposits, refunds)
A grocery purchase of 42.50appearsas‘42.50‘.Adirectdepositof2,500 appears as -2500.00.Every amount field is accompanied by an iso_currency_code field (e.g., "USD"). Never aggregate amounts across different currencies — always filter to a single iso_currency_code before summing.