---
title: "List instance workspaces"
method: GET
path: "/admin/workspaces"
tags: ["Admin"]
---

# List instance workspaces

`GET /admin/workspaces`

## Request

- Base URL: `https://cloud.kaneo.app/api`
- URL: `https://cloud.kaneo.app/api/admin/workspaces`
- Auth: HTTP bearer

Page through every workspace on this instance with its owners, member count and project count, optionally filtered by a case-insensitive name or slug search. Requires an instance administrator session; API keys are rejected.

## Query parameters

- `search` string: Case-insensitive match against workspace name or slug.
- `page` integer
- `limit` integer

## Response `200`

Workspaces matching the search

- AdminWorkspaceList
  - `workspaces` AdminWorkspace[], required
    - `id` string, required
    - `name` string, required
    - `slug` string, required
    - `createdAt` string, date-time, required
    - `memberCount` integer, required
    - `projectCount` integer, required
    - `owners` object[], required
      - `id` string, required
      - `name` string, required
      - `email` string, required
  - `total` integer, required: Number of workspaces matching the search, across all pages.

## Other responses

- `400`: Invalid search, page, or limit
- `401`: Missing or invalid credentials
- `403`: The caller is not an instance administrator or is authenticated with an API key
- `429`: The API key exceeded its rate limit or usage quota. Wait the number of seconds in Retry-After before retrying. The X-RateLimit headers are sent only when the rate limit was hit.

## Changes

- **2026-10-08** `c7b8a842601b`: 3 breaking, 4 info
  - removed the media type `text/plain` for the response with the status `400`
  - removed the media type `text/plain` for the response with the status `403`
  - removed the media type `text/plain` for the response with the status `429`
  - added the media type `application/json` for the response with the status `400`
  - …3 more
- **2026-10-08** `2ed51b8af657`: 3 breaking, 3 info
  - removed the media type `application/json` for the response with the status `400`
  - removed the media type `application/json` for the response with the status `401`
  - removed the media type `application/json` for the response with the status `403`
  - added the media type `text/plain` for the response with the status `400`
  - …2 more
- **2026-10-07** `df1439c724ee`: 2 breaking, 3 info
  - removed the media type `text/plain` for the response with the status `400`
  - removed the media type `text/plain` for the response with the status `403`
  - added the media type `application/json` for the response with the status `400`
  - added the media type `application/json` for the response with the status `401`
  - …1 more
- **2026-10-06** `7dace2b05cc2`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/usekaneo/apis/kaneo-api/changes/admin/workspaces/get.md)

---

[API](https://skmtc.dev/usekaneo/apis/kaneo-api.md) - [All operations](https://skmtc.dev/usekaneo/apis/kaneo-api/llms.txt) - [OpenAPI document](https://skmtc.dev/usekaneo/apis/kaneo-api/revisions/93f78789100c?raw)
