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. Add an optional non-empty dishes[].name to label that individual ingredient-only item. The independent root-level intake_name labels the complete intake.

3. Modify the Whole-Intake Name
If the user wants to rename the complete intake after it has been created, use POST /intake/{imageId}/modify_name. This edits intake_name; it is not an item-level rename mechanism.

For ingredient-only food items, catalog identifiers such as id and dish_id remain null. When dishes[].name is supplied, the submitted label is returned in the corresponding foodName and recipe_per_item[].name positions. When it is omitted, both name values remain null. Ingredients, serving size, measures, ingredient-derived food groups, nutritional information, and Nutri-Score are returned normally in either case.

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.
  • Add an optional non-empty name to an ingredient-only item to populate that item's foodName and recipe_per_item[].name values. The text is preserved as submitted and is not translated or resolved against the dish catalog.
  • A name supplied on an item with a valid catalog id never overrides the catalog-derived name.
  • Use the root-level intake_name only as an optional label for the complete intake.
  • 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. Ingredient-only items may also include an item-level name. Optionally include levels, quantity, timestamp, and the independent root-level intake_name for the complete intake.
  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?