Skip to content
Rigel docs
Open Rigel

One contractor visit

maintenance.visit.get

GET/api/v1/households/{household_id}/queries/maintenance.visit.get

  • Query
  • Rigel runs it

One visit: when (the arrival window, or the day it happened), who, what for, its status, summary and notes, the items and problems it concerns, the active maintenance tasks of those items (what marking it done can check off), the tasks it already checked off, and its quotes and invoices. Fails with visit_not_found.

Parameters#

One contractor visit: parameters
FieldDescription
household_idpathstringrequired

The household's ID.

visit_idquerystringrequired

The visit.

Response#

200 The answer.

One contractor visit: response fields
FieldDescription
idstringrequired

A visit ID, such as vst_01JC0000000000000000000000.

addressstring or nullrequired

The web route that opens it.

titlestringrequired

What it is for.

statusone of: scheduled, done, cancelledrequired

Where the visit stands.

starts_atstring (date-time) or nullrequired

When they are due, start of the window.

ends_atstring (date-time) or nullrequired

End of the arrival window.

visited_onstring or nullrequired

When the work happened, YYYY-MM-DD.

summarystring or nullrequired

What was done.

notesstring or nullrequired

Notes about the visit.

datestring or nullrequired

The visit's date: when it happened or when its window starts, YYYY-MM-DD.

property_idstringrequired

A property ID, such as prp_01JC0000000000000000000000.

contractor_idstring or nullrequired

Who is coming or came.

contractor_namestring or nullrequired

Who is coming or came.

contractor_phonestring or nullrequired

Their phone number, to call about the visit.

project_idstring or nullrequired

The project it is for.

project_titlestring or nullrequired

The project it is for.

assetsarray of objectsrequired

Items it concerns.

assets[].idstringrequired

A asset ID, such as ast_01JC0000000000000000000000.

assets[].addressstring or nullrequiredNo description.
assets[].namestringrequired

The item's name.

issuesarray of objectsrequired

Problems it looked at.

issues[].idstringrequired

A issue ID, such as iss_01JC0000000000000000000000.

issues[].addressstring or nullrequiredNo description.
issues[].titlestringrequired

The problem.

issues[].severityone of: low, medium, high, urgentrequired

How bad it is: low (cosmetic or minor), medium (needs fixing), high (getting worse or costly), urgent (safety, water or no heat).

issues[].statusone of: open, monitoring, resolvedrequired

open (needs work), monitoring (watching a symptom), resolved (fixed or no longer a problem).

open_tasksarray of objectsrequired

Active maintenance tasks of its items, soonest due first: what marking the visit done can check off.

open_tasks[].idstringrequired

The task's ID (mtk_…).

open_tasks[].addressstring or nullrequired

The web route that opens the task, when it has one.

open_tasks[].titlestringrequired

The task's title.

open_tasks[].importanceone of: essential, recommended, optionalrequired

How much it matters.

open_tasks[].statusone of: active, offrequired

Whether the task is on or turned off.

open_tasks[].next_due_onstring or nullrequired

When it is next due, YYYY-MM-DD, or null (a usage task with no date).

open_tasks[].due_groupone of: overdue, due_soon, this_season, later, null or nullrequired

Overdue, due_soon (within 2 weeks), this_season or later; null for optional and turned-off tasks.

open_tasks[].due_in_wordsstring or nullrequired

"Due in 5 days", "Overdue since Oct 3", "Open until Nov 15" or "Check"; null when off.

open_tasks[].asset_namestring or nullrequired

The item it is for.

completed_tasksarray of objectsrequired

Maintenance tasks this visit checked off.

completed_tasks[].task_idstringrequired

A maintenance task ID, such as mtk_01JC0000000000000000000000.

completed_tasks[].addressstring or nullrequiredNo description.
completed_tasks[].titlestringrequired

The task it checked off.

completed_tasks[].done_onstringrequired

YYYY-MM-DD.

invoicesarray of objectsrequired

Quotes and invoices for the visit.

invoices[].idstringrequired

A invoice ID, such as ivc_01JC0000000000000000000000.

invoices[].kindone of: quote, invoicerequiredNo description.
invoices[].numberstring or nullrequiredNo description.
invoices[].currencystringrequired

An ISO 4217 currency code, such as USD.

pattern ^[A-Z]{3}$
invoices[].totalinteger or nullrequired

In minor units; null when the paper gave none.

Errors#

Every error has the same envelope: error.code, error.message, error.details, error.recovery and error.request_id.

One contractor visit: 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.

Open a visit

Request, curl
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.get?visit_id=vst_01M6V9CSYWPZZCJP1Q0PBTS1SF' \
  -H "Cookie: rigel_session=$RIGEL_SESSION"
Request, TypeScript
const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.get?visit_id=vst_01M6V9CSYWPZZCJP1Q0PBTS1SF", {
  headers: {
    Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
  },
});
const data = await response.json();
Request, HTTP
GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.get?visit_id=vst_01M6V9CSYWPZZCJP1Q0PBTS1SF 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_01M6V9CT20529KPQJ431KY9TTY

{
  "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,
  "notes": "Ask about the igniter. Ben will be home.",
  "date": "2026-11-19",
  "property_id": "prp_01M6V9CSTXS6P4CG6RNTNT60FA",
  "contractor_id": "ctr_01M6V9CSWEFJH8CRZCXNAH8109",
  "contractor_name": "Smith Heating & Air",
  "contractor_phone": "555-0142",
  "project_id": null,
  "project_title": null,
  "assets": [
    {
      "id": "ast_01M6V9CSVCMZFAP6ZN5WANZ6M8",
      "address": "/maintenance/assets/ast_01M6V9CSVCMZFAP6ZN5WANZ6M8",
      "name": "Basement furnace"
    }
  ],
  "issues": [],
  "open_tasks": [
    {
      "id": "mtk_01M6V9CSWSHKH0MYE1RMRRDC58",
      "address": "/maintenance/tasks/mtk_01M6V9CSWSHKH0MYE1RMRRDC58",
      "title": "Annual furnace inspection",
      "importance": "essential",
      "status": "active",
      "next_due_on": "2026-11-19",
      "due_group": "due_soon",
      "due_in_words": "Due in 12 days",
      "asset_name": "Basement furnace"
    },
    {
      "id": "mtk_01M6V9CSWM1GKX8MAYQFYBAM3S",
      "address": "/maintenance/tasks/mtk_01M6V9CSWM1GKX8MAYQFYBAM3S",
      "title": "Replace the furnace filter",
      "importance": "essential",
      "status": "active",
      "next_due_on": "2027-02-06",
      "due_group": "later",
      "due_in_words": "Due Feb 6, 2027",
      "asset_name": "Basement furnace"
    }
  ],
  "completed_tasks": [],
  "invoices": []
}

Open a visit that happened

Request, curl
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.get?visit_id=vst_01M6V9CSYM7MF5MW4XZSAPDX0R' \
  -H "Cookie: rigel_session=$RIGEL_SESSION"
Request, TypeScript
const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.get?visit_id=vst_01M6V9CSYM7MF5MW4XZSAPDX0R", {
  headers: {
    Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
  },
});
const data = await response.json();
Request, HTTP
GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.visit.get?visit_id=vst_01M6V9CSYM7MF5MW4XZSAPDX0R 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_01M6V9CT24ZCWG49DT4ZTZ676J

{
  "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.",
  "notes": null,
  "date": "2026-09-18",
  "property_id": "prp_01M6V9CSTXS6P4CG6RNTNT60FA",
  "contractor_id": "ctr_01M6V9CSWHPNYAY4A5FBX3R14F",
  "contractor_name": "Riverbend Plumbing & Drain",
  "contractor_phone": "555-0178",
  "project_id": null,
  "project_title": null,
  "assets": [],
  "issues": [
    {
      "id": "iss_01M6V9CSYKEZQVSA56BB6PYXRV",
      "address": "/maintenance/issues/iss_01M6V9CSYKEZQVSA56BB6PYXRV",
      "title": "Slow drip under the kitchen sink",
      "severity": "medium",
      "status": "resolved"
    }
  ],
  "open_tasks": [],
  "completed_tasks": [],
  "invoices": [
    {
      "id": "ivc_01M6V9CSYRAE8F77HCCX98XB0M",
      "kind": "invoice",
      "number": "RB-3071",
      "currency": "USD",
      "total": 14500
    }
  ]
}

For Rigel#

Rigel's tool for this query is maintenance_visit_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