Skip to main content

Get Data Product Results

Retrieve the result rows of a data product as JSON. Each row maps schema field names to extracted values and links back to its source run and document.

Retrieve the result rows for a data product as JSON. The endpoint reads the stored results of every run listed in the product's run_ids and returns one row per processed document, newest first. Each row carries the run_id and document_id it came from plus a values map of schema field names to extracted values, so every data point is traceable to its source.

This is the programmatic read path for downstream integration: poll it after your runs complete, or fetch on demand when a consumer needs the current dataset. The response is a flat page — pass limit to bound the page size. For a complete snapshot of a large product in a single request, prefer the CSV export endpoints (links.export_plain and links.export_audit on the product), which stream the whole dataset as a file.

Rows are visibility-filtered through Sources IAM: if access rules hide a document from the user who minted your API key, that document's row is omitted from the response entirely. Internal diagnostic fields — keys prefixed with __, such as assembly diagnostics — are never part of values; they are excluded from the product grid, CSV exports, and delivery payloads alike.

GET/v1/data-products/{id}/results

Path parameters

id*uuidData product UUID.

Query parameters

limitintegerMaximum number of rows to return (1-100). Default: 20

Response

Response fields

dataarrayArray of result row objects, newest first.
data[].idstringResult row UUID.
data[].run_idstringUUID of the run that produced this row.
data[].document_idstringSource document UUID.
data[].valuesobjectMap of schema field names to extracted values.
data[].created_atstringISO 8601 timestamp when the row was produced.
totalintegerNumber of rows in this response.

curl

curl -s "https://api.talonic.com/v1/data-products/d1a2b3c4-e5f6-7890-abcd-ef1234567890/results?limit=10" \
  -H "Authorization: Bearer tlnc_your_api_key"

Response

{
  "data": [
    {
      "id": "0f1e2d3c-4b5a-6978-8796-a5b4c3d2e1f0",
      "run_id": "r1a2b3c4-e5f6-7890-abcd-ef1234567890",
      "document_id": "doc-a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "values": {
        "invoice_number": "INV-2026-0042",
        "vendor_name": "Acme Corp",
        "total_amount": "1250.00",
        "currency": "USD",
        "invoice_date": "2026-05-15"
      },
      "created_at": "2026-06-01T14:25:00.000Z"
    }
  ],
  "total": 1
}
This endpoint serves run-backed products. A product with an empty run_ids array — for example one backed by a pipeline rather than runs — returns { "data": [], "total": 0 } here; read pipeline output through the pipeline results endpoints instead.

When a product assembles several runs, rows from all of them interleave in one newest-first stream, and the run_id on each row tells you which run produced it. Duplicate documents across runs are not merged on this surface — a document processed by two linked runs yields two rows — so deduplicate on document_id client-side when your consumer expects one row per document.

Errors

Error responses

401unauthorizedMissing or invalid API key.
404not_foundData product 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

What format is the values map in?+
The `values` object maps field names from the runs' schema to the extracted values, exactly as the run stored them — typically strings. The field set matches the columns you would see in the plain CSV export of the same product.
How do I fetch the complete dataset?+
The results endpoint returns a single page of up to 100 rows. For the full dataset in one request, download the CSV export instead: `GET /v1/data-products/{id}/export/plain` streams every row as a file.
Why are some documents missing from the results?+
Rows are filtered through Sources IAM as the user who created your API key. A document hidden from that user by an access rule is dropped from the response entirely — the same row is visible to a key whose creator is admitted.
Why do I get an empty data array for a product I can see?+
The `/results` route reads the runs in `run_ids`. A pipeline-backed product carries no run IDs on this surface, so it returns an empty page here; fetch its output through the pipeline results endpoints or the CSV exports instead.