Every screen in BareLedger is built on the same JSON API you can call yourself. All endpoints live under /api/v1/, and every request is scoped to one organization you are registered in — the API never lists or returns another tenant's data. Start with API Access to create a key, then read API Conventions for the request and response shapes.

Start here

  • API Conventions — base URL, versioning, pagination, dates/timezones, HTTP status codes, validation/error format, rate limits, idempotency
  • API Authentication — how to obtain and use a bearer token, MFA, session/token lifecycle
  • Authorization — the permission/feature/tenant/country gate model, in request-processing order
  • Integration Examples — worked curl examples: login, authenticated requests, pagination, error handling, webhook signature verification
  • API Error Reference — every status code this API returns and what it means here specifically

Public (unauthenticated) endpoints

Method & PathPurpose
POST auth/registerRegister a new user
POST auth/loginLogin, issues bearer token (or a 2FA challenge)
POST auth/password/forgot / POST auth/password/resetPassword reset flow
GET auth/email/verify/{id}/{hash} / POST auth/email/resendEmail verification
GET auth/providers / GET auth/{provider}/redirect / GET auth/{provider}/callback / POST auth/google/exchangeGoogle SSO
POST webhooks/paddle / POST webhooks/paymongoBilling gateway webhooks — verified by HMAC signature instead of a bearer token
GET public/invoices/{token}Hosted invoice view, looked up by an unguessable token, no tenant header
GET public/paddle-configPublishable Paddle client token only
GET public/environmentThe API's environment name (APP_ENV) — the web and mobile apps watermark every non-production server

Every other endpoint requires a bearer token; most tenant-data endpoints additionally require tenant:required + subscription + a specific permission: key.

Endpoint groups (child pages)

Plus API Authentication and API Error Reference.