The meal plan for a week
meals.week.get
GET/api/v1/households/{household_id}/queries/meals.week.get
- Query
- Rigel runs it
For each of the 7 days from week_start and each slot (breakfast, lunch, dinner, snack): the meals planned, each with its people, dishes, note and icon, and which people have nothing planned in that slot (open_for). Also meal_count.
Parameters#
| Field | Description |
|---|---|
household_idpathstringrequired | The household's ID. |
week_startquerystring (date)required | The first day of the plan week, YYYY-MM-DD. The week is the 7 days starting on it; screens use the household's week_starts_on day. |
Response#
200 The answer.
| Field | Description |
|---|---|
week_startstring (date)required | The first day of the plan week, YYYY-MM-DD. The week is the 7 days starting on it; screens use the household's week_starts_on day. |
datesarray of strings (date)required | The 7 dates of the week, in order. |
daysarray of objectsrequired | One entry per date. |
days[].datestring (date)required | The day of the meal, YYYY-MM-DD. |
days[].slotsarray of objectsrequired | Breakfast, lunch, dinner and snack, in that order. |
days[].slots[].slotone of: breakfast, lunch, dinner, snackrequired | Which meal of the day: breakfast, lunch, dinner or snack. |
days[].slots[].mealsarray of objectsrequired | The meals planned in this slot. |
days[].slots[].meals[].idstringrequired | A meal ID, such as mel_01JC0000000000000000000000. |
days[].slots[].meals[].datestring (date)required | The day of the meal, YYYY-MM-DD. |
days[].slots[].meals[].slotone of: breakfast, lunch, dinner, snackrequired | Which meal of the day: breakfast, lunch, dinner or snack. |
days[].slots[].meals[].labelstringrequired | The meal in a few words, such as "Tue dinner". |
days[].slots[].meals[].notestring or nullrequired | The kitchen note on the meal, or null. |
days[].slots[].meals[].peoplearray of objectsrequired | Who the meal is for, in family order. |
days[].slots[].meals[].people[].idstringrequired | A person ID, such as per_01JC0000000000000000000000. |
days[].slots[].meals[].people[].namestringrequired | What the family calls them. |
days[].slots[].meals[].dishesarray of objectsrequired | The dishes, in the meal's order. |
days[].slots[].meals[].dishes[].idstringrequired | A dish ID, such as dsh_01JC0000000000000000000000. |
days[].slots[].meals[].dishes[].namestringrequired | The dish's name. |
days[].slots[].meals[].dishes[].is_awaybooleanrequired | Eaten away from home, so it needs no groceries. |
days[].slots[].meals[].dishes[].icon_file_idstring or nullrequired | The dish's icon, or null until one is generated. |
days[].slots[].meals[].dishes[].recipe_idstring or nullrequired | The recipe the dish is made from, or null. |
days[].slots[].meals[].dishes[].recipe_titlestring or nullrequired | That recipe's title, or null. |
days[].slots[].meals[].icon_file_idstring or nullrequired | The icon to show for the meal, or null for a neutral plate. |
days[].slots[].meals[].is_awaybooleanrequired | Every dish is eaten away from home. |
days[].slots[].open_forarray of objectsrequired | People with no meal in this slot, in family order. |
days[].slots[].open_for[].idstringrequired | A person ID, such as per_01JC0000000000000000000000. |
days[].slots[].open_for[].namestringrequired | What the family calls them. |
meal_countintegerrequired | How many meals are planned in the week. |
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.
See the week's plan
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/meals.week.get?week_start=2026-11-09' \
-H "Cookie: rigel_session=$RIGEL_SESSION"const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/meals.week.get?week_start=2026-11-09", {
headers: {
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
});
const data = await response.json();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/meals.week.get?week_start=2026-11-09 HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01M6V9CSG4ZHWEK11PVQPET39N
{
"week_start": "2026-11-09",
"dates": [
"2026-11-09",
"2026-11-10",
"2026-11-11",
"2026-11-12",
"2026-11-13",
"2026-11-14",
"2026-11-15"
],
"days": [
{
"date": "2026-11-09",
"slots": [
{
"slot": "breakfast",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
},
{
"slot": "lunch",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
},
{
"slot": "dinner",
"meals": [
{
"id": "mel_01M6V9CSFSFH4859KG4NM47HF2",
"date": "2026-11-09",
"slot": "dinner",
"label": "Mon dinner",
"note": "Make extra for lunches.",
"people": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
],
"dishes": [
{
"id": "dsh_01M6V9CSFS845RH6KG1MJJPG63",
"name": "Tomato and white bean orzo",
"is_away": false,
"icon_file_id": null,
"recipe_id": "rcp_01M6V9CSD8VZYF11AC568Y7QPZ",
"recipe_title": "Tomato and white bean orzo"
}
],
"icon_file_id": null,
"is_away": false
}
],
"open_for": []
},
{
"slot": "snack",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
}
]
},
{
"date": "2026-11-10",
"slots": [
{
"slot": "breakfast",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
},
{
"slot": "lunch",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
},
{
"slot": "dinner",
"meals": [
{
"id": "mel_01M6V9CSFXHKGZVJ1H2H384CNQ",
"date": "2026-11-10",
"slot": "dinner",
"label": "Tue dinner",
"note": null,
"people": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
],
"dishes": [
{
"id": "dsh_01M6V9CSF42115AECDV14HYQ9G",
"name": "Chicken thigh tacos",
"is_away": false,
"icon_file_id": null,
"recipe_id": null,
"recipe_title": null
}
],
"icon_file_id": null,
"is_away": false
}
],
"open_for": []
},
{
"slot": "snack",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
}
]
},
{
"date": "2026-11-11",
"slots": [
{
"slot": "breakfast",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
},
{
"slot": "lunch",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
},
{
"slot": "dinner",
"meals": [
{
"id": "mel_01M6V9CSFXGQ25SM1HSAWPM40J",
"date": "2026-11-11",
"slot": "dinner",
"label": "Wed dinner",
"note": null,
"people": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
],
"dishes": [
{
"id": "dsh_01M6V9CSFXQ42NCQ1HWBY8559H",
"name": "Veggie quesadillas",
"is_away": false,
"icon_file_id": null,
"recipe_id": null,
"recipe_title": null
}
],
"icon_file_id": null,
"is_away": false
},
{
"id": "mel_01M6V9CSFX06M0A2GQC611XCQA",
"date": "2026-11-11",
"slot": "dinner",
"label": "Wed dinner",
"note": null,
"people": [
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
}
],
"dishes": [
{
"id": "dsh_01M6V9CSF7VYZDN3CM3XAJ2760",
"name": "Team dinner out",
"is_away": true,
"icon_file_id": null,
"recipe_id": null,
"recipe_title": null
}
],
"icon_file_id": null,
"is_away": true
}
],
"open_for": []
},
{
"slot": "snack",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
}
]
},
{
"date": "2026-11-12",
"slots": [
{
"slot": "breakfast",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
},
{
"slot": "lunch",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
},
{
"slot": "dinner",
"meals": [
{
"id": "mel_01M6V9CSFX452XJRFQ0A5WTYPH",
"date": "2026-11-12",
"slot": "dinner",
"label": "Thu dinner",
"note": null,
"people": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
],
"dishes": [
{
"id": "dsh_01M6V9CSFX14RRNZFQNPVECMDB",
"name": "Sheet pan sausage and potatoes",
"is_away": false,
"icon_file_id": null,
"recipe_id": null,
"recipe_title": null
}
],
"icon_file_id": null,
"is_away": false
}
],
"open_for": []
},
{
"slot": "snack",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
}
]
},
{
"date": "2026-11-13",
"slots": [
{
"slot": "breakfast",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
},
{
"slot": "lunch",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
},
{
"slot": "dinner",
"meals": [
{
"id": "mel_01M6V9CSFXM0D756CP5KY4HP4Q",
"date": "2026-11-13",
"slot": "dinner",
"label": "Fri dinner",
"note": null,
"people": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
],
"dishes": [
{
"id": "dsh_01M6V9CSFXV5STR8CP8W0Q1QSC",
"name": "Pizza night",
"is_away": false,
"icon_file_id": null,
"recipe_id": null,
"recipe_title": null
}
],
"icon_file_id": null,
"is_away": false
}
],
"open_for": []
},
{
"slot": "snack",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
}
]
},
{
"date": "2026-11-14",
"slots": [
{
"slot": "breakfast",
"meals": [
{
"id": "mel_01M6V9CSFXTVMCRYCPZFGJP37A",
"date": "2026-11-14",
"slot": "breakfast",
"label": "Sat breakfast",
"note": null,
"people": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
],
"dishes": [
{
"id": "dsh_01M6V9CSFPC1X45XZ3A8P6N25F",
"name": "Saturday pancakes",
"is_away": false,
"icon_file_id": null,
"recipe_id": "rcp_01M6V9CSDDZVYFRVFNA4X5BSMZ",
"recipe_title": "Saturday pancakes"
}
],
"icon_file_id": null,
"is_away": false
}
],
"open_for": []
},
{
"slot": "lunch",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
},
{
"slot": "dinner",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
},
{
"slot": "snack",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
}
]
},
{
"date": "2026-11-15",
"slots": [
{
"slot": "breakfast",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
},
{
"slot": "lunch",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
},
{
"slot": "dinner",
"meals": [
{
"id": "mel_01M6V9CSFXE8ZNK29NR2EPTDDZ",
"date": "2026-11-15",
"slot": "dinner",
"label": "Sun dinner",
"note": "Keep Theo's mild.",
"people": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
],
"dishes": [
{
"id": "dsh_01M6V9CSFX72P8209NS1P4AX7B",
"name": "Turkey chili",
"is_away": false,
"icon_file_id": null,
"recipe_id": null,
"recipe_title": null
}
],
"icon_file_id": null,
"is_away": false
}
],
"open_for": []
},
{
"slot": "snack",
"meals": [],
"open_for": [
{
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
{
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
{
"id": "per_01M6V9CS79TMYHDAM7FTA9ZK3Z",
"name": "Nia"
},
{
"id": "per_01M6V9CS7CDAEP5VDA5T8R9TG6",
"name": "Theo"
}
]
}
]
}
],
"meal_count": 8
}For Rigel#
Rigel's tool for this query is meals_week_get. Rigel runs this on its own, then says what it did. The agent guide has the rest.