BetterMenu Studio API

Recipe authoring: create and manage recipes, servings, ingredient resolution, nutrition computation and analysis, labels, and version history.

Operations 74

GET /studio/health Studio Health #
POST /studio/recipes Create Recipe #
GET /studio/recipes List Recipes #
POST /studio/recipes/search Search Recipes #
GET /studio/recipes/{recipe_id} Get Recipe #
PATCH /studio/recipes/{recipe_id} Patch Recipe Metadata #
DELETE /studio/recipes/{recipe_id} Delete Recipe #
POST /studio/recipes/{recipe_id}/archive Archive Recipe #
POST /studio/recipes/{recipe_id}/unarchive Unarchive Recipe #
POST /studio/recipes/{recipe_id}/ingredient-extractions Extract Ingredient Lines #
GET /studio/recipes/{recipe_id}/ingredient-resolutions/latest Get Latest Ingredient Resolution #
GET /studio/recipes/{recipe_id}/ingredient-resolutions List Ingredient Resolutions #
POST /studio/recipes/{recipe_id}/ingredient-resolutions Start Ingredient Resolution #
POST /studio/recipes/{recipe_id}/ingredient-resolutions/confirm Confirm and save ingredients #
GET /studio/recipes/{recipe_id}/ingredients Get Recipe Ingredients #
POST /studio/recipes/{recipe_id}/ingredients Set Recipe Ingredients #
POST /studio/recipes/{recipe_id}/nutrition/compute Compute Recipe Nutrition #
GET /studio/recipes/{recipe_id}/nutrition Get Recipe Nutrition #
GET /studio/recipes/{recipe_id}/nutrition/analysis Get Recipe Nutritional Analysis #
POST /studio/recipes/{recipe_id}/servings/{serving_id}/nutrition-facts/compute Compute Nutrition Facts #
GET /studio/recipes/{recipe_id}/servings/{serving_id}/nutrition-facts/per-serving Get Per-Serving Nutrition Facts #
GET /studio/recipes/{recipe_id}/servings/{serving_id}/nutrition-facts/per-container Get Per-Container Nutrition Facts #
GET /studio/recipes/{recipe_id}/servings/{serving_id}/nutrition-facts/analysis Get Serving Nutrition Facts Analysis #
POST /studio/recipes/{recipe_id}/servings Add Recipe Serving #
GET /studio/recipes/{recipe_id}/servings List Recipe Servings #
PUT /studio/recipes/{recipe_id}/servings/{serving_id} Update Recipe Serving #
DELETE /studio/recipes/{recipe_id}/servings/{serving_id} Delete Recipe Serving #
GET /studio/recipes/{recipe_id}/servings/{serving_id} Get Recipe Serving #
GET /studio/recipes/{recipe_id}/label-configuration Get Recipe Label Configuration #
PUT /studio/recipes/{recipe_id}/label-configuration Upsert Recipe Label Configuration #
DELETE /studio/recipes/{recipe_id}/label-configuration Delete Recipe Label Configuration #
GET /studio/recipes/{recipe_id}/servings/{serving_id}/nutrition-label Get Nutrition Label #
GET /studio/recipes/{recipe_id}/servings/{serving_id}/label-export Export Label Artifact #
GET /studio/recipes/{recipe_id}/servings/{serving_id}/issued-labels/{issued_label_id} Get Issued Label Record #
GET /studio/recipes/{recipe_id}/audit-trail Get Recipe Audit Trail #
GET /studio/recipes/{recipe_id}/versions List Recipe Versions #
GET /studio/recipes/{recipe_id}/versions/{version_id}/changes Get Recipe Version Changes #
POST /studio/recipes/{recipe_id}/restore Restore Recipe to Version #
POST /studio/custom-ingredients Create Custom Ingredient #
GET /studio/custom-ingredients List Custom Ingredients #
GET /studio/custom-ingredients/{custom_ingredient_id} Get Custom Ingredient #
DELETE /studio/custom-ingredients/{custom_ingredient_id} Delete Custom Ingredient #
PUT /studio/custom-ingredients/{custom_ingredient_id}/nutrition Set Custom Ingredient Nutrition #
PUT /studio/custom-ingredients/{custom_ingredient_id}/serving Set Custom Ingredient Serving #
POST /studio/custom-ingredients/{custom_ingredient_id}/confirm Confirm Custom Ingredient #
POST /studio/custom-ingredients/{custom_ingredient_id}/archive Archive Custom Ingredient #
POST /studio/custom-ingredients/{custom_ingredient_id}/unarchive Unarchive Custom Ingredient #
PATCH /studio/custom-ingredients/{custom_ingredient_id}/metadata Patch Custom Ingredient Metadata #
GET /studio/custom-ingredients/{custom_ingredient_id}/versions List Custom Ingredient Versions #
GET /studio/custom-ingredients/{custom_ingredient_id}/versions/{version_id} Get Custom Ingredient Version #
GET /studio/custom-ingredients/{custom_ingredient_id}/versions/{version_id}/changes Get Custom Ingredient Version Changes #
POST /studio/custom-ingredients/{custom_ingredient_id}/restore Restore Custom Ingredient to Version #
GET /studio/custom-ingredients/{custom_ingredient_id}/audit-trail Get Custom Ingredient Audit Trail #
GET /studio/custom-ingredients/{custom_ingredient_id}/usage Get Custom Ingredient Usage #
GET /studio/ingredients/{ingredient_id}/usage Get Ingredient Usage #
GET /studio/ingredients/used List Used Ingredients #
GET /studio/ingredients/{ingredient_id} Get Ingredient #
POST /studio/ingredients/search Search Ingredients #
POST /studio/feedback Send Feedback #
GET /studio/recipes/{recipe_id}/added-sugars-report Get Recipe Added Sugars Report #
POST /studio/recipes/{recipe_id}/added-sugars-report/confirm Confirm Added Sugars #
PATCH /studio/recipes/{recipe_id}/added-sugars-report/rows/{ingredient_row_id} Answer One Added Sugars Row #
PATCH /studio/recipes/{recipe_id}/added-sugars-report/rows Answer Several Added Sugars Rows #
POST /studio/recipes/{recipe_id}/added-sugars-report/suggestions Suggest Added Sugars Answers #
POST /studio/reference/foods/views Record Reference Food View #
GET /studio/reference/foods/recent List Recent Reference Foods #
GET /studio/reference/foods/saved List Saved Reference Foods #
PUT /studio/reference/foods/saved/{food_id} Save Reference Food #
DELETE /studio/reference/foods/saved/{food_id} Unsave Reference Food #
POST /studio/reference/serving-sizes/views Record Reference Serving Size View #
GET /studio/reference/serving-sizes/recent List Recent Reference Serving Sizes #
GET /studio/reference/serving-sizes/saved List Saved Reference Serving Sizes #
PUT /studio/reference/serving-sizes/saved/{category_id} Save Reference Serving Size #
DELETE /studio/reference/serving-sizes/saved/{category_id} Unsave Reference Serving Size #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/bettermenu:bettermenu-studio-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

bettermenu-studio-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Studio API
  description: '## Recipe versioning


    Recipe is the aggregate; versions are read-only history. Use the table

    below to pick the right call.


    | I want to… | Use… |

    |-------------------------------------------------------------|------------------------------------------------------------|

    | Edit a recipe safely without overwriting someone else''s | `GET /recipes/{id}` → `If-Match` → `PATCH`/`POST`/`DELETE` |

    | See a recipe at a point in the past | `GET /recipes/{id}/versions/{version_id}` |

    | Replay the chain of state changes (signed, tamper-evident) | `GET /recipes/{id}/versions` |

    | See who changed what and when, with event detail | `GET /recipes/{id}/audit-trail` |

    | Understand why a write returned `412` | someone else edited; refetch and retry |


    The `version_id` returned on every recipe response is your edit token.

    Send it as `If-Match` on the next write; on conflict the server returns

    `412` with `current_version_id` so you can refetch and retry. There is

    no `POST /recipes/{id}/versions` — the system commits versions

    automatically when you mutate the recipe.


    The versions list and the audit trail answer different questions: the

    versions list is a tamper-evident chain of state snapshots you can

    replay; the audit trail is a filterable, event-typed log of what users

    and systems did to the recipe.'
  version: 2026-05-04.preview
  x-service-version: 0.47.0+ac83f7e
tags:


# --- truncated at 32 KB (559 KB total) ---
# Full source: https://artifacts.apis.io/bettermenu/openapi/bettermenu-studio-api-openapi.yml