> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fire.rest/llms.txt
> Use this file to discover all available pages before exploring further.

# Publish recipe

> Publishes a DRAFT recipe. Once published, a recipe cannot be edited — create a new draft to revise it.

<ParamField header="x-api-key" type="string" required>
  BOH API key with `recipes:write` scope.
</ParamField>

<ParamField path="vendorId" type="string" required>
  Vendor UUID.
</ParamField>

<ParamField path="recipeId" type="string" required>
  Recipe UUID. Must be in `DRAFT` status with at least one line.
</ParamField>

<ParamField body="external_user_id" type="string">
  Actor for audit trail.
</ParamField>

<ResponseField name="id" type="string">Recipe UUID.</ResponseField>
<ResponseField name="status" type="string">`PUBLISHED`.</ResponseField>
<ResponseField name="version" type="integer">Incremented publish version.</ResponseField>
<ResponseField name="published_at" type="string">ISO 8601 timestamp of publication.</ResponseField>

<RequestExample>
  ```json theme={null}
  {
    "external_user_id": "user_chef_99"
  }
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "rec_01j5k...",
    "status": "PUBLISHED",
    "version": 1,
    "recipe_name": "Classic Burger",
    "published_at": "2026-08-07T15:00:00.000Z",
    "published_by_external_user_id": "user_chef_99"
  }
  ```

  ```json 422 theme={null}
  {
    "error": {
      "kind": "recipe_no_lines",
      "message": "Recipe must have at least one line before publishing"
    }
  }
  ```
</ResponseExample>
