REST API
Base URL: https://mvdw-software.com/exact/data-bridge/api/v1. Authenticate every request with
Authorization: Bearer exg_live_…. Responses are JSON.
The full, machine-readable description is the OpenAPI 3.1 document at
/api/v1/openapi.json, generated from the same resource
definitions the API serves — import it into Postman, Insomnia or a client generator.
Endpoints
| Method | Path | What |
|---|---|---|
| GET | /resources |
Resources, their filters, sort keys and operations |
| GET | /divisions |
Enabled administrations your key may use |
| GET | /divisions/{division}/{resource} |
List records |
| GET | /divisions/{division}/{resource}/{id} |
One record by GUID |
Resources: accounts, contacts, items, sales-invoices, gl-accounts (read-only for now;
write operations follow per resource).
Responses
{
"data": [{ "id": "0f8fad5b-…", "name": "Acme BV", "city": "Gent", "isSupplier": false }],
"meta": {
"resource": "accounts",
"version": "v1",
"division": 123456,
"count": 1,
"limit": 100,
"cache": "off"
}
}
meta.cache is hit when the organization's optional cache answered, miss or off otherwise.
Filters, sorting and limits
filter[name]=Acme— equality on an allowlisted field.filter[name][startswith]=Ac,filter[invoiceDate][ge]=2026-01-01— other operators where the resource allows them (ne,gt,ge,lt,le,startswith).sort=nameorsort=-modifiedAt(descending).limit=1..1000, default 100.
Only fields listed under /resources can be filtered or sorted; anything else returns 400
before Exact is called. Values are typed and escaped — you never write OData yourself.
Versioning
Each resource has a version (v1). Fields may be added; a breaking change to a resource's shape
becomes a new version, and the old one keeps working for a deprecation period.