Nutrical Solution Ltd Recipes API
Create, read, update, and delete recipes with nutrition analysis.
Create, read, update, and delete recipes with nutrition analysis.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/nutrical-solution-ltd-recipes-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: NutriCal Food & Nutrition Entity Recipes API
version: '2.0'
description: 'The NutriCal API powers apps, programs, and websites with NutriCal''s food and nutrition intelligence for the GCC and beyond: an ingredient database of 40,000+ foods (USDA + NutriCal proprietary), recipe management and nutrition analysis, recipe categories, meal-plan management with per-customer meal plans, and nutrient/allergen metadata used for Saudi FDA / GCC-compliant food labeling. Two public metadata endpoints require no authentication; entity-scoped recipe, category, and meal-plan operations are authenticated with an entity Access-Token; entity provisioning uses an organization API Key.'
contact:
name: NutriCal
url: https://www.nutrical.co
email: info@nutrical.co
x-provenance:
generated: '2026-07-20'
method: generated
source: https://docs.nutrical.co (GitBook) — faithfully transcribed from the published NutriCal API reference; NutriCal publishes no OpenAPI of its own.
servers:
- url: https://api.nutrical.co
description: Production
- url: https://preprodapi.nutrical.co
description: Pre-production / testing environment
tags:
- name: Recipes
description: Create, read, update, and delete recipes with nutrition analysis.
paths:
/external/api/v2/recipes/:
get:
operationId: listRecipes
tags:
- Recipes
summary: Get recipe list
description: Retrieve a list of recipes, optionally filtered by search keyword, category, diet type, allergen, may-contain allergen, sub-recipe flag, and status.
security:
- AccessToken: []
parameters:
- $ref: '#/components/parameters/Search'
- $ref: '#/components/parameters/Paginate'
- $ref: '#/components/parameters/Page'
- $ref: '#/components/parameters/Limit'
- name: category_id__list
in: query
schema:
type: string
description: Filter by category id.
- name: diet_type_id__list
in: query
schema:
type: string
description: Filter by diet type id.
- name: allergen_id__list
in: query
schema:
type: string
description: Filter by allergen id.
- name: may_contain_allergen_id__list
in: query
schema:
type: string
description: Filter by may-contain allergen id.
- name: is_sub_recipe
in: query
schema:
type: integer
description: Filter sub-recipes.
- name: status__list
in: query
schema:
type: string
description: Filter by status, e.g. DRAFT, PUBLISHED.
responses:
'200':
description: Recipe list.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RecipeSummary'
example:
data:
- recipe_id: 66012fb56e04f02dae467994
name: Vitamin D Check
category:
id: 66012fac0bf5649bb780809d
name: Category 1
allergen_id_list: []
may_contain_id_list: []
diet_type_id_list: []
created_at: '2024-03-25T08:03:01'
updated_at: '2024-03-25T08:03:01'
is_sub_recipe: null
cover_image: null
status: DRAFT
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createRecipe
tags:
- Recipes
summary: Create recipe
security:
- AccessToken: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RecipeInput'
example:
name: Cheese Burger
category_id: 66012fac0bf5649bb780809d
sub_category_id: 66012fb11430426b0fdb7eb6
is_sub_recipe: false
description: Cheese Burger with Double Chicken Patty
per_serving_weight_in_gm: 10
ingredient_list:
- quantity: 100
unit: G
ingredient_id: 65bcefbfac924f1103ba5024
yield_percent: 100
responses:
'200':
description: Recipe created successfully.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/RecipeDetail'
message:
type: string
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'500':
$ref: '#/components/responses/ServerError'
/external/api/v2/recipes/{recipeId}/:
get:
operationId: getRecipe
tags:
- Recipes
summary: Get recipe details by ID
security:
- AccessToken: []
parameters:
- name: recipeId
in: path
required: true
schema:
type: string
responses:
'200':
description: Recipe detail.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/RecipeDetail'
'401':
$ref: '#/components/responses/Unauthorized'
/external/api/v2/recipes/{recipeId}:
patch:
operationId: updateRecipe
tags:
- Recipes
summary: Edit recipe
security:
- AccessToken: []
parameters:
- name: recipeId
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RecipeInput'
responses:
'200':
description: Recipe updated.
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/RecipeDetail'
message:
type: string
'401':
$ref: '#/components/responses/Unauthorized'
delete:
operationId: deleteRecipe
tags:
- Recipes
summary: Delete recipe
security:
- AccessToken: []
parameters:
- name: recipeId
in: path
required: true
schema:
type: string
responses:
'200':
description: Recipe deleted.
content:
application/json:
schema:
type: object
properties:
message:
type: string
example:
message: Recipe deleted successfully.
'401':
$ref: '#/components/responses/Unauthorized'
components:
schemas:
RecipeInput:
type: object
required:
- name
properties:
name:
type: string
category_id:
type: string
sub_category_id:
type: string
is_sub_recipe:
type: boolean
description:
type: string
per_serving_weight_in_gm:
type: number
ingredient_list:
type: array
items:
type: object
properties:
quantity:
type: number
unit:
type: string
ingredient_id:
type: string
yield_percent:
type: number
RecipeDetail:
type: object
properties:
receipe_id:
type: string
custom_id:
type:
- string
- 'null'
name:
type: string
description:
type: string
per_serving_weight_in_gm:
type: number
per_serving_selling_price:
type:
- number
- 'null'
nutrients:
type: array
items:
type: object
properties:
nutrient_id:
type: string
quantity:
type: number
total_yield_in_gram:
type: number
total_calorie:
type: number
allergen_id_list:
type: array
items:
type: string
diet_type_list:
type: array
items:
type: object
properties:
diet_type_id:
type: string
name:
type: string
ingredient_list:
type: array
items:
type: object
properties:
name:
type: string
display_name:
type: string
quantity:
type: number
yield_percent:
type: number
unit:
type: string
source:
type: string
RecipeSummary:
type: object
properties:
recipe_id:
type: string
name:
type: string
category:
type: object
properties:
id:
type: string
name:
type: string
allergen_id_list:
type: array
items:
type: string
may_contain_id_list:
type: array
items:
type: string
diet_type_id_list:
type: array
items:
type: string
created_at:
type: string
updated_at:
type: string
is_sub_recipe:
type:
- boolean
- 'null'
cover_image:
type:
- string
- 'null'
status:
type: string
description: DRAFT or PUBLISHED.
parameters:
Paginate:
name: paginate
in: query
required: false
schema:
type: integer
enum:
- 0
- 1
description: Set to 1 to enable pagination.
Limit:
name: limit
in: query
required: false
schema:
type: integer
default: 10
description: Number of records per page.
Search:
name: search
in: query
required: false
schema:
type: string
description: Keyword to filter results by name.
Page:
name: page
in: query
required: false
schema:
type: integer
default: 1
description: Page number to retrieve.
responses:
ServerError:
description: Unexpected server error.
BadRequest:
description: Invalid query parameters or request body.
Unauthorized:
description: Invalid or missing access token / API key.
securitySchemes:
AccessToken:
type: apiKey
in: header
name: Access-Token
description: Entity client access token issued by the Create Entity operation.
ApiKey:
type: apiKey
in: header
name: API Key
description: Organization-level API key (documented header name "API Key"), used to provision entities via the Create Entity operation.