Skip to main content
POST
Submit Anonymous Scores

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

X-Voter-Token
string | null
authorization
string | null
X-API-Key
string | null

Path Parameters

token
string
required

Query Parameters

include_next_pair
boolean
default:true

Body

application/json

Request to submit per-clip numeric scores for the current served pair.

pair_id
string<uuid>
required

Served pair id (sticky); scored samples must belong to it.

scores
ScoreItem · object[]
required

One entry per (sample, scored axis).

Minimum array length: 1
sample_a_playback_percent
number | null

Percent of clip A actually played. Required (both sides, enforced server-side) for audio experiments with enforce_playback + min_playback_percent, mirroring the vote path's engagement gate.

Required range: 0 <= x <= 100
sample_b_playback_percent
number | null

Percent of clip B actually played. See sample_a_playback_percent.

Required range: 0 <= x <= 100
time_taken_ms
integer | null

Milliseconds the scorer spent on the pair. Required (and enforced server-side) when the session sets min_viewing_seconds > 0 for non-audio media, mirroring the vote path's engagement gate.

Required range: x >= 0

Response

Successful Response

Response after submitting numeric scores: raw ids + the next served pair.

next_pair
NextPairResponse · object | null

Response with the next pair to compare.

next_pair_state
enum<string>
default:error
Available options:
ready,
completed,
paused,
no_comparisons,
no_pairs_available,
blocked,
error
progress
SessionProgressResponse · object | null

Progress information for anonymous voter.

score_ids
string<uuid>[]