---
title: "List workflow templates"
method: GET
path: "/workflows/templates"
tags: ["Workflows"]
---

# List workflow templates

`GET /workflows/templates`

## Request

- Base URL: `https://api.reacherapp.com/public/v1`
- URL: `https://api.reacherapp.com/public/v1/workflows/templates`
- Auth: API key in header `x-api-key` and API key in header `x-shop-id`

Starting points for a new workflow: Reacher's built-in templates (`source: reacher`) and any this shop saved (`source: shop`). Each card carries the full `document`, so it can be posted straight to `POST /workflows/import`.

## Response `200`

Successful Response

- EnvelopeListWorkflowTemplatePublic
  - `data` WorkflowTemplatePublic[], required
    - `template_id` string, required
    - `title` string, required
    - `description` string, required
    - `category` string, required
    - `source` string, required: reacher for a built-in, shop for one you saved.
    - `step_count` integer, required
    - `branch_count` integer, required
    - `chips` string[]
    - `benefits` string[]
    - `how_it_works` string[]
    - `document` object, required: Post this to /workflows/import to start from it. The workflow document. Not schematized here, because the node set still grows and this is also Cruva's `formatVersion: 1` format — but it IS validated: an unknown step type is refused, unknown keys are dropped, and defaults are filled in on read, so this is not byte-identical to what was written. GET /workflows/templates returns working examples and GET /workflows/conditions the rule vocabulary for this shop.

## Changes

> 76 revisions in range; 1 not diffed.

- **2026-10-20** `9353ed4982e8`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/reacherapp/apis/reacher-data-api/changes/workflows/templates/get.md)

---

[API](https://skmtc.dev/reacherapp/apis/reacher-data-api.md) - [All operations](https://skmtc.dev/reacherapp/apis/reacher-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/reacherapp/apis/reacher-data-api/revisions/63ce74b30b5a?raw)
