API Reference

RESTful JSON API powered by Django REST Framework

Authentication

All API requests (except /api/status/ and /api/auth/token/) require a JWT Bearer token. Include it in the request header:

Authorization: Bearer <access_token>

Tokens expire after a configured period. Use the refresh endpoint to get a new access token.

Auth Endpoints

POST /api/auth/token/ Login, returns {access, refresh}
POST /api/auth/token/refresh/ Refresh access token
POST /api/auth/register/ Create account
GET /api/auth/profile/ Get user profile
POST /api/auth/onboarding/ Complete onboarding

Accounts

GET /api/accounts/?page_size=N List accounts
POST /api/accounts/ Create account
POST /api/accounts/{id}/opening-balance/ Set opening balance

Transactions

GET /api/transactions/?page_size=N List transactions
POST /api/transactions/ Create journal entry
PATCH /api/entries/{id}/recategorize/ Recategorize entry

Reports

GET /api/reports/balance_sheet/?as_of_date=YYYY-MM-DD Balance sheet
GET /api/reports/income_statement/?start_date=&end_date= Income statement
GET /api/reports/account_detail/?account_id=&start_date=&end_date= Account transactions
GET /api/reports/data_gaps/ Data gap analysis

PDF

POST /api/pdf/upload/ Upload PDF (multipart/form-data)
GET /api/pdf/history/ Upload history

Plaid

POST /api/plaid/link-token/ Create Plaid Link token
POST /api/plaid/exchange-token/ Exchange public token
GET /api/plaid/items/ List connected institutions
POST /api/plaid/items/{id}/sync/ Sync transactions
DELETE /api/plaid/items/{id}/ Unlink institution
GET /api/plaid/accounts/ List bank accounts
POST /api/plaid/accounts/{id}/map/ Map to ledger account
GET /api/plaid/transactions/?limit=N List Plaid transactions
POST /api/plaid/transactions/import/ Import to ledger

Reviews & Rules

GET /api/plaid/reviews/?status=pending List reviews
POST /api/plaid/reviews/{id}/approve/ Approve review
POST /api/plaid/reviews/{id}/dismiss/ Dismiss review
GET /api/plaid/rules/ List rules
POST /api/plaid/rules/ Create rule
PUT /api/plaid/rules/{id}/ Update rule
DELETE /api/plaid/rules/{id}/ Delete rule

Audit

POST /api/plaid/audit/ Run audit scan
POST /api/plaid/audit/recategorize/ Bulk recategorize

Billing

POST /api/billing/checkout/ Create Stripe checkout
POST /api/billing/portal/ Stripe customer portal

Crypto Pro Plan

GET /api/crypto/lots/ List tax lots
POST /api/crypto/lots/ Record acquisition
POST /api/crypto/mark-to-market/ Revalue lots
POST /api/crypto/dispose/ FIFO disposal
GET /api/crypto/wallets/ List treasury wallets
POST /api/crypto/wallets/ Create treasury wallet
POST /api/crypto/verify/ Verify on-chain balance
GET /api/crypto/attestations/ List attestations
POST /api/crypto/attest/ Create attestation
GET /api/crypto/disclosure/ FASB disclosure report

Mining Pro Plan

GET /api/mining/dashboard/ Mining overview
GET /api/mining/wallets/ List mining wallets
POST /api/mining/wallets/ Create mining wallet
GET /api/mining/transactions/ List mining transactions
POST /api/mining/transactions/ Create mining transaction
GET /api/mining/electricity/rates/ List electricity rates
POST /api/mining/electricity/rates/ Create electricity rate
GET /api/mining/electricity/usage/ List electricity usage
POST /api/mining/electricity/usage/ Record electricity usage
GET /api/mining/hardware/ List mining hardware
POST /api/mining/hardware/ Register mining hardware
GET /api/mining/depreciation/ Depreciation schedule
Pagination

All list endpoints support pagination via page_size query parameter. Responses include count, next, previous, and results fields.