Contractor visits, coming or done
maintenance.visit.list
GET/api/v1/households/{household_id}/queries/maintenance.visit.list
- Query
- Rigel runs it
Visits by date. With status scheduled and no dates, the visits coming up from todayOf, soonest first. With status done and a range, the work done in it, newest first. A visit's date is when it happened, or the day its arrival window starts. Filter by property, contractor or item.
Parameters#
| Field | Description |
|---|---|
household_idpathstringrequired | The household's ID. |
statusqueryone of: scheduled, done, cancelledoptional | Only visits in this status. Leave out for all. |
fromquerystring (date)optional | Only visits on or after this date, YYYY-MM-DD. For scheduled visits it defaults to today. |
toquerystring (date)optional | Only visits on or before this date, YYYY-MM-DD. |
property_idquerystringoptional | Only this property's visits. |
contractor_idquerystringoptional | Only this contractor's visits. |
asset_idquerystringoptional | Only visits about this item. |
limitqueryintegeroptional | How many to return, default 100. |
Response#
200 The answer.
| Field | Description |
|---|---|
itemsarray of objectsrequired | |
items[].idstringrequired | A visit ID, such as vst_01JC0000000000000000000000. |
items[].addressstring or nullrequired | The web route that opens it. |
items[].titlestringrequired | What it is for. |
items[].statusone of: scheduled, done, cancelledrequired | Where the visit stands. |
items[].starts_atstring (date-time) or nullrequired | When they are due, start of the window. |
items[].ends_atstring (date-time) or nullrequired | End of the arrival window. |
items[].visited_onstring or nullrequired | When the work happened, YYYY-MM-DD. |
items[].summarystring or nullrequired | What was done. |
items[].datestring or nullrequired | The visit's date: when it happened or when its window starts, YYYY-MM-DD. |
items[].property_idstringrequired | A property ID, such as prp_01JC0000000000000000000000. |
items[].contractor_idstring or nullrequired | Who is coming or came. |
items[].contractor_namestring or nullrequired | Who is coming or came. |
items[].project_idstring or nullrequired | The project it is for. |
items[].assetsarray of objectsrequired | Items it concerns. |
items[].assets[].idstringrequired | A asset ID, such as ast_01JC0000000000000000000000. |
items[].assets[].namestringrequired | The item's name. |
truncatedbooleanrequired | True when more matched than the limit allowed. |
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.
Who is coming to the house
Scheduled visits from today, soonest first.
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.list?status=scheduled' \
-H "Cookie: rigel_session=$RIGEL_SESSION"const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.list?status=scheduled", {
headers: {
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
});
const data = await response.json();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.list?status=scheduled HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01M6V9CT1QR7TED5Z6T4HFHYH4
{
"items": [
{
"id": "vst_01M6V9CSZ6JREAG7RJGS2CZF57",
"address": "/maintenance/visits/vst_01M6V9CSZ6JREAG7RJGS2CZF57",
"title": "Look at the dishwasher drain",
"status": "scheduled",
"starts_at": "2026-11-13T15:00:00.000Z",
"ends_at": "2026-11-13T17:00:00.000Z",
"visited_on": null,
"summary": null,
"date": "2026-11-13",
"property_id": "prp_01M6V9CSTXS6P4CG6RNTNT60FA",
"contractor_id": "ctr_01M6V9CSWHPNYAY4A5FBX3R14F",
"contractor_name": "Riverbend Plumbing & Drain",
"project_id": null,
"assets": [
{
"id": "ast_01M6V9CSVH77630WV0WA1X2DAK",
"name": "Dishwasher"
}
]
},
{
"id": "vst_01M6V9CSYWPZZCJP1Q0PBTS1SF",
"address": "/maintenance/visits/vst_01M6V9CSYWPZZCJP1Q0PBTS1SF",
"title": "Furnace inspection and tune-up",
"status": "scheduled",
"starts_at": "2026-11-19T15:00:00.000Z",
"ends_at": "2026-11-19T17:00:00.000Z",
"visited_on": null,
"summary": null,
"date": "2026-11-19",
"property_id": "prp_01M6V9CSTXS6P4CG6RNTNT60FA",
"contractor_id": "ctr_01M6V9CSWEFJH8CRZCXNAH8109",
"contractor_name": "Smith Heating & Air",
"project_id": null,
"assets": [
{
"id": "ast_01M6V9CSVCMZFAP6ZN5WANZ6M8",
"name": "Basement furnace"
}
]
}
],
"truncated": false
}Visits in the last 90 days
Done visits in a range, newest first.
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.list?status=done&from=2026-08-09&to=2026-11-07' \
-H "Cookie: rigel_session=$RIGEL_SESSION"const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.list?status=done&from=2026-08-09&to=2026-11-07", {
headers: {
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
});
const data = await response.json();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.list?status=done&from=2026-08-09&to=2026-11-07 HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01M6V9CT1YB06F7KP4JX6NG8HE
{
"items": [
{
"id": "vst_01M6V9CSYM7MF5MW4XZSAPDX0R",
"address": "/maintenance/visits/vst_01M6V9CSYM7MF5MW4XZSAPDX0R",
"title": "Fix the kitchen sink drip",
"status": "done",
"starts_at": null,
"ends_at": null,
"visited_on": "2026-09-18",
"summary": "Tightened the supply line nut and replaced the rubber washer. Dry since.",
"date": "2026-09-18",
"property_id": "prp_01M6V9CSTXS6P4CG6RNTNT60FA",
"contractor_id": "ctr_01M6V9CSWHPNYAY4A5FBX3R14F",
"contractor_name": "Riverbend Plumbing & Drain",
"project_id": null,
"assets": []
}
],
"truncated": false
}One contractor's visits
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.list?contractor_id=ctr_01M6V9CSWHPNYAY4A5FBX3R14F' \
-H "Cookie: rigel_session=$RIGEL_SESSION"const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.list?contractor_id=ctr_01M6V9CSWHPNYAY4A5FBX3R14F", {
headers: {
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
});
const data = await response.json();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.list?contractor_id=ctr_01M6V9CSWHPNYAY4A5FBX3R14F HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01M6V9CT1ZCQB7ZB2EGB3HQGQJ
{
"items": [
{
"id": "vst_01M6V9CSZ6JREAG7RJGS2CZF57",
"address": "/maintenance/visits/vst_01M6V9CSZ6JREAG7RJGS2CZF57",
"title": "Look at the dishwasher drain",
"status": "scheduled",
"starts_at": "2026-11-13T15:00:00.000Z",
"ends_at": "2026-11-13T17:00:00.000Z",
"visited_on": null,
"summary": null,
"date": "2026-11-13",
"property_id": "prp_01M6V9CSTXS6P4CG6RNTNT60FA",
"contractor_id": "ctr_01M6V9CSWHPNYAY4A5FBX3R14F",
"contractor_name": "Riverbend Plumbing & Drain",
"project_id": null,
"assets": [
{
"id": "ast_01M6V9CSVH77630WV0WA1X2DAK",
"name": "Dishwasher"
}
]
},
{
"id": "vst_01M6V9CSYM7MF5MW4XZSAPDX0R",
"address": "/maintenance/visits/vst_01M6V9CSYM7MF5MW4XZSAPDX0R",
"title": "Fix the kitchen sink drip",
"status": "done",
"starts_at": null,
"ends_at": null,
"visited_on": "2026-09-18",
"summary": "Tightened the supply line nut and replaced the rubber washer. Dry since.",
"date": "2026-09-18",
"property_id": "prp_01M6V9CSTXS6P4CG6RNTNT60FA",
"contractor_id": "ctr_01M6V9CSWHPNYAY4A5FBX3R14F",
"contractor_name": "Riverbend Plumbing & Drain",
"project_id": null,
"assets": []
}
],
"truncated": false
}For Rigel#
Rigel's tool for this query is maintenance_visit_list. Rigel runs this on its own, then says what it did. The agent guide has the rest.