---
title: "Install a recipe into the workspace"
method: POST
path: "/recipes/{id}/install"
---

# Install a recipe into the workspace

`POST /recipes/{id}/install`

## Request

- Base URL: `https://api.bannerbear.com/v5`
- URL: `https://api.bannerbear.com/v5/recipes/{id}/install`
- Auth: HTTP bearer

Copies the recipe's workflow, and the templates its steps use, into the API key's team, and returns the new workflow. Trial accounts are capped at 3 workflows — installing beyond the cap returns 402.

## Path parameters

- `id` string, required

## Response `201`

Installed

- object
  - `uid` string
  - `name` string
  - `description` string, nullable
  - `tags` string[]
  - `inputs` object: Inputs this workflow accepts, keyed by name. Each value is { type, required }. `url`-typed inputs are validated as http(s) URLs when a run is created.
  - `steps` object[]: Steps in run order
    - `key` string: Stable handle for this step; later steps reference it as {{steps.<key>.<output>}}
    - `type` 'tool' | 'image' | 'animation': What kind of operation this step performs
    - `ref` string: Tool slug, or template UID for image / animation steps
    - `label` string: Human name of the step's target — the tool's label or the template's name
    - `inputs` object: Step payload, with {{inputs.x}} / {{steps.x.y}} references unresolved
  - `ui_write_access` 'owner_only' | 'team'
  - `api_write_access` 'team' | 'owner_only' | 'nobody': Who may run this workflow via the API
  - `created_at` string, date-time

## Other responses

- `402`: Trial cap hit — upgrade required
- `404`: Recipe not found

## Changes

- **2026-11-10** `24e6335e0a47`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/bannerbear/apis/bannerbear-v5-api/changes/recipes/:id/install/post.md)

---

[API](https://skmtc.dev/bannerbear/apis/bannerbear-v5-api.md) - [All operations](https://skmtc.dev/bannerbear/apis/bannerbear-v5-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bannerbear/apis/bannerbear-v5-api/revisions/357256cbd1e5?raw)
