Get Meals
A method to get a meal.
Our API spec clearly shows that each endpoint has two versions - one with meal_plan_id
and one without.
GET
https://api.whisk.com/mealplan/v2/:meal_plan_id/meal
The meal_plan_id
is optional - the endpoint will return the same result whether it is provided or not.
Path Parameters
Name | Type | Description |
---|---|---|
meal_plan_id | string | Optional meal-plan identifier. No need to specify if API requested with UserToken |
period.from.year | integer | |
period.from.month | integer | |
period.from.day | integer | |
period.to.year | integer | |
period.to.month | integer | |
period.to.day | integer | |
fields | array | Additional recipe fields to include in response. Requesting less fields will reduce response size and improve time to response |
{
"meal_plan_id": "string",
"start_date": {
"year": 0,
"month": 0,
"day": 0
},
"end_date": {
"year": 0,
"month": 0,
"day": 0
},
"meals": [
{
"id": "string",
"meal_type": "MEAL_TYPE_INVALID",
"date_time": {
"year": 0,
"month": 0,
"day": 0
},
"content": {
"recipe": {
"id": "string",
"name": "string",
"description": "string",
"ingredients": [
{
"text": "string",
"group": "string",
"linked_products": [
{
"id": "string",
"name": "string",
"images": [
{
"responsive": {
"url": "string",
"width": 0,
"height": 0
},
"url": "string"
}
],
"description": "string",
"url": "string",
"price": {
"rrp": {
"currency_code": "string",
"cents": "string"
}
},
"gtin": "string",
"brand": {
"raw_name": "string"
}
}
]
}
],
"instructions": {
"steps": [
{
"text": "string",
"images": [
{
"responsive": {
"url": "string",
"width": 0,
"height": 0
},
"url": "string"
}
],
"group": "string",
"intents": [
{
"name": "string",
"options": [
{
"key": "string",
"value": 0,
"unit": "string"
}
]
}
],
"labels": [
{
"name": "string",
"labels": [
{
"name": "string"
}
]
}
]
}
]
},
"images": [
{
"responsive": {
"url": "string",
"width": 0,
"height": 0
},
"url": "string"
}
],
"videos": [
{
"content_url": "string",
"embed_url": "string",
"thumbnail": "string"
}
],
"source": {
"name": "string",
"display_name": "string",
"source_recipe_url": "string",
"image": {
"responsive": {
"url": "string",
"width": 0,
"height": 0
},
"url": "string"
},
"license": "LICENCE_INVALID"
},
"servings": 0,
"servings_scaled": 0,
"durations": {
"cook_time": 0,
"prep_time": 0,
"total_time": 0
},
"normalized_ingredients": [
{
"text": "string",
"group": "string",
"analysis": {
"product": {
"canonical_name": "string",
"original_name": "string"
},
"category": {
"canonical_name": "string"
},
"brand": {
"canonical_name": "string"
},
"quantity": 0,
"unit": "string",
"multiplier": 0,
"comment": "string",
"image_url": "string"
},
"source_text": "string",
"labels": [
{
"name": "string",
"labels": [
{
"name": "string"
}
]
}
]
}
],
"nutrition": {
"status": "STATUS_INVALID",
"total": [
{
"label": "string",
"code": "NUTRITION_CODE_INVALID",
"value": 0,
"unit": "NUTRITION_UNIT_INVALID"
}
],
"coverage": 0,
"labels": [
{
"name": "string",
"display_name": "string"
}
],
"health_score": {
"value": 0,
"nutrients_influence": [
{
"code": "NUTRITION_CODE_INVALID",
"influence": 0,
"comment": "string"
}
]
},
"glycemic_index": {
"value": 0
},
"glycemic_load": {
"value": 0
}
},
"labels": {
"meal_type": [
{
"name": "string",
"display_name": "string"
}
],
"cuisine": [
{
"name": "string",
"display_name": "string"
}
],
"category": [
{
"name": "string",
"display_name": "string"
}
],
"technique": [
{
"name": "string",
"display_name": "string"
}
],
"holiday": [
{
"name": "string",
"display_name": "string"
}
],
"seasonality": [
{
"name": "string",
"display_name": "string"
}
]
},
"constraints": {
"violates": {
"diets": [
"DIET_INVALID"
],
"avoidances": [
"AVOIDANCE_INVALID"
]
}
},
"saved": {
"value": true,
"collection_ids": [
"string"
],
"owner": true,
"recipe_type": "RECIPE_TYPE_INVALID"
},
"author": {
"name": "string",
"image": {
"responsive": {
"url": "string",
"width": 0,
"height": 0
},
"url": "string"
}
},
"language": "string",
"custom_labels": [
{
"name": "string",
"labels": [
{
"name": "string"
}
]
}
]
}
},
"generated": true,
"day_slot": 0,
"date": {
"year": 0,
"month": 0,
"day": 0
}
}
],
"week_meals": [
{
"id": "string",
"week_start_date": {
"year": 0,
"month": 0,
"day": 0
},
"content": {
"recipe": {
"id": "string",
"name": "string",
"description": "string",
"ingredients": [
{
"text": "string",
"group": "string",
"linked_products": [
{
"id": "string",
"name": "string",
"images": [
{
"responsive": {
"url": "string",
"width": 0,
"height": 0
},
"url": "string"
}
],
"description": "string",
"url": "string",
"price": {
"rrp": {
"currency_code": "string",
"cents": "string"
}
},
"gtin": "string",
"brand": {
"raw_name": "string"
}
}
]
}
],
"instructions": {
"steps": [
{
"text": "string",
"images": [
{
"responsive": {
"url": "string",
"width": 0,
"height": 0
},
"url": "string"
}
],
"group": "string",
"intents": [
{
"name": "string",
"options": [
{
"key": "string",
"value": 0,
"unit": "string"
}
]
}
],
"labels": [
{
"name": "string",
"labels": [
{
"name": "string"
}
]
}
]
}
]
},
"images": [
{
"responsive": {
"url": "string",
"width": 0,
"height": 0
},
"url": "string"
}
],
"videos": [
{
"content_url": "string",
"embed_url": "string",
"thumbnail": "string"
}
],
"source": {
"name": "string",
"display_name": "string",
"source_recipe_url": "string",
"image": {
"responsive": {
"url": "string",
"width": 0,
"height": 0
},
"url": "string"
},
"license": "LICENCE_INVALID"
},
"servings": 0,
"servings_scaled": 0,
"durations": {
"cook_time": 0,
"prep_time": 0,
"total_time": 0
},
"normalized_ingredients": [
{
"text": "string",
"group": "string",
"analysis": {
"product": {
"canonical_name": "string",
"original_name": "string"
},
"category": {
"canonical_name": "string"
},
"brand": {
"canonical_name": "string"
},
"quantity": 0,
"unit": "string",
"multiplier": 0,
"comment": "string",
"image_url": "string"
},
"source_text": "string",
"labels": [
{
"name": "string",
"labels": [
{
"name": "string"
}
]
}
]
}
],
"nutrition": {
"status": "STATUS_INVALID",
"total": [
{
"label": "string",
"code": "NUTRITION_CODE_INVALID",
"value": 0,
"unit": "NUTRITION_UNIT_INVALID"
}
],
"coverage": 0,
"labels": [
{
"name": "string",
"display_name": "string"
}
],
"health_score": {
"value": 0,
"nutrients_influence": [
{
"code": "NUTRITION_CODE_INVALID",
"influence": 0,
"comment": "string"
}
]
},
"glycemic_index": {
"value": 0
},
"glycemic_load": {
"value": 0
}
},
"labels": {
"meal_type": [
{
"name": "string",
"display_name": "string"
}
],
"cuisine": [
{
"name": "string",
"display_name": "string"
}
],
"category": [
{
"name": "string",
"display_name": "string"
}
],
"technique": [
{
"name": "string",
"display_name": "string"
}
],
"holiday": [
{
"name": "string",
"display_name": "string"
}
],
"seasonality": [
{
"name": "string",
"display_name": "string"
}
]
},
"constraints": {
"violates": {
"diets": [
"DIET_INVALID"
],
"avoidances": [
"AVOIDANCE_INVALID"
]
}
},
"saved": {
"value": true,
"collection_ids": [
"string"
],
"owner": true,
"recipe_type": "RECIPE_TYPE_INVALID"
},
"author": {
"name": "string",
"image": {
"responsive": {
"url": "string",
"width": 0,
"height": 0
},
"url": "string"
}
},
"language": "string",
"custom_labels": [
{
"name": "string",
"labels": [
{
"name": "string"
}
]
}
]
}
}
}
]
}
{
"error_code": "REAL_CODES_ARE_IN_ENDPOINT_DESCRIPTION",
"message": "Additional details about error are not static and can be changed"
}
{
"code": "auth.tokenNotFound"
}
This is unexpected response, something is wrong on our side, please contact: [email protected]
It's important to note that the meal_plan_id
is derived from the user’s ID. This is because Whisk supports a single meal plan for each user at this time. Multiple meal plans will be supported in future versions. Therefore, The user ID is extracted using the OAuth token provided with each endpoint header, as described above.
Fields
Enums | Notes |
RECIPE_FIELD_INVALID | |
RECIPE_FIELD_NORMALIZED_INGREDIENTS | |
RECIPE_FIELD_INSTRUCTIONS | |
RECIPE_FIELD_INSTRUCTION_INTENTS | |
RECIPE_FIELD_NUTRITION | |
RECIPE_FIELD_NUTRITION_COVERAGE | |
RECIPE_FIELD_SAVED | |
RECIPE_FIELD_INGREDIENTS_LINKED_PRODUCTS |
Last updated