---
title: "Active members of a named universe at a teo"
method: GET
path: "/universe/{name}/members"
tags: ["Risk Metrics"]
---

# Active members of a named universe at a teo

`GET /universe/{name}/members`

## Request

- Base URL: `https://riskmodels.app/api`
- URL: `https://riskmodels.app/api/universe/{name}/members`
- Auth: HTTP bearer

Active membership of a named universe (e.g. `uni_mc_3000`) at one trading day (latest by default). **Active = monthly universe_mask AND daily validity gate** — matches the same dual-gate the ERM3 pipeline applies to produce its output zarrs. Symbols failing either gate are NOT in the response.

The universe mask is stamped at month-end and applied to every teo in the following month; validity is per-day. The response includes a `mask_as_of` month-end stamp so callers can disambiguate "membership changed because new month" from "membership changed because daily validity failed" — useful when tracking turnover over time.

Foundational endpoint for any cross-sectional workflow that needs to align on the canonical universe without the Python SDK.

**Billing:** $0.02 per request.

## Path parameters

- `name` 'uni_mc_50' | 'uni_mc_500' | 'uni_mc_1000' | 'uni_mc_3000' | 'uni_dv_50' | 'uni_dv_500' | 'uni_dv_1000' | 'uni_dv_3000', required

## Query parameters

- `teo` string, date

## Response `200`

Active members + counts breakdown + mask_as_of.

- object
  - `universe` string
  - `teo` string, date
  - `mask_as_of` string, date: Month-end stamp the monthly universe mask was applied. Use to disambiguate mask-vs-validity-driven membership changes between two teos.
  - `members` object[]
    - `symbol` string
    - `ticker` string
  - `counts` object
    - `active` integer: Universe mask AND validity at this teo (== members.length).
    - `in_universe_mask` integer: Members of the monthly universe mask BEFORE applying daily validity.
    - `inactive_from_validity` integer: Symbols that pass the universe gate but fail the daily validity gate.

## Other responses

- `400`: Unknown universe label (not in KNOWN_UNIVERSES) or invalid teo format.
- `401`: Missing or invalid Bearer token.
- `402`: Insufficient balance.
- `404`: Universe membership unavailable for the requested label / teo.
- `429`: Rate limit exceeded.

---

[API](https://skmtc.dev/riskmodels/apis/riskmodels-api.md) · [All operations](https://skmtc.dev/riskmodels/apis/riskmodels-api/llms.txt) · [OpenAPI document](https://skmtc.dev/riskmodels/apis/riskmodels-api/revisions/1a034cad408a?raw)
