---
title: "List controllers"
method: GET
path: "/controllers"
tags: ["Controllers"]
---

# List controllers

`GET /controllers`

## Request

- Base URL: `https://demo.ziti.dev/edge/client/v1`
- URL: `https://demo.ziti.dev/edge/client/v1/controllers`
- Auth: one of:
  - API key in header `zt-session`
  - OAuth 2
    - Authorization code: `/oidc/authorize`
    - Token URL: `/oidc/token` scopes: `openid`
- TypeScript: <https://skmtc.dev/openziti/apis/ziti-edge-client/docs/controllers/get.ts> (a function with typed inputs; its response is checked against the schema)

Retrieves a list of controllers

## Query parameters

- `limit` integer
- `offset` integer
- `filter` string

## Response `200`

A list of controllers

- ListControllersEnvelope
  - `data` ControllerDetail[], required: An array of controller resources
    - `_links` object, required: A map of named links
    - `createdAt` string, date-time, required
    - `id` string, required
    - `tags` Tags
    - `updatedAt` string, date-time, required
    - `apiAddresses` ApiAddressList
    - `certPem` string, required
    - `ctrlAddress` string, nullable
    - `fingerprint` string, required
    - `isOnline` boolean, required
    - `isPreferredLeader` boolean
    - `lastJoinedAt` string, date-time, required
    - `name` string, required
  - `meta` Meta, required
    - `apiEnrollmentVersion` string
    - `apiVersion` string
    - `filterableFields` string[]
    - `pagination` Pagination
      - `limit` number, required
      - `offset` number, required
      - `totalCount` number, required

## Other responses

- `400`: The supplied request contains invalid fields or could not be parsed (json and non-json bodies). The error's code, message, and cause fields can be inspected for further information
- `401`: The supplied session does not have the correct access rights to request this resource
- `429`: The resource requested is rate limited and the rate limit has been exceeded

## Changes

- **2026-10-14** `f7b51eaafbbb`: 1 breaking
  - the response property `data/items/allOf[#/components/schemas/baseEntity]/tags` became nullable for the status `200`
- **2026-07-17** `25da9a73a095`: 1 info
  - added the optional property `data/items/allOf[subschema #2]/isPreferredLeader` to the response with the `200` status
- **2026-06-04** `25da9a73a095`: 1 info
  - added the optional property `data/items/allOf[subschema #2]/isPreferredLeader` to the response with the `200` status
- **2024-05-29** `cce2800c1357`: 5 warning
  - the optional response header `WWW-Authenticate` removed for the status `200`
  - the optional response header `WWW-Authenticate` removed for the status `400`
  - the optional response header `WWW-Authenticate` removed for the status `401`
  - the optional response header `WWW-Authenticate` removed for the status `429`
  - …1 more

[Operation history](https://skmtc.dev/openziti/apis/ziti-edge-client/changes/controllers/get.md)

---

[API](https://skmtc.dev/openziti/apis/ziti-edge-client.md) - [All operations](https://skmtc.dev/openziti/apis/ziti-edge-client/llms.txt) - [OpenAPI document](https://skmtc.dev/openziti/apis/ziti-edge-client/revisions/f7b51eaafbbb?raw)
