---
title: "List recipe templates"
method: GET
path: "/api/v3.1/automated-recipe-templates/"
tags: ["Automated Recipes"]
---

# List recipe templates

`GET /api/v3.1/automated-recipe-templates/`

## Request

- Base URL: `https://embedded.improvado.io`
- URL: `https://embedded.improvado.io/api/v3.1/automated-recipe-templates/`
- 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.1/automated-recipe-templates/get.ts> (a function with typed inputs; its response is checked against the schema)

Lists the recipe templates your agency can deploy through the API, in catalogue order. A template belongs to the agency, not to a workspace, so the same `id` can be deployed in every workspace of the agency.

Only templates that can be deployed through the API are returned, so this list can be shorter than the catalogue the interface shows. Templates are created and edited in the interface only; this API reads them.

Pick a template here, then create a recipe from its `id`. The page holds 20 templates by default and 100 at most; `next` and `previous` are full v3.1 URLs.

## Query parameters

- `search` string
- `data_sources` string
- `page` integer
- `page_size` integer

## Response `200`

One page of recipe templates

- RecipeTemplatePageV31: One page of recipe templates.
  - `count` integer: Total number of templates matching the request.
  - `next` string, nullable: Full URL of the next page, or `null` on the last page.
  - `previous` string, nullable: Full URL of the previous page, or `null` on the first page.
  - `results` RecipeTemplateV31[]: Templates on this page.
    - `id` integer: Template identifier. Pass it as `template_id` when you create a recipe.
    - `title` string: Template name. It can be changed in the interface, and the name in force when a recipe is created decides the name of that recipe's output table.
    - `description` string: Template description, as entered in the interface. Can be empty.
    - `data_sources` object[]: Data sources this template supports. The `data_sources` you send when you configure a recipe must be taken from this list.
      - `name` string: Data source name, for example `facebook`. Use this value in requests.
      - `title` string: Display name of the data source.
    - `categories` object[]: Categories the template is filed under in the interface, in display order. Empty when the template has none.
      - `name` string: Category name.
      - `title` string: Display name of the category.
    - `origin` 'improvado' | 'agency': Who the template comes from. `improvado` - a template we provide; `agency` - a template your agency created by promoting one of its own recipes. Agency templates are the ones the interface shows as custom. New values can be added, so tolerate unknown ones.
    - `build_mode` 'progressive' | 'atomic': How a recipe from this template builds when one data source delivers no data. `progressive` - that data source is left out, the rest is built and the recipe becomes `ready_to_work` with `degraded: true`; if every data source fails, the recipe fails. `atomic` - a single failing data source fails the whole recipe. In both modes individual accounts that did not deliver never fail the recipe on their own. New values can be added, so tolerate unknown ones.
    - `created_at` string, date-time: When the template was created.
    - `updated_at` string, date-time: When the template was last changed.

## Other responses

- `400`: A query parameter has a value this operation does not accept, or the request could not be processed at all. `bad_request` is the catch-all code for a 4xx that has no code of its own, so the same envelope can arrive with another 4xx status, for example 415.
- `401`: The bearer token is missing, invalid or expired
- `403`: The caller is authenticated but this operation is not available to them
- `405`: The HTTP method is not supported on this path
- `500`: Something failed on our side. The request was not served; retry later.
- `503`: Temporarily unavailable. The response carries the header `Retry-After: 30`, so wait 30 seconds and repeat the request.

---

[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)
