recipes

Create a chef-owned draft recipe from pages or a URL

Turns photographed recipe pages or a recipe URL into a chef-owned draft. Supply either pages or url. Ingredients are resolved against the shared CNF catalogue rather than a patient's addons, since a library recipe should reference catalogue foods. Every extracted line is recorded, matched or not, so unresolved lines can be finished through the review routes instead of being dropped. The recipe is created as a private draft and cannot be published while any line is unresolved.

post/chefs/recipes/scan

Request body

urlstring nullable

Response

successful operation

authorstring nullable
calculated_servingsnumber nullable
calculation_versionstring nullable
cc_override_keysstring[] nullable
chef_idinteger nullable
curation_status'draft' | 'published' | 'archived'
custom_itemboolean nullable
filter_tagsstring[] nullable
food_namestring nullable
food_name_aliasstring nullable
food_name_alias_translationsobject nullable
food_name_translationsobject nullable
forked_from_recipe_idinteger nullable
idnumber required
image_urlstring nullable
ingredientsstring[] required
instructions_strstring nullable
internal_notesstring nullable
labelstring required
label_translationsobject nullable required
net_serving_size_gnumber nullable
notestring nullable
organizationstring nullable
patient_idinteger nullable
percent_eatennumber nullable
preparation_method'' | 'homemade' | 'restaurant' | 'cpg' | 'store_bought' | 'other'
serving_unit_amountnumber nullable
serving_unit_labelstring nullable
serving_unit_label_translationsobject nullable
servingsnumber nullable
source'user' | 'chef' | 'imported' | 'edamam' nullable
story_moderation_status'draft' | 'approved' | 'rejected' nullable

Curator-only; null in a patient response, which says nothing about editorial state.

tag_override_keysstring[] nullable
unresolved_ingredient_countinteger nullable
urlstring nullable required
variant_labelsstring[] nullable

How this copy differs from its original, e.g. vegan or gluten-free. Only set on recipes with forked_from_recipe_id.

visibility'private' | 'public' | 'shared'
yield_amountnumber nullable
yield_unit_labelstring nullable

Example response

{
  "author": "Jane Doe",
  "image_url": "https://example.com",
  "ingredient_groups": [
    {
      "ingredients": [
        {
          "description": "1 cup of milk",
          "food_name": "milk",
          "food_name_alias": "milk",
          "nutrient_overrides": {
            "aa_patient": {
              "ontology": {
                "id": 42,
                "levels": [
                  "food"
                ]
              }
            },
            "bb_reviewer": {
              "ontology": {
                "id": 42,
                "levels": [
                  "food"
                ]
              }
            },
            "cc_external": {
              "ontology": {
                "id": 42,
                "levels": [
                  "food"
                ]
              }
            },
            "dd_estimate": {
              "ontology": {
                "id": 42,
                "levels": [
                  "food"
                ]
              }
            },
            "ee_validation": {
              "ontology": {
                "id": 42,
                "levels": [
                  "food"
                ]
              }
            }
          },
          "serving_unit_label": "cup"
        }
      ]
    }
  ],
  "ingredient_responses": [
    {
      "description": "1 cup of milk",
      "food_name": "milk",
      "food_name_alias": "milk",
      "nutrient_overrides": {
        "aa_patient": {
          "ontology": {
            "id": 42,
            "levels": [
              "food"
            ]
          }
        },
        "bb_reviewer": {
          "ontology": {
            "id": 42,
            "levels": [
              "food"
            ]
          }
        },
        "cc_external": {
          "ontology": {
            "id": 42,
            "levels": [
              "food"
            ]
          }
        },
        "dd_estimate": {
          "ontology": {
            "id": 42,
            "levels": [
              "food"
            ]
          }
        },
        "ee_validation": {
          "ontology": {
            "id": 42,
            "levels": [
              "food"
            ]
          }
        }
      },
      "serving_unit_label": "cup"
    }
  ],
  "ingredients": [
    "1 cup milk"
  ],
  "instructions_str": "Some instructions",
  "label": "Quinoa Salad",
  "nutrient_overrides": {
    "aa_patient": {
      "ontology": {
        "id": 42,
        "levels": [
          "food"
        ]
      }
    },
    "bb_reviewer": {
      "ontology": {
        "id": 42,
        "levels": [
          "food"
        ]
      }
    },
    "cc_external": {
      "ontology": {
        "id": 42,
        "levels": [
          "food"
        ]
      }
    },
    "dd_estimate": {
      "ontology": {
        "id": 42,
        "levels": [
          "food"
        ]
      }
    },
    "ee_validation": {
      "ontology": {
        "id": 42,
        "levels": [
          "food"
        ]
      }
    }
  },
  "organization": "Diabetes Canada",
  "url": "https://example.com"
}

Changes