---
title: "List Templates"
method: GET
path: "/v1/flows/templates"
tags: ["Flows", "Templates"]
---

# List Templates

`GET /v1/flows/templates`

List the published flows templates in your workspace, together with each runnable version's inputs and outputs. Use the ids here as `template_id` / `version_id` on `POST /v1/flows/templates/{template_id}/runs`. Versions built on models that are not available to you through the API are left out, so `versions` is empty when none of a template's published versions is runnable through this API. Templates shared with you by link, or published to Explore from another workspace, are not listed but can still be fetched and run by `template_id`.

## Query parameters

- `cursor` string, nullable — Pagination cursor: the `next_cursor` value of the previous page's response. Omit it for the first page.
- `page_size` integer — How many templates to return per page. Lower than the run list's ceiling because each row expands its versions' input and output schemas.
- `versions_per_template` integer — How many of each template's published versions to return, newest first. `has_more_versions` tells you when a template has more.
- `search` string, nullable — Only return templates whose name or description contains this text.

## Headers

- `xi-api-key` string, nullable — Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.

## Response `200`

Successful Response

- TemplateListResponse — One page of the templates the caller can run, most recently updated first.
  - `templates` TemplateSummary[], required — The templates on this page, most recently updated first. A page can hold fewer than `page_size` templates, or none at all, because templates you cannot run are filtered out after the page is read — keep paging while `has_more` is true.
    - `id` string, required — Pass as `template_id` on `POST /v1/flows/templates/{template_id}/runs`.
    - `name` string, required — The template's name.
    - `description` string, nullable — The template's description, if it has one.
    - `versions` TemplateVersion[], required — The published versions this caller can run, newest first. A version whose graph uses a model that is not available to you through the API is left out, as is one whose stored snapshot is gone; either way the list can be empty while the template still has versions the ElevenLabs app can run.
      - `version_id` string, required — Pass as `version_id` on `POST /v1/flows/templates/{template_id}/runs` to pin a run to this snapshot.
      - `published_at_unix` integer, required — When this version was published, as a Unix timestamp in seconds.
      - `is_latest` boolean, required — Whether this is the version a run gets when `version_id` is omitted or set to `latest`.
      - `inputs` TemplatePort[], required — The inputs this version accepts, in canvas order. Every input is required on a run.
        - `id` string, required — The port id. Input ids are the keys of the `inputs` map on `POST /v1/flows/templates/{template_id}/runs`; output ids are the keys of the `outputs` map on the run response.
        - `content_schema` union, required
          - StringSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'string'
            - `enum` string[], nullable
          - NumberSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'number'
            - `enum` number[], nullable
          - IntegerSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'integer'
          - BooleanSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'boolean'
          - ImageSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'image'
          - VideoSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'video'
          - AudioSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'audio'
          - VoiceSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'voice'
          - ObjectSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'object'
            - `properties` object
            - `required` string[]
          - ArraySchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'array'
            - `items` ContentSchema, required — recursive
      - `outputs` TemplatePort[], required — The outputs this version produces, in canvas order.
        - `id` string, required — The port id. Input ids are the keys of the `inputs` map on `POST /v1/flows/templates/{template_id}/runs`; output ids are the keys of the `outputs` map on the run response.
        - `content_schema` union, required
          - StringSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'string'
            - `enum` string[], nullable
          - NumberSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'number'
            - `enum` number[], nullable
          - IntegerSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'integer'
          - BooleanSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'boolean'
          - ImageSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'image'
          - VideoSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'video'
          - AudioSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'audio'
          - VoiceSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'voice'
          - ObjectSchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'object'
            - `properties` object
            - `required` string[]
          - ArraySchema
            - `title` string, nullable
            - `description` string, nullable
            - `type` 'array'
            - `items` ContentSchema, required — recursive
    - `has_more_versions` boolean, required — Whether this template has further published versions beyond the `versions_per_template` returned here. Fetch `GET /v1/flows/templates/{template_id}` with a larger `versions_per_template` to see more of them.
  - `next_cursor` string, nullable, required — Pass as `cursor` to fetch the next page. `null` when there is no further page.
  - `has_more` boolean, required — Whether more templates exist beyond this page.

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-22** `6fb9be1a19f5` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/changes/v1/flows/templates/get.md)

---

[API](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation.md) · [All operations](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/llms.txt) · [OpenAPI document](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/revisions/48a38e3b0dbd?raw)
