# List observers.

Source: <https://everruns.com/docs/api/operations/list_observers/>

GET

/v1/observers

Select code samplecURL (shell:curl)

```js
const url = 'https://app.everruns.com/api/v1/observers';
const options = {method: 'GET'};


try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```sh
curl --request GET \
  --url https://app.everruns.com/api/v1/observers
```

* Production APIapp.everruns.com/api/v1/observers

## Parameters

### Query Parameters

**include\_archived**

boolean

Include archived observers.

## Responses

### 200

Success

Media typeapplication/json

Response wrapper for list endpoints. All list endpoints return responses wrapped in a `data` field.

object

**data**

required

Array of items returned by the list operation.

Array\<object>

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:

* object

  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:

  * object

    Final assistant message contains substring.

    object

    **text**

    required

    string

    **type**

    required

    string

    Allowed values: contains

    **weight**

    number format: double

  * object

    Final assistant message does NOT contain substring.

    object

    **text**

    required

    string

    **type**

    required

    string

    Allowed values: not\_contains

    **weight**

    number format: double

  * object

    Final assistant message matches regex pattern.

    object

    **pattern**

    required

    string

    **type**

    required

    string

    Allowed values: regex

    **weight**

    number format: double

  * object

    Agent called named tool at least `min` times.

    object

    **min**

    integer format: int32

    **tool**

    required

    string

    **type**

    required

    string

    Allowed values: tool\_called

    **weight**

    number format: double

  * object

    Agent did NOT call named tool.

    object

    **tool**

    required

    string

    **type**

    required

    string

    Allowed values: tool\_not\_called

    **weight**

    number format: double

  * object

    Total tool calls within range.

    object

    **max**

    integer | null format: int32

    **min**

    integer | null format: int32

    **type**

    required

    string

    Allowed values: tool\_call\_count

    **weight**

    number format: double

  * object

    Completed within N turns.

    object

    **max**

    required

    integer format: int32

    **type**

    required

    string

    Allowed values: turns\_within

    **weight**

    number format: double

  * object

    Session filesystem file contains substring.

    object

    **path**

    required

    string

    **text**

    required

    string

    **type**

    required

    string

    Allowed values: file\_contains

    **weight**

    number format: double

  * object

    Final assistant message parses as JSON matching schema.

    object

    **schema**

    required

    **type**

    required

    string

    Allowed values: json\_schema

    **weight**

    number format: double

  * object

    Citation faithfulness: the answer’s citations must cover the claim and be verified as supported. Scored from the `TextAnnotation`s on the final message — pair with the `citation_verification` capability so verdicts are present.

    object

    **min\_citations**

    Minimum number of citations the answer must carry.

    integer format: int32

    **pass\_threshold**

    Minimum fraction of citations verified `entailed` to pass.

    number format: double

    **type**

    required

    string

    Allowed values: citation\_faithful

    **weight**

    Relative weight of this scorer in the case’s weighted average.

    number format: double

  * object

    Citation faithfulness judged by an LLM: each cited claim/source pair is graded by a model, so the eval works even without the `citation_verification` capability.

    object

    **model\_id**

    One of:

    * string

      Judge model; the org’s default is used when absent.

      string

      /^model\_\[0-9a-f]{32}$/

    * null

      null

    **pass\_threshold**

    Minimum judged score `[0,1]` to pass.

    number format: double

    **rubric**

    Rubric override; a citation-faithfulness rubric is used when absent.

    string | null

    **type**

    required

    string

    Allowed values: citation\_judged

    **weight**

    Relative weight of this scorer in the case’s weighted average.

    number format: double

  * string

    Judge model; the org’s default is used when absent.

    string

    /^model\_\[0-9a-f]{32}$/

  * null

    null

* object

  Final assistant message contains substring.

  object

  **text**

  required

  string

  **type**

  required

  string

  Allowed values: contains

  **weight**

  number format: double

* object

  Final assistant message does NOT contain substring.

  object

  **text**

  required

  string

  **type**

  required

  string

  Allowed values: not\_contains

  **weight**

  number format: double

* object

  Final assistant message matches regex pattern.

  object

  **pattern**

  required

  string

  **type**

  required

  string

  Allowed values: regex

  **weight**

  number format: double

* object

  Agent called named tool at least `min` times.

  object

  **min**

  integer format: int32

  **tool**

  required

  string

  **type**

  required

  string

  Allowed values: tool\_called

  **weight**

  number format: double

* object

  Agent did NOT call named tool.

  object

  **tool**

  required

  string

  **type**

  required

  string

  Allowed values: tool\_not\_called

  **weight**

  number format: double

* object

  Total tool calls within range.

  object

  **max**

  integer | null format: int32

  **min**

  integer | null format: int32

  **type**

  required

  string

  Allowed values: tool\_call\_count

  **weight**

  number format: double

* object

  Completed within N turns.

  object

  **max**

  required

  integer format: int32

  **type**

  required

  string

  Allowed values: turns\_within

  **weight**

  number format: double

* object

  Session filesystem file contains substring.

  object

  **path**

  required

  string

  **text**

  required

  string

  **type**

  required

  string

  Allowed values: file\_contains

  **weight**

  number format: double

* object

  Final assistant message parses as JSON matching schema.

  object

  **schema**

  required

  **type**

  required

  string

  Allowed values: json\_schema

  **weight**

  number format: double

* object

  Citation faithfulness: the answer’s citations must cover the claim and be verified as supported. Scored from the `TextAnnotation`s on the final message — pair with the `citation_verification` capability so verdicts are present.

  object

  **min\_citations**

  Minimum number of citations the answer must carry.

  integer format: int32

  **pass\_threshold**

  Minimum fraction of citations verified `entailed` to pass.

  number format: double

  **type**

  required

  string

  Allowed values: citation\_faithful

  **weight**

  Relative weight of this scorer in the case’s weighted average.

  number format: double

* object

  Citation faithfulness judged by an LLM: each cited claim/source pair is graded by a model, so the eval works even without the `citation_verification` capability.

  object

  **model\_id**

  One of:

  * string

    Judge model; the org’s default is used when absent.

    string

    /^model\_\[0-9a-f]{32}$/

  * null

    null

  **pass\_threshold**

  Minimum judged score `[0,1]` to pass.

  number format: double

  **rubric**

  Rubric override; a citation-faithfulness rubric is used when absent.

  string | null

  **type**

  required

  string

  Allowed values: citation\_judged

  **weight**

  Relative weight of this scorer in the case’s weighted average.

  number format: double

* object

  Judge model; the org’s default is used when absent.

  string

  /^model\_\[0-9a-f]{32}$/

* string

  null

* null

  LLM-as-judge.

  object

  **model\_id**

  Org model to judge with. When `None`, the org’s default model is used. Judge calls go through the org’s own providers and are billed to it.

  string | null

  **pass\_threshold**

  Score value at/above which `pass` is true.

  number format: double

  **rubric**

  required

  Grading rubric shown to the judge model. Should describe what a high vs. low score means.

  string

  **method**

  required

  string

  Allowed values: llm\_judge

**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

```json
{
  "data": [
    {
      "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"
    }
  ]
}
```