# WealthTrackr > WealthTrackr is a personal finance app for keeping a clear, current view of net worth, accounts, expenses, savings goals, and monthly financial check-ins. ## Product overview WealthTrackr is built for people who want to understand their financial picture without maintaining a spreadsheet. Add asset and liability accounts, record balances yourself, review expenses by month, set savings goals, and track selected financial health metrics over time. The dashboard brings those records together in one place. The web app does not connect to banks automatically and does not ask users for bank credentials. Users enter and update account balances and expenses themselves. Account data syncs to the user's WealthTrackr account for access across devices. Users can create and download a data backup. See the privacy policy for details about storage, controls, and account data. WealthTrackr is a tracking and organization tool. It does not provide investment, tax, credit, or other professional financial advice. Displayed summaries depend on the values and currencies users have recorded; the app does not convert foreign account balances into USD. ## Product links - Product overview and account creation: https://wealthtrackr.apercallc.com/ - Privacy policy: https://wealthtrackr.apercallc.com/privacy - Terms of use: https://wealthtrackr.apercallc.com/terms - Human-readable API documentation: https://wealthtrackr.apercallc.com/api-docs - OpenAPI 3.1 specification: https://wealthtrackr.apercallc.com/openapi.json ## Personal Data API Read-only REST API for accessing the authenticated user's financial data from WealthTrackr. Users create read-only API keys from Settings → Personal API access in the app. ## Base URL https://server-production-c1e82.up.railway.app ## Authentication Send an API key (prefixed with wtk_) via one of these headers: Authorization: Bearer wtk_your_api_key_here X-API-Key: wtk_your_api_key_here A missing, malformed, or revoked key returns 401. Keys are read-only and cannot modify data. Revocation is immediate. ## Endpoints ### GET /v1/data/summary Returns net worth, asset/liability totals and counts, the latest snapshot, and an as_of timestamp. - No parameters. - Response 200: { "net_worth": number, "total_assets": number, "total_liabilities": number, "asset_count": int, "liability_count": int, "latest_snapshot": object|null, "as_of": ISO8601 } ### GET /v1/data/items Returns account categories and items, including ownership-adjusted effective_value. - Query parameter: type (optional) — filter by "asset" or "liability". - Response 200: { "categories": [{ "id": string, "title": string, "type": "asset"|"liability", "total": number, "items": [{ "id": string, "label": string, "value": number, "ownership_percentage": number, "effective_value": number, "liquidity_rating": "high"|"medium"|"low", "notes": string|null, "last_updated": ISO8601 }] }] } ### GET /v1/data/snapshots Returns monthly net-worth snapshots, newest first. - Query parameter: limit (optional, integer 1–1000) — number of snapshots to return. - Response 200: { "snapshots": [{ "id": string, "month": "YYYY-MM", "net_worth": number, "total_assets": number, "total_liabilities": number, "category_breakdown": object, "notes": string|null, "timestamp": ISO8601 }] } ### GET /v1/data/metrics Returns monthly check-in history and derived financial metrics. The newest entry is in "latest"; all entries are in "history" (newest-first). Credit score and each monthly money value are independently optional. Every record must contain at least one score or money value; calculated fields are null when their required inputs were not recorded. - No parameters. - Response 200: { "latest": { "month": "YYYY-MM", "credit_score": int|null, "monthly_income": number|null, "monthly_expenses": number|null, "monthly_debt_payments": number|null, "monthly_savings": number|null, "retirement_savings": number|null, "debt_to_income_ratio": number|null, "monthly_cash_flow": number|null, "savings_rate": number|null, "updated_at": ISO8601 }|null, "history": [same shape] } ## Response Format All responses are JSON with snake_case field names. Monetary values are floating-point numbers in USD. Timestamps are ISO 8601 strings. ## Errors - 401: Missing, malformed, or revoked API key. - 422: Validation error (e.g. invalid query parameter). - 429: Rate limit exceeded. - 500: Internal server error. ## Example curl -H "Authorization: Bearer wtk_..." https://server-production-c1e82.up.railway.app/v1/data/metrics ## Additional Resources - Source code: https://github.com/apercallc/wealthtrackr