# List workspaces

GET /v1/me/workspaces: Return only the workspace projections granted to the caller.

GET<code>/v1/me/workspaces</code>

Return only the workspace projections granted to the caller. Each combines an organization, an attached tenant, the caller's role, and effective capabilities. Copy `organization_id` and the selected nested `tenant_id` into the two workspace headers. Selecting the projection supplies context; the workspace does not own the tenant or its resources. An authenticated caller with no active organization membership receives `{ "workspaces": [] }`. A developer or viewer who belongs to an organization but has no granted tenant remains visible as that organization with `"tenants": []`; `tanomis workspace ls` renders its tenant as `(none)`. Owners and administrators see the organization's attached tenants.

Generated from the Platform API specification on 2026-09-04.

## Headers

| Header | Required | Description |
|---|---|---|
| `Authorization` | yes | `Bearer` plus a short-lived OAuth access token issued for the Tanomis API audience. Backends obtain tokens with an [organization automation client](/guides/run/authenticate-your-backend); the CLI's human login is not an application credential. |
| `X-Organization-ID` | yes | The `organization_id` from the workspace projection you selected in `GET /v1/me/workspaces`. |
| `X-Workspace-Tenant-ID` | yes | The nested `tenant_id` from the same projection. A header cannot widen what the token grants. Some single-workspace or self-hosted environments take `X-Tenant-ID` instead, as supplied by their administrator. |

## Responses

| Status | Meaning |
|---|---|
| `200` | The caller's projections. |

## Request

```bash
curl -X GET "https://api.tanomis.com/v1/me/workspaces" \
  -H "Authorization: Bearer $TANOMIS_TOKEN" \
  -H "X-Organization-ID: $TANOMIS_ORG" \
  -H "X-Workspace-Tenant-ID: $TANOMIS_WORKSPACE"
```

```python
import httpx

response = httpx.get(
    f"https://api.tanomis.com/v1/me/workspaces",
    headers={
        "Authorization": f"Bearer {token}",
        "X-Organization-ID": organization_id,
        "X-Workspace-Tenant-ID": tenant_id,
    },
)
response.raise_for_status()
result = response.json()
```

```typescript
const response = await fetch(`https://api.tanomis.com/v1/me/workspaces`, {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${token}`,
    "X-Organization-ID": organizationId,
    "X-Workspace-Tenant-ID": tenantId,
  },
});
if (!response.ok) throw new Error(`${response.status} ${await response.text()}`);
const result = await response.json();
```

## Response

```json title="200 OK"
{
  "workspaces": [
    {
      "organization_id": "org_abc123",
      "organization_slug": "northwind",
      "organization_display_name": "Northwind",
      "role": "developer",
      "tenants": [
        {
          "tenant_id": "customer-production",
          "state": "ready",
          "is_default": true,
          "capabilities": [
            "run",
            "view"
          ]
        }
      ]
    }
  ]
}
```
