Skip to main content

List Package Runs

List matching package runs for your organization, filterable by package config and status. Each run carries its verdict and per-type document results.

List the matching package runs that belong to your organization. Results are cursor-paginated and ordered newest first by default. Each entry is the full run shape, including its aggregated status, per-type document results, and the document ids that were supplied.

You can narrow the list with two filters. Pass package_config_id to return only runs of a specific config, and pass status to return only runs with a given verdict, such as passed or review. Combine both to find, for example, every failing run of one package config.

Pagination follows the same cursor pattern used across the API. The pagination block carries total, limit (1–100, default 20), has_more, and next_cursor. Pass next_cursor back as the cursor query parameter to page forward; filters stay applied across pages. Every run is tenant-scoped to your organization.

This list is also the read path for individual runs: the public API exposes no separate GET-by-id route for package runs, so to re-read one, filter the list (by package_config_id, and by status if useful) and pick the run out by its id. Runs are immutable once terminal, which makes the list safe to mirror into your own audit store — a page you exported never changes retroactively.

GET/v1/matching/packages/runs

Query parameters

package_config_idstringReturn only runs of this package config.
statusstringFilter by verdict: passed, failed, review, error, or running.
limitintegerMaximum number of results to return. Default: 20
cursorstringPagination cursor from a previous response.
orderstringSort direction by created_at: desc or asc. Default: desc

curl

curl -s "https://api.talonic.com/v1/matching/packages/runs?package_config_id=4f2a9c1e-8b3d-47e6-9a05-c7d1e2f3a4b5&status=review" \
  -H "Authorization: Bearer tlnc_your_api_key"

Response

Response fields

dataarrayArray of package run objects.
data[].idstringPackage run UUID.
data[].package_config_idstringUUID of the config this run scored against.
data[].statusstringAggregated verdict: passed, failed, review, error, or running.
data[].document_resultsarrayPer-document-type results.
data[].input_documentsobjectDocument ids supplied per type.
data[].errorstring | nullError detail when status is error.
data[].created_atstringISO 8601 creation timestamp.
data[].completed_atstring | nullISO 8601 completion timestamp.
data[].linksobjectRelated resource URLs (self, config).
pagination.totalintegerTotal number of runs 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.

Response

{
  "data": [
    {
      "id": "8d7e6f50-4c3b-42a1-b0e9-d8c7b6a59483",
      "package_config_id": "4f2a9c1e-8b3d-47e6-9a05-c7d1e2f3a4b5",
      "status": "passed",
      "document_results": [
        {
          "document_type": "invoice",
          "matching_config_id": "1a2b3c4d-5e6f-4781-92a3-b4c5d6e7f809",
          "matching_run_id": null,
          "presence": "required",
          "document_found": true,
          "status": "matched",
          "confidence": 0.93
        }
      ],
      "input_documents": { "invoice": ["b8b00d51-eecc-49b3-affc-89fee95b9518"] },
      "error": null,
      "created_at": "2024-09-14T10:40:00.000Z",
      "completed_at": "2024-09-14T10:40:03.000Z",
      "links": {
        "self": "/v1/matching/packages/runs/8d7e6f50-4c3b-42a1-b0e9-d8c7b6a59483",
        "config": "/v1/matching/packages/configs/4f2a9c1e-8b3d-47e6-9a05-c7d1e2f3a4b5"
      }
    }
  ],
  "pagination": {
    "total": 12,
    "limit": 20,
    "has_more": false,
    "next_cursor": null
  }
}
Combine package_config_id and status to triage runs: filter to one config with status=review to surface exactly the bundles a reviewer needs to look at.

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

How do I list runs for a single config?+
Pass the package_config_id query parameter. The links.runs URL on a config already encodes this filter for you.
Which status values can I filter on?+
Runs can be passed, failed, review, error, or running. A synchronous public run is already terminal, so running is rare in practice.
How do I page through a long run history?+
The response carries a pagination block with total, limit, has_more, and next_cursor. Pass next_cursor back as the cursor query parameter until has_more is false. Filters stay applied across pages.
Is there a GET endpoint for a single run?+
No — the run links.self URL names the resource, but the public read path is this list. Filter by package_config_id (and status) and select the run by id; because runs are immutable once terminal, the row you read is stable.