Axiomatic

Getting Started

REST API — Bearer API keys and OpenAPI reference for the platform.

Overview

The REST API is the primary programmatic surface: JSON under https://app.axiomatic.software/api/..., documented in openapi.json and in the sidebar categories below.

  • Authentication: Authorization: Bearer ak_... using an API key from API keys in Settings. Keys are scoped to one entity and to coarse module scopes (read:ledger, write:crm, …). Routes that use withTenant enforce the scope implied by the first path segment after /api/ (for example, /api/ledger/... needs ledger scopes). Write scope implies read for the same module.
  • Interactive use: Logged-in browser traffic hits the same routes; you do not send a Bearer header manually from the UI.

Base URL: https://app.axiomatic.software

Authentication

curl "https://app.axiomatic.software/api/ledger/accounts?entityId=<uuid>" \
  -H "Authorization: Bearer ak_..."

Create and revoke keys under Settings → API keys. Rate limits apply per key.

Multi-tenant routing

Each organization has an isolated database. For routes that use withTenant, entity scope is resolved from (in order):

  1. entityId or entity_id query parameter
  2. x-entity-id header — common for browser shells and GET requests that do not put entityId in the query string
  3. On POST/PUT/PATCH (non-GET), entityId in the JSON body if not already set above
  4. Authorization: Bearer ak_... — the API key pins the entity; include entityId in query/body/header only when it must match that key’s entity
  5. x-tenant-id — advanced control-plane resolution when applicable

CRM, Sales, Helpdesk, and most module APIs use this model so the same routes work for session cookies and Bearer API keys.

Endpoints

Browse the sidebar: each group (System, Core, Ledger, …) is a collapsible folder. Short links without the section segment (for example /docs/api/entities) redirect to the canonical URL (/docs/api/core/entities).

CategoryDescription
HealthLiveness and engine version (no auth)
EntitiesCreate and manage legal entities
BooksMulti-book accounting (GAAP, IFRS, tax)
AccountsChart of accounts CRUD
Account MappingsMap roles to accounts for automated posting
CRMCompanies, contacts, leads, activities — read:crm / write:crm, entityId
SalesQuotes, orders, plans, subscriptions — read:sales / write:sales, entityId
HelpdeskTickets and messages (/api/helpdesk/...) — read:helpdesk / write:helpdesk, entityId
EventsRecord financial events
ProcessTrigger the posting engine
JournalQuery and manage journal entries
Trial BalancePer-account debit/credit totals
PeriodsAccounting period lifecycle
ReportsBalance sheet, income statement, cash flow
Fund ReportsFund-specific reporting
ARInvoices, customers, payments
APBills, vendors, payments
TreasuryCash positions and linked accounts
FX RatesExchange rate management
FX RevaluationPeriod-end currency revaluation
Rule PacksDSL posting rules
ReconciliationTransaction matching and confirmation
AnomaliesAI-powered anomaly detection and review
AuthUser registration and email verification
TeamTeam members and invitations
API KeysProgrammatic API key management
ComplianceGDPR data export, erasure, consent
IntegrationsPlaid bank linking and sync
BillingStripe checkout and subscriptions
NotificationsIn-app notification management
PayrollPayroll runs, employees, calculator, tax forms
InventoryInventory items, lots, transactions, counts, valuation
Fixed AssetsAsset register, depreciation, disposal
LoansLoan instruments and amortization
LeasesLease accounting (ASC 842 / IFRS 16)
ContractsRevenue contracts (ASC 606 / IFRS 15)
ExchangeReceivables exchange marketplace
DimensionsSegment and dimension tagging
SubledgersSubledger management and drill-down
ConsolidationMulti-entity consolidation
IntercompanyIntercompany transactions
Close CalendarPeriod-end close templates and tasks
Approval PoliciesMulti-level approval workflows
AccrualsAccrual schedule management
WaterfallFund waterfall distributions
DocumentsDocument upload and management
CommentsThreaded comments and reactions
Audit LogImmutable audit trail queries
Cost CategoriesCost classification and reports
Tax RatesTax rate tables and tax reports
Payment IntentsPayment intents and file generation
SettlementsSettlement recording and batches
Webhook SubscriptionsOutbound webhook configuration
Address BookCounterparties and contacts
PracticePractice management dashboard
PartnerPartner program and client management
PrivacyShielded transfers and ZK proofs
Import BatchesBulk data import
ConnectionsProvider connections and sync
CategorizationTransaction matching patterns
Tax LotsCrypto/investment tax lot tracking

Rate limits

API requests are rate-limited per API key. Typical limits:

  • 100 requests/minute for read endpoints (GET)
  • 30 requests/minute for write endpoints (POST/PUT/PATCH/DELETE)

Rate limit headers may be included in responses:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 97
X-RateLimit-Reset: 1709164800

Errors

All errors return a JSON body with an error field:

{ "error": "Entity not found" }
StatusMeaning
400Bad request — missing or invalid parameters
401Unauthorized — missing or invalid credentials
403Forbidden — insufficient access or entity mismatch
404Not found — resource doesn't exist
402Payment required — credit balance exhausted (writes)
429Rate limited — too many requests
500Server error — unexpected failure

On this page