List Used Ingredients
List the ingredients the caller's organization has actually used, ranked by usage count, recency, or name — spanning standard and custom ingredients in one ordered result set. Distinct from searchIngredients: that endpoint answers 'what can I pick from' (the full catalog, relevance-ranked); this one answers 'what does my organization actually use' (usage-ranked, org-scoped only). Pagination is cursor-based, matching listRecipes: omit cursor on the first page, then pass meta.next_cursor/meta.prev_cursor back verbatim. source/status are applied as DynamoDB filters after the page is read, so a filtered page can return fewer than limit items — possibly zero — even when more matches exist further in. Keep paging until meta.has_more is false rather than reading a short or empty page as the end of the results.
Eventually consistent. Unlike listRecipes, whose rows are written as part of the recipe commit itself, this listing is a background projection: after a recipe is created, edited or deleted, this endpoint can take from seconds to minutes to reflect the change in used_in_recipes, updated_at, and which ingredients appear at all. A read immediately after a write may legitimately return the previous state — retry rather than treating it as missing data. getRecipe and getIngredientUsage are read-your-writes consistent and are the right call when you need the effect of a specific commit confirmed.
sort_by?|nullorder?|nullsource?|nullstatus?|nulllimit?|nullcursor?string|nullSuccessful Response
application/json- response
Response body for GET /ingredients/used.
data*array<>meta*Pagination + resolved sort/filter state echoed on every response.
curl -X GET 'https://api.bettermenu.live/studio/ingredients/used'{ "data": [ { "ingredient_id": "string", "name": "string", "source": "standard", "status": "active", "used_in_recipes": 0, "updated_at": "string" } ], "meta": { "version": "string", "request_id": "string", "timestamp": "string", "cursor": "string", "has_more": true, "sort_by": "used_in_recipes", "order": "asc", "status": "active", "prev_cursor": "string", "next_cursor": "string", "total": 0 }}