Skip to main content
GET
Export a decision's feedback as training data

Authorizations

Authorization
string
header
required

An API key, sent as Authorization: Bearer <key>. Each operation lists the scope its key needs: decisions:evaluate (evaluate and read evaluations), decisions:feedback (your app's feedback) or decisions:develop (everything else, including owner feedback and the review queue). An operation listing no scope takes any scoped key. A key with no scope, or without the operation's, gets 403 INSUFFICIENT_SCOPE.

Path Parameters

decision_id
string
required
Pattern: ^[a-z][a-z0-9_.-]{0,127}$

Query Parameters

structure_hash
string

Only feedback on evaluations of this structure hash.

Pattern: ^sha256:[0-9a-f]{64}$
limit
integer
default:50
Required range: 1 <= x <= 100
cursor
string

The previous page's next_cursor, or its resume_cursor to poll later; retained on empty export polls.

Required string length: 1 - 1024

Response

A page of feedback, oldest first

environment
enum<string>
required

The environment of the key that made the call: production or test. Evaluations, feedback, reviews and suggestions are separate per environment; registered structures are shared.

Available options:
production,
test
items
object[]
required
next_cursor
string | null
required

Next page, or null at the end.

resume_cursor
string | null
required

Export checkpoint for later polls, retained on empty pages. Pass as cursor on a later poll. Creation ordering requires periodic full rescans for late commits, holdout releases and updates; this is not a lossless change feed.

has_more
boolean
required

True when more items follow this page now.

withheld
object | null
required

Submission rows, including withdrawal events (not distinct evaluations), in scope (this decision, the key's environment, the same version filters) that the export leaves out of every page. Counted on the first page only (no cursor); null on later pages. Counts per filter can tell you that a version gained held-out feedback, never which item.