The data layer is an alternative way to read unified data through Chift. Instead of querying the source accounting system live on every request — the way the unified API normally works — your reads are served from a copy of the data that Chift maintains on its own infrastructure and keeps in sync with the source in the background. This is the perfect solution for reporting use casese or for AI agents to compute a lot of data and context. The API surface is exactly the same. You keep calling the same unified endpoints with the same parameters and get the same response shape. What changes is where the answer comes from, and you choose that per request by setting a header.Documentation Index
Fetch the complete documentation index at: https://docs.chift.eu/llms.txt
Use this file to discover all available pages before exploring further.
How it differs from the unified API
By default, every call you make to a Chift unified endpoint is transactional: Chift forwards the request to the third party system in real time, normalises the response, and returns it. When you send the request with thex-chift-datalayer: true header, the same call is served from Chift’s data layer store, which is populated by a sync that runs in the background. The source system is contacted by the sync, not by the request.
| Unified API (default) | Data layer (x-chift-datalayer: true) | |
|---|---|---|
| Where reads come from | Source unified system, live | Chift’s data layer store |
| Freshness | Always the latest state of the source | As fresh as the last sync |
| Response time | Depends on the source system | Fast and consistent |
| Heavy queries / pagination over history | Limited by the source | Designed for it |
| Writes (create / update) | Go straight to the source | Still go straight to the source — the data layer is read-only |
| API surface used | Same unified endpoints | Same unified endpoints |
| Opt-in level | Default | Per request, via header |
When to use the data layer
The data layer is the right choice when you want:- Fast, consistent read latency that doesn’t depend on the load or availability of the source accounting system.
- To page through large amounts of historical data (entries, invoices, partners) without hitting the source on every page.
- To run heavier read patterns — filtering, date ranges, multiple folders — at a higher rate than the source would comfortably allow.
- To decouple your read traffic from the source system’s rate limits and downtime.
What’s covered today
The data layer currently covers the Accounting unified API only. Within that scope, the standard accounting resources are available:- Folders
- Chart of accounts (ledger accounts)
- Journals
- Journal entries (and lines)
- Invoices (and lines, payments)
- Partners (clients and suppliers)
- Book years
How freshness works
The data layer is populated by a sync attached to the connection. The sync runs on a defined cadence, pulls the records that have changed in the source system since the previous run, and writes them into the data layer store. A few things to know:- Reads with the header always reflect the last successful sync. If the source has changed since the last sync ran, those changes are not yet visible through the data layer.
- Reads without the header are always live, so a write-then-read flow that needs the freshest state simply skips the header on the read.
- The sync cadence is configurable per connection and is agreed with your CSM/SE when the feature is enabled — see Activating the data layer.