---
title: "Check recipe extraction tables"
method: GET
path: "/api/v3.1/automated-recipes/{recipe_id}/extractions/"
tags: ["Automated Recipes"]
---

# Check recipe extraction tables

`GET /api/v3.1/automated-recipes/{recipe_id}/extractions/`

## Request

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

Lists the extraction tables the recipe reads and says whether each of them exists in the destination of the workspace right now. The check runs against the destination on every call.

This answers "were the tables created", not "is the data ready". Readiness is the `state` of the recipe together with `degraded` and `sources`; a table can exist and still hold nothing useful. A data source whose extractions write into more than one table appears once per table, so key `tables` by `table`, not by `data_source`.

Use it when a build failed on missing data: if `all_tables_exist` is `false`, the extractions have not written anything yet and another build will fail the same way; if it is `true`, another build is worth starting.

## Path parameters

- `recipe_id` string, required

## Response `200`

The extraction tables of the recipe and whether they exist

- RecipeExtractionTablesV31: The extraction tables a recipe reads and whether they exist in your workspace destination yet. This answers "were the tables created", not "is the data ready".
  - `all_tables_exist` boolean: `true` only when `tables` is not empty and every table in it exists right now. It does not mean the data is complete: for that read the recipe's `state`, `degraded` and `sources`.
  - `tables` object[]: One entry per extraction table the recipe reads. A data source with more than one table appears once per table, so key this list by `table`, not by `data_source`. Empty when the recipe reads no extraction tables yet.
    - `data_source` string: Data source name, for example `facebook`.
    - `table` string: Name of the extraction table in the workspace destination.
    - `table_exists` boolean: Whether that table exists in the destination right now.
    - `extraction_ids` integer[]: The extractions the last build used for this data source - the ones it created and the existing ones it reused. Empty before the first build.

## Other responses

- `400`: The request could not be processed. `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
- `404`: No such recipe in this workspace. The same answer covers a recipe of another workspace or agency, a recipe that was deleted and a recipe that is not managed through this API.
- `405`: The HTTP method is not supported on this path
- `409`: There is no destination to look the tables up in, so nothing could be checked.
- `500`: Something failed on our side. The request was not served; retry later.
- `501`: The destination of this workspace cannot be asked whether a table exists. The recipe is fine; only this check is unavailable, so judge readiness by the `state` of the recipe together with `degraded` and `sources` instead. Repeating the call will not help.
- `503`: Temporarily unavailable - either the service or the destination of the workspace. The response carries the header `Retry-After: 30`, so wait 30 seconds and repeat the request; nothing was changed.

---

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