Private client access
API keys are issued manually after a discovery call, onboarding review, and approved use case.
Developers
Integrate recipes, meal planning, nutrition tracking, and shopping workflows into your own product. Access is private by design: we review the use case with you, then issue an API key for approved client-facing endpoints.
FoodBot is a Scalefort innovation. Product access lives at foodbot.ng, while company and partnership context lives at scalefort.africa.
Private client access
API keys are issued manually after a discovery call, onboarding review, and approved use case.
Structured JSON
Every endpoint returns a consistent envelope with success, data, and meta. Failed responses include errors.
Built for nutrition workflows
Recipes, planning, nutrition, and shopping endpoints map directly to FoodBot product flows.
Overview
What you send
X-API-Key: fb_live_your_key_hereResponse format
{ success, data, meta, errors }Authentication
Header
X-API-Key: fb_live_your_key_hereLifecycle
Keys are generated by the Scalefort team after FoodBot onboarding. We scope access manually, and production access is only granted after review.
Content API
Fetch public recipes and search FoodBot recipe content for client applications, partner portals, or discovery tools.
/recipes?page=1&pageSize=12&tags=high-protein&tags=quickReturns paginated public recipes with optional tag filtering.
Use this endpoint to populate recipe carousels, content feeds, or category-specific discovery experiences.
Authentication
Approved API key
Headers
Your issued FoodBot client API key.
Query params
Page number starting from 1.
Items per page.
Repeatable tag filters such as high-protein or quick.
curl --request GET \
'https://api.foodbot.io/api/v1/recipes?page=1&pageSize=12&tags=high-protein&tags=quick' \
--header 'X-API-Key: fb_live_your_key_here'Example response
{
"success": true,
"data": [
{
"name": "Chicken Suya Rice Bowl",
"slug": "chicken-suya-rice-bowl",
"description": "A high-protein bowl with smoky spice and quick prep.",
"dietaryTags": ["high-protein", "quick"],
"prepTimeMin": 15,
"cookTimeMin": 20,
"servings": 2
}
],
"meta": {
"page": 1,
"pageSize": 12,
"total": 48
}
}Integration notes
/recipes/search?q=jollof&limit=10Searches public recipes by text query.
Use this for autocomplete, ingredient-led search, or keyword-led recipe discovery experiences.
Authentication
Approved API key
Headers
Your issued FoodBot client API key.
Query params
Search term such as jollof, bean stew, or chicken.
Maximum number of results to return.
curl --request GET \
'https://api.foodbot.io/api/v1/recipes/search?q=jollof&limit=10' \
--header 'X-API-Key: fb_live_your_key_here'Example response
{
"success": true,
"data": [
{
"name": "Classic Jollof Rice",
"slug": "classic-jollof-rice"
},
{
"name": "Party Jollof Chicken Tray",
"slug": "party-jollof-chicken-tray"
}
],
"meta": null
}Planning API
Generate or fetch meal planning data that can be embedded into partner dashboards or health workflows.
/mealplans/currentReturns the active meal plan for the approved client context.
Use this to sync the latest active FoodBot meal plan into a customer dashboard or wellness workflow.
Authentication
Approved API key
Headers
Your issued FoodBot client API key.
curl --request GET \
'https://api.foodbot.io/api/v1/mealplans/current' \
--header 'X-API-Key: fb_live_your_key_here'Example response
{
"success": true,
"data": {
"name": "High Protein Week",
"weekStart": "2026-03-16T00:00:00Z",
"days": [
{
"dayOfWeek": "Monday",
"meals": [
{ "mealType": "Breakfast", "name": "Greek yogurt parfait" }
]
}
]
},
"meta": null
}/mealplans/generateBuilds a meal plan from goals and planning preferences.
Use this when your client flow needs FoodBot to generate a fresh plan from goal and preference inputs.
Authentication
Approved API key
Headers
Your issued FoodBot client API key.
Set to application/json.
Body fields
Examples include weight-loss, maintenance, or muscle-gain.
Number of planning days to generate.
Optional dietary or cuisine preferences.
curl --request POST 'https://api.foodbot.io/api/v1/mealplans/generate' \
--header 'X-API-Key: fb_live_your_key_here' \
--header 'Content-Type: application/json' \
--data '{
"goal": "maintenance",
"days": 7,
"preferences": ["high-protein", "west-african"]
}'Example response
{
"success": true,
"data": {
"name": "Weight Loss Plan",
"days": [
{
"dayOfWeek": "Monday",
"meals": [
{ "mealType": "Lunch", "name": "Suya chicken wrap" }
]
}
]
},
"meta": null
}Tracking API
Read daily nutrition state or send tracking data to FoodBot for downstream analytics and coaching.
/nutrition/todayReturns today’s meal entries together with active macro goals.
Useful for wellness dashboards, summary widgets, or external client portals that need a single daily nutrition snapshot.
Authentication
Approved API key
Headers
Your issued FoodBot client API key.
curl --request GET \
'https://api.foodbot.io/api/v1/nutrition/today' \
--header 'X-API-Key: fb_live_your_key_here'Example response
{
"success": true,
"data": {
"entries": [
{
"id": "67d90db06d99f0d53cde4301",
"name": "Oats and eggs",
"type": "breakfast",
"calories": 420,
"protein": 24
}
],
"goals": {
"calories": 2200,
"protein": 160,
"carbs": 210,
"fat": 70
},
"date": "2026-03-19T00:00:00Z"
},
"meta": null
}/nutrition/logCreates a nutrition log entry for downstream analytics and coaching.
Send normalized meal totals from your client app so FoodBot can keep dashboards, streaks, and insights current.
Authentication
Approved API key
Headers
Your issued FoodBot client API key.
Set to application/json.
Body fields
Meal name displayed in dashboards and recent logs.
Meal category such as breakfast, lunch, dinner, or snack.
Calories for the meal.
Protein in grams.
Carbohydrates in grams.
Fat in grams.
curl --request POST 'https://api.foodbot.io/api/v1/nutrition/log' \
--header 'X-API-Key: fb_live_your_key_here' \
--header 'Content-Type: application/json' \
--data '{
"name": "Oats and eggs",
"type": "breakfast",
"calories": 420,
"protein": 24,
"carbs": 38,
"fat": 15
}'Example response
{
"success": true,
"data": {
"id": "67d90db06d99f0d53cde4301",
"recipeName": "Oats and eggs",
"calories": 420,
"proteinG": 24
},
"meta": null
}/nutrition/exercise-importImports one or more exercise records into FoodBot in a deduplicated batch.
Use this when your client app or partner sync wants to push normalized workout data into FoodBot so dashboards and insights update automatically without manual entry.
Authentication
Bearer JWT for a paid FoodBot account
Headers
Bearer token for a Pro or Nutrition Coach user.
Set to application/json.
Body fields
Sync source identifier such as health_connect, strava, or client_app.
List of normalized exercise records to import.
Stable source-side id used for deduplication.
Workout type such as Running, Walking, Cycling, or Strength.
Workout duration in minutes.
Calories burned if the source provides it.
Optional UTC timestamp for when the workout happened.
curl --request POST 'https://api.foodbot.io/api/v1/nutrition/exercise-import' \
--header 'Authorization: Bearer your_paid_user_token' \
--header 'Content-Type: application/json' \
--data '{
"source": "client_app",
"records": [
{
"externalId": "workout_20260320_001",
"activity": "Running",
"durationMin": 42,
"caloriesBurned": 380,
"occurredAtUtc": "2026-03-20T06:15:00Z"
}
]
}'Example response
{
"success": true,
"data": {
"source": "client_app",
"importedCount": 2,
"skippedCount": 1,
"failedCount": 0,
"failures": []
},
"meta": null
}Integration notes
Operations API
Generate grocery output from active meal plans and keep completion state in sync across client experiences.
/shoppinglist/latestReturns the latest generated shopping list with flat item data.
Use this to render grouped grocery views or mirror FoodBot shopping state into a partner product.
Authentication
Approved API key
Headers
Your issued FoodBot client API key.
curl --request GET \
'https://api.foodbot.io/api/v1/shoppinglist/latest' \
--header 'X-API-Key: fb_live_your_key_here'Example response
{
"success": true,
"data": {
"id": "67d910d26d99f0d53cde43aa",
"generatedAt": "2026-03-19T10:20:00Z",
"items": [
{
"id": "d34f1a95-928f-42f0-bc9d-1f6921519136",
"category": "Produce",
"emoji": "leaf",
"name": "Spinach",
"quantity": "400g",
"isChecked": false
}
]
},
"meta": null
}/shoppinglist/categories/check-stateSets every item in a shopping list category to checked or unchecked.
Use this to drive section-level toggles in external grocery or shopping checklist experiences.
Authentication
Approved API key
Headers
Your issued FoodBot client API key.
Set to application/json.
Body fields
The category name to update, such as Produce.
The target checked state for every item in the category.
curl --request PUT 'https://api.foodbot.io/api/v1/shoppinglist/categories/check-state' \
--header 'X-API-Key: fb_live_your_key_here' \
--header 'Content-Type: application/json' \
--data '{
"category": "Produce",
"isChecked": true
}'Example response
{
"success": true,
"data": {
"category": "Produce",
"isChecked": true,
"updatedCount": 12
},
"meta": null
}Errors
The request shape, parameters, or body values are invalid.
The API key is missing, invalid, expired, or revoked.
Your key exists but does not have access to this endpoint or scope.
The requested resource could not be found.
Your client exceeded the agreed request budget.
Need access?
We review your use case, agree on the endpoint surface, then issue an API key for approved production access.