What's on the dashboard for a day
dashboard.day.get
GET/api/v1/households/{household_id}/queries/dashboard.day.get
- Query
- Rigel runs it
Answers "what's on today?" or "what's on tomorrow?": the day's date and title, Rigel's open cards that the person asking can see (cards show on today only), the day's calendar events (chores and reminders are listed apart, as routine), contractor visits coming to the house, the day's planned meals, tasks overdue or due today, maintenance due within 7 days and food to use within 2 days (those three today only), and a one-paragraph summary to read out. Calendars hidden in settings are left out, and a visit's own calendar event is listed only as the visit. not_built lists any app whose part of the day isn't included yet; say plainly that part isn't available. Leave date out for today in the household's time zone.
Parameters#
| Field | Description |
|---|---|
household_idpathstringrequired | The household's ID. |
datequerystringoptional | The day, YYYY-MM-DD in the household's time zone. Defaults to today. |
Response#
200 The answer.
| Field | Description |
|---|---|
datestringrequired | The day, YYYY-MM-DD. |
titlestringrequired | The day in words, such as "Thursday, Nov 12". |
relativeone of: today, tomorrow, yesterday, null or nullrequired | Where the day sits relative to today, or null for any other day. |
todaystringrequired | Today's date in the household's time zone, YYYY-MM-DD. |
cardsarray of objectsrequired | Rigel's open cards, newest first. Only on today; empty for other days. |
cards[].idstringrequired | A dashboard card ID, such as dcd_01JC0000000000000000000000. |
cards[].titlestringrequired | One line: what the card says. |
cards[].bodystring or nullrequired | A sentence or two in Markdown, if any. |
cards[].reasonstring or nullrequired | Why Rigel posted it, shown on request, if given. |
cards[].appone of: meals, recipes, shopping, inventory, calendar, email, tasks, documents, chat, maintenance, null or nullrequired | The app it's from, or null for none. |
cards[].record_idstring or nullrequired | The record it's about, if any. |
cards[].addressstring or nullrequired | The web route that opens the record, or null when there isn't one. |
cards[].for_person_idstring or nullrequired | The person it's only for, or null for everyone. |
cards[].for_person_namestring or nullrequired | That person's name, or null for everyone. |
cards[].posted_atintegerrequired | When Rigel posted it or last replaced its text, UTC milliseconds. |
cards[].show_untilinteger or nullrequired | When it disappears on its own, UTC milliseconds, or null. |
visitsarray of objectsrequired | Coming to the house: the day's contractor visits in time order, cancelled ones left out. Any day. |
visits[].visit_idstringrequired | The visit's ID. Pass it to maintenance's visit commands. |
visits[].titlestringrequired | What it's for, such as "Annual furnace service". |
visits[].contractor_namestring or nullrequired | Who is coming, or null when no one's named. |
visits[].statusone of: scheduled, donerequired | Scheduled, or done once it happened. |
visits[].whenstringrequired | The arrival window, without the day: "2–4pm", "9am". |
visits[].starts_atintegerrequired | When they arrive, or the window's start, UTC milliseconds. |
visits[].notesstring or nullrequired | Anything to remember, such as a gate code, or null. |
visits[].property_namestring or nullrequired | Which home, when the household has more than one; else null. |
visits[].addressstring or nullrequired | The web route that opens the visit, or null. |
eventsarray of objectsrequired | The day's calendar events in time order, without chores and reminders. Any day. |
events[].event_idstringrequired | The event's ID. Pass it to the calendar's commands. |
events[].occurrence_startstringrequired | The occurrence's original start, to tell one day of a repeating event from another. |
events[].titlestringrequired | The title, with this occurrence's change applied. |
events[].whenstringrequired | When, without the day: "3:30–4:30pm", "all day", "Nov 6–9". |
events[].starts_atinteger or nullrequired | When it starts, UTC milliseconds, or null for an all-day event. |
events[].is_all_daybooleanrequired | It lasts the whole day (or days). |
events[].kindone of: event, appointment, activity, chore, meal, trip, birthday, holiday, reminder, busyrequired | What sort of event it is. |
events[].statusone of: confirmed, tentativerequired | Confirmed, or tentative. |
events[].locationstring or nullrequired | Where it is, or null. |
events[].calendarobjectrequired | The calendar it's on. |
events[].calendar.idstringrequired | The calendar's ID. |
events[].calendar.namestringrequired | The calendar's name. |
events[].calendar.colorone of: calendar-1, calendar-2, calendar-3, calendar-4, calendar-5, calendar-6, calendar-7, calendar-8required | The calendar's color token. |
events[].peoplearray of objectsrequired | The family members it involves, in family order. |
events[].people[].idstringrequired | A person ID, such as per_01JC0000000000000000000000. |
events[].people[].namestringrequired | The person's name. |
events[].addressstring or nullrequired | The web route that opens the event, or null when there isn't one. |
routinearray of objectsrequired | The day's chores and reminders, in time order, folded away from events. |
routine[].event_idstringrequired | The event's ID. Pass it to the calendar's commands. |
routine[].occurrence_startstringrequired | The occurrence's original start, to tell one day of a repeating event from another. |
routine[].titlestringrequired | The title, with this occurrence's change applied. |
routine[].whenstringrequired | When, without the day: "3:30–4:30pm", "all day", "Nov 6–9". |
routine[].starts_atinteger or nullrequired | When it starts, UTC milliseconds, or null for an all-day event. |
routine[].is_all_daybooleanrequired | It lasts the whole day (or days). |
routine[].kindone of: event, appointment, activity, chore, meal, trip, birthday, holiday, reminder, busyrequired | What sort of event it is. |
routine[].statusone of: confirmed, tentativerequired | Confirmed, or tentative. |
routine[].locationstring or nullrequired | Where it is, or null. |
routine[].calendarobjectrequired | The calendar it's on. |
routine[].calendar.idstringrequired | The calendar's ID. |
routine[].calendar.namestringrequired | The calendar's name. |
routine[].calendar.colorone of: calendar-1, calendar-2, calendar-3, calendar-4, calendar-5, calendar-6, calendar-7, calendar-8required | The calendar's color token. |
routine[].peoplearray of objectsrequired | The family members it involves, in family order. |
routine[].people[].idstringrequired | A person ID, such as per_01JC0000000000000000000000. |
routine[].people[].namestringrequired | The person's name. |
routine[].addressstring or nullrequired | The web route that opens the event, or null when there isn't one. |
mealsarray of objectsrequired | The day's planned meals, by slot (breakfast, lunch, dinner, snack). Any day. |
meals[].idstringrequired | The meal's ID. |
meals[].slotone of: breakfast, lunch, dinner, snackrequired | Breakfast, lunch, dinner or snack. |
meals[].labelstringrequired | The meal in a few words, such as "Wed dinner". |
meals[].dishesarray of objectsrequired | What's served, in the meal's order. |
meals[].dishes[].idstringrequired | The dish's ID. |
meals[].dishes[].namestringrequired | The dish's name. |
meals[].peoplearray of objectsrequired | Who is eating it, in family order. |
meals[].people[].idstringrequired | A person ID, such as per_01JC0000000000000000000000. |
meals[].people[].namestringrequired | The person's name. |
meals[].icon_file_idstring or nullrequired | The meal's icon, or null. |
meals[].notestring or nullrequired | A note on the meal, or null. |
meals[].is_awaybooleanrequired | It is eaten away from home. |
meals[].addressstring or nullrequired | The web route that opens the meal, or null. |
use_soonarray of objectsrequired | Food to use within 2 days or already past, soonest first. Only on today; empty for other days. |
use_soon[].item_idstringrequired | The inventory item's ID. |
use_soon[].namestringrequired | The product's name. |
use_soon[].expires_onstringrequired | The date to use it by, YYYY-MM-DD. Past dates mean it may already be bad. |
use_soon[].wordsstringrequired | The date in words: "Use by Nov 13", "Past, Nov 9", "About Nov 13 · estimated". |
use_soon[].for_person_idstring or nullrequired | The person it's kept for, or null. |
use_soon[].addressstring or nullrequired | The web route that opens the item, or null. |
tasksarray of objectsrequired | Tasks overdue or due today, oldest due date first, then by priority; ones checked off today stay listed as done. A task Rigel opened for maintenance that maintenance_due lists is left out. Only on today; empty for other days. |
tasks[].task_idstringrequired | The task's ID. Pass it to |
tasks[].titlestringrequired | What to do. |
tasks[].stateone of: todo, doing, blocked, donerequired | To do, doing, blocked or done. |
tasks[].donebooleanrequired | Checked off today; it stays listed so it can be unchecked. |
tasks[].due_datestringrequired | When it was due, YYYY-MM-DD: today or earlier. |
tasks[].overduebooleanrequired | Open and due before today. |
tasks[].wordsstringrequired | When it's due in Tasks' words: "overdue · Nov 3", "due today", or "done". |
tasks[].priority_wordsstring or nullrequired | "Urgent", "High", "Medium", "Low", "Someday", or null for none. |
tasks[].assigneeobject or nullrequired | Who's doing it, or null. |
tasks[].assignee.idstringrequired | A person ID, such as per_01JC0000000000000000000000. |
tasks[].assignee.namestringrequired | The person's name. |
tasks[].parentobject or nullrequired | The task it's under, for a subtask; else null. |
tasks[].parent.idstringrequired | The parent task's ID. |
tasks[].parent.titlestringrequired | Its title. |
tasks[].addressstring or nullrequired | The web route that opens the task, or null. |
maintenance_duearray of objectsrequired | Maintenance due within 7 days or overdue, soonest first; optional and turned-off tasks are left out. Only on today; empty for other days. |
maintenance_due[].task_idstringrequired | The maintenance task's ID. Pass it to |
maintenance_due[].titlestringrequired | What to do. |
maintenance_due[].subject_namestring or nullrequired | The item or place it's for, or null for the whole home. |
maintenance_due[].due_onstringrequired | When this occurrence is due, YYYY-MM-DD; a seasonal task's window ends then. |
maintenance_due[].overduebooleanrequired | Its due date has passed. |
maintenance_due[].wordsstringrequired | When it's due in words: "Overdue since Oct 3", "Due in 5 days", "Open until Nov 15". |
maintenance_due[].assigneeobject or nullrequired | Who usually does it, or null. |
maintenance_due[].assignee.idstringrequired | A person ID, such as per_01JC0000000000000000000000. |
maintenance_due[].assignee.namestringrequired | The person's name. |
maintenance_due[].property_namestring or nullrequired | Which home, when the household has more than one; else null. |
maintenance_due[].addressstring or nullrequired | The web route that opens the task, or null. |
not_builtarray, each one of: meals, recipes, shopping, inventory, calendar, email, tasks, documents, chat, maintenancerequired | Apps whose part of the day isn't included yet because the app isn't built. |
summarystringrequired | One paragraph about the day, in words. |
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.
Today's dashboard
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/dashboard.day.get' \
-H "Cookie: rigel_session=$RIGEL_SESSION"const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/dashboard.day.get", {
headers: {
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
});
const data = await response.json();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/dashboard.day.get HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01M6V9CSPV5T281KRSCK4KB4EJ
{
"date": "2026-11-07",
"title": "Saturday, Nov 7",
"relative": "today",
"today": "2026-11-07",
"cards": [
{
"id": "dcd_01M6V9CSPNCSXZ7E2W3DCNP2HZ",
"title": "Next week is planned",
"body": "Monday is tomato and white bean orzo. You don't have crushed tomatoes yet.",
"reason": null,
"app": "meals",
"record_id": "mel_01M6V9CSFSFH4859KG4NM47HF2",
"address": "/meals/meal/mel_01M6V9CSFSFH4859KG4NM47HF2",
"for_person_id": null,
"for_person_name": null,
"posted_at": 1794064672474,
"show_until": 1794323872469
},
{
"id": "dcd_01M6V9CSPP9K3SPZTSVXYSF85H",
"title": "Theo has soccer on Tuesday at 5:00 pm",
"body": "Ben is picking him up.",
"reason": "It's on the calendar, and you asked Ben to go in chat.",
"app": "calendar",
"record_id": "evt_01M6V9CSHPG77MMGGKHAEJQ484",
"address": "/calendar?event=evt_01M6V9CSHPG77MMGGKHAEJQ484",
"for_person_id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"for_person_name": "Ada Okafor",
"posted_at": 1794064672472,
"show_until": 1794323872469
}
],
"visits": [],
"events": [],
"routine": [],
"meals": [],
"use_soon": [],
"tasks": [],
"maintenance_due": [],
"not_built": [],
"summary": "Today, Saturday, Nov 7. Rigel has 2 cards up: Next week is planned; Theo has soccer on Tuesday at 5:00 pm. Nothing on the calendar. No meals planned."
}Tomorrow's dashboard
date asks for another day, such as tomorrow.
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/dashboard.day.get?date=2026-11-08' \
-H "Cookie: rigel_session=$RIGEL_SESSION"const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/dashboard.day.get?date=2026-11-08", {
headers: {
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
});
const data = await response.json();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/dashboard.day.get?date=2026-11-08 HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01M6V9CSQ11K6KPYFKQRWW7ZPX
{
"date": "2026-11-08",
"title": "Sunday, Nov 8",
"relative": "tomorrow",
"today": "2026-11-07",
"cards": [],
"visits": [],
"events": [],
"routine": [],
"meals": [],
"use_soon": [],
"tasks": [],
"maintenance_due": [],
"not_built": [],
"summary": "Tomorrow, Sunday, Nov 8. Nothing on the calendar. No meals planned."
}For Rigel#
Rigel's tool for this query is dashboard_day_get. Rigel runs this on its own, then says what it did. The agent guide has the rest.