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#
| Field | Description |
|---|---|
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. |
staples_onlyqueryboolean or stringoptional | Only items of staple products. Defaults to false. |
limitqueryintegeroptional | How many to return, 1–200. Defaults to 50. |
cursorquerystringoptional | The next_cursor of the previous page, with the same filters. |
Response#
200 The answer.
| Field | Description |
|---|---|
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.
| 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.
List what we have
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/inventory.item.list' \
-H "Cookie: rigel_session=$RIGEL_SESSION"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();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/inventory.item.list HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>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
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/inventory.item.list?location_id=loc_01M6V9CSA910340EZNX67RFMV0' \
-H "Cookie: rigel_session=$RIGEL_SESSION"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();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>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
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/inventory.item.list?text=oil' \
-H "Cookie: rigel_session=$RIGEL_SESSION"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();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/inventory.item.list?text=oil HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>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
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/inventory.item.list?staples_only=true' \
-H "Cookie: rigel_session=$RIGEL_SESSION"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();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/inventory.item.list?staples_only=true HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>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.
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/inventory.item.list?limit=3' \
-H "Cookie: rigel_session=$RIGEL_SESSION"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();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/inventory.item.list?limit=3 HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>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
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/inventory.item.list?limit=3&cursor=WyJmbG91ciIsImludl8wMU02VjlDU0FKWVlNTkMwVFhKWDhOUk44VCJd' \
-H "Cookie: rigel_session=$RIGEL_SESSION"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();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>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.