---
title: "The caller's workspace"
method: GET
path: "/workspace"
tags: ["workspace"]
---

# The caller's workspace

`GET /workspace`

## Request

- Base URL: `https://shruwd.io/api/v1`
- URL: `https://shruwd.io/api/v1/workspace`
- Auth: HTTP bearer

Plan, resolved entitlements (plan plus any one-off grant — what the
scheduler applies), usage against the period allowance, and the brands
the caller can reach with their role on each. Call this first: it says
what the plan will let you do before you try. Usage is the whole
workspace's, since the allowances are shared across its brands.

## Response `200`

The workspace.

- Workspace
  - `workspaceId` string, required
  - `planCode` string, required
  - `status` 'active' | 'past_due' | 'canceled', required
  - `role` 'owner' | 'member', required: `owner`: the workspace's owner, with every brand. `member`: a member of the brands listed, with the role on each in that brand's `role`.
  - `hold` object, nullable, required: Set when measurement is paused pending review (a cost guardrail, or an operator). Nothing runs while it is set; `POST …/cycles` answers `409 workspace_on_hold`. Null normally.
    - `reason` string, required
    - `since` string, date-time, nullable, required
  - `entitlements` Entitlements, required: The limits in force for the workspace — the plan plus any one-off grant.
    - `planCode` string, required
    - `maxBrands` integer, required
    - `maxPrompts` integer, required: Active prompts across every brand in the workspace.
    - `maxMembers` integer, required: People with access, the owner included. Open invites count toward it.
    - `maxVisibleFindings` integer, nullable, required: Findings shown in full, the first N in rank order. Null shows every finding. The rest are counted in a findings list's `locked`.
    - `repsPerCycle` integer, required: Repetitions per prompt per engine per cycle.
    - `engines` Engine[], required
    - `cadence` 'weekly' | 'none', required: `weekly` schedules a cycle per brand per week. `none` schedules nothing; see `snapshot`.
    - `snapshot` boolean, required: True on the free tier — one measurement at setup, once per registrable domain.
    - `rechecksPerMonth` integer, required
    - `historyDays` integer, required: How far back reads go. Older data is kept, not shown.
    - `crawlerLinesPerMonth` integer, required
    - `findingFamilies` string[], required
    - `connections` string[], required
    - `overageAllowed` boolean, required
    - `runsPerPeriod` integer, required: Hard ceiling on runs per billing period.
    - `overridden` boolean, required: True when a one-off grant changed at least one limit.
  - `usage` object, required
    - `runsThisPeriod` integer, required
    - `runsAllowance` integer, required
    - `rechecksThisMonth` integer, required
    - `rechecksAllowance` integer, required
    - `activePrompts` integer, required: Active prompts across every brand in the workspace, including brands the caller cannot reach: one pool.
    - `promptsAllowance` integer, required
  - `brands` object[], required: The brands the caller can reach.
    - `brandId` string, required
    - `slug` string, required
    - `name` string, required
    - `domain` string, required
    - `role` 'viewer' | 'editor' | 'admin' | 'owner', required: The caller's role on this brand: `owner` for the workspace's owner, else the role they were given on it. Reads need `viewer`, writes `editor`.

## Other responses

- `default`: Every failure has this body.

---

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