Skip to content
Rigel docs
Open Rigel

A whole recipe

recipes.recipe.get

GET/api/v1/households/{household_id}/queries/recipes.recipe.get

  • Query
  • Rigel runs it

The recipe with its ingredients and steps in order, step ingredient links, source fields, cooks and versions. Pass servings to see the amounts scaled to that many servings without changing the recipe.

Parameters#

A whole recipe: parameters
FieldDescription
household_idpathstringrequired

The household's ID.

recipe_idquerystringrequired

A recipe ID, such as rcp_01JC0000000000000000000000.

servingsqueryintegeroptional

Show amounts for this many servings, 1–1,000. Defaults to the recipe's own.

1 to 1,000

Response#

200 The answer.

A whole recipe: response fields
FieldDescription
recipeobjectrequired
recipe.idstringrequired

A recipe ID, such as rcp_01JC0000000000000000000000.

recipe.created_atstring (date-time)required

When the recipe was made.

recipe.updated_atstring (date-time)required

When it last changed.

recipe.titlestringrequired

The title, as written.

recipe.summarystring or nullrequired

One or two sentences about it, or null.

recipe.servingsintegerrequired

How many servings the stored amounts make.

recipe.prep_minutesinteger or nullrequired

Hands-on preparation in minutes, or null.

recipe.cook_minutesinteger or nullrequired

Cooking time in minutes, or null.

recipe.total_minutesinteger or nullrequired

Prep plus cook minutes, or null when neither is known.

recipe.notesstring or nullrequired

Kitchen notes on the whole recipe, or null.

recipe.based_on_recipe_idstring or nullrequired

The recipe this is a version of, or null.

recipe.source_urlstring or nullrequired

Where it was imported from, or null.

recipe.source_titlestring or nullrequired

The original's title, or null.

recipe.source_sitestring or nullrequired

The site or book it came from, or null.

recipe.source_authorstring or nullrequired

The author, or null.

recipe.icon_file_idstring or nullrequired

The small icon, or null if there isn't one yet.

recipe.card_file_idstring or nullrequired

The illustrated card image, or null if there isn't one yet.

recipe.import_stateone of: none, importing, imported, failedrequired

none (made here), importing (a URL import is running), imported, or failed.

recipe.import_errorstring or nullrequired

Why a failed import failed, in words for people, or null.

recipe.shown_servingsintegerrequired

The servings the ingredient amounts are shown for.

recipe.ingredientsarray of objectsrequired

In order, scaled to shown_servings.

recipe.ingredients[].idstringrequired

A recipe ingredient ID, such as rci_01JC0000000000000000000000.

recipe.ingredients[].sectionstring or nullrequired

The group heading, or null.

recipe.ingredients[].positionintegerrequired

Order across the whole recipe, from 0.

recipe.ingredients[].product_idstring or nullrequired

The product it is linked to, or null.

recipe.ingredients[].namestringrequired

The ingredient as written.

recipe.ingredients[].quantitynumber or nullrequired

The amount at shown_servings, or null for 'to taste'.

recipe.ingredients[].quantity_maxnumber or nullrequired

The top of a range at shown_servings, or null.

recipe.ingredients[].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

The unit, or null for a plain count.

recipe.ingredients[].preparationstring or nullrequired

How it is prepared, or null.

recipe.ingredients[].is_optionalbooleanrequired

Whether it can be left out.

recipe.ingredients[].amountstring or nullrequired

The amount for people, such as "1½ cups", or null with no quantity.

recipe.stepsarray of objectsrequired

In order.

recipe.steps[].idstringrequired

A recipe step ID, such as rcs_01JC0000000000000000000000.

recipe.steps[].sectionstring or nullrequired

The group heading, or null.

recipe.steps[].positionintegerrequired

Order across the whole recipe, from 0.

recipe.steps[].textstringrequired

The instruction, as written.

recipe.steps[].timer_secondsinteger or nullrequired

The timer this step offers, in seconds, or null.

recipe.steps[].notestring or nullrequired

A kitchen note on this step, or null.

recipe.steps[].ingredient_idsarray of stringsrequired

The ingredients this step uses.

recipe.cooksarray of objectsrequired

Every time it was cooked, newest first.

recipe.cooks[].idstringrequired

A recipe cook ID, such as rck_01JC0000000000000000000000.

recipe.cooks[].cooked_onstring (date)required

The day it was cooked.

recipe.cooks[].servingsintegerrequired

How many servings were made.

recipe.cooks[].notestring or nullrequired

How it went, or null.

recipe.cooks[].cooked_by_person_idstring or nullrequired

Who cooked it, or null if unknown.

recipe.cooks[].cooked_bystring or nullrequired

Their name, or null if unknown.

recipe.cooks[].meal_idstring or nullrequired

The planned meal it was cooked for, or null.

recipe.based_onobject or nullrequired

The recipe this is a version of, or null.

recipe.based_on.idstringrequired

A recipe ID, such as rcp_01JC0000000000000000000000.

recipe.based_on.titlestringrequired

Its title.

recipe.versionsarray of objectsrequired

Recipes made from this one.

recipe.versions[].idstringrequired

A recipe ID, such as rcp_01JC0000000000000000000000.

recipe.versions[].titlestringrequired

Its title.

Errors#

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

A whole recipe: 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 recipe

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

{
  "recipe": {
    "id": "rcp_01M6V9CSD8VZYF11AC568Y7QPZ",
    "created_at": "2026-11-07T15:17:52.168Z",
    "updated_at": "2026-11-07T15:17:52.168Z",
    "title": "Tomato and white bean orzo",
    "summary": "One pot, 30 minutes. Good the next day too.",
    "servings": 4,
    "prep_minutes": 10,
    "cook_minutes": 20,
    "total_minutes": 30,
    "notes": null,
    "based_on_recipe_id": null,
    "source_url": null,
    "source_title": null,
    "source_site": null,
    "source_author": null,
    "icon_file_id": null,
    "card_file_id": null,
    "import_state": "none",
    "import_error": null,
    "shown_servings": 4,
    "ingredients": [
      {
        "id": "rci_01M6V9CSD8MJZZDY9C256CQPD0",
        "section": null,
        "position": 0,
        "product_id": "prd_01M6V9CSAT6M58YWZ1H4DFY9K2",
        "name": "olive oil",
        "quantity": 2,
        "quantity_max": null,
        "unit": "tbsp",
        "preparation": null,
        "is_optional": false,
        "amount": "2 tbsp"
      },
      {
        "id": "rci_01M6V9CSD8HFZX76ACQ7929C3Z",
        "section": null,
        "position": 1,
        "product_id": null,
        "name": "garlic",
        "quantity": 3,
        "quantity_max": 4,
        "unit": "clove",
        "preparation": "minced",
        "is_optional": false,
        "amount": "3–4 cloves"
      },
      {
        "id": "rci_01M6V9CSD8J6BVN3AC4YDGRFCN",
        "section": null,
        "position": 2,
        "product_id": "prd_01M6V9CSAQDSZHDQNXHXRCDA8Z",
        "name": "orzo",
        "quantity": 1,
        "quantity_max": null,
        "unit": "cup",
        "preparation": null,
        "is_optional": false,
        "amount": "1 cup"
      },
      {
        "id": "rci_01M6V9CSD8Q0HKRAACH243A5QR",
        "section": null,
        "position": 3,
        "product_id": null,
        "name": "crushed tomatoes",
        "quantity": 1,
        "quantity_max": null,
        "unit": "can",
        "preparation": null,
        "is_optional": false,
        "amount": "1 can"
      },
      {
        "id": "rci_01M6V9CSD8GKH358ACE12HS4ES",
        "section": null,
        "position": 4,
        "product_id": null,
        "name": "white beans",
        "quantity": 1,
        "quantity_max": null,
        "unit": "can",
        "preparation": "drained and rinsed",
        "is_optional": false,
        "amount": "1 can"
      },
      {
        "id": "rci_01M6V9CSD8DPC2ZFAC3657BTP5",
        "section": null,
        "position": 5,
        "product_id": null,
        "name": "vegetable broth",
        "quantity": 2,
        "quantity_max": null,
        "unit": "cup",
        "preparation": null,
        "is_optional": false,
        "amount": "2 cups"
      },
      {
        "id": "rci_01M6V9CSD8Y6T0ADACG3WMTNWC",
        "section": null,
        "position": 6,
        "product_id": null,
        "name": "baby spinach",
        "quantity": 2,
        "quantity_max": null,
        "unit": "cup",
        "preparation": null,
        "is_optional": true,
        "amount": "2 cups"
      }
    ],
    "steps": [
      {
        "id": "rcs_01M6V9CSD83SCWCMACXFJ7CBK6",
        "section": null,
        "position": 0,
        "text": "Warm the oil in a wide pot. Cook the garlic for 1 minute.",
        "timer_seconds": 60,
        "note": null,
        "ingredient_ids": [
          "rci_01M6V9CSD8MJZZDY9C256CQPD0",
          "rci_01M6V9CSD8HFZX76ACQ7929C3Z"
        ]
      },
      {
        "id": "rcs_01M6V9CSD8B7WBT18BW4WS3FAY",
        "section": null,
        "position": 1,
        "text": "Stir in the orzo, tomatoes and broth. Simmer until the orzo is tender, stirring now and then.",
        "timer_seconds": 600,
        "note": null,
        "ingredient_ids": [
          "rci_01M6V9CSD8J6BVN3AC4YDGRFCN",
          "rci_01M6V9CSD8Q0HKRAACH243A5QR",
          "rci_01M6V9CSD8DPC2ZFAC3657BTP5"
        ]
      },
      {
        "id": "rcs_01M6V9CSD87PWCHB8B8VQY5XHE",
        "section": null,
        "position": 2,
        "text": "Add the beans, and the spinach if you have it. Cook until the spinach wilts.",
        "timer_seconds": 180,
        "note": null,
        "ingredient_ids": [
          "rci_01M6V9CSD8GKH358ACE12HS4ES",
          "rci_01M6V9CSD8Y6T0ADACG3WMTNWC"
        ]
      }
    ],
    "cooks": [],
    "based_on": null,
    "versions": []
  }
}

Open a recipe for more people

servings scales the amounts for this answer only; the recipe stays as written.

Request, curl
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/recipes.recipe.get?recipe_id=rcp_01M6V9CSD8VZYF11AC568Y7QPZ&servings=8' \
  -H "Cookie: rigel_session=$RIGEL_SESSION"
Request, TypeScript
const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/recipes.recipe.get?recipe_id=rcp_01M6V9CSD8VZYF11AC568Y7QPZ&servings=8", {
  headers: {
    Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
  },
});
const data = await response.json();
Request, HTTP
GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/recipes.recipe.get?recipe_id=rcp_01M6V9CSD8VZYF11AC568Y7QPZ&servings=8 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_01M6V9CSDQY9BJX6NYASQ3J692

{
  "recipe": {
    "id": "rcp_01M6V9CSD8VZYF11AC568Y7QPZ",
    "created_at": "2026-11-07T15:17:52.168Z",
    "updated_at": "2026-11-07T15:17:52.168Z",
    "title": "Tomato and white bean orzo",
    "summary": "One pot, 30 minutes. Good the next day too.",
    "servings": 4,
    "prep_minutes": 10,
    "cook_minutes": 20,
    "total_minutes": 30,
    "notes": null,
    "based_on_recipe_id": null,
    "source_url": null,
    "source_title": null,
    "source_site": null,
    "source_author": null,
    "icon_file_id": null,
    "card_file_id": null,
    "import_state": "none",
    "import_error": null,
    "shown_servings": 8,
    "ingredients": [
      {
        "id": "rci_01M6V9CSD8MJZZDY9C256CQPD0",
        "section": null,
        "position": 0,
        "product_id": "prd_01M6V9CSAT6M58YWZ1H4DFY9K2",
        "name": "olive oil",
        "quantity": 4,
        "quantity_max": null,
        "unit": "tbsp",
        "preparation": null,
        "is_optional": false,
        "amount": "4 tbsp"
      },
      {
        "id": "rci_01M6V9CSD8HFZX76ACQ7929C3Z",
        "section": null,
        "position": 1,
        "product_id": null,
        "name": "garlic",
        "quantity": 6,
        "quantity_max": 8,
        "unit": "clove",
        "preparation": "minced",
        "is_optional": false,
        "amount": "6–8 cloves"
      },
      {
        "id": "rci_01M6V9CSD8J6BVN3AC4YDGRFCN",
        "section": null,
        "position": 2,
        "product_id": "prd_01M6V9CSAQDSZHDQNXHXRCDA8Z",
        "name": "orzo",
        "quantity": 2,
        "quantity_max": null,
        "unit": "cup",
        "preparation": null,
        "is_optional": false,
        "amount": "2 cups"
      },
      {
        "id": "rci_01M6V9CSD8Q0HKRAACH243A5QR",
        "section": null,
        "position": 3,
        "product_id": null,
        "name": "crushed tomatoes",
        "quantity": 2,
        "quantity_max": null,
        "unit": "can",
        "preparation": null,
        "is_optional": false,
        "amount": "2 cans"
      },
      {
        "id": "rci_01M6V9CSD8GKH358ACE12HS4ES",
        "section": null,
        "position": 4,
        "product_id": null,
        "name": "white beans",
        "quantity": 2,
        "quantity_max": null,
        "unit": "can",
        "preparation": "drained and rinsed",
        "is_optional": false,
        "amount": "2 cans"
      },
      {
        "id": "rci_01M6V9CSD8DPC2ZFAC3657BTP5",
        "section": null,
        "position": 5,
        "product_id": null,
        "name": "vegetable broth",
        "quantity": 4,
        "quantity_max": null,
        "unit": "cup",
        "preparation": null,
        "is_optional": false,
        "amount": "4 cups"
      },
      {
        "id": "rci_01M6V9CSD8Y6T0ADACG3WMTNWC",
        "section": null,
        "position": 6,
        "product_id": null,
        "name": "baby spinach",
        "quantity": 4,
        "quantity_max": null,
        "unit": "cup",
        "preparation": null,
        "is_optional": true,
        "amount": "4 cups"
      }
    ],
    "steps": [
      {
        "id": "rcs_01M6V9CSD83SCWCMACXFJ7CBK6",
        "section": null,
        "position": 0,
        "text": "Warm the oil in a wide pot. Cook the garlic for 1 minute.",
        "timer_seconds": 60,
        "note": null,
        "ingredient_ids": [
          "rci_01M6V9CSD8MJZZDY9C256CQPD0",
          "rci_01M6V9CSD8HFZX76ACQ7929C3Z"
        ]
      },
      {
        "id": "rcs_01M6V9CSD8B7WBT18BW4WS3FAY",
        "section": null,
        "position": 1,
        "text": "Stir in the orzo, tomatoes and broth. Simmer until the orzo is tender, stirring now and then.",
        "timer_seconds": 600,
        "note": null,
        "ingredient_ids": [
          "rci_01M6V9CSD8J6BVN3AC4YDGRFCN",
          "rci_01M6V9CSD8Q0HKRAACH243A5QR",
          "rci_01M6V9CSD8DPC2ZFAC3657BTP5"
        ]
      },
      {
        "id": "rcs_01M6V9CSD87PWCHB8B8VQY5XHE",
        "section": null,
        "position": 2,
        "text": "Add the beans, and the spinach if you have it. Cook until the spinach wilts.",
        "timer_seconds": 180,
        "note": null,
        "ingredient_ids": [
          "rci_01M6V9CSD8GKH358ACE12HS4ES",
          "rci_01M6V9CSD8Y6T0ADACG3WMTNWC"
        ]
      }
    ],
    "cooks": [],
    "based_on": null,
    "versions": []
  }
}

For Rigel#

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