---
title: "List namespaces"
method: GET
path: "/v2/workspaces/{id}/namespaces"
tags: ["Memories"]
---

# List namespaces

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

## Request

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

Kairos's native namespace listing (`list resource=namespaces`) — names only, no memory text, so it does not bill egress. Always includes `default`, which the native manifest scan omits for a workspace with no memories yet. Class A — all three lanes.

FILTERED to the credential's `scoped_namespaces`: a namespace-scoped credential sees only the namespaces it may reach. Listing the others would disclose their names, which is information customers put organizational structure into.

Requires the `memories: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 `memories:read` is still refused where the role does not permit it.

A credential with no scope record resolves to `LEGACY_DEFAULT`, which INCLUDES `memories:read` — every key minted before scoping keeps working here.

## Path parameters

- `id` string, required

## Response `200`

Namespaces in the workspace

- object
  - `namespaces` string[], required

## Other responses

- `401`: Missing/invalid credential
- `403`: The credential holds no grant on this workspace. Or `lane_not_supported` — the credential is well-formed but this route does not accept its lane
- `502`: Upstream Kairos failure

---

[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)
