Invoice, Bill, Payment, Order, SKU and more, with the same fields on every platform, a stable id, the platform's remote_id and the source record in raw.
DEVELOPER PREVIEW
Build on one API, not fifty.
One REST API over the Unify Graph: the same objects, errors, pagination and webhooks for every accounting, ERP, commerce and product data platform.
Developer preview: the samples on this page show the API design. The full API reference is shared with design partners.
List open invoices
curl "https://api.unifyint.com/v1/finance/invoices?status=open&limit=1" \
-H "Authorization: Bearer $UNIFY_API_KEY" \
-H "Unify-Connection-Id: conn_qbo_8f2k1"List open invoices
const res = await fetch("https://api.unifyint.com/v1/finance/invoices?status=open&limit=1", {
headers: {
Authorization: `Bearer ${process.env.UNIFY_API_KEY}`,
"Unify-Connection-Id": "conn_qbo_8f2k1",
},
});
const { data, next_cursor } = await res.json();List open invoices
import os, requests
res = requests.get(
"https://api.unifyint.com/v1/finance/invoices",
params={"status": "open", "limit": 1},
headers={
"Authorization": f"Bearer {os.environ['UNIFY_API_KEY']}",
"Unify-Connection-Id": "conn_qbo_8f2k1",
},
)
invoices = res.json()["data"]CONCEPTS
Six concepts cover the whole API.
Connections.
One end user's authorized link to one platform. Pass its id in the
Unify-Connection-Idheader on every call.Choose sync-and-store or pass-through per object, and a sync schedule for stored objects.
Webhooks.
Signed with
Unify-Signature(timestamp plus HMAC), retried with backoff and replayable from Unify Monitor.Errors.
One typed error model across platforms, with a
retryableflag and the platform's original message attached.Pagination.
Cursor-based. Pass
next_cursorback until it returns null. Amounts are decimal strings, never floats.
API DESIGN
The API at a glance.
Resources, auth, pagination, webhooks and MCP follow the same rules on every platform.
- Resources
- One versioned REST API over HTTPS with JSON bodies. Resources are grouped by family, and every object carries a stable id, the platform's remote_id and the source record in raw.
https://api.unifyint.com/v1/finance/invoices /v1/product-data/skus · /v1/commerce/orders /v1/ads/insights · /v1/connections/{id}- Authentication
- Your API key authenticates you; the connection id picks which customer's platform the call reads or writes.
Authorization: Bearer $UNIFY_API_KEY Unify-Connection-Id: conn_qbo_8f2k1- Pagination
- Cursor-based. Pass next_cursor back until it returns null. Amounts are decimal strings, never floats.
GET /v1/finance/invoices?limit=50&cursor=c_eyJvZmZzZXQiOjF9 { "data": [ … ], "next_cursor": null }- Webhooks
- Change events name the object and the fields that changed. Each delivery is signed with a timestamp and HMAC, retried with backoff and replayable from Unify Monitor.
Unify-Signature: t=1761998400,v1=… { "type": "invoice.updated", "changed_fields": ["status"] }- MCP
- Unify Agents (MCP) exposes the same objects as typed tools per connection, with read or write access, approval steps and an audit trail.
{ "name": "finance.create_bill", "access": "write", "requires_approval": true }
The full API reference is shared with design partners during the developer preview.
UNIFY AGENTS (MCP)
Hand the same API to an agent.
Unify Agents (MCP) exposes every integration as typed tools with scoped permissions, approval steps and an audit trail.
api.unifyint.com/v1
Sample dataTools an agent sees for one connection
{
"tools": [
{
"name": "finance.list_invoices",
"access": "read"
},
{
"name": "finance.create_bill",
"access": "write",
"requires_approval": true
},
{
"name": "commerce.get_order",
"access": "read"
}
],
"policy": {
"max_write_amount": "5000.00",
"audit": "on"
}
}invoice.updated
{
"id": "evt_01JC9A3T6P",
"type": "invoice.updated",
"created_at": "2026-11-01T09:20:00Z",
"connection_id": "conn_nts_5q2w4",
"platform": "netsuite",
"data": {
"id": "inv_01JC8Q2K7M",
"status": "paid",
"amount_due": "0.00"
},
"changed_fields": [
"status",
"amount_due"
]
}API REFERENCE
The full API reference is shared with design partners.
During the developer preview we share the complete reference, SDKs and sandbox credentials with design partners, so we can support every early team properly. Become a design partner and you get the reference, a named engineer and a say in what we build next.
LEARN