Skip to content
Rigel docs
Open Rigel

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#

What's on the dashboard for a day: parameters
FieldDescription
household_idpathstringrequired

The household's ID.

datequerystringoptional

The day, YYYY-MM-DD in the household's time zone. Defaults to today.

pattern ^\d{4}-\d{2}-\d{2}$

Response#

200 The answer.

What's on the dashboard for a day: response fields
FieldDescription
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.task.set_state to check it off.

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.task.complete or .skip.

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.

What's on the dashboard for a day: errors
StatusCodeWhen
400validation_failedA field is missing, misspelled or out of range. details.fields lists each problem.
401unauthenticatedThe request has no valid session.
404not_foundThe 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

Request, curl
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/dashboard.day.get' \
  -H "Cookie: rigel_session=$RIGEL_SESSION"
Request, TypeScript
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();
Request, HTTP
GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/dashboard.day.get HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>
Response, 200
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.

Request, curl
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/dashboard.day.get?date=2026-11-08' \
  -H "Cookie: rigel_session=$RIGEL_SESSION"
Request, TypeScript
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();
Request, HTTP
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>
Response, 200
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.

Rigel is in early access, and sign-up is by invitation. Open Rigel