---
title: Templates
description: Discover published workflow templates programmatically — browse the catalog without receiving the underlying graph.
updated: 2026-10-22
---

Templates are published workflows from the community library. This endpoint lets agents and integrations browse the catalog token-efficiently: you get the metadata and the input interface, never the workflow graph itself (nodes, edges, and node configuration stay private to the creator).

## List Templates

```
GET /api/v1/templates
```

Returns published templates. Requires authentication with the `workflows:read` scope (implied by `workflows:execute` and `workflows:write`).

The catalog is cached server-side for up to 60 seconds, so a just-published template can take a minute to appear. Catalogs beyond 500 templates are truncated to the 500 most recently updated.

**Query Parameters**

| Parameter    | Type     | Description                                                                                                                                                                               |
| ------------ | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `q`          | `string` | Case-insensitive search over title and description (the whole value as one phrase)                                                                                                        |
| `query`      | `string` | Case-insensitive search over title, description and tags. Every word has to match, in any field. The same search MCP `list_templates` runs                                                |
| `icp`        | `string` | Who the template is for (see Facets). Repeatable or comma-separated; several values match ANY of them. An unknown value returns `400`                                                     |
| `style`      | `string` | The look of the output (see Facets). Same rules as `icp`                                                                                                                                  |
| `purpose`    | `string` | The job it does (see Facets). Same rules as `icp`                                                                                                                                         |
| `format`     | `string` | Aspect ratio of the output (see Facets). Same rules as `icp`                                                                                                                              |
| `output`     | `string` | Kind of file it returns (see Facets). Same rules as `icp`                                                                                                                                 |
| `tag`        | `string` | Filter by category tag (e.g. `video`, `anime`)                                                                                                                                            |
| `capability` | `string` | Filter by what the graph contains (e.g. `video-assembler`). Repeatable or comma-separated; multiple values mean ALL of them. An unknown value returns `400`                               |
| `sort`       | `string` | `recent` (default, most recently updated), `popular` (most viewed) or `quality` (ranked by a smoothed first-result score, ties in the curated order; the order MCP `list_templates` uses) |
| `limit`      | `number` | Page size. Default `20`, max `50`                                                                                                                                                         |
| `offset`     | `number` | Number of results to skip. Default `0`                                                                                                                                                    |

**Request**

```bash
curl "https://www.wireflow.ai/api/v1/templates?tag=video&sort=popular&limit=10" \
  -H "Authorization: Bearer sk-your-api-key"

# Templates that really do assemble a finished video, whatever they are tagged:
curl "https://www.wireflow.ai/api/v1/templates?capability=video-assembler" \
  -H "Authorization: Bearer sk-your-api-key"

# A vertical launch video for a founder, best-performing first:
curl "https://www.wireflow.ai/api/v1/templates?icp=founder&purpose=launch&format=9x16&sort=quality" \
  -H "Authorization: Bearer sk-your-api-key"
```

**Response** `200 OK`

```json
{
  "data": [
    {
      "id": "cm1abc123",
      "publishedSlug": "anime-reel-factory",
      "title": "Anime Reel Factory",
      "description": "Turns a prompt into a 3-act anime reel",
      "tags": ["video", "anime"],
      "coverImage": "https://cdn.wireflow.ai/poster.jpg",
      "exampleOutputs": [
        {
          "label": "Final reel",
          "type": "video",
          "url": "https://cdn.wireflow.ai/renders/reel-final.mp4"
        }
      ],
      "views": 420,
      "likeCount": 12,
      "duplicates": 33,
      "updatedAt": "2026-07-01T00:00:00.000Z",
      "author": {
        "displayName": "Michael",
        "handle": "michael",
        "avatarUrl": "https://cdn.wireflow.ai/a.png"
      },
      "inputInterface": [
        {
          "nodeId": "node-prompt",
          "nodeType": "input:text",
          "label": "Story prompt",
          "inputType": "text"
        }
      ],
      "capabilities": ["video-assembler", "image-generation", "paid-nodes"],
      "facets": {
        "icp": ["founder"],
        "purpose": ["launch"],
        "format": ["9x16"],
        "output": ["video"]
      },
      "picks": 41,
      "copies": 63,
      "firstResultRate": 0.585
    }
  ],
  "pagination": { "total": 1, "limit": 10, "offset": 0, "hasMore": false }
}
```

**Fields**

- `tags` — the template's category tags (the internal `template` marker tag is stripped).
- `exampleOutputs` — sample media the template has produced, resolved server-side to `{ label, type, url }` entries (`type` is `image`, `video`, or `audio`). Empty array when no examples are available.
- `inputInterface` — the template's user-facing inputs, projected from the graph's input nodes. Only the node id, node type, label, and expected input kind (`text`, `image`, `url`, …) are exposed.
- `author` — the creator's public profile fields only (same as community pages).
- `capabilities`: what the template's graph actually contains, derived from its nodes on every request. Use this, not `tags`, when correctness matters: a category is prose the author typed, and it frequently disagrees with the graph.
- `facets`: the template's controlled facet tags, parsed from `tags` (see Facets). A facet the template has no tag for is absent.
- `picks`, `copies`, `firstResultRate`: measured over the last 180 days, refreshed nightly. `picks` counts gallery copies, one per user; `copies` adds onboarding and every other way in. `firstResultRate` is the raw share of picks whose user got a finished run within 7 days, and appears only once a template has 20 picks. `sort=quality` ranks by a smoothed, recency-weighted version of it, so the order can differ from sorting on the raw field. A template with no data has none of the three; a missing field means unknown, not zero.

**Facets**

| Facet     | Values                                                                                                                                                                                                                                                      |
| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `icp`     | `founder`, `marketing`, `agency`, `freelancer`, `creator`, `ecommerce`, `developer`, `hobbyist`                                                                                                                                                             |
| `style`   | `hype-launch`, `product-film`, `ugc`, `talking-head`, `founder-doc`, `explainer`, `motion-graphics`, `kinetic-type`, `cinematic`, `before-after`, `viral-recast`, `static-ad`, `carousel`, `thumbnail`, `ai-character`, `presenter`, `slideshow`, `utility` |
| `purpose` | `launch`, `ad`, `announcement`, `explainer`, `social-growth`, `brand-assets`, `sales`, `internal`, `fun`                                                                                                                                                    |
| `format`  | `9x16`, `16x9`, `1x1`, `4x5`, `mixed`                                                                                                                                                                                                                       |
| `output`  | `video`, `image`, `carousel`, `audio`, `text`                                                                                                                                                                                                               |

Values in one facet are OR (`icp=founder,creator` matches either); different facets are AND.

**Capabilities**

| Value               | Meaning                                                                          |
| ------------------- | -------------------------------------------------------------------------------- |
| `video-assembler`   | Contains a `video:remotion` node that assembles and renders a finished video     |
| `video-generation`  | Contains an AI video model (generated shots, avatar, lipsync)                    |
| `image-generation`  | Contains an AI image model that produces a new image                             |
| `llm`               | Contains an LLM node that writes or reasons about text                           |
| `iterator`          | Contains an iterator, so the graph fans out over a list                          |
| `paid-nodes`        | Contains at least one node that spends credits when it runs                      |
| `connected-account` | Needs a connected account or API key (Drive, Discord, Notion, social publishing) |

Capabilities describe the KINDS of node present. They never expose node ids, ordering, counts, or configuration, so they say what a template can do without revealing how it does it. A node marked skipped is excluded, since it never runs.

**What is never returned**

The workflow graph is the creator's IP. The response never includes `nodes`, `edges`, node `config`/`params`/`prompt` values, `secrets`, or the author's email. Discovery is read-only: to use a template, duplicate it from its public page in the app, or run it directly with [Execute Templates](/docs/api/templates-execute) if the author has enabled API execution.

Last updated: 2026-10-22

---

Documentation index: fetch https://www.wireflow.ai/llms.txt for the full list of Wireflow docs.
