---
title: "List accepted results on catalogue tasks"
method: GET
path: "/v1/data/outcomes"
tags: ["Data Quality"]
---

# List accepted results on catalogue tasks

`GET /v1/data/outcomes`

## Request

- Base URL: `https://api.gunspec.io`
- URL: `https://api.gunspec.io/v1/data/outcomes`
- Auth: one of:
  - none
  - API key in header `X-API-Key`
  - HTTP bearer

Every result on a task raised by the catalogue's own checks that a person has accepted, newest first. A found value comes with the page's own words for it and the page read; a value looked for and not found, and a finding judged right as it stands, come with the agent's reasoning. It is what the catalogue sync reads to write each result into the record, its ledger and its task file, so it names nothing a person has not accepted and never the reviewer.

No API key required.

## Query parameters

- `page` integer
- `per_page` integer
- `since` string

## Response `200`

List accepted results on catalogue tasks

- object
  - `success` boolean, required: Always true on a successful response. Every error carries `false` and an `error` object instead.
  - `data` object[], required: One page of results. Use `pagination` to walk the rest.
    - `taskKey` string: The task.
    - `kind` 'gap' | 'contradiction': A value to find, or a finding to judge.
    - `entity` string: The catalogue the record is in.
    - `subject` string: The record.
    - `field` string, nullable: The record column, on a value to find.
    - `suite` string: The check suite that raised it.
    - `check` string: The check that raised it.
    - `key` string: The finding's key within its check.
    - `outcome` 'resolved' | 'unverifiable' | 'not_a_fault': Found, looked for and not found, or right as it stands.
    - `value` union: The value found, in the column's own unit.
      - number
      - string
    - `stated` string, nullable: The value as the page writes it, unit included.
    - `evidence` object[]: The page read and its own words for the value.
      - `url` string, required: The page read.
      - `quote` string, required: The words on the page that state it.
    - `reasoning` string, nullable: The agent's reasoning.
    - `agent` string, nullable: The agent that worked it.
    - `reviewedAt` string, nullable: When it was accepted.
  - `pagination` Pagination: Page-size is reported under both `per_page` (matching the request parameter) and `limit` (retained for existing integrations). They always carry the same value. `total` and `totalPages` are omitted for Explorer and anonymous callers.
    - `page` integer, required: The page this response is, 1-based.
    - `per_page` integer, required: Page size. Same value as `limit`.
    - `limit` integer, required: Page size. Alias of `per_page`.
    - `total` integer: Total records matching the query across every page.
    - `totalPages` integer: How many pages the result set spans at the current `per_page`.

## Other responses

- `400`: Validation error
- `429`: A limit was reached. `RATE_LIMITED` is the per-minute limit: wait `Retry-After` seconds (a minute) and retry. `DAILY_CAP_EXCEEDED` is the plan's daily limit, per key: nothing will be served until the counters return to zero at midnight UTC. `MONTHLY_CAP_EXCEEDED` is the plan's monthly allowance, for the whole account: nothing will be served until midnight UTC on the first of next month, or until the plan changes. For both, `Retry-After` is the seconds until then and `error.resetsAt` says when as an instant. Calls made after a refusal are refused too and do not spend the month, and a free key that keeps calling is paused, so stop at the first one and resume at the reset.
- `500`: Internal server error

---

[API](https://skmtc.dev/gunspec/apis/gunspec-io-api.md) · [All operations](https://skmtc.dev/gunspec/apis/gunspec-io-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gunspec/apis/gunspec-io-api/revisions/f2e974d8b05c?raw)
