> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getcliq.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List workspaces

> Returns every workspace registered with this daemon, with the teams assigned to each,
its latest run and how many runs are going. Takes no fields; send `{}`.

From the CLI: `cliq workspace list`.

No credential is needed from this machine. From another host, send `Authorization: Bearer` with a dispatch token CliqHub signed for this daemon or a `cliq_tok_…` personal token of a user in the daemon's realm; this only works once the daemon is connected to CliqHub. See [Authentication](/daemon-api/overview#authentication).



## OpenAPI

````yaml /openapi/daemon-by-tag/daemon-workspaces.yaml post /v1/workspaces/get
openapi: 3.1.0
info:
  title: cliqd API
  version: 1.9.48
  description: >-
    HTTP API of `cliqd`, the local Cliq daemon. Generated from the daemon source
    by `scripts/generate_daemon_openapi.mjs` — do not edit by hand. See the
    [overview](/daemon-api/overview).
servers:
  - url: http://127.0.0.1:4900
    description: Local daemon (default port; `CLIQ_DAEMON_PORT` changes it)
security: []
tags:
  - name: Daemon Workspaces
    description: >-
      A **workspace** is a project folder registered with this daemon. You
      register it once

      (Register a workspace, `cliq init`), assign one or more installed teams to
      it

      (Assign a team to a workspace, `cliq assemble`), then start runs in it
      (Start a run,

      `cliq run`). Workspaces live in the daemon's own catalog; the only thing
      written into

      the folder is an empty `.cliq/` directory.


      Most endpoints take the absolute folder path as `workspace_dir`; assign
      and remove also

      accept the catalog `workspace_id`. Relative paths are resolved against the
      daemon's

      working directory, so always send absolute paths.
paths:
  /v1/workspaces/get:
    post:
      tags:
        - Daemon Workspaces
      summary: List workspaces
      description: >-
        Returns every workspace registered with this daemon, with the teams
        assigned to each,

        its latest run and how many runs are going. Takes no fields; send `{}`.


        From the CLI: `cliq workspace list`.


        No credential is needed from this machine. From another host, send
        `Authorization: Bearer` with a dispatch token CliqHub signed for this
        daemon or a `cliq_tok_…` personal token of a user in the daemon's realm;
        this only works once the daemon is connected to CliqHub. See
        [Authentication](/daemon-api/overview#authentication).
      operationId: daemon_post_workspaces_get
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties: {}
            examples:
              default:
                value: {}
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                required:
                  - ok
                  - data
                properties:
                  ok:
                    type: boolean
                    const: true
                  data:
                    $ref: '#/components/schemas/WorkspaceList'
              example:
                ok: true
                data:
                  workspaces:
                    - workspace_dir: /home/dev/acme-api
                      workspace_id: 9b2e6f10-4c3a-4e7d-8f21-6a5b4c3d2e1f
                      registered: true
                      exists: true
                      assembled: true
                      name: acme-api
                      teams:
                        - scope: acme
                          slug: code-review
                          team_id: 3f6c2a8e-6b1d-4c1e-9a57-0d2f4b8e91c4
                      last_run:
                        run_id: 0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f
                        state: completed
                        started_at: 1759834200000
                        team_id: 3f6c2a8e-6b1d-4c1e-9a57-0d2f4b8e91c4
                        team_label: '@acme/code-review'
                      active_runs: 0
                      created_at: 1759830000000
        '400':
          description: >-
            `PAYLOAD_INVALID` — The body (query string for `GET`) fails the
            request schema. `details` lists each issue.


            `BAD_REQUEST` — The body is not valid JSON or is larger than the
            route allows (10 MB; artifact uploads more).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorReply'
              examples:
                PAYLOAD_INVALID:
                  summary: PAYLOAD_INVALID
                  value:
                    ok: false
                    error:
                      code: PAYLOAD_INVALID
                      message: Payload failed schema validation
                BAD_REQUEST:
                  summary: BAD_REQUEST
                  value:
                    ok: false
                    error:
                      code: BAD_REQUEST
                      message: >-
                        Request body could not be read: Unexpected token } in
                        JSON at position 12
        '401':
          description: >-
            `UNAUTHORIZED` — A caller on another host sent no `Authorization:
            Bearer` token, or one that does not verify (expired, wrong
            audience).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorReply'
              examples:
                UNAUTHORIZED:
                  summary: UNAUTHORIZED
                  value:
                    ok: false
                    error:
                      code: UNAUTHORIZED
                      message: Missing or invalid Authorization Bearer token
        '403':
          description: >-
            `WEB_REQUEST_REFUSED` — The request carries an `Origin` header (it
            came from a web page).


            `HOST_NOT_LOCAL` — A loopback caller addressed a `Host` other than
            localhost (DNS rebinding guard).


            `LOCAL_ONLY` — The daemon isn't connected to CliqHub (no dispatch
            key) and the caller is on another host.


            `FORBIDDEN` — A `cliq_tok_…` token's user is not in this daemon's
            realm ACL, or the ACL is not loaded yet.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorReply'
              examples:
                WEB_REQUEST_REFUSED:
                  summary: WEB_REQUEST_REFUSED
                  value:
                    ok: false
                    error:
                      code: WEB_REQUEST_REFUSED
                      message: cliqd doesn't accept requests from web pages
                HOST_NOT_LOCAL:
                  summary: HOST_NOT_LOCAL
                  value:
                    ok: false
                    error:
                      code: HOST_NOT_LOCAL
                      message: cliqd only answers requests addressed to localhost
                LOCAL_ONLY:
                  summary: LOCAL_ONLY
                  value:
                    ok: false
                    error:
                      code: LOCAL_ONLY
                      message: >-
                        This cliqd isn't connected to CliqHub yet, so from
                        another machine it only accepts a local token (minted by
                        tokens/create on the machine running cliqd)
                FORBIDDEN:
                  summary: FORBIDDEN
                  value:
                    ok: false
                    error:
                      code: FORBIDDEN
                      message: Access denied — identity not in realm ACL
        '500':
          description: >-
            `INTERNAL_ERROR` — An unexpected daemon fault. The message names the
            request id; the cause is in the cliqd log.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorReply'
              examples:
                INTERNAL_ERROR:
                  summary: INTERNAL_ERROR
                  value:
                    ok: false
                    error:
                      code: INTERNAL_ERROR
                      message: >-
                        cliqd hit an unexpected error (request 7f3a…). Details
                        are in the cliqd log.
      security:
        - {}
        - DaemonBearer: []
components:
  schemas:
    WorkspaceList:
      type: object
      required:
        - workspaces
      properties:
        workspaces:
          type: array
          description: Every registered workspace. Empty when none.
          items:
            $ref: '#/components/schemas/WorkspaceListEntry'
    ErrorReply:
      type: object
      description: >-
        Every failure. Switch on `error.code` — it is stable; `message` is for
        people and may change.
      required:
        - ok
        - error
      properties:
        ok:
          type: boolean
          const: false
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: Stable error code. See [Errors](/daemon-api/errors).
              example: TEAM_NOT_FOUND
            message:
              type: string
              description: What went wrong and, where possible, what to do.
              example: Team 'acme/code-review' not found
            details:
              description: >-
                Structured detail when there is some: the list of schema issues
                for `PAYLOAD_INVALID`, the agent problems for
                `TEAM_AGENT_CONFIG_REQUIRED`, …
    WorkspaceListEntry:
      type: object
      description: One registered workspace, as `cliq workspace list` shows it.
      required:
        - workspace_dir
        - workspace_id
        - registered
        - exists
        - assembled
        - name
        - teams
        - active_runs
        - created_at
      properties:
        workspace_dir:
          type: string
          description: Absolute folder path.
          example: /home/dev/acme-api
        workspace_id:
          type: string
          format: uuid
          description: Catalog id of the workspace.
          example: 9b2e6f10-4c3a-4e7d-8f21-6a5b4c3d2e1f
        registered:
          type: boolean
          const: true
          description: Always `true` in this list.
        exists:
          type: boolean
          description: >-
            The folder is still on disk. `false` means it was moved or deleted
            outside cliq; unregister it or register the new path.
          example: true
        assembled:
          type: boolean
          description: At least one team is assigned.
          example: true
        name:
          type:
            - string
            - 'null'
          description: Display name (defaults to the folder name).
          example: acme-api
        teams:
          type: array
          description: Teams assigned to the workspace.
          items:
            $ref: '#/components/schemas/WorkspaceTeamRef'
        last_run:
          type: object
          description: >-
            The most recent run in this workspace. Absent when there has been
            none.
          required:
            - run_id
            - state
            - started_at
            - team_id
            - team_label
          properties:
            run_id:
              type: string
              format: uuid
              example: 0c8d7e6f-5a4b-4c3d-9e2f-1a0b9c8d7e6f
            state:
              $ref: '#/components/schemas/RunState'
            started_at:
              type: integer
              format: int64
              description: Epoch milliseconds.
              example: 1759834200000
            team_id:
              type: string
              format: uuid
              example: 3f6c2a8e-6b1d-4c1e-9a57-0d2f4b8e91c4
            team_label:
              type:
                - string
                - 'null'
              description: >-
                `@scope/slug` of the team that ran, or `null` when that team is
                no longer assigned.
              example: '@acme/code-review'
        active_runs:
          type: integer
          description: Runs currently `running` or `awaiting_input` here.
          example: 0
        created_at:
          type: integer
          format: int64
          description: When the workspace was registered (epoch milliseconds).
          example: 1759830000000
    WorkspaceTeamRef:
      type: object
      description: A team assigned to a workspace.
      required:
        - scope
        - slug
        - team_id
      properties:
        scope:
          type: string
          description: Team scope without the `@`.
          example: acme
        slug:
          type: string
          description: Team slug.
          example: code-review
        team_id:
          type: string
          format: uuid
          description: The team's id in this daemon's catalog.
          example: 3f6c2a8e-6b1d-4c1e-9a57-0d2f4b8e91c4
    RunState:
      type: string
      enum:
        - running
        - awaiting_input
        - completed
        - failed
        - cancelled
        - crashed
      description: >
        - `running` — a phase is executing

        - `awaiting_input` — paused until someone supplies inputs (Supply run
        inputs)

        - `completed` / `failed` / `cancelled` — finished

        - `crashed` — the daemon stopped while the run was going; it was marked
        crashed on restart
      example: completed
  securitySchemes:
    DaemonBearer:
      type: http
      scheme: bearer
      description: >-
        Not needed from the same machine. From another host: a dispatch JWT
        CliqHub signed for this daemon, or a `cliq_tok_…` personal token whose
        user is in the daemon's realm.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.