Report a reward for a job
Reporting the same scorer (and turn) again replaces its value; when reports race, the one that started last stands and the other gets 409 reward_superseded. A trace_id must be one of the job's model calls and sets the turn. detail is plaintext metadata (up to 20 short values), not content. A review is a person's label of the job (1 good, 0 bad), weighted 2 by default; reviews also calibrate an evaluation's model judges.
/v1/jobs/{id}/rewardsPath parameters
idstringrequiredMin length: 1
Headers
Idempotency-KeystringOptional. A retry with the same key returns the first attempt's outcome instead of writing again, so a late retry never replaces a newer report; the same key with different input returns 409.
Pattern: ^[\x21-\x7e]{1,200}$
Body
valueobjectAllowed shapes
object
kind"external"scorerstringrequiredPattern: ^[a-zA-Z0-9_.-]{1,100}$
valuenumber | nullrequiredweightnumberDefault: 1 · Minimum: 0 · Maximum: 1000
turn_idstringMin length: 1 · Max length: 200
trace_idstringMin length: 1 · Max length: 200
detailobjectAdditional keys: string | number | boolean | null
object
kind"review"requiredscorerstringDefault: "review" · Pattern: ^[a-zA-Z0-9_.-]{1,100}$
valuenumberrequiredMinimum: 0 · Maximum: 1
weightnumberDefault: 2 · Minimum: 0 · Maximum: 1000
turn_idstringMin length: 1 · Max length: 200
trace_idstringMin length: 1 · Max length: 200
detailobjectAdditional keys: string | number | boolean | null
object
kind"choice"requiredscorerstringDefault: "choice" · Pattern: ^[a-zA-Z0-9_.-]{1,100}$
shownarray<any>requiredMin items: 2 · Max items: 20
chosenany | nullrequiredpromptstringMin length: 1 · Max length: 12000
weightnumberDefault: 1 · Minimum: 0 · Maximum: 1000
turn_idstringMin length: 1 · Max length: 200
trace_idstringMin length: 1 · Max length: 200
detailobjectAdditional keys: string | number | boolean | null
Response
201Report a reward for a job
X-Request-IdstringServer-generated request identifier for logs and support.
application/json
idstringrequiredMin length: 1
job_idstringrequiredMin length: 1
kindstringrequiredAllowed: "check""model_judge""webhook""external""feedback""approval""takeover""choice""edit""review"
scorerstringrequiredturn_idstring | nullrequiredtrace_idstring | nullrequiredvaluenumber | nullrequiredweightnumberrequiredgatebooleanrequireddetail_jsonobjectrequiredAdditional keys: any
created_atstringrequiredFormat: date-time · Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
updated_atstringrequiredFormat: date-time · Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
4XX400 invalid input; 401 missing/revoked credentials; 403 disallowed operation/application; 404 missing or inaccessible resource; 409 conflicting submission/version/state; 413 body too large; 415 unsupported content type. Inspect error.code, not message text.
X-Request-IdstringServer-generated request identifier for logs and support.
application/json
errorobjectrequiredObject fields
codestringrequiredmessagestringrequiredrequest_idstringrequiredAdditional keys: any
5XX500 unexpected failure or 503 unavailable dependency. A failed response does not prove that a submission was not committed. Retry job/flow admission with the same key and body.
X-Request-IdstringServer-generated request identifier for logs and support.
application/json
errorobjectrequiredObject fields
codestringrequiredmessagestringrequiredrequest_idstringrequiredAdditional keys: any