Find dishes by name
meals.dish.search
GET/api/v1/households/{household_id}/queries/meals.dish.search
- Query
- Rigel runs it
Dishes whose name contains the text (ignoring case), names that start with it first, then the most often planned. Use it before planning to reuse an existing dish instead of making a duplicate.
Parameters#
| Field | Description |
|---|---|
household_idpathstringrequired | The household's ID. |
textquerystringrequired | Part of a dish name. |
limitqueryintegeroptional | How many dishes to return, 1 to 100. |
Response#
200 The answer.
| Field | Description |
|---|---|
dishesarray of objectsrequired | Matching dishes. |
dishes[].idstringrequired | A dish ID, such as dsh_01JC0000000000000000000000. |
dishes[].namestringrequired | The dish's name. |
dishes[].is_awaybooleanrequired | Eaten away from home, so it needs no groceries. |
dishes[].icon_file_idstring or nullrequired | The dish's icon, or null until one is generated. |
dishes[].recipe_idstring or nullrequired | The recipe the dish is made from, or null. |
dishes[].recipe_titlestring or nullrequired | That recipe's title, or null. |
dishes[].times_plannedintegerrequired | How many meals have this dish. |
dishes[].last_planned_onstring (date) or nullrequired | The latest date a meal has it, or null if none does. |
Errors#
Every error has the same envelope: error.code, error.message, error.details, error.recovery and error.request_id.
| Status | Code | When |
|---|---|---|
400 | validation_failed | A field is missing, misspelled or out of range. details.fields lists each problem. |
401 | unauthenticated | The request has no valid session. |
404 | not_found | The household doesn't exist, or you aren't a member of it. |
Examples#
These are real. Each was recorded from a sample household, the Okafors, running through the whole API when this site was built.
Search dishes for tacos
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/meals.dish.search?text=taco' \
-H "Cookie: rigel_session=$RIGEL_SESSION"const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/meals.dish.search?text=taco", {
headers: {
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
});
const data = await response.json();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/meals.dish.search?text=taco HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01M6V9CSH5NMW77ZZV07X7X0TW
{
"dishes": [
{
"id": "dsh_01M6V9CSF42115AECDV14HYQ9G",
"name": "Chicken thigh tacos",
"is_away": false,
"icon_file_id": null,
"recipe_id": null,
"recipe_title": null,
"times_planned": 1,
"last_planned_on": "2026-11-10"
}
]
}For Rigel#
Rigel's tool for this query is meals_dish_search. Rigel runs this on its own, then says what it did. The agent guide has the rest.