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
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.