Skip to content
Rigel docs
Open Rigel

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#

Contractor visits, coming or done: parameters
FieldDescription
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.

1 to 500

Response#

200 The answer.

Contractor visits, coming or done: response fields
FieldDescription
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.

Contractor visits, coming or done: 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.

Who is coming to the house

Scheduled visits from today, soonest first.

Request, curl
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.list?status=scheduled' \
  -H "Cookie: rigel_session=$RIGEL_SESSION"
Request, TypeScript
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();
Request, HTTP
GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.list?status=scheduled 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_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.

Request, curl
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"
Request, TypeScript
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();
Request, HTTP
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>
Response, 200
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

Request, curl
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.list?contractor_id=ctr_01M6V9CSWHPNYAY4A5FBX3R14F' \
  -H "Cookie: rigel_session=$RIGEL_SESSION"
Request, TypeScript
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();
Request, HTTP
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>
Response, 200
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.

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