# A judging rule's results

GET

/v1/projects/{projectId}/judging-rules/{ruleId}/results

```sh
curl --request GET \
  --url https://example.com/v1/projects/example/judging-rules/example/results \
  --header 'Authorization: Bearer <token>'
```

By the rule’s version and the agent’s: the runs it queued (open, judged, dismissed, erased), the ones its `maxOpen` skipped, and the live judgments on them, with their class-weighted `yes` share and a count by class. Never pooled with another rule’s, or across a rule’s versions: each is a sample of its own `when`. Needs `read` on the project.

## Authorizations

- **[bearerAuth](https://docs.kindgi.com/v0.1.8/reference/api.md#bearerauth)**

## Parameters

### Path Parameters

**projectId**

required

string

ProjectId — opaque branded string.

**ruleId**

required

string

### Query Parameters

**since**

string format: date-time

Only runs queued from this time on.

## Responses

### 200

The results.

application/json

object

**ruleId**

required

string

**since**

string format: date-time

**groups**

required

By the rule’s version and the agent’s, newest rule version first: two versions of a rule are two sampling designs, never pooled.

Array\<object>

One rule version’s runs of one agent version. `added` = `open` + `judged` + `dismissed` + `erased`.

object

**ruleVersion**

required

integer

\>= 1

**agentVersion**

required

`null`: a flow run, or one from before versions were recorded.

string | null

**added**

required

integer

**open**

required

integer

**judged**

required

integer

**dismissed**

required

integer

**erased**

required

integer

**skippedByCap**

required

Runs the rule matched and sampled but didn’t queue, because `maxOpen` were waiting, even when another rule queued them. Non-zero: the queued runs lean toward quiet times. `added` + `skippedByCap` = every run the rule matched and sampled.

integer

**judgments**

required

Live judgments on the queued runs: each is one person’s verdict on one item of a run’s output.

integer

**runsWithJudgments**

The queued runs with at least one live judgment: the runs `judgments` and `yesShare` come from, whatever their item’s state now (still `open`, closed as `judged`, or dismissed after someone judged it). Several people judging one run make several judgments but one run here. Absent from a runtime that doesn’t count them.

integer

**yesShare**

required

The `yes` share of those judgments, each weighted by its class (unclassified: 1). `null` with none.

number | null

**byClass**

required

The same judgments by class, unweighted.

Array\<object>

object

**judgeClassId**

required

`null`: unclassified.

string | null

**judgments**

required

integer

**yes**

required

integer

##### Examplegenerated

```json
{
  "ruleId": "example",
  "since": "2026-04-15T12:00:00Z",
  "groups": [
    {
      "ruleVersion": 1,
      "agentVersion": "example",
      "added": 1,
      "open": 1,
      "judged": 1,
      "dismissed": 1,
      "erased": 1,
      "skippedByCap": 1,
      "judgments": 1,
      "runsWithJudgments": 1,
      "yesShare": 1,
      "byClass": [
        {
          "judgeClassId": "example",
          "judgments": 1,
          "yes": 1
        }
      ]
    }
  ]
}
```

### 401

Missing / malformed / expired / revoked bearer token.

application/json

object

**error**

required

object

**code**

required

Stable machine-readable discriminant. Values match domain error codes (see `docs/API-ROUTE-CONVENTIONS.md` §4.3).

string

**message**

required

string

**details**

Optional, kind-specific.

object

**_key_**

additional properties

any

**requestId**

required

Server-assigned request id; also echoed via `X-Request-Id` header.

string

##### Examplegenerated

```json
{
  "error": {
    "code": "example",
    "message": "example",
    "details": {},
    "requestId": "example"
  }
}
```

### 404

No such rule (`judging-rule-not-found`).

application/json

object

**error**

required

object

**code**

required

Stable machine-readable discriminant. Values match domain error codes (see `docs/API-ROUTE-CONVENTIONS.md` §4.3).

string

**message**

required

string

**details**

Optional, kind-specific.

object

**_key_**

additional properties

any

**requestId**

required

Server-assigned request id; also echoed via `X-Request-Id` header.

string

##### Examplegenerated

```json
{
  "error": {
    "code": "example",
    "message": "example",
    "details": {},
    "requestId": "example"
  }
}
```

## See also

- [`GET /v1/projects/{projectId}`: Fetch a project by id](https://docs.kindgi.com/v0.1.8/reference/api/operations/projectsget.md)
- [`PATCH /v1/projects/{projectId}`: Partially update a project](https://docs.kindgi.com/v0.1.8/reference/api/operations/projectsupdate.md)
- [`DELETE /v1/projects/{projectId}`: Delete a project (idempotent)](https://docs.kindgi.com/v0.1.8/reference/api/operations/projectsdelete.md)
- [`GET /v1/projects/{projectId}/judging-rules`: List a project's judging rules](https://docs.kindgi.com/v0.1.8/reference/api/operations/projectsjudgingruleslist.md)
- [Error code `judging-rule-not-found`](https://docs.kindgi.com/v0.1.8/reference/errors.md#judging-rule-not-found)
- [Every error code](https://docs.kindgi.com/v0.1.8/reference/errors.md)
