Skip to main content

List Record Sets

List record sets in the Talonic value plane with cursor pagination. Filter by layer or kind to find the tables your structuring and resolution runs wrote.

A record set is a table-like collection of records at one layer of the Talonic value plane, the typed cell storage that holds every structured value the pipeline produces. Three layers form the refinement ladder: structured (field values as extraction wrote them), resolved (canonical values produced by resolution runs), and product (final assembled output rows). Within a set, each record is a row pointer that maps to a source document, and each cell holds one field value with its own status, confidence, and provenance pointers back to the cell it was derived from. This endpoint lists the record sets in your workspace with cursor-based pagination.

Filter by layer to find sets at a specific pipeline stage, or by kind to locate sets from a particular origin: structuring_run for extraction output, resolution_run for standalone resolution output, and assembly_product or data_product for assembled product tables. Each entry carries lifecycle metadata (name, layer, kind, status, record and field counts) plus links to the detail, fields, records, and export endpoints. Cell values themselves are read through the records endpoint, not this list. An unrecognized layer or kind value is not an error — it simply matches nothing and returns an empty page.

Record sets are created by the runs that write them, and creation is idempotent per source: the platform keeps one active record set per source run and layer, so re-running, retrying, or resuming the same job writes into the existing set instead of minting a duplicate. Historical duplicates from before this rule were kept but marked superseded, and they still appear in this list with that status. Treat the newest active set for a given source_id as the authoritative table.

Pagination is cursor-based — a keyset over (created_at, id) — which stays stable while new sets are being created, unlike page-number pagination: limit accepts 1-100 (default 20), order sorts by creation date (desc by default), and each page returns a next_cursor until has_more is false. pagination.total counts every set matching your filters, not just the current page, so you can size progress indicators up front.

The record_count and field_count on each entry are cached summary columns maintained by the value-plane writers, so listing stays fast even for large workspaces. They are advisory: while a pipeline is actively writing, a set can briefly report counts behind the cells already committed. For exact, visibility-filtered numbers, read GET /v1/record-sets/{id}/records — its pagination.total counts the rows your key can actually see.

GET/v1/record-sets

Query parameters

layerstringFilter by value plane layer: structured, resolved, or product.
kindstringFilter by source kind (e.g. structuring_run, resolution_run, data_product).
limitintegerMaximum number of items to return (1-100). Default: 20
cursorstringOpaque pagination cursor from a previous response.
orderstringSort order by creation date (asc | desc). Default: desc

Response

Response fields

dataarrayArray of record set objects.
data[].idstringRecord set UUID.
data[].namestringHuman-readable record set name.
data[].layerstringValue plane layer: structured, resolved, or product.
data[].kindstringSource kind that created this record set (e.g. structuring_run, resolution_run).
data[].source_idstring | nullUUID of the source entity (e.g. the structuring or resolution run).
data[].statusstringLifecycle state: active, or superseded for a historical duplicate replaced by a newer set.
data[].record_countintegerTotal number of records in this set.
data[].field_countintegerNumber of fields defined on this set.
data[].created_atstringISO 8601 creation timestamp.
data[].linksobjectRelated resource URLs (self, fields, records, export).
pagination.totalintegerTotal number of record sets matching the query.
pagination.limitintegerMaximum results per page.
pagination.has_morebooleanWhether more results exist beyond this page.
pagination.next_cursorstring | nullCursor to fetch the next page. Null if no more results.

curl

curl -s "https://api.talonic.com/v1/record-sets?layer=resolved&limit=10" \
  -H "Authorization: Bearer tlnc_your_api_key"

Response

{
  "data": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "name": "Resolution Run 2024-10-15",
      "layer": "resolved",
      "kind": "resolution_run",
      "source_id": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
      "status": "active",
      "record_count": 142,
      "field_count": 12,
      "created_at": "2024-10-15T11:30:00.000Z",
      "links": {
        "self": "/v1/record-sets/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
        "fields": "/v1/record-sets/a1b2c3d4-e5f6-7890-abcd-ef1234567890/fields",
        "records": "/v1/record-sets/a1b2c3d4-e5f6-7890-abcd-ef1234567890/records",
        "export": "/v1/record-sets/a1b2c3d4-e5f6-7890-abcd-ef1234567890/export"
      }
    }
  ],
  "pagination": {
    "total": 8,
    "limit": 10,
    "has_more": false,
    "next_cursor": null
  }
}

curl — next page

curl -s "https://api.talonic.com/v1/record-sets?layer=structured&kind=structuring_run&limit=10&cursor=YTFiMmMzZDQtZTVmNi03ODkwLWFiY2QtZWYxMjM0NTY3ODkwfDIwMjQtMTAtMTVUMTE6MzA6MDAuMDAwWg" \
  -H "Authorization: Bearer tlnc_your_api_key"
Combine layer and kind to pinpoint a pipeline stage: layer=structured with kind=structuring_run lists the raw extraction outputs, while layer=resolved with kind=resolution_run lists their normalized counterparts.
A Spec pipeline's resolution stage writes normalized values back into the structured layer of the same record set — it does not create a resolved-layer set. layer=resolved therefore lists only the output of standalone resolution runs started from the Resolve module or POST /v1/resolutions.

Errors

Error responses

401unauthorizedMissing or invalid API key.
429rate_limitedToo many requests. Retry after the period indicated in the Retry-After header.

Frequently asked questions

What are the value plane layers?+
Three: **structured** (field values as the extraction pipeline wrote them), **resolved** (canonical values produced by standalone resolution runs), and **product** (assembled output rows ready for delivery). Raw per-document capture data is not stored as value cells — captured fields live in the field registry — so there is no capture layer to query here.
What is a record set?+
A record set is a table-like collection of records at a specific value plane layer. Each record maps to a source document and its cells carry a value, a confidence score, and a status. Record sets are the primary read model for structured output in the platform.
How do record sets relate to jobs and resolutions?+
Structuring job runs produce record sets at the **structured** layer, standalone resolution runs produce record sets at the **resolved** layer, and assembly produces product-layer sets. The `kind` field names the origin type and `source_id` is the UUID of that run, so you can trace every record set back to what created it.
Why is there no resolved-layer set for my Spec pipeline?+
Because a Spec pipeline's resolution stage normalizes values in place: it writes the resolved values back into the structured-layer record set rather than creating a separate resolved-layer set. Resolved-layer sets come from standalone resolution runs (POST /v1/resolutions), which read a structured set and write a new normalized one.
Why did my re-run not create a new record set?+
Record set creation is idempotent per source: the platform keeps one active set per (source run, layer), so a retry, resume, or re-run of the same job writes into the existing set. This keeps stored record set IDs valid across re-runs. A genuinely new run (a new run UUID) gets its own set.