BETTERMENU
Studio

List Custom Ingredients

List the organization's custom ingredients — one lightweight summary per row. Filter by status to narrow to a single lifecycle state.

status is applied as a DynamoDB filter after the page is read, so a filtered page can return fewer than limit items — possibly zero — even when more matches exist further in. An empty page with meta.has_more: true is not an empty result set: keep paging with meta.cursor until meta.has_more is false.

Deleted custom ingredients are included in every page here, filtered or not, because a deleted custom ingredient stays readable. This is the opposite default to listRecipes, which excludes deleted recipes from every page regardless of filter. Pass status=deleted to list only them.

GET
/studio/custom-ingredients

Query Parameters

limit?Limit

Maximum number of custom ingredients to return (1-100).

Default20
Range1 <= value <= 100
cursor?|

Opaque pagination cursor returned in meta.cursor from a previous response. Omit on the first page; pass back verbatim on each subsequent page.

status?|

Filter to custom ingredients in this lifecycle state: draft, active, archived or deleted. Omit to return all four, deleted included. Applied as a DynamoDB filter after the page is read, so a filtered page can be short or empty while more matches exist further in.

Response Body

application/json

application/json

curl -X GET "https://api.bettermenu.live/studio/custom-ingredients"
{
  "data": [
    {
      "id": "string",
      "name": "string",
      "status": "draft",
      "created_at": "string",
      "updated_at": "string"
    }
  ],
  "meta": {
    "version": "string",
    "request_id": "string",
    "timestamp": "string",
    "cursor": "string",
    "has_more": true
  }
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}
BETTERMENU

FDA-compliant nutrition labels from a recipe, in minutes.

Visit bettermenu.live