Three read operations
The Data API requires data:read. It is independent of Insights and Signal execution. The underlying integration, borrower consent, purpose and provider entitlement must still authorize access. An empty result means no matching authorized records at that snapshot; inspect connection readiness and coverage before concluding there was no activity.
Bootstrap without missing changes
- Supply borrower_id. Optionally filter by connection_id, integration_id or resource_type, such as bank_transaction, bank_account or invoice.
- Persist page.snapshot_id, page.as_of and page.changes_cursor from the first page. The server captures the snapshot and its change-feed boundary atomically.
- Fetch every page using next_cursor with the same borrower and filters. The snapshot freezes membership and record versions; current authorization is rechecked on each read.
- After committing the complete snapshot, call the changes endpoint with the saved changes_cursor. It already binds borrower, filters and authorization.
- Apply each batch idempotently using change ID and logical resource version. Follow next_cursor while has_more is true; after the final committed batch persist resume_cursor, including on empty results.
Understand each record
- id identifies an immutable DataRecord version; resource_id identifies the logical normalized record, whose record_version increases on change.
- resource_type selects one of the existing typed normalized schemas. normalized.object, normalized.id and normalized.record_version match the envelope; the server rejects inconsistent representations.
- normalized includes all authorized populated fields. Financial enrichment can appear in those typed fields, while broader assessment dimensions and policy results are returned in the risk package.
- field_provenance, source_refs, missing_fields and namespaced extensions retain source attribution and provider details. Do not invent unavailable values.
- source_payload contains authorized provider-native business fields when retained and permitted. not_retained, restricted and not_applicable use a null value and an explicit reason. Credentials, secrets and unrelated borrower data are never part of the public data.
- document_ids link original files and reports. Discover and download them with the document API.