Skip to main content
A Rating is a single rater’s verdict on a single comparison. Humans and autousers produce the same shape so downstream analytics doesn’t have to branch on raterType.

Shape

Discriminator: Exactly one of (userId, publicRaterId) is set on human ratings; exactly one of (autouserId, autouserRunId) is set on autouser ratings.

Listing

Cursor-paginate with starting_after. See Pagination.

Submitting a human rating via the API

Most ratings come from the dashboard or the public share link. If you need to submit one programmatically (e.g. wiring up a custom rater UI):

Agreement

Once you have ratings from ≥3 raters per comparison, agreement metrics become useful. The /agreement endpoint computes Krippendorff α and, when there are exactly two raters, Cohen κ.

What the numbers mean

Cohen κ uses the same scale. When >2 raters are present we report only Krippendorff (κ is undefined for >2 raters).

Caching

Agreement is cached on Evaluation.agreementCache and only recomputed when the rating count changes. The first call after a new rating is slightly slower (~100ms) as it warms the cache; subsequent calls are instant.

Streaming ratings into a warehouse

The shape is stable — dimensionRatings is a JSON map, factors and openTextResponses are JSON. Subscribe to the rating.created webhook (see Events) and append rows to BigQuery / Snowflake as they arrive. Use Autousers-Event-Id as the dedup key on insert. See the Looker / BigQuery recipe.