Skip to content
Rigel docs
Open Rigel

What we have, and where

inventory.item.list

GET/api/v1/households/{household_id}/queries/inventory.item.list

  • Query
  • Rigel runs it

Items we have, by product name, each with its product, place, amount, dates, when it was last seen and a picture. Filter by a location (and everything inside it), a product, staples only, or text found in the product name, brand, variant or note (ignoring case). Pages with a cursor.

Parameters#

What we have, and where: parameters
FieldDescription
household_idpathstringrequired

The household's ID.

location_idquerystringoptional

Only items in this location or any location inside it.

product_idquerystringoptional

Only items of this product.

textquerystringoptional

Only items whose product name, brand, variant or note contains this, ignoring case.

1 to 120 characters
staples_onlyqueryboolean or stringoptional

Only items of staple products. Defaults to false.

limitqueryintegeroptional

How many to return, 1–200. Defaults to 50.

1 to 200Default 50
cursorquerystringoptional

The next_cursor of the previous page, with the same filters.

Response#

200 The answer.

What we have, and where: response fields
FieldDescription
itemsarray of objectsrequired
items[].idstringrequired

A inventory item ID, such as inv_01JC0000000000000000000000.

items[].productobjectrequired
items[].product.idstringrequired

A product ID, such as prd_01JC0000000000000000000000.

items[].product.namestringrequired

What it is: "black beans".

items[].product.categorystring or nullrequired

The product's grouping, such as Canned, or null.

items[].product.is_staplebooleanrequired

Whether the household always keeps it in stock.

items[].product.is_trackedbooleanrequired

Whether the household tracks how much of it we have.

items[].locationobjectrequired
items[].location.idstringrequired

A storage location ID, such as loc_01JC0000000000000000000000.

items[].location.namestringrequired

The location's own name.

items[].location.pathstringrequired

Where it is from the top: "Kitchen pantry › Middle shelf".

items[].location.environmentone of: frozen, cold, roomrequired

How a location keeps things, which decides which shelf life applies: frozen (a freezer), cold (a fridge) or room (a pantry, cupboard or closet).

items[].brandstring or nullrequired

The brand, if recorded.

items[].variantstring or nullrequired

The kind, if recorded: "low sodium".

items[].sizestring or nullrequired

The package size in words: "15 oz each", or null.

items[].amountstringrequired

The amount in words: "2 cans", "about half", "some".

items[].quantitynumber or nullrequired

The number we have, in quantity_unit, or null when we don't know one.

items[].quantity_unitone of: mg, g, kg, oz, lb, ml, l, tsp, tbsp, fl_oz, cup, pint, quart, gallon, pinch, dash, clove, slice, stick, sprig, head, bunch, stalk, can, jar, bottle, box, bag, package, carton, roll, null or nullrequired

A unit. Mass: mg, g, kg, oz, lb. Volume (US sizes): ml, l, tsp, tbsp, fl_oz, cup, pint, quart, gallon. Items, for a count of something other than the thing itself (2 cloves of garlic, 1 can of beans): pinch, dash, clove, slice, stick, sprig, head, bunch, stalk, can, jar, bottle, box, bag, package, carton, roll. Leave it out or null for a plain count of the things themselves (3 eggs).

items[].levelone of: full, most, half, low, null or nullrequired

A rough amount when there's no number: full, most (mostly full), half (about half) or low. Leave both quantity and level out for "we have some".

items[].acquired_onstring or nullrequired

When we got it, YYYY-MM-DD, or null.

items[].opened_onstring or nullrequired

When it was opened, YYYY-MM-DD, or null.

items[].label_best_bystring or nullrequired

The date printed on the package, as read, or null.

items[].expires_onstring or nullrequired

When to use it by, YYYY-MM-DD, or null if it doesn't go bad.

items[].expires_sourceone of: label, person, estimated, null or nullrequired

Where expires_on came from: label (read off the package), person (someone told us) or estimated (Rigel worked it out from what it is, where it's kept and when it was bought, made or opened).

items[].expirystring or nullrequired

The date in words: "Use by Nov 9", "Past, Nov 2", or null.

items[].days_leftinteger or nullrequired

Days from today until expires_on, negative when it's past, or null without a date.

items[].confirmed_atstring (date-time)required

When this item's amount was last known to be true.

items[].seen_agostringrequired

How long ago that was, in words: "3 days ago".

items[].seen_onstringrequired

The day that was, in words: "Nov 6".

items[].pictureobject or nullrequired

A picture to show for the item, or null when there is none.

items[].picture.file_idstringrequired

The image file.

items[].picture.cropobject or nullrequired

The part of the image that shows the item, or null for all of it.

items[].picture.crop.xnumberrequired

Left edge, as a fraction of the image's width, 0–1.

items[].picture.crop.ynumberrequired

Top edge, as a fraction of the image's height, 0–1.

items[].picture.crop.widthnumberrequired

Width, as a fraction of the image's width, 0–1.

items[].picture.crop.heightnumberrequired

Height, as a fraction of the image's height, 0–1.

items[].picture.sourceone of: photo, iconrequired

photo: of this item. icon: the product's generated icon.

items[].notestring or nullrequired

A note about this item, as written.

next_cursorstring or nullrequired

Send as cursor for the next page; null on the last page.

Errors#

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

What we have, and where: 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.

List what we have

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

{
  "items": [
    {
      "id": "inv_01M6V9CSAPM8JH7W1W1YEBHPRS",
      "product": {
        "id": "prd_01M6V9CSAMSN9ZJ52PTTKT8G6M",
        "name": "Black beans",
        "category": "Canned goods",
        "is_staple": false,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSA910340EZNX67RFMV0",
        "name": "Middle shelf",
        "path": "Kitchen pantry › Middle shelf",
        "environment": "room"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "3 cans",
      "quantity": 3,
      "quantity_unit": "can",
      "level": null,
      "acquired_on": null,
      "opened_on": null,
      "label_best_by": null,
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.086Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    },
    {
      "id": "inv_01M6V9CSB2QRQDPSG49EFX353W",
      "product": {
        "id": "prd_01M6V9CSB2GBRX2QG46DDBK4TW",
        "name": "Chicken thighs",
        "category": null,
        "is_staple": false,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSABVCCJRZ4RWVFW77D6",
        "name": "Chest freezer",
        "path": "Chest freezer",
        "environment": "frozen"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "2 lb",
      "quantity": 2,
      "quantity_unit": "lb",
      "level": null,
      "acquired_on": "2026-10-18",
      "opened_on": null,
      "label_best_by": null,
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.099Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    },
    {
      "id": "inv_01M6V9CSAJYYMNC0TXJX8NRN8T",
      "product": {
        "id": "prd_01M6V9CSAG72MC7ERJ4GCZ0X7A",
        "name": "Flour",
        "category": "Baking",
        "is_staple": true,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSA910340EZNX67RFMV0",
        "name": "Middle shelf",
        "path": "Kitchen pantry › Middle shelf",
        "environment": "room"
      },
      "brand": "Mill Road",
      "variant": null,
      "size": "2 kg each",
      "amount": "1 bag",
      "quantity": 1,
      "quantity_unit": "bag",
      "level": null,
      "acquired_on": "2026-10-29",
      "opened_on": null,
      "label_best_by": "2027-07-05",
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.083Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    },
    {
      "id": "inv_01M6V9CSAWTFE7ARBQF4CXQ31Q",
      "product": {
        "id": "prd_01M6V9CSAWSAMCWTBQ2M7F80H9",
        "name": "Milk",
        "category": "Dairy",
        "is_staple": true,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSAACDPHW4NW889QQ2VV",
        "name": "Kitchen fridge",
        "path": "Kitchen fridge",
        "environment": "cold"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "1 gallon",
      "quantity": 1,
      "quantity_unit": "gallon",
      "level": null,
      "acquired_on": null,
      "opened_on": null,
      "label_best_by": null,
      "expires_on": "2026-11-10",
      "expires_source": "label",
      "expiry": "Use by Nov 10",
      "days_left": 3,
      "confirmed_at": "2026-11-07T15:17:52.093Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    },
    {
      "id": "inv_01M6V9CSATNBB6KZZ14ZN1FE15",
      "product": {
        "id": "prd_01M6V9CSAT6M58YWZ1H4DFY9K2",
        "name": "Olive oil",
        "category": null,
        "is_staple": false,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSA910340EZNX67RFMV0",
        "name": "Middle shelf",
        "path": "Kitchen pantry › Middle shelf",
        "environment": "room"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "mostly full",
      "quantity": null,
      "quantity_unit": null,
      "level": "most",
      "acquired_on": null,
      "opened_on": null,
      "label_best_by": null,
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.091Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    },
    {
      "id": "inv_01M6V9CSAQY5ZPFNNXYTWXW5CF",
      "product": {
        "id": "prd_01M6V9CSAQDSZHDQNXHXRCDA8Z",
        "name": "Orzo",
        "category": null,
        "is_staple": false,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSA910340EZNX67RFMV0",
        "name": "Middle shelf",
        "path": "Kitchen pantry › Middle shelf",
        "environment": "room"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "1 box",
      "quantity": 1,
      "quantity_unit": "box",
      "level": null,
      "acquired_on": null,
      "opened_on": null,
      "label_best_by": null,
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.088Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    },
    {
      "id": "inv_01M6V9CSB441KYPTJPNZGNVY4A",
      "product": {
        "id": "prd_01M6V9CSB4BEJEAXJPR0K7CZD9",
        "name": "Paper towels",
        "category": null,
        "is_staple": false,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSADPBG11HW38FMRV1ZQ",
        "name": "Basement closet",
        "path": "Basement closet",
        "environment": "room"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "6 rolls",
      "quantity": 6,
      "quantity_unit": "roll",
      "level": null,
      "acquired_on": null,
      "opened_on": null,
      "label_best_by": null,
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.101Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    },
    {
      "id": "inv_01M6V9CSB6S923R566WD7EAGGG",
      "product": {
        "id": "prd_01M6V9CSB6TEWX53669YBWSK0Y",
        "name": "Salsa",
        "category": null,
        "is_staple": false,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSAACDPHW4NW889QQ2VV",
        "name": "Kitchen fridge",
        "path": "Kitchen fridge",
        "environment": "cold"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "1 jar",
      "quantity": 1,
      "quantity_unit": "jar",
      "level": null,
      "acquired_on": null,
      "opened_on": "2026-11-05",
      "label_best_by": null,
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.103Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    },
    {
      "id": "inv_01M6V9CSB0YB2Y7WBZBMR3G5Z0",
      "product": {
        "id": "prd_01M6V9CSB0DQFW5YBZYYMJ0A77",
        "name": "Yogurt",
        "category": null,
        "is_staple": false,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSAACDPHW4NW889QQ2VV",
        "name": "Kitchen fridge",
        "path": "Kitchen fridge",
        "environment": "cold"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "about half",
      "quantity": null,
      "quantity_unit": null,
      "level": "half",
      "acquired_on": null,
      "opened_on": null,
      "label_best_by": null,
      "expires_on": "2026-11-13",
      "expires_source": "label",
      "expiry": "Use by Nov 13",
      "days_left": 6,
      "confirmed_at": "2026-11-07T15:17:52.096Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    }
  ],
  "next_cursor": null
}

List what's on one shelf

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

{
  "items": [
    {
      "id": "inv_01M6V9CSAPM8JH7W1W1YEBHPRS",
      "product": {
        "id": "prd_01M6V9CSAMSN9ZJ52PTTKT8G6M",
        "name": "Black beans",
        "category": "Canned goods",
        "is_staple": false,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSA910340EZNX67RFMV0",
        "name": "Middle shelf",
        "path": "Kitchen pantry › Middle shelf",
        "environment": "room"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "3 cans",
      "quantity": 3,
      "quantity_unit": "can",
      "level": null,
      "acquired_on": null,
      "opened_on": null,
      "label_best_by": null,
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.086Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    },
    {
      "id": "inv_01M6V9CSAJYYMNC0TXJX8NRN8T",
      "product": {
        "id": "prd_01M6V9CSAG72MC7ERJ4GCZ0X7A",
        "name": "Flour",
        "category": "Baking",
        "is_staple": true,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSA910340EZNX67RFMV0",
        "name": "Middle shelf",
        "path": "Kitchen pantry › Middle shelf",
        "environment": "room"
      },
      "brand": "Mill Road",
      "variant": null,
      "size": "2 kg each",
      "amount": "1 bag",
      "quantity": 1,
      "quantity_unit": "bag",
      "level": null,
      "acquired_on": "2026-10-29",
      "opened_on": null,
      "label_best_by": "2027-07-05",
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.083Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    },
    {
      "id": "inv_01M6V9CSATNBB6KZZ14ZN1FE15",
      "product": {
        "id": "prd_01M6V9CSAT6M58YWZ1H4DFY9K2",
        "name": "Olive oil",
        "category": null,
        "is_staple": false,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSA910340EZNX67RFMV0",
        "name": "Middle shelf",
        "path": "Kitchen pantry › Middle shelf",
        "environment": "room"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "mostly full",
      "quantity": null,
      "quantity_unit": null,
      "level": "most",
      "acquired_on": null,
      "opened_on": null,
      "label_best_by": null,
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.091Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    },
    {
      "id": "inv_01M6V9CSAQY5ZPFNNXYTWXW5CF",
      "product": {
        "id": "prd_01M6V9CSAQDSZHDQNXHXRCDA8Z",
        "name": "Orzo",
        "category": null,
        "is_staple": false,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSA910340EZNX67RFMV0",
        "name": "Middle shelf",
        "path": "Kitchen pantry › Middle shelf",
        "environment": "room"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "1 box",
      "quantity": 1,
      "quantity_unit": "box",
      "level": null,
      "acquired_on": null,
      "opened_on": null,
      "label_best_by": null,
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.088Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    }
  ],
  "next_cursor": null
}

Search the pantry for oil

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

{
  "items": [
    {
      "id": "inv_01M6V9CSATNBB6KZZ14ZN1FE15",
      "product": {
        "id": "prd_01M6V9CSAT6M58YWZ1H4DFY9K2",
        "name": "Olive oil",
        "category": null,
        "is_staple": false,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSA910340EZNX67RFMV0",
        "name": "Middle shelf",
        "path": "Kitchen pantry › Middle shelf",
        "environment": "room"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "mostly full",
      "quantity": null,
      "quantity_unit": null,
      "level": "most",
      "acquired_on": null,
      "opened_on": null,
      "label_best_by": null,
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.091Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    }
  ],
  "next_cursor": null
}

List only staples

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

{
  "items": [
    {
      "id": "inv_01M6V9CSAJYYMNC0TXJX8NRN8T",
      "product": {
        "id": "prd_01M6V9CSAG72MC7ERJ4GCZ0X7A",
        "name": "Flour",
        "category": "Baking",
        "is_staple": true,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSA910340EZNX67RFMV0",
        "name": "Middle shelf",
        "path": "Kitchen pantry › Middle shelf",
        "environment": "room"
      },
      "brand": "Mill Road",
      "variant": null,
      "size": "2 kg each",
      "amount": "1 bag",
      "quantity": 1,
      "quantity_unit": "bag",
      "level": null,
      "acquired_on": "2026-10-29",
      "opened_on": null,
      "label_best_by": "2027-07-05",
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.083Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    },
    {
      "id": "inv_01M6V9CSAWTFE7ARBQF4CXQ31Q",
      "product": {
        "id": "prd_01M6V9CSAWSAMCWTBQ2M7F80H9",
        "name": "Milk",
        "category": "Dairy",
        "is_staple": true,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSAACDPHW4NW889QQ2VV",
        "name": "Kitchen fridge",
        "path": "Kitchen fridge",
        "environment": "cold"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "1 gallon",
      "quantity": 1,
      "quantity_unit": "gallon",
      "level": null,
      "acquired_on": null,
      "opened_on": null,
      "label_best_by": null,
      "expires_on": "2026-11-10",
      "expires_source": "label",
      "expiry": "Use by Nov 10",
      "days_left": 3,
      "confirmed_at": "2026-11-07T15:17:52.093Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    }
  ],
  "next_cursor": null
}

List the first page of items

next_cursor says there's more; send it back as cursor with the same filters.

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

{
  "items": [
    {
      "id": "inv_01M6V9CSAPM8JH7W1W1YEBHPRS",
      "product": {
        "id": "prd_01M6V9CSAMSN9ZJ52PTTKT8G6M",
        "name": "Black beans",
        "category": "Canned goods",
        "is_staple": false,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSA910340EZNX67RFMV0",
        "name": "Middle shelf",
        "path": "Kitchen pantry › Middle shelf",
        "environment": "room"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "3 cans",
      "quantity": 3,
      "quantity_unit": "can",
      "level": null,
      "acquired_on": null,
      "opened_on": null,
      "label_best_by": null,
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.086Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    },
    {
      "id": "inv_01M6V9CSB2QRQDPSG49EFX353W",
      "product": {
        "id": "prd_01M6V9CSB2GBRX2QG46DDBK4TW",
        "name": "Chicken thighs",
        "category": null,
        "is_staple": false,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSABVCCJRZ4RWVFW77D6",
        "name": "Chest freezer",
        "path": "Chest freezer",
        "environment": "frozen"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "2 lb",
      "quantity": 2,
      "quantity_unit": "lb",
      "level": null,
      "acquired_on": "2026-10-18",
      "opened_on": null,
      "label_best_by": null,
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.099Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    },
    {
      "id": "inv_01M6V9CSAJYYMNC0TXJX8NRN8T",
      "product": {
        "id": "prd_01M6V9CSAG72MC7ERJ4GCZ0X7A",
        "name": "Flour",
        "category": "Baking",
        "is_staple": true,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSA910340EZNX67RFMV0",
        "name": "Middle shelf",
        "path": "Kitchen pantry › Middle shelf",
        "environment": "room"
      },
      "brand": "Mill Road",
      "variant": null,
      "size": "2 kg each",
      "amount": "1 bag",
      "quantity": 1,
      "quantity_unit": "bag",
      "level": null,
      "acquired_on": "2026-10-29",
      "opened_on": null,
      "label_best_by": "2027-07-05",
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.083Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    }
  ],
  "next_cursor": "WyJmbG91ciIsImludl8wMU02VjlDU0FKWVlNTkMwVFhKWDhOUk44VCJd"
}

List the next page of items

Request, curl
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/inventory.item.list?limit=3&cursor=WyJmbG91ciIsImludl8wMU02VjlDU0FKWVlNTkMwVFhKWDhOUk44VCJd' \
  -H "Cookie: rigel_session=$RIGEL_SESSION"
Request, TypeScript
const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/inventory.item.list?limit=3&cursor=WyJmbG91ciIsImludl8wMU02VjlDU0FKWVlNTkMwVFhKWDhOUk44VCJd", {
  headers: {
    Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
  },
});
const data = await response.json();
Request, HTTP
GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/inventory.item.list?limit=3&cursor=WyJmbG91ciIsImludl8wMU02VjlDU0FKWVlNTkMwVFhKWDhOUk44VCJd 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_01M6V9CSBYZ92SGREFMB09R6FN

{
  "items": [
    {
      "id": "inv_01M6V9CSAWTFE7ARBQF4CXQ31Q",
      "product": {
        "id": "prd_01M6V9CSAWSAMCWTBQ2M7F80H9",
        "name": "Milk",
        "category": "Dairy",
        "is_staple": true,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSAACDPHW4NW889QQ2VV",
        "name": "Kitchen fridge",
        "path": "Kitchen fridge",
        "environment": "cold"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "1 gallon",
      "quantity": 1,
      "quantity_unit": "gallon",
      "level": null,
      "acquired_on": null,
      "opened_on": null,
      "label_best_by": null,
      "expires_on": "2026-11-10",
      "expires_source": "label",
      "expiry": "Use by Nov 10",
      "days_left": 3,
      "confirmed_at": "2026-11-07T15:17:52.093Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    },
    {
      "id": "inv_01M6V9CSATNBB6KZZ14ZN1FE15",
      "product": {
        "id": "prd_01M6V9CSAT6M58YWZ1H4DFY9K2",
        "name": "Olive oil",
        "category": null,
        "is_staple": false,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSA910340EZNX67RFMV0",
        "name": "Middle shelf",
        "path": "Kitchen pantry › Middle shelf",
        "environment": "room"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "mostly full",
      "quantity": null,
      "quantity_unit": null,
      "level": "most",
      "acquired_on": null,
      "opened_on": null,
      "label_best_by": null,
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.091Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    },
    {
      "id": "inv_01M6V9CSAQY5ZPFNNXYTWXW5CF",
      "product": {
        "id": "prd_01M6V9CSAQDSZHDQNXHXRCDA8Z",
        "name": "Orzo",
        "category": null,
        "is_staple": false,
        "is_tracked": true
      },
      "location": {
        "id": "loc_01M6V9CSA910340EZNX67RFMV0",
        "name": "Middle shelf",
        "path": "Kitchen pantry › Middle shelf",
        "environment": "room"
      },
      "brand": null,
      "variant": null,
      "size": null,
      "amount": "1 box",
      "quantity": 1,
      "quantity_unit": "box",
      "level": null,
      "acquired_on": null,
      "opened_on": null,
      "label_best_by": null,
      "expires_on": null,
      "expires_source": null,
      "expiry": null,
      "days_left": null,
      "confirmed_at": "2026-11-07T15:17:52.088Z",
      "seen_ago": "just now",
      "seen_on": "Nov 7",
      "picture": null,
      "note": null
    }
  ],
  "next_cursor": "WyJvcnpvIiwiaW52XzAxTTZWOUNTQVFZNVpQRk5OWFlUV1hXNUNGIl0"
}

For Rigel#

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