Use this file to discover all available pages before exploring further.
Life Cost is a personal finance web application built with Flask and SQLAlchemy. Its backend exposes a REST API that the built-in frontend uses to manage wallets, record money transfers, organise transactions with categories and tags, and retrieve analytics data. All state is scoped to the authenticated user’s last visited wallet, which means most data-returning endpoints automatically filter results by the wallet the user most recently viewed.
There is no version prefix. All endpoints are served directly from the application root:
http://<host>:<port>
The default development port is 3000 (as set in index.py). When deploying with Docker or a reverse proxy, map to whatever external port suits your setup.
# Example — local developmenthttp://localhost:3000# Example — production behind a reverse proxyhttps://your-domain.com
All protected endpoints rely on a Flask-Login session cookie obtained after completing the Google OAuth 2.0 flow. There are no API keys or Bearer tokens. See the Authentication page for the full flow.Requests to @login_required endpoints that are made without a valid session cookie are met with an HTTP 302 redirect to /google_login — not a JSON 401 response.
Unauthenticated request to a @login_required route
HTTP 302 redirect to /google_login
Resource not found (e.g. unknown wallet/transfer ID)
HTTP 404 (Flask’s default get_or_404)
Database write failure
HTTP 500 with a JSON {"message": "Error while adding …"} body
Missing required JSON field
Typically an unhandled KeyError — ensure all required fields are present
The Life Cost API is designed primarily for use by its own browser-based frontend. Authentication relies on browser session cookies managed by Flask-Login — no API key or Bearer token mechanism is supported. Automated or server-to-server clients must replicate the full browser OAuth cookie flow to authenticate.