---
# @generated by sylphx-gen. Do not edit.
title: "Get an owner pool"
description: "`agents.owner_pools.get` (GET /v1/{name}): Gets an owner pool with its members."
type: reference
product: agents
summary: "Gets an owner pool with its members."
updated: 2026-09-28
nav: false
---

Gets an owner pool with its members.

- **Path** `GET https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/owner_pools/owner-pool`
- **Scope** `agents:read`
- **Effect** `read` — nothing is written.
- **Collection** [owner_pools](/docs/api/owner_pools)

## Request

| Field | Type | What it is |
| --- | --- | --- |
| `name` | `string` | The name of the owner pool to get. Required. |

## Response

| Field | Type | What it is |
| --- | --- | --- |
| `name` | `string` | `orgs/{org}/projects/{project}/envs/{env}/owner_pools/{owner_pool}`. |
| `uid` | `string` | `aop_<cell><ulid>`; never reused. Output only. |
| `meta` | `ResourceMeta` | Resource metadata. |
| `spec` | `OwnerPoolSpec` | Desired state. Required. |
| `status` | `OwnerPoolStatus` | Observed state: the members. Output only. |

### ResourceMeta

| Field | Type | What it is |
| --- | --- | --- |
| `generation` | `int64` | Increases by one on every change to `spec`. Output only. |
| `etag` | `string` | Strong ETag (AIP-154): changes on any change to spec, status, or metadata. Send it back as `If-Match` or `etag` to make Update and Delete conditional; a mismatch fails with ABORTED / 409 `ETAG_MISMATCH`. Output only. |
| `create_time` | `timestamp` | When the Resource was created. Output only. |
| `update_time` | `timestamp` | When the Resource last changed. Output only. |
| `delete_time` | `timestamp` | Set while the Resource is being deleted. Output only. |
| `labels` | `map<string, string>` | Caller-writable, indexed labels (AIP-122 label rules). |
| `annotations` | `map<string, string>` | Caller-writable, unindexed annotations. |
| `display_name` | `string` | Caller-writable human-readable name. |
| `creator` | `string` | The principal that created the Resource. Output only. |

### OwnerPoolSpec

| Field | Type | What it is |
| --- | --- | --- |
| `admission` | `OwnerPoolAdmission` | The admission test every member passes. Required. |
| `demotion` | `OwnerPoolDemotionRule[]` | Live-metric rules that demote a member; at most 16, each metric once. |

### OwnerPoolStatus

| Field | Type | What it is |
| --- | --- | --- |
| `observed_generation` | `int64` | The generation this status was computed from. Output only. |
| `conditions` | `Condition[]` | Ready. Output only. |
| `members` | `OwnerPoolMember[]` | Every version ever submitted to `:qualify`, most recently changed first. Output only. |

### OwnerPoolAdmission

| Field | Type | What it is |
| --- | --- | --- |
| `suite` | `string` | The suite's id, matched exactly by `:qualify`; at most 200 characters. Required. |
| `min_scores` | `map<string, double>` | Minimum score per suite metric, higher is better; 1 to 64 metrics. A member qualifies only when every metric is reported at or above its minimum. Required. |
| `suite_version` | `string` | The suite's version, matched exactly by `:qualify`; at most 200 characters. Required. |

### OwnerPoolDemotionRule

| Field | Type | What it is |
| --- | --- | --- |
| `metric` | `string` | The live metric's name, as `:observe` reports it. Required. |
| `max_regression` | `double` | The tolerated regression as a fraction of the baseline: a member is demoted when the observed value exceeds `baseline * (1 + max_regression)`. Required. |
| `min_samples` | `int64` | Observations over fewer samples than this are recorded but never count toward the baseline or demote; default 1. |
| `baseline_observations` | `int64` | The baseline is the median of the member's first this many counted observations of the metric, set once it is finite and positive (while the median is zero the window moves on). 1 to 100; default 5. |

### Condition

| Field | Type | What it is |
| --- | --- | --- |
| `type` | `string` | The condition type, for example `Ready`. |
| `status` | `ConditionStatus` | Whether the condition holds. One of `true`, `false`, `unknown`. |
| `observed_generation` | `int64` | The generation this observation was made against. |
| `reason` | `string` | A machine-readable UpperCamelCase reason. |
| `message` | `string` | A customer-safe human-readable message. |
| `severity` | `Severity` | How severe a FALSE condition is. One of `info`, `warning`, `error`. |
| `transition_time` | `timestamp` | When `status` last changed. |

### OwnerPoolMember

| Field | Type | What it is |
| --- | --- | --- |
| `agent_version` | `string` | The member version. Output only. |
| `model` | `string` | The model the version pins. Output only. |
| `state` | `OwnerPoolMemberState` | Qualified, refused or demoted. Output only. One of `qualified`, `refused`, `demoted`. |
| `suite` | `string` | The suite of the latest `:qualify`. Output only. |
| `scores` | `map<string, double>` | The scores of the latest `:qualify`. Output only. |
| `baseline` | `map<string, double>` | The baseline per demotion metric, computed by the platform from counted observations; a re-qualify keeps it. Output only. |
| `observed` | `map<string, double>` | The latest observation per metric. Output only. |
| `qualify_time` | `timestamp` | When it last qualified. Output only. |
| `demote_time` | `timestamp` | When it was last demoted. Output only. |
| `reason` | `string` | Why it was refused or demoted. Output only. |
| `update_time` | `timestamp` | When the state last changed. Output only. |
| `suite_version` | `string` | The suite version of the latest `:qualify`. Output only. |
| `result` | `string` | The suite result of the latest `:qualify`. Output only. |
| `qualifier` | `string` | The principal that recorded the latest `:qualify`. Output only. |

## Errors

- [`UNAUTHENTICATED`](/docs/api/errors/UNAUTHENTICATED) — No valid key or token was presented.
- [`PERMISSION_DENIED`](/docs/api/errors/PERMISSION_DENIED) — The key lacks the method's permission.
- [`RESOURCE_NOT_FOUND`](/docs/api/errors/RESOURCE_NOT_FOUND) — The named Resource does not exist or is not visible.

Every error arrives in the body [Errors](/docs/platform/errors) describes.

## Examples

**cURL**

```curl
curl "https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/owner_pools/owner-pool" \
  -H "Authorization: Bearer $SYLPHX_API_KEY"
```

**TypeScript**

```ts
const response = await sylphx.agents.ownerPools.get({ name: 'orgs/acme/projects/shop/envs/production/owner_pools/owner-pool' })
```

**Rust**

```rust
let mut req = sylphx::agents::GetOwnerPoolRequest::default();
req.name = "orgs/acme/projects/shop/envs/production/owner_pools/owner-pool".to_string();
let response = sx.agents().owner_pools().get(req).await?;
```

**CLI**

```bash
sylphx agents owner-pools get orgs/acme/projects/shop/envs/production/owner_pools/owner-pool
```

**MCP**

```json
{ "method_id": "agents.owner_pools.get", "args": {"name":"orgs/acme/projects/shop/envs/production/owner_pools/owner-pool"} }
```
