Skip to content
Everruns Cloud is open in early access. Run agents without operating the platform.

Create an observer (online scoring).

POST
/v1/observers
curl --request POST \
--url https://app.everruns.com/api/v1/observers \
--header 'Content-Type: application/json' \
--data '{ "description": "Score replies from the support agent", "match": { "agent_ids": [ "example" ], "harness_ids": [ "example" ], "session_tags": [ "example" ] }, "name": "Support quality", "sampling_rate": 0.25, "scorers": [ { "model_id": "example", "pass_threshold": 1, "rubric": "example", "method": "llm_judge", "key": "example", "scope": "turn" } ] }'
Media typeapplication/json

Request to create a new observer.

object
description

Human-readable description. Safe to render in user-facing messages.

string | null
Example
Score replies from the support agent
match
One of:

Which production sessions to score. Empty matches all org traffic.

object
agent_ids

Match sessions running any of these agents.

Array<string> | null
harness_ids

Match sessions on any of these harnesses.

Array<string> | null
session_tags

Match sessions carrying any of these tags.

Array<string> | null
name
required

Human-readable name. Safe to render in user-facing messages.

string
Example
Support quality
sampling_rate

Fraction of matching turns to score (0.0–1.0). Defaults to 0.1.

number | null format: double
Example
0.25
scorers
required

Scoring rules. Must contain at least one.

Array

One scorer inside an observer. key names the score series in listings and future dashboards; scope selects the trace slice; method is how it grades.

object
One of:

Deterministic rule. file_contains is rejected for observers (session filesystems are not part of the observable trace contract).

object
method
required
string
Allowed values: rule
rule
required
One of:

Final assistant message contains substring.

object
text
required
string
type
required
string
Allowed values: contains
weight
number format: double
key
required

Stable name within the observer (score series name).

string
scope

Trace slice this scorer grades.

string
Allowed values: turn

Created

Media typeapplication/json

An observer: online scoring config over production sessions.

object
archived_at
string | null format: date-time
created_at
required
string format: date-time
description

Optional description.

string | null
id
required

External identifier (observer_<32-hex>). Shown as “id” in API.

string
match

Which sessions to score.

object
agent_ids

Match sessions running any of these agents.

Array<string> | null
harness_ids

Match sessions on any of these harnesses.

Array<string> | null
session_tags

Match sessions carrying any of these tags.

Array<string> | null
name
required

Display name.

string
sampling_rate
required

Fraction of matching turns to score (0.0–1.0), applied after match.

number format: double
scorers
required

Scoring rules.

Array

One scorer inside an observer. key names the score series in listings and future dashboards; scope selects the trace slice; method is how it grades.

object
One of:

Deterministic rule. file_contains is rejected for observers (session filesystems are not part of the observable trace contract).

object
method
required
string
Allowed values: rule
rule
required
One of:

Final assistant message contains substring.

object
text
required
string
type
required
string
Allowed values: contains
weight
number format: double
key
required

Stable name within the observer (score series name).

string
scope

Trace slice this scorer grades.

string
Allowed values: turn
status
required

Lifecycle status.

string
Allowed values: active paused archived deleted
updated_at
required
string format: date-time
Example
{
"description": "Grades support replies for grounded answers.",
"id": "observer_01933b5a000070008000000000000001",
"name": "Support answer quality",
"sampling_rate": 0.1,
"scorers": [
{
"method": "llm_judge",
"scope": "turn"
}
],
"status": "active"
}