---
title: "Resolve regimes by id (NOT an enumeration)"
method: GET
path: "/v2/workspaces/{id}/regimes"
tags: ["Regimes"]
---

# Resolve regimes by id (NOT an enumeration)

`GET /v2/workspaces/{id}/regimes`

## Request

- Base URL: `https://api.infolang.ai`
- URL: `https://api.infolang.ai/v2/workspaces/{id}/regimes`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer
  - HTTP bearer

Resolves the ids in `?ids=a,b` plus every regime named by a live conflict. It is deliberately not a listing: the regime verb surface has no enumeration read — `regime_status` takes ONE id and no verb projects the fold's full regime list — so a complete listing cannot be served without inventing a second source of truth for identity the algebra says is exact. `enumeration.complete` is `false` on every response until an upstream verb exists.

Requires the `coord:read` scope. Accepts all three lanes: a session JWT (bounded by the caller's role on this workspace) or an `il_*` machine credential whose own scope set, workspace set and validity window cover it — both ceilings apply and neither can raise the other, so a credential carrying `coord:read` is still refused where the role does not permit it.

A credential with no scope record resolves to `LEGACY_DEFAULT`, which does NOT include `coord:read` — mint a key with it explicitly (`POST /v2/workspaces/{id}/keys`).

## Path parameters

- `id` string, required

## Query parameters

- `ids` string

## Response `200`

Resolved regimes, live conflicts, and the enumeration caveat

- object
  - `regimes` object[], required
    - `regime` string, required
    - `status` 'scheduled' | 'active' | 'ended' | 'void', nullable
    - `name` string, nullable
    - `window` object, nullable
      - `from` string, nullable
      - `to` string, nullable
    - `contested` boolean
    - `lost_adjudication` boolean
    - `parents` string[]
    - `children` string[]
    - `fold_size` number
  - `conflicts` unknown[], required
    - unknown
  - `enumeration` object, required
    - `complete` boolean, required
    - `reason` string, required

## Other responses

- `401`: Missing/invalid credential, or `credential_expired` — the credential is outside its `[not_before, expires_at)` window and must be replaced
- `403`: `insufficient_scope` — the credential's own scope set, or the caller's role on this workspace, does not cover the scope this route requires (the missing scope is named in the message). Or `forbidden` — the credential is not scoped to this workspace, or holds no grant on it
- `501`: The regime verbs are not compiled into this deployment (`kernel-verbs` is off upstream)

---

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