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

# List templates

`GET /api/v1/templates`

## Request

- Base URL: `https://api.imagestep.dev`
- URL: `https://api.imagestep.dev/api/v1/templates`
- Auth: API key in header `Authorization`

Built-in templates first, then the caller's own, most recently updated first, a page at a time.
Each row is the current version without its html and css — read one with
GET /api/v1/templates/{id}, which is also the document POST /api/v1/templates/import takes back.

FILTER: omit for both, `builtin` for the shipped ones only, `user` for your own only.

## Query parameters

- `filter` 'builtin' | 'user'
- `page` integer
- `perPage` integer
- `cursor` string

## Response `200`

One page of templates; `meta` says whether there is another

## Other responses

- `400`: - `invalid_param` — `filter` is neither `builtin` nor `user` - `invalid_param` on `cursor` — not a cursor this listing issued, or sent with `page`
- `429`: Rate limited — `error.code` is `rate_limited` and `retryable` is true. `Retry-After` says how many seconds to wait.

---

[API](https://skmtc.dev/imagestep/apis/imagestep-api.md) · [All operations](https://skmtc.dev/imagestep/apis/imagestep-api/llms.txt) · [OpenAPI document](https://skmtc.dev/imagestep/apis/imagestep-api/revisions/5e8e922a3085?raw)
