Skip to main content

Create Data Product

Create a data product from completed job or resolution runs with one API call. Set quality thresholds and receive a share token and export links on creation.

Create a data product from one or more completed runs. A data product is the platform's final deliverable: an assembled, canonical dataset wrapped for handover, with quality thresholds, a share link, and CSV export. This endpoint is the run-backed create path — pass the run IDs that feed the product and it assembles them and mints a share token in one call.

The body requires a name and a non-empty run_ids array (the completed job or resolution runs whose results the product assembles). You may optionally pass thresholds to filter rows by quality — min_confidence, require_validation_pass, and require_approval. The response is the created product with its id, run_ids, status, and links.

This is the run-backed create path. Products built from a validation session or a pipeline are created through their own surfaces (the pipeline's POST /v1/pipelines/{id}/data-product).
POST/v1/data-products

Body parameters

name*stringA name for the data product.
run_ids*string[]Completed job/resolution run UUIDs to assemble.
descriptionstringOptional description.
thresholdsobjectOptional quality filters: min_confidence (0–1), require_validation_pass, require_approval.

curl

Response

{
  "id": "6ecb46fa-24ba-4b5d-93ee-b8b6c6b97655",
  "name": "Q2 Deliveries",
  "description": null,
  "run_ids": ["c3d4e5f6-a7b8-9012-cdef-123456789012"],
  "status": "ready",
  "created_at": "2026-06-27T10:00:00.000Z",
  "links": {
    "self": "/v1/data-products/6ecb46fa-24ba-4b5d-93ee-b8b6c6b97655",
    "results": "/v1/data-products/6ecb46fa-24ba-4b5d-93ee-b8b6c6b97655/results",
    "export_plain": "/v1/data-products/6ecb46fa-24ba-4b5d-93ee-b8b6c6b97655/export/plain",
    "export_audit": "/v1/data-products/6ecb46fa-24ba-4b5d-93ee-b8b6c6b97655/export/audit"
  }
}

Errors

Error responses

400bad_requestValidation error: missing name, empty run_ids, or runs that are not completed.
401unauthorizedMissing or invalid API key.
429rate_limitedToo many requests. Retry after the period indicated in the Retry-After header.