Skip to content
Rigel docs
Open Rigel

Where an item's facts came from

maintenance.asset.facts

GET/api/v1/households/{household_id}/queries/maintenance.asset.facts

  • Query
  • Rigel runs it

Every fact row for one asset's chain (the asset, its group, its model, its group's model), current and replaced, newest first within each key, with the source it rests on and whether it is the one showing. For 'where did that number come from?'.

Parameters#

Where an item's facts came from: parameters
FieldDescription
household_idpathstringrequired

The household's ID.

asset_idquerystringrequired

A asset ID, such as ast_01JC0000000000000000000000.

keyquerystringoptional

Only this fact key, such as filter_size.

Response#

200 The answer.

Where an item's facts came from: response fields
FieldDescription
factsarray of objectsrequired
facts[].attribute_idstringrequired

A asset fact ID, such as atr_01JC0000000000000000000000.

facts[].keystringrequired

The fact key.

facts[].labelstringrequired

Its label.

facts[].in_wordsstringrequired

The value as a person reads it, such as "40 gal".

facts[].valuestring or nullrequired

The text value.

facts[].value_numnumber or nullrequired

The numeric value.

facts[].unitstring or nullrequired

The unit, in snake_case.

facts[].originone of: homeowner, label, research, generalrequired

How it was established.

facts[].origin_in_wordsstringrequired

The origin as a person reads it, such as "From the label".

facts[].sourceone of: asset, group, model, group_modelrequired

Whose fact it is: the asset, its group, its model or its group's model.

facts[].owner_idstringrequired

The ID of the asset or model that owns the fact.

facts[].currentbooleanrequired

False once a newer fact of the same origin replaced it.

facts[].shownbooleanrequired

True for the fact that wins and is shown for its key.

facts[].recorded_atstring (date-time)required

When it was recorded.

facts[].evidenceobject or nullrequired

What it rests on.

facts[].evidence.idstringrequired

A evidence ID, such as evi_01JC0000000000000000000000.

facts[].evidence.file_idstring or nullrequired

The photo, manual or invoice it was read from.

facts[].evidence.urlstring or nullrequired

The web page it was found on.

facts[].evidence.said_by_person_idstring or nullrequired

Who said it.

facts[].evidence.locatorstring or nullrequired

Where in the source, such as "p. 14".

facts[].evidence.excerptstring or nullrequired

The exact text the value was read from.

Errors#

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

Where an item's facts came from: 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.

Where an item's facts came from

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

{
  "facts": [
    {
      "attribute_id": "atr_01M6V9CSW7YVWP9VJJ42SFK57E",
      "key": "afue",
      "label": "Efficiency (AFUE)",
      "in_words": "96%",
      "value": null,
      "value_num": 96,
      "unit": "percent",
      "origin": "label",
      "origin_in_words": "From the label",
      "source": "asset",
      "owner_id": "ast_01M6V9CSVCMZFAP6ZN5WANZ6M8",
      "current": true,
      "shown": true,
      "recorded_at": "2026-11-07T15:17:52.647Z",
      "evidence": null
    },
    {
      "attribute_id": "atr_01M6V9CSW8XX8EG50TW7K8DJT3",
      "key": "filter_size",
      "label": "Filter size",
      "in_words": "16x25x1",
      "value": "16x25x1",
      "value_num": null,
      "unit": null,
      "origin": "homeowner",
      "origin_in_words": "You told Rigel",
      "source": "asset",
      "owner_id": "ast_01M6V9CSVCMZFAP6ZN5WANZ6M8",
      "current": true,
      "shown": true,
      "recorded_at": "2026-11-07T15:17:52.649Z",
      "evidence": null
    },
    {
      "attribute_id": "atr_01M6V9CSW5DANGBHC842K65T0A",
      "key": "fuel",
      "label": "Fuel",
      "in_words": "natural gas",
      "value": "natural gas",
      "value_num": null,
      "unit": null,
      "origin": "label",
      "origin_in_words": "From the label",
      "source": "asset",
      "owner_id": "ast_01M6V9CSVCMZFAP6ZN5WANZ6M8",
      "current": true,
      "shown": true,
      "recorded_at": "2026-11-07T15:17:52.646Z",
      "evidence": {
        "id": "evi_01M6V9CSW5YT2FPEC8HZ9MMN6H",
        "file_id": null,
        "url": null,
        "said_by_person_id": null,
        "locator": "rating plate",
        "excerpt": "NATURAL GAS"
      }
    },
    {
      "attribute_id": "atr_01M6V9CSW490A53PGQKYRG7RBM",
      "key": "fuel",
      "label": "Fuel",
      "in_words": "natural gas",
      "value": "natural gas",
      "value_num": null,
      "unit": null,
      "origin": "research",
      "origin_in_words": "From the manual or maker",
      "source": "asset",
      "owner_id": "ast_01M6V9CSVCMZFAP6ZN5WANZ6M8",
      "current": true,
      "shown": false,
      "recorded_at": "2026-11-07T15:17:52.644Z",
      "evidence": null
    }
  ]
}

Where one fact came from

The label's reading is the one showing; the research result is kept below it.

Request, curl
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.asset.facts?asset_id=ast_01M6V9CSVCMZFAP6ZN5WANZ6M8&key=fuel' \
  -H "Cookie: rigel_session=$RIGEL_SESSION"
Request, TypeScript
const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.asset.facts?asset_id=ast_01M6V9CSVCMZFAP6ZN5WANZ6M8&key=fuel", {
  headers: {
    Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
  },
});
const data = await response.json();
Request, HTTP
GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/maintenance.asset.facts?asset_id=ast_01M6V9CSVCMZFAP6ZN5WANZ6M8&key=fuel 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_01M6V9CT0KJWEFTEFKZ7EHAPFF

{
  "facts": [
    {
      "attribute_id": "atr_01M6V9CSW5DANGBHC842K65T0A",
      "key": "fuel",
      "label": "Fuel",
      "in_words": "natural gas",
      "value": "natural gas",
      "value_num": null,
      "unit": null,
      "origin": "label",
      "origin_in_words": "From the label",
      "source": "asset",
      "owner_id": "ast_01M6V9CSVCMZFAP6ZN5WANZ6M8",
      "current": true,
      "shown": true,
      "recorded_at": "2026-11-07T15:17:52.646Z",
      "evidence": {
        "id": "evi_01M6V9CSW5YT2FPEC8HZ9MMN6H",
        "file_id": null,
        "url": null,
        "said_by_person_id": null,
        "locator": "rating plate",
        "excerpt": "NATURAL GAS"
      }
    },
    {
      "attribute_id": "atr_01M6V9CSW490A53PGQKYRG7RBM",
      "key": "fuel",
      "label": "Fuel",
      "in_words": "natural gas",
      "value": "natural gas",
      "value_num": null,
      "unit": null,
      "origin": "research",
      "origin_in_words": "From the manual or maker",
      "source": "asset",
      "owner_id": "ast_01M6V9CSVCMZFAP6ZN5WANZ6M8",
      "current": true,
      "shown": false,
      "recorded_at": "2026-11-07T15:17:52.644Z",
      "evidence": null
    }
  ]
}

For Rigel#

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