Manual or Assigned Intakes

Create intakes without an image or barcode by selecting existing dishes or defining food items directly from ingredient IDs and quantities. Supports single-user creation, bulk assignment, timestamp overrides, and personalized meal plans.

Plan & Token Requirements

Feature available in the following LogMeal Plans:

Analyse
Monitor
Recommend
Custom

Accessible by the following User Types:

⚫ APICompany | šŸ”“ APIUser | šŸ”µ APIUserManager

What It Does

Manual Intakes allow creating a meal intake without image-based prediction. For each food item, provide either an existing dish ID and/or, optionally, omit the dish id and provide an ingredient breakdown. You may also supply quantity (serving size) and easy-to-modulate ingredient levels (salt, sugar, oil).
This is ideal when users forget to take a photo, when recording historic meals, or when professionals need to log meals on behalf of users.

manual intake food upload food diary
history and reporting intakes diary

Creating Custom Dishes From Scratch

Optionally, an APIUser or APIUserManager can create a one-off food item from scratch without relying on a pre-existing catalog dish ID.

To execute this workflow, follow these 3 steps:

1. Define the Ingredient List
Retrieve valid ingredient IDs through GET /dataset/ingredients, then determine the ingredients and quantities. You may preview the resulting nutrition by calling POST /nutrition/recipe/compute_nutrients.

2. Create the Intake
Call POST /v2/intake/manualInput/{userId}. Omit the dish id and provide a non-empty ingredients list containing valid ingredientId values. You can provide a custom name for the complete intake using the root-level intake_name parameter.

3. Modify the Name
If the user wants to rename their custom dish after it has been created, use POST /intake/{imageId}/modify_name.

For ingredient-only food items, dish-specific fields such as id, dish_id, foodName, and the per-item name are returned as null. Ingredients, serving size, measures, ingredient-derived food groups, nutritional information, and Nutri-Score are still returned normally.

Related use case: Create a Custom Dish from Scratch with a Manual Intake


When to Use It / Outcomes

  • Users don’t have a photo or prefer manual entry.
  • Professionals need to add meals for their managed users, individually or in bulk.
  • You want to recreate meals from a known dish ID and optionally customize ingredients and quantity.
  • You want to create a one-off food item from scratch using ingredient IDs, without creating or selecting an existing dish.
  • Output: JSON with the created intake (ID, timestamp, dish list) and any overrides applied; on bulk/assign endpoints, creation results per user.

Feature-Specific Details

  • Add one or more food items to record what was eaten.
  • For each food item, provide either a valid dish id or a non-empty ingredients list with valid ingredientId values.
  • Specify easy-to-modulate ingredient levels (salt, sugar, oil) as high, medium, low, or none.
  • Include a serving size in grams for each dish so the system can scale ingredient quantities automatically.
  • Add a timestamp for when the meal was eaten (defaults to the current time if not provided).
  • If both a dish id and ingredients are provided, the supplied ingredients replace the default recipe for that dish.
  • If the dish id is omitted, the supplied ingredients define the complete recipe and are used to calculate serving size, food groups, nutritional information, and Nutri-Score.
  • The system automatically adjusts nutrition based on your quantities and levels.
  • Managers can quickly log or assign meals for one or many users at once.

Related Endpoints

Use the following endpoints to create and manage manual intakes:


Typical Workflow

  1. Collect inputs: for each food item, provide either a dish id and/or, optionally, a non-empty ingredients list. Optionally include levels, quantity, timestamp, and a root-level intake_name.
  2. Single user: call POST /intake/manualInput/{userId}.
  3. Bulk/assignment (managers): call POST /intake/manualInput/bulkAssign.
  4. (Optional) Adjust via POST /intake/modifyNutritionalInfo and/or POST /intake/modifyTimestamp.
  5. Store & display the new intake in History and progress dashboards.

Did this page help you?