Skip to main content
POST
Submits up to 10 agent outputs for a run. Each new result is scored synchronously inside this request - a judge LLM call per result, plus any enabled similarity metrics and code scorers - so allow a generous client timeout for judged batches. Submissions are idempotent: resubmitting an idempotencyKey the run has already accepted returns the stored score without re-scoring.
Send results as you collect them rather than accumulating everything client-side: every batch response carries liveStatistics, so the run’s average rating is observable while the run is still executing.

Authentication

string
required
Project API key.

Path Parameters

string
required
Run ID returned by POST /runs.

Body

string
required
Identifier for this batch, stored on each result row.
array
required
Array of 1-10 result objects. Each result has:
The hosted platform’s observableTrace and metadata result fields are ignored by the self-host engine - they are accepted without error but not stored. Link a real trace via traceId instead; it powers strictly more (trajectory judging, timeline, scorers).

Response

string
Echoed back.
string
Echoed back.
number
New results scored and stored in this call.
number
Results skipped because their idempotencyKey already existed on this run.
number
Results dropped (missing idempotencyKey, or both output.text and error absent).
string
The run’s status, e.g. "in_progress".
array
Per-result scores, in submission order (validation-dropped results are omitted): [{ idempotencyKey, rating, justification, status, vectorSimilarity, jaccardSimilarity, bleuScore, rougeScore, codeScorerResults, judgeScorerResults, deduped? }]. judgeScorerResults carries one { scorerId, name, rating, justification } entry per additional judge scorer (or scorer-group judge member) on the run, null when there are none. status is "scored", "skipped" (judge could not score - the reason is in justification), or "failed" (the result carried an error). Duplicates echo the stored first-submission payload with deduped: true.
object
Rating aggregate recomputed after this batch: { averageRating, minRating, maxRating, ratedCount, skippedCount, failedCount }. Available on every batch response, no Analyze Run required; the Python SDK exposes the same numbers as run.average_rating and friends.

Errors