Skip to main content

Export Record Set

Export every record in a record set as a single JSON response: record IDs, source documents, ordinals, keys, statuses, and confidence, without pagination.

Export the complete list of records in a record set as one JSON response, without pagination. Each exported record carries its identity metadata: the record UUID, the document_id it maps to, its ordinal position, the optional record_key, the row status, and the aggregate confidence. Use it when you need the full row inventory of a set in a single call, for example to drive a bulk sync or an offline audit.

The export returns row metadata only. To read the cell values, page through GET /v1/record-sets/{id}/records?include=values, which attaches the latest cell value, status, and confidence per field. For very large sets, or for pushing complete datasets to S3, SFTP, or a webhook, the delivery module is the better fit than repeated exports.

Like the paginated records read, the export is visibility-filtered as the user who minted the API key: rows whose source document is hidden by Sources IAM rules are dropped, and total counts what was actually exported. That means total can be smaller than the record set's cached record_count, and keys minted by differently-permissioned users can export different row inventories from the same set. Rows without a source document are never restricted.

Rows arrive ordered by ordinal, the same stable order as the paginated read and the platform UI, which makes successive exports diffable: compare on record id to detect new rows, and on status and confidence to spot rows that changed state between pipeline runs. A common sync pattern is to export the row inventory first, then fetch values only for the records whose state changed, via the paginated records endpoint with include=values.

The export is a snapshot, not a stream: rows are read in one query and returned in one JSON body, so a set that is still being written yields whatever rows existed at read time. For end-of-run syncs, wait for the producing job or pipeline to report completed before exporting, or diff two exports to pick up late rows. When you need output pushed rather than pulled, configure a delivery destination instead of polling exports.

GET/v1/record-sets/{id}/export

Path parameters

id*uuidRecord set UUID. Must belong to your organization.

Response

Response fields

record_set_idstringUUID of the exported record set.
namestringRecord set name.
totalintegerTotal number of exported records.
recordsarrayComplete array of record objects, ordered by ordinal.
records[].idstringRecord UUID.
records[].document_idstring | nullSource document UUID, if the record maps to a document.
records[].ordinalintegerStable row order within the record set (0-based).
records[].record_keystring | nullExternal or customer-defined key, when known.
records[].statusstringRow-level lifecycle state.
records[].confidencenumber | nullAggregate confidence for the row (0-1).

curl

curl -s https://api.talonic.com/v1/record-sets/a1b2c3d4-e5f6-7890-abcd-ef1234567890/export \
  -H "Authorization: Bearer tlnc_your_api_key"

Response

{
  "record_set_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "name": "Resolution Run 2024-10-15",
  "total": 142,
  "records": [
    {
      "id": "f1e2d3c4-b5a6-7890-fedc-ba0987654321",
      "document_id": "d1c2b3a4-e5f6-7890-abcd-ef1234567890",
      "ordinal": 0,
      "record_key": "INV-2024-0042",
      "status": "active",
      "confidence": 0.96
    }
  ]
}

Extract the row inventory with jq

curl -s https://api.talonic.com/v1/record-sets/a1b2c3d4-e5f6-7890-abcd-ef1234567890/export \
  -H "Authorization: Bearer tlnc_your_api_key" \
  | jq -r '.records[] | [.id, .document_id, .status, .confidence] | @tsv' > rows.tsv
The export contains record metadata, not cell values. To read values, call the records endpoint with include=values, or configure a delivery binding to push assembled output to a destination.

Errors

Error responses

400VALIDATION_ERRORThe id path parameter is not a valid UUID.
401unauthorizedMissing or invalid API key.
404not_foundRecord set not found or does not belong to your organization.
429rate_limitedToo many requests. Retry after the period indicated in the Retry-After header.

Frequently asked questions

When should I use export vs the paginated records endpoint?+
Use the export endpoint when you need the full row inventory of a set in one call, for example for bulk syncs or offline audits. Use the paginated records endpoint for interactive UIs, for incremental processing, and whenever you need the cell values, which the export does not include.
Does the export include cell values, confidence, and provenance?+
The export includes row-level metadata: record IDs, document IDs, ordinals, record keys, statuses, and the aggregate row confidence. Cell values with per-cell status and confidence are read through the records endpoint with include=values.
Is there a size limit on exports?+
There is no hard limit, but the export returns every record in one response, so very large record sets produce large payloads and slower responses. For continuously pushing complete datasets to external systems, use the delivery module with an S3, SFTP, or webhook destination instead.
Why is total smaller than the record set's record_count?+
The export drops rows whose source document is hidden from your key's minting user by Sources IAM rules, and total counts the rows actually returned. record_count on the record set is an unfiltered cached summary, so a restricted key sees a smaller export than the set's nominal size.