---
title: "List templates"
method: GET
path: "/api/v1/templates"
tags: ["Templates"]
---

# List templates

`GET /api/v1/templates`

## Request

- Base URL: `https://api.studio.kaitoi.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.studio.kaitoi.io/api/v1/templates`
- Auth: HTTP bearer

Returns user-owned templates visible to the authenticated API key owner. Use `hasEndpoint=true` to discover app-ready templates that already have at least one active endpoint. Use endpoint docs to inspect the external endpoint contract and the owner-authenticated Public API run path.

## Query parameters

- `limit` integer, nullable: Maximum number of templates to return. Defaults to 50; capped at 200.
- `cursor` string, nullable: Opaque cursor returned from the previous page.
- `hasEndpoint` boolean, nullable: Filter by whether a template has at least one active endpoint.
- `search` string, nullable: Case-insensitive search over template name, description, category, and tags.

## Headers

- `authorization` string, nullable

## Response `200`

A page of template summaries.

- PublicListResponsePublicTemplateSummary
  - `data` PublicTemplateSummary[], required: Items returned for this page.
    - `templateId` string, required: Stable template identifier.
    - `name` string, required: Template display name.
    - `description` string, nullable: Template description.
    - `tags` string[]: Template tags.
    - `category` string, nullable: Template category.
    - `source` 'user': Template source exposed in this API slice.
    - `hasData` boolean: Whether the template is backed by a bundled data template.
    - `nodeCount` integer: Number of nodes in the template graph.
    - `createdAt` string, date-time, nullable: Template creation timestamp.
    - `updatedAt` string, date-time, nullable: Template update timestamp.
    - `hasEndpoint` boolean, required: True when this template has at least one active endpoint.
    - `endpoints` PublicTemplateEndpointSummary[]: Active endpoint summaries for this template.
      - `endpointId` string, required: Stable template endpoint identifier.
      - `templateId` string, required: Template identifier this endpoint runs.
      - `name` string, required: Endpoint display name.
      - `description` string, nullable: Endpoint description.
      - `inputCount` integer, required: Number of exposed inputs.
      - `outputCount` integer, required: Number of exposed outputs.
      - `apiKeyPrefix` string, nullable: Non-secret prefix of the endpoint API key, useful for humans identifying the key.
      - `createdAt` string, date-time, nullable: Endpoint creation timestamp.
      - `updatedAt` string, date-time, nullable: Endpoint update timestamp.
      - `lastCalled` string, date-time, nullable: Most recent invocation timestamp, when available.
      - `callCount` integer: Number of recorded endpoint calls.
      - `isActive` boolean: Whether this endpoint currently accepts external calls.
  - `nextCursor` string, nullable: Opaque cursor for the next page. Omitted when there are no more results.
  - `hasMore` boolean, required: True when another page is available.

## Other responses

- `401`: Missing, malformed, expired, or revoked bearer token.
- `403`: The API key lacks the required scope or account capability.
- `422`: Validation Error
- `429`: The client or API key exceeded the REST API rate limit.
- `503`: The shared REST API rate limiter is temporarily unavailable.

---

[API](https://skmtc.dev/kaitoi/apis/kaitoi-rest-api.md) · [All operations](https://skmtc.dev/kaitoi/apis/kaitoi-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kaitoi/apis/kaitoi-rest-api/revisions/239a74aa2c64?raw)
