---
title: "Export a workflow"
method: GET
path: "/workflows/{workflow_id}/export"
tags: ["Workflows"]
---

# Export a workflow

`GET /workflows/{workflow_id}/export`

## Request

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

The workflow as portable JSON, plus the `filename` the portal would save it under. The format is a superset of Cruva's `formatVersion: 1`, so an export round-trips through `POST /workflows/import` here or into another shop. Shop-specific references (product ids, list and group ids) travel with the document but are stripped on import into a different shop.

## Path parameters

- `workflow_id` string, required: The workflow's uuid, as `POST /workflows/list` returns it.

## Response `200`

Successful Response

- EnvelopeWorkflowExportPublic
  - `data` WorkflowExportPublic, required
    - `document` object, required: 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.
    - `filename` string, required: What the portal would save it as.

## Other responses

- `404`: No such workflow in this shop.
- `422`: Validation Error

## 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/:workflow_id/export/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)
