---
title: "DEPRECATED Build automated recipe"
method: POST
path: "/api/v3/automated-recipes/{recipe_id}/build/"
tags: ["Recipes"]
deprecated: true
---

# DEPRECATED Build automated recipe

`POST /api/v3/automated-recipes/{recipe_id}/build/`

## Request

- Base URL: `https://embedded.improvado.io`
- URL: `https://embedded.improvado.io/api/v3/automated-recipes/{recipe_id}/build/`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `dts_session_id`
- TypeScript: <https://skmtc.dev/improvado/apis/improvado-embedded-api-v3/docs/api/v3/automated-recipes/:recipe_id/build/post.ts> (a function with typed inputs; its response is checked against the schema)

> **Deprecated.**

Deprecated: use [`POST /api/v3.1/automated-recipes/{recipe_id}/build/`](/api/automated-recipes#start-a-recipe-build). This version stays available until it is switched off; see [Moving recipes to v3.1](/recipes-migration).

When the recipes service fails, this version answers `500` with an HTML page, and an error in the `4xx` range can arrive with a body that is not JSON. It also repeats the request to the recipes service up to three times, create included, so a create can run twice. v3.1 does neither: every error is `{code, message, details}`, and a request is repeated only when it provably never reached the service.

Triggers the build process for an automated recipe. The recipe will transition through states (Extracting Data -> Building Dependencies -> Ready to work or Failed).

A 200 confirms that the build was started, not that it will succeed. The output table name is checked again for every table the recipe creates, immediately before each one is created, so a name that was free at start can be taken by the time the build reaches it. Such a failure arrives asynchronously: the recipe moves to `Failed` and the reason is in the `error` field of GET /api/v3/automated-recipes/{recipe_id}/.

The build waits for the extractions of the recipe and turns `Ready to work` on the ones that delivered. An extraction counts as delivered once one of its runs has completed, while the historical backfill may still be loading. Extractions that cannot deliver on their own - paused, or reused by a rebuild with nothing running - are not waited for, and the others only up to a limit; the ones left out can be missing from the output. A build with nothing to build from - no extraction delivered, or none for one extract template - fails.

## Path parameters

- `recipe_id` string, required

## Response `200`

Build started successfully

- AutomatedRecipeBuildResponse: Response from build operation
  - `status` 'building' | 'error': Build operation status
  - `message` string: Human-readable status message

## Other responses

- `400`: Bad Request
- `401`: Forbidden
- `404`: Not Found

---

[API](https://skmtc.dev/improvado/apis/improvado-embedded-api-v3.md) - [All operations](https://skmtc.dev/improvado/apis/improvado-embedded-api-v3/llms.txt) - [OpenAPI document](https://skmtc.dev/improvado/apis/improvado-embedded-api-v3/revisions/a881099bd6c4?raw)
