Create a reconciliation
Triggers a ledger-mode reconciliation run for the specified accounting period and two ledger sources. The run is queued immediately and processed asynchronously — poll GET /reconciliations/{id} to track progress.
Authorization
ApiKeyAuth AuthorizationBearer <token>
Org-level API key (sk_live_*). Create keys from the dashboard at Settings → API Keys.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/problem+json
curl -X POST "https://example.com/reconciliations" \ -H "Content-Type: application/json" \ -d '{ "ledger_config": { "period_key": "2026-06", "sources": [ { "role": "left", "source_id": "018f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b" }, { "role": "left", "source_id": "018f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b" } ] } }'{ "$schema": "/v1/schemas/ReconciliationOutputBody.json", "reconciliation": { "completedAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "currentStage": "string", "id": "string", "lastErrorMessage": "string", "ledgerConfig": null, "name": "string", "orgId": "string", "progressPct": 0.1, "runMode": "string", "startedAt": "2019-08-24T14:15:22Z", "status": "string", "updatedAt": "2019-08-24T14:15:22Z" }}{ "$schema": "/v1/schemas/ErrorModel.json", "detail": "Property foo is required but is missing.", "errors": [ { "location": "string", "message": "string", "value": null } ], "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "https://example.com/errors/example"}