Axiomatic

Integrations

Connect external financial accounts via Plaid or custom integrations. The system supports checking, savings, credit card, loan, and investment accounts. Transaction sync is cursor-based with automatic retry on rate limits (429) and transient errors.

  1. Create link tokenPOST /api/plaid/link-token returns a short-lived token
  2. User completes Plaid Link — browser-side widget
  3. Exchange tokenPOST /api/plaid/exchange-token stores the permanent access token
  4. Sync transactionsPOST /api/plaid/sync or automatic via the sync-connections scheduled job

Connections API

The connections API manages integration connections and provides sync status visibility. All endpoints require entityId.

List Connections

GET /api/connections?entityId=...

Returns all connections for the entity with their current status, last sync time, provider, and configuration.

Sync Summary

GET /api/connections?entityId=...&action=summary

Returns a lightweight overview for dashboards and status indicators:

FieldTypeDescription
totalnumberTotal non-disconnected connections
activenumberConnections with ACTIVE status
syncingbooleanWhether any sync is currently running
lastSyncAttimestampMost recent sync completion across all connections
nextSyncAttimestampEarliest scheduled next sync (based on sync frequency)
errorCountnumberConnections in ERROR status or with last sync failed

Sync Logs & Health

GET /api/connections?entityId=...&action=logs&connectionId=...&limit=20
GET /api/connections?entityId=...&action=health&connectionId=...

Write Operations

All write operations use POST /api/connections:

ActionRequired FieldsDescription
createprovider, displayNameCreate a new connection
syncconnectionIdTrigger a manual sync
updateconnectionIdUpdate connection settings (displayName, config, status, syncFrequency)
deleteconnectionIdRemove a connection

Real-Time Sync Events

Sync progress is broadcast via Pusher on the entity-{entityId} channel:

EventPayload
sync:startedconnectionId, provider
sync:progressconnectionId, transactionsCreated, accountsSynced
sync:completedconnectionId, transactionsCreated, duplicatesSkipped, quarantined, errors
sync:failedconnectionId, error

Import Batches API

Query aggregated import batch history or drill down into a specific batch.

List Batches

GET /api/import-batches?entityId=...&limit=30&offset=0

Returns batches grouped by importBatchId with:

FieldDescription
importBatchIdUnique batch identifier
importMethodPLAID, CSV, MANUAL, API, etc.
countTotal transactions in the batch
minDate / maxDateDate range of transactions
firstCreatedWhen the batch was imported
unmatched / matched / confirmed / excludedStatus breakdown counts
treasuryAccountId / treasuryAccountNameLinked account (if applicable)

Batch Drill-Down

GET /api/import-batches?entityId=...&batchId=batch-uuid

Returns up to 200 individual transactions within the batch, each with date, description, amount, currency, status, counterparty, and match info.

Plaid Endpoints

POST
/api/plaid/link-token
x-api-key<token>

API key for programmatic access

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://app.axiomatic.software/api/plaid/link-token" \  -H "Content-Type: application/json" \  -d '{    "entityId": "156e622c-6cdf-4c27-9bc9-2f2db69919f5"  }'
{
  "linkToken": "string"
}
{
  "error": "string"
}

Exchange Plaid public token for access token

POST
/api/plaid/exchange-token
x-api-key<token>

API key for programmatic access

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://app.axiomatic.software/api/plaid/exchange-token" \  -H "Content-Type: application/json" \  -d '{    "entityId": "156e622c-6cdf-4c27-9bc9-2f2db69919f5",    "publicToken": "string",    "institutionId": "string"  }'
{}
{
  "error": "string"
}

Sync transactions from Plaid

POST
/api/plaid/sync
x-api-key<token>

API key for programmatic access

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://app.axiomatic.software/api/plaid/sync" \  -H "Content-Type: application/json" \  -d '{    "entityId": "156e622c-6cdf-4c27-9bc9-2f2db69919f5",    "linkedAccountId": "61224e78-a02f-4040-ac7e-3dd716a4b677"  }'
{
  "added": 0,
  "modified": 0,
  "removed": 0,
  "duplicatesSkipped": 0
}
{
  "error": "string"
}

On this page