Skip to main content
POST

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.

Headers

idempotency-key
string

Makes a retry safe. For 24 hours, the same key with the same request returns the first stored result (with Idempotent-Replayed: true); the same key with a different request is a 422 IDEMPOTENCY_KEY_REUSED. Keys are scoped to the organization and environment across every operation, so use a fresh key per request. A request that failed before its result was stored runs again when retried with its key.

Required string length: 1 - 255
Pattern: ^[\x20-\x7e]+$

Body

application/json
about
object
required

What the feedback is about. {evaluation_id} is preferred: it names exactly the answer you are judging. {decision_id, item_id} means the item's latest primary evaluation in the key's environment, resolved when the feedback arrives; the response says which one. Verdict claims need evaluation_id.

claims
object[]
required

What you are saying about the evaluation, 1 to 65 claims. At most one outcome, one target and one verdict claim, and one claim per feature; an outcome and a target must not contradict each other.

Required array length: 1 - 65 elements

Whether the target statement is true. Only for specs that declare a target.

source
enum<string>
required

Who is speaking. Three sources count toward an evaluation's consensus answer, which is what previews and suggestions learn from (on primary and seed evaluations whose content is stored): owner through this route, reviewers answering through the review routes (the Review app), and seed examples. The owner outranks reviewers, and reviewers outrank seeds. app_native and app_resolution provide supporting feedback only. owner: the decision owner's judgment. An outcome, target or verdict claim decides the consensus; feature claims refine a case that has a consensus and on their own decide nothing. owner folds every person into one: all owner feedback through this route is the decision owner's single voice, whoever sent it, and the latest owner submission with an outcome, target or verdict claim decides, replacing earlier ones. Agreement between people is only kept for reviewers on the review routes, who each get one vote. Use owner for corrections you stand behind. app_native: your app's own feedback about the outcome it acted on, for example a user approved or reverted it. app_resolution: how your own process finally settled the case, for example an appeal. The two weak sources never decide a consensus, but they are not inert. The first feedback a group of near-identical items gets in an environment, from any source, fixes the group's split for good: an owner's or reviewer's first feedback holds out 30% of groups to test suggestions, while a native or resolution first touch puts the group in training, so a native verdict sent before your own review means that item can never be held out. A native or resolution submission's reason is shown to the suggestion generator alongside a case that other feedback decided. An input_broken claim from any source sets the evaluation aside.

Available options:
app_native,
app_resolution,
owner
actor
string

Who in your system this comes from, for example a user or agent id. It is namespaced under your key. Not allowed with source owner: the owner is you.

Required string length: 1 - 256
reason
string

Why, in your words. Optional.

Maximum string length: 4000
unsure
boolean

True when the judge is not confident in these claims.

supersedes
string

The id of your own earlier submission on the same evaluation that this one replaces. Only the latest submission in a chain counts; the earlier one stays readable and shows superseded_by.

Pattern: ^fbk_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$

Response

Recorded

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
id
string
required
Pattern: ^fbk_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
evaluation_id
string
required
Pattern: ^evl_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
item_id
string
required
claims
integer
required
Required range: x >= 1
resolved_from_item
boolean
required