Download OpenAPI specification:Download
Welcome to the Developer Portal for the SmartWithFood Recipe API v1 (live since July 4, 2023). The highlight of this API is the productize endpoint. This powerful feature enables you to convert individual recipes into comprehensive shopping lists with a single API call. Seamlessly integrate this functionality into your application, making it easier than ever for users to gather ingredients for their next culinary adventure.
On this developer portal you find the API specifications including a short description of every field, a request example and a response example for every endpoint, and security information, as well as information about the non-functional requirements you can expect from our API is provided. Furthermore, you can find information on how to get started using our API and on who to contact when you are in need of further assistance.
Follow the following steps to easily get started with our Recipe API.
Should you have any questions or need further assistance, please do not hesitate to contact our support team at support@smartwithfood.com or at https://smartwithfood.atlassian.net/servicedesk/customer/portal/6.
The change log in our API developer portal serves as a chronological record detailing updates, enhancements, and modifications to the API, offering developers a transparent history of changes and version releases for improved clarity and understanding.
Modified 'warehouses' request parameter
Modified 'article' object
Modified 'article' promotions object
We are committed to providing you with a seamless and reliable experience when integrating our API into your applications. Below you can find the non-functional requirements you can expect from our API.
Productize
Our API aims for an availability of 99.9%. This translates to approximately 8.5 hours of planned downtime per year.
Normal Circumstances
Peak Circumstances
With this Recipe API you can:
Check if the Recipe API is available
Succesful operation.
Resource not found.
The caller is doing too many requests in a small timeframe.
The server could not process the request.
{- "title": "Not Found",
- "status": 404,
- "detail": "The requested path was not found",
- "instance": "/recipe/v1/productise"
}
Convert a recipe ID, a recipe identifier or a list of recipe ingredients to articles.
Succesful operation.
The request could not be understood by the server due to malformed syntax.
The caller is not authorized to execute the endpoint.
Resource not found.
Not Acceptable.
The caller is doing too many requests in a small timeframe.
The server could not process the request.
{- "articleLimit": 1,
- "lines": [
- "110g kaas",
- "2 aardappelen",
- "1kg prei"
], - "recipe": "666f17f0-382e-431b-9275-2e3bbb482771",
- "select": [
- "recipe.id",
- "recipe.title",
- "article.id",
- "article.name"
], - "warehouses": [
- "branchId:7863",
- [
- "bannerCode:CO",
- "countryCode:BE",
- "branchType:HANDOVER_POINT"
], - [
- "bannerCode:2B",
- "sellingPartner:CLPBE"
]
], - "brands": [
- "Boni Selection",
- "Danone"
], - "allergens": {
- "must": [
- "gluten",
- "ACADA715-3842-11EA-BA36-6E1C41F2F90A"
], - "mustNot": [
- "nuts",
- "ACFA978A-3842-11EA-BA36-6E1C41F2F90A"
]
}, - "lifestyles": {
- "must": [
- "veganism",
- "0A06EFC4-3843-11EA-BA36-6E1C41F2F90A"
], - "mustNot": [
- "halal",
- "09F0E916-3843-11EA-BA36-6E1C41F2F90A"
]
}, - "preferences": {
- "must": [
- "chocolate",
- "38ba2e76-abad-42ff-a648-d5ef8db434b1"
], - "mustNot": [
- "addedSugar",
- "8eb692d6-5e13-42bc-9cfa-61d6cd8a66d0"
]
}, - "mediaSizes": [
- "small",
- "100x100"
], - "customerId": "1234585",
- "sort": [
- "price:B:asc",
- "measurementUnitPrice:B:desc",
- "ecoscore:desc",
- "nutriscore:asc"
], - "baseYield": 4,
- "targetYield": 6,
- "relevance": {
- "must": [
- "override"
], - "mustNot": [
- "override"
]
}
}
{- "totalLines": 12,
- "recipe": {
- "id": "9BF104F0-957C-11EC-A6C0-B92742570A34",
- "identifiers": [
- {
- "id": "e62aaf74-86b7-4231-8c30-0dca7d5c4e7d",
- "type": "sourceId",
- "identifier": "30542"
}
], - "title": {
- "language": "nl",
- "text": "Hartige herfsttaart"
}, - "description": {
- "language": "nl",
- "text": "Dit is een recept voor een heerlijke hartige taart met herfstgroenten."
}, - "allergens": [
- {
- "id": "61c5bf4b-fbcf-48d0-ae21-34c9bb3151a6",
- "name": "gluten",
- "value": "present"
}
], - "lifestyles": [
- {
- "id": "61c5bf4b-fbcf-48d0-ae21-34c9bb3151a6",
- "name": "halal",
- "value": "true"
}
], - "preferences": [
- {
- "id": "61c5bf4b-fbcf-48d0-ae21-34c9bb3151a6",
- "name": "chocolate",
- "value": "present"
}
], - "cookTime": {
- "duration": 15,
- "unit": "s"
}, - "prepTime": {
- "duration": 15,
- "unit": "s"
}, - "totalTime": {
- "duration": 15,
- "unit": "s"
}, - "yield": 4,
- "portionWeight": 500,
- "nutriScore": "A",
- "budget": {
- "score": 3,
- "indicator": "none"
}, - "difficulty": {
- "score": 3,
- "indicator": "none"
}, - "lines": [
- {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "name": {
- "language": "nl",
- "text": "kg broccoli"
}, - "amount": 2,
- "ingredient": {
- "name": [
- {
- "language": "nl",
- "text": "broccoli",
- "plural": true
}
], - "unit": [
- {
- "language": "nl",
- "text": "kg",
- "plural": true
}
], - "ironStock": true
}, - "order": 5,
- "createdAt": "2019-08-24T14:15:22Z",
- "modifiedAt": "2019-08-24T14:15:22Z"
}
], - "instructions": [
- {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "title": {
- "language": "nl",
- "text": "Deeg"
}, - "description": {
- "language": "nl",
- "text": "Zeef de bloem met het bakpoeder en zout. Doe in de kom van de keukenrobot en meng met de koude boter met de K-klopper. Voeg de eidooier en zure room lepel per lepel toe. Laat het deeg kort en snel kneden. Rol het deeg tot een bol en leg minstens 1 u in de koelkast."
}, - "tips": [
- {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "type": {
- "language": "nl",
- "text": "Kooktip"
}, - "name": {
- "language": "nl",
- "text": "Bakken"
}, - "description": {
- "language": "nl",
- "text": "Bak de aardappelschijfjes op hoge temperatuur voor een krokant korstje."
}, - "order": 3,
- "createdAt": "2019-08-24T14:15:22Z",
- "modifiedAt": "2019-08-24T14:15:22Z"
}
], - "media": [
- {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "type": "100x100",
- "language": "all",
- "title": {
- "language": "nl",
- "text": "Halloween buffet"
}, - "description": {
- "language": "nl",
- "text": "In deze video wordt het organiseren van een halloween buffet gedemonstreerd."
}, - "order": 2,
- "createdAt": "2019-08-24T14:15:22Z",
- "modifiedAt": "2019-08-24T14:15:22Z"
}
], - "order": 2,
- "createdAt": "2019-08-24T14:15:22Z",
- "modifiedAt": "2019-08-24T14:15:22Z"
}
], - "media": [
- {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "type": "100x100",
- "language": "all",
- "title": {
- "language": "nl",
- "text": "Halloween buffet"
}, - "description": {
- "language": "nl",
- "text": "In deze video wordt het organiseren van een halloween buffet gedemonstreerd."
}, - "order": 2,
- "createdAt": "2019-08-24T14:15:22Z",
- "modifiedAt": "2019-08-24T14:15:22Z"
}
], - "warehouses": [
- {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "name": {
- "language": "nl",
- "text": "Name warehouse"
}
}
], - "tips": [
- {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "type": {
- "language": "nl",
- "text": "Bijhorende dranken"
}, - "name": {
- "language": "nl",
- "text": "Tip over bijhorende dranken"
}, - "description": {
- "language": "nl",
- "text": "Een Cabernet Sauvignon past goed bij dit gerecht."
}, - "order": 4,
- "createdAt": "2019-08-24T14:15:22Z",
- "modifiedAt": "2019-08-24T14:15:22Z"
}
], - "tags": [
- {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "type": {
- "language": "nl",
- "text": "Moment"
}, - "name": {
- "language": "nl",
- "text": "BBQ"
}, - "media": {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "type": "100x100",
- "language": "all",
- "title": {
- "language": "nl",
- "text": "Halloween buffet"
}, - "description": {
- "language": "nl",
- "text": "In deze video wordt het organiseren van een halloween buffet gedemonstreerd."
}, - "order": 2,
- "createdAt": "2019-08-24T14:15:22Z",
- "modifiedAt": "2019-08-24T14:15:22Z"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "modifiedAt": "2019-08-24T14:15:22Z"
}
], - "utensils": [
- {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "name": {
- "language": "nl",
- "text": "Cakevorm"
}, - "media": {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "type": "100x100",
- "language": "all",
- "title": {
- "language": "nl",
- "text": "Halloween buffet"
}, - "description": {
- "language": "nl",
- "text": "In deze video wordt het organiseren van een halloween buffet gedemonstreerd."
}, - "order": 2,
- "createdAt": "2019-08-24T14:15:22Z",
- "modifiedAt": "2019-08-24T14:15:22Z"
}, - "amount": 2,
- "createdAt": "2019-08-24T14:15:22Z",
- "modifiedAt": "2019-08-24T14:15:22Z"
}
], - "nutritionalsPer100gram": [
- [
- {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "name": {
- "language": "nl",
- "text": "Suiker"
}, - "amount": {
- "value": 543254.4567,
- "unit": "SUGAR",
- "factor": 0.239
}, - "conversion": {
- "value": 1.38501,
- "unit": "g",
- "factor": 0.000001
}, - "createdAt": "2019-08-24T14:15:22Z",
- "modifiedAt": "2019-08-24T14:15:22Z"
}
]
], - "nutritionalsPerPortion": [
- [
- {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "name": {
- "language": "nl",
- "text": "Suiker"
}, - "amount": {
- "value": 543254.4567,
- "unit": "SUGAR",
- "factor": 0.239
}, - "conversion": {
- "value": 1.38501,
- "unit": "g",
- "factor": 0.000001
}, - "createdAt": "2019-08-24T14:15:22Z",
- "modifiedAt": "2019-08-24T14:15:22Z"
}
]
], - "status": {
- "state": "approved",
- "modifiedAt": "2019-08-24T14:15:22Z"
}, - "customFields": [
- {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "type": "select",
- "name": "visibleOn",
- "description": "Specifies if content is visible on web and/or mobile",
- "createdAt": "2022-07-13T15:34:16+0200",
- "modifiedAt": "2022-07-13T15:34:16+0200",
- "multipleOptions": false,
- "value": "web"
}, - {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "type": "select",
- "name": "visibleOn",
- "description": "Specifies if content is visible on web and/or mobile",
- "createdAt": "2022-07-13T15:34:16+0200",
- "modifiedAt": "2022-07-13T15:34:16+0200",
- "multipleOptions": true,
- "values": [
- "web",
- "mobile"
]
}
], - "createdAt": "2019-08-24T14:15:22Z",
- "modifiedAt": "2019-08-24T14:15:22Z"
}, - "lines": [
- {
- "line": "2 eieren",
- "order": 3,
- "results": [
- {
- "calculation": {
- "amount": 660,
- "unit": "g",
- "loss": 0
}, - "article": {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "name": {
- "language": "nl",
- "text": "Vanille ijs 1kg"
}, - "names": [
- {
- "language": "nl",
- "text": "Vanille ijs",
- "type": "longNameDescription"
}
], - "description": {
- "language": "nl",
- "text": "Heerlijk Belgisch vanille ijs."
}, - "identifiers": [
- {
- "id": "e62aaf74-86b7-4231-8c30-0dca7d5c4e7d",
- "type": "commercialArticleNumber",
- "identifier": "30542"
}
], - "barcodes": [
- "04008789053381",
- "04008789753380"
], - "brand": {
- "language": "nl",
- "text": "Danone"
}, - "brands": [
- {
- "brand": {
- "language": "nl",
- "text": "Danone"
}, - "order": 1
}
], - "warehouses": {
- "id": "e1b044ad-8998-45cd-962b-b0fd8ca7cc0d",
- "name": {
- "language": "nl",
- "text": "Name warehouse"
}, - "identifiers": [
- {
- "id": "T4A4CCP2-25BD-48C6-8382-782296AEB6PA",
- "type": "branchId",
- "identifier": "3873"
}, - {
- "id": "B4A4CCA2-25BD-48C6-8382-782296AEB6PA",
- "type": "countryCode",
- "identifier": "BE"
}, - {
- "id": "B4A4CCA2-25BD-48C6-8382-782236AEB6DA",
- "type": "sellingPartner",
- "identifier": "CLP"
}, - {
- "id": "Z4A4CCA2-25BD-48C6-8382-782236AEB6DA",
- "type": "type",
- "identifier": "HANDOVER_POINT"
}, - {
- "id": "B4A4CCA2-65BD-48C6-8382-782296AEB6PA",
- "type": "bannerCode",
- "identifier": "CO"
}
], - "prices": [
- {
- "priceType": "reducedPrice",
- "currency": "EUR",
- "price": 5.99,
- "priceUnit": "kg",
- "measurementUnitPrice": 1.45,
- "measurementUnit": "l",
- "quantity": 5,
- "customFlag": "redPrice",
- "priceReason": "C",
- "referencePrice": 3.45,
- "retentionPeriod": 30
}
]
}, - "media": [
- {
- "id": "e1b044ad-8998-45cd-962b-b0fd8ca7cc0d",
- "type": "100x100",
- "language": "nl",
- "title": "Celery chopping",
- "description": "This image shows how to chop celery."
}
], - "ecoScore": "A",
- "nutriScore": "A",
- "allergens": [
- {
- "id": "e1b044ad-8998-45cd-962b-b0fd8ca7cc0d",
- "name": "gluten",
- "value": "present"
}
], - "lifestyles": [
- {
- "id": "e1b044ad-8998-45cd-962b-b0fd8ca7cc0d",
- "name": "halal",
- "value": "true"
}
], - "preferences": [
- {
- "id": "e1b044ad-8998-45cd-962b-b0fd8ca7cc0d",
- "name": "chocolate",
- "value": "present"
}
], - "servings": 5,
- "amount": 1,
- "amountUnit": "piece",
- "promotions": [
- {
- "id": "d5958dda-df78-4fc2-8524-62f8867e0501",
- "type": "withEvery",
- "maxTimes": 2,
- "warehouses": [
- {
- "id": "d5958dda-df78-4fc2-8524-62f8867e0501",
- "startDate": "2022-07-13T15:34:16+0200",
- "endDate": "2023-07-13T15:34:16+0200",
- "identifiers": [
- {
- "id": "e62aaf74-86b7-4231-8c30-0dca7d5c4e7d",
- "type": "branchId",
- "identifier": "3873"
}
]
}
], - "benefits": [
- {
- "type": "percentage",
- "amount": 10,
- "limitUnit": "piece",
- "minLimit": 2,
- "maxLimit": 15,
- "sequence": 1
}
], - "conditions": [
- {
- "limitUnit": "piece",
- "minLimit": 2,
- "maxLimit": 15,
- "sequence": 1
}
]
}
], - "customFields": [
- {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "type": "select",
- "name": "visibleOn",
- "description": "Specifies if content is visible on web and/or mobile",
- "createdAt": "2022-07-13T15:34:16+0200",
- "modifiedAt": "2022-07-13T15:34:16+0200",
- "multipleOptions": false,
- "value": "web"
}, - {
- "id": "38ba2e76-abad-42ff-a648-d5ef8db434b1",
- "type": "select",
- "name": "visibleOn",
- "description": "Specifies if content is visible on web and/or mobile",
- "createdAt": "2022-07-13T15:34:16+0200",
- "modifiedAt": "2022-07-13T15:34:16+0200",
- "multipleOptions": true,
- "values": [
- "web",
- "mobile"
]
}
], - "isWeightArticle": true,
- "weightConversionFactor": 100,
- "orderUnits": [
- "P",
- "Kg",
- "P, Kg"
], - "isPrivateLabel": true,
- "labels": [
- {
- "id": "61c5bf4b-fbcf-48d0-ae21-34c9bb3151a6",
- "identifier": "Gambia",
- "name": {
- "language": "nl",
- "text": "Gambia"
}, - "channels": [
- "CLP"
]
}
], - "relevance": {
- "name": "exactMatch",
- "position": 1
}
}
}
], - "ironStock": true
}
], - "yield": 6
}