Brivio API reference
Imports

Stage rows for import: computes the dedupe preview and holds the rows; nothing is written until commit. 202 with status staged (or failed). Requires Idempotency-Key. (scope: imports:write)

POST
/imports

Authorization

bearerAuth
headerAuthorizationBearer <token>

API key as Bearer token

Header Parameters

Idempotency-Key*string

Required. Retries with the same key replay the first response instead of starting a second job (24 h).

Lengthlength <= 200

Request Body

application/json
  1. body
entity*string
Value in"invoices_issued""invoices_received""contacts""articles""stock""trial_balance""expenses"
preset?string

Source system; decides the external-ref namespace for invoices/stock.

Value in"smartbill""oblio""fgo""saga""winmentor""generic"
filename?string
Lengthlength <= 255
mode?string

Invoices only. historical (default) keeps numbers and never posts to the ledger; draft re-enters the normal flow.

Value in"historical""draft"
rows*array<>

Already-mapped canonical rows (the same shape the in-app wizard sends). Body at most 10 MB.

Items1 <= items <= 5000

Response Body

OK

application/json
  1. response
data*
error*null
curl -X POST "https://example.com/imports" \  -H "Idempotency-Key: string" \  -H "Content-Type: application/json" \  -d '{    "entity": "invoices_issued",    "rows": [      {}    ]  }'
{  "data": {    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",    "entity": "string",    "preset": "string",    "filename": "string",    "source": "string",    "status": "running",    "total_rows": 0,    "imported_count": 0,    "updated_count": 0,    "skipped_count": 0,    "error_count": 0,    "preview": {      "news": 0,      "updates": 0,      "skips": 0,      "errors": 0    },    "reverted_at": "2019-08-24T14:15:22Z",    "created_at": "2019-08-24T14:15:22Z",    "finished_at": "2019-08-24T14:15:22Z"  },  "error": null}