LogMeal APIUsers Profile Management API
Endpoints that allow APIUsers to get and modify their profiles.Limited to APIUser 🔴 tokens
Endpoints that allow APIUsers to get and modify their profiles.Limited to APIUser 🔴 tokens
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/logmeal:logmeal-apiusers-profile-management-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:
version: 2.1.0
title: Food AI Engine API Documentation APIUsers Profile…
description: Please, refer to https://docs.logmeal.com to find the most up-to-date version of the Food AI Engine API documentation.
contact:
email: support@logmeal.com
servers:
- url: https://api.logmeal.com
description: Production
tags:
- name: APIUsers Profile Management
description: 'Endpoints that allow APIUsers to get and modify their profiles.
Limited to APIUser 🔴 tokens'
externalDocs:
url: https://docs.logmeal.com/docs/guides-essential-concepts-users-and-access-tokens#/
paths:
/v2/profile/changeLanguage:
post:
deprecated: true
tags:
- APIUsers Profile Management
summary: 🔴 Changes current user language
description: '**[NOTE] This endpoint is DEPRECATED. We recommend using the endpoint POST /modifyuserProfileInfo instead.**
This endpoint allows an APIUser to modify their assigned language, which will modify the language of the responses generated by our endpoints.'
requestBody:
content:
application/json:
schema:
type: object
properties:
language:
type: string
example: eng
enum:
- spa
- cat
- eng
- ita
- nld
- fre
- ger
- tur
- gre
- heb
description: Changes the APIUser's current default language. It must be a three-letter ISO 639-2/T code.
required: true
responses:
'200':
description: Language has been successfully changed
content:
application/json:
schema:
type: object
properties:
result:
type: string
example: OK
'400':
description: Bad request
content:
application/json:
schema:
type: object
properties:
code:
type: integer
message:
type: string
examples:
Not allowed to this method:
value:
type: object
properties:
message:
type: string
example: You are not allowed to this method.
'401':
description: Unauthorized, invalid token
'403':
description: You are not allowed to this method.
'404':
description: The specified URL was not found or couldn’t be retrieved
security:
- Bearer: []
operationId: postV2ProfileChangeLanguage
x-operation-id-source: derived
/v2/profile/modifyUserProfileInfo:
post:
tags:
- APIUsers Profile Management
summary: 🔴 Modify the profile information
description: 'This endpoint allows you to modify the profile and main attributes of an end-user (APIUser). This information associated to the user can be used for features like improving and customizing the output of the food recognition capabilities, personalizing the nutrition recommendations and nutrition plans, adapting to the user intake patterns, etc.
Read the specification of the request body to see the available fields with their descriptions.
This endpoint is the same as `/v2/managers/modifyUserProfileInfo` and `/v2/users/modifyUserProfileInfo`.
### 🌍 Geographic and Language Personalization
We highly recommend including the optional fields `country` and `language` in the request body:
- **`country`** (ISO 3166‑1 alpha‑2 code, e.g., `US`, `FR`, `JP`):
Providing the country allows LogMeal to geographically refine its food recognition capabilities.
This enables improved detection accuracy for region-specific dishes and eating patterns, leading to better personalization in nutrition analysis.
- **`language`** (e.g., `en`, `es`, `fr`):
Setting the preferred language ensures that the names of food items, ingredients, nutrients, and other elements are returned in the specified language, offering a better user experience tailored to each APIUser.
Including these parameters increases the contextual accuracy and relevance of all subsequent API responses.
### 🥗 Customizing Recommended Food Group Consumption
You can also use this endpoint to **customize the recommended daily or weekly food group portions** for a user by passing the `min_max_food_groups` field.
This allows setting personalized minimum and/or maximum portion limits per food group, which will be taken into account during dietary analysis and goal calculations.
Important constraints:
- If you want to indicate that a food group has **no minimum requirement**, use `null` as the `min` value. You must **not** use `0`, since `0` would imply the user is expected to consume exactly 0 portions, which is incorrect for `min`.
- If you want to explicitly restrict a user from consuming a food group, set the `max` value to `0`. This means that any intake of that group will be considered a deviation from the goal.'
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
example: John
description: Name of the user (min length=2, max length=30)
surname:
type: string
example: Smith
description: Surname of the user (min length=2, max length=50)
language:
type: string
example: eng
enum:
- spa
- cat
- eng
- ita
- nld
- fre
- ger
- tur
- gre
- heb
description: APIUser's default language. It must be a three-letter ISO 639-2/T code.
sex:
type: integer
example: 2
enum:
- 0
- 1
- 2
- 9
description: Sex of the user. It must be a number, following ISO/IEC 5218.
weight:
type: number
example: 72.3
description: Weight of the user in Kilograms.
height:
type: number
example: 180.6
description: Height of the user in Centimeters.
birth:
type: string
example: '1980-01-01'
description: Date of birth of the user, following the format "YYYY-MM-DD"
lifestyle:
type: string
example: sedentary
enum:
- sedentary
- light
- moderate
- high
- very high
description: Lifestyle of the user. Possible values are ["sedentary", "light", "moderate", "high", "very high"].
country:
type: string
example: US
description: Will be used for refining the food recognition capabilities. A 2-letter country code according to [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
default_portion_size:
type: string
example: large
enum:
- small
- medium
- large
description: Default portion size for the user. Possible values are ["small", "medium", "large"]
default_salt_level:
type: string
example: low
enum:
- none
- low
- medium
- high
description: Default salt level for the user. Possible values are ["none", "low", "medium", "high"]
default_sugar_level:
type: string
example: medium
enum:
- none
- low
- medium
- high
default_oil_level:
type: string
example: high
enum:
- none
- low
- medium
- high
description: Default oil level for the user. Possible values are ["none", "low", "medium", "high"]
reference_sugar:
type: integer
example: 47
description: ID of the sugar ingredient the user usually uses. A list of all possible oil modifiers can be retrieved by calling /dataset/referenceIngredients.
reference_oil:
type: integer
example: 562
description: ID of the oil ingredient the user usually uses. A list of all possible oil modifiers can be retrieved by calling /dataset/referenceIngredients.
reference_nutrients:
type: array
items:
type: string
example:
- FAPU
- ZN
description: Nutrients set as reference (important) for the user
timezone:
type: string
example: Europe/Madrid
description: Timezone the user is located at. This requires a TZ database name; you can find them here https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
user_id:
type: integer
example: 123
description: ID of the user to be modified. You must be the owner of the user to do any modification.
diet_labels:
type: array
items:
type: string
enum:
- Balanced
- High-Fiber
- High-Protein
- Low-Carb
- Low-Fat
- High-Sodium
- Low-Sodium
example:
- Balanced
- Low-Carb
description: This attribute is optional. These are the diet labels of the user. Possible values are ["Balanced", "High-Fiber", "High-Protein", "Low-Carb", "Low-Fat", "High-Sodium", "Low-Sodium"]. The information is used for personalizing the recipe recommendation for the user.
food_restrictions:
type: array
items:
type: string
enum:
- Alcohol-Free
- Immuno-Supportive
- Celery-Free
- Crustacean-Free
- Dairy-Free
- Egg-Free
- Fish-Free
- Fodmap-Free
- Gluten-Free
- Keto-Friendly
- Kidney-Friendly
- Kosher
- Low-Potassium
- Lupine-Free
- Mustard-Free
- Low-Fat-Abs
- No-oil-added
- Low-Sugar
- Paleo
- Peanut-Free
- Pescatarian
- Pork-Free
- Red-Meat-Free
- Sesame-Free
- shellfish-Free
- Soy-Free
- Sugar-Conscious
- Tree-Nut-Free
- Vegan
- Vegetarian
- Wheat-Free
example:
- Alcohol-Free
- Dairy-Free
description: This attribute is optional. These are food restrictions and allergies of the user. The information is used for personalizing the recipe recommendation for the user
weight_system:
type: string
enum:
- metric
- imperial
description: Set the user's preferred system for measuring weights.
preferred_measure:
type: string
enum:
- weight
- cooking_measures
- portions
description: Set the user's preferred way to see food quantity information.
min_max_food_groups:
type: object
description: "Customize the recommended minimum and/or maximum portions per food group.\n\nThis field allows setting user-specific dietary goals by specifying optional `min` and/or `max` values for one or more food groups.\n\n \n\n**Important notes:**\n\n- If you want to indicate _no minimum_ for a food group, use `null` as the `min` value. Do **not** use `0`, as that implies a strict minimum intake of 0 portions.\n\n- If you want to prevent the user from consuming a food group, set `max` to `0`.\n\n \n\n**Example:**\n\n\n \"min_max_food_groups\": {\n\n \"fish\": {\"min\": null, \"max\": 1},\n\n \"red meat\": {\"min\": null, \"max\": 0},\n\n \"fruit\": {\"min\": 3, \"max\": 5},\n\n }\n\n\n \n\n**Available Food Groups:**\n\n- ['Dairy Products', 'Vegetables', 'Grains and Tubers', 'Water', 'Fruit', 'Whole Grain', 'Meat', 'Fish', 'Nuts', 'Legumes', 'Egg', 'Red Meat']\n"
additionalProperties:
type: object
properties:
min:
type:
- number
- 'null'
description: Minimum number of portions (use `null` to specify no minimum).
max:
type:
- number
- 'null'
description: Maximum number of portions (use `0` to restrict intake entirely).
required:
- user_id
description: Parameters to be modified, all fields are optional. Null values will be ignored.
required: true
responses:
'200':
description: The profile information has been successfully modified!
content:
application/json:
schema:
type: object
properties:
msg:
type: string
example: The profile information has been successfully modified!
'400':
description: Bad request.
content:
application/json:
schema:
type: object
properties:
code:
type: integer
message:
type: string
examples:
Sex is not valid:
value:
message: The provided sex value is not valid.
code: 1205
Lifestyle is not valid:
value:
message: The provided lifestyle value is not valid.
code: 1214
Salt level is not valid:
value:
message: The provided salt level value is not valid.
code: 1215
Sugar level is not valid:
value:
message: The provided sugar level value is not valid.
code: 1216
Portion size is not valid:
value:
message: The provided portion size value is not valid.
code: 1217
Birth format not valid:
value:
message: The provided birth value is wrong. Follow the format 'YYYY-MM-DD'
code: 1218
Country is not valid:
value:
message: The provided country is not valid, check the valid 2-letter country codes from ISO 3166-1 https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2.
code: 1229
diet label not valid:
value:
message: The provided diet label value is not valid
code: 1607
food restriction not valid:
value:
message: The provided food restriction value is not valid'
code: 1608
'401':
description: Unauthorized, invalid token
'404':
description: Not found.
security:
- Bearer: []
operationId: postV2ProfileModifyUserProfileInfo
x-operation-id-source: derived
/v2/profile/getUserProfileInfo:
get:
tags:
- APIUsers Profile Management
summary: 🔴 Get the user's profile information
description: 'This endpoint returns the information from the APIUser performing the request.
Read the specification of the response body to see the available fields with their descriptions.
This endpoint is the same as ''/v2/users/getUserProfileInfo''.'
responses:
'200':
description: The profile information has been successfully obtained
content:
application/json:
schema:
allOf:
- type: object
properties:
name:
type: string
example: John
description: Name of the user (min length=2, max length=30)
surname:
type: string
example: Smith
description: Surname of the user (min length=2, max length=50)
language:
type: string
example: eng
enum:
- spa
- cat
- eng
- ita
- nld
- fre
- ger
- tur
- gre
- heb
description: APIUser's default language. It must be a three-letter ISO 639-2/T code.
sex:
type: integer
example: 2
enum:
- 0
- 1
- 2
- 9
description: Sex of the user. It must be a number, following ISO/IEC 5218.
weight:
type: number
example: 72.3
description: Weight of the user in Kilograms.
height:
type: number
example: 180.6
description: Height of the user in Centimeters.
birth:
type: string
example: '1980-01-01'
description: Date of birth of the user, following the format "YYYY-MM-DD"
lifestyle:
type: string
example: sedentary
enum:
- sedentary
- light
- moderate
- high
- very high
description: Lifestyle of the user. Possible values are ["sedentary", "light", "moderate", "high", "very high"].
country:
type: string
example: US
description: Will be used for refining the food recognition capabilities. A 2-letter country code according to [ISO 3166-1](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
default_portion_size:
type: string
example: large
enum:
- small
- medium
- large
description: Default portion size for the user. Possible values are ["small", "medium", "large"]
default_salt_level:
type: string
example: low
enum:
- none
- low
- medium
- high
description: Default salt level for the user. Possible values are ["none", "low", "medium", "high"]
default_sugar_level:
type: string
example: medium
enum:
- none
- low
- medium
- high
default_oil_level:
type: string
example: high
enum:
- none
- low
- medium
- high
description: Default oil level for the user. Possible values are ["none", "low", "medium", "high"]
reference_sugar:
type: integer
example: 47
description: ID of the sugar ingredient the user usually uses. A list of all possible oil modifiers can be retrieved by calling /dataset/referenceIngredients.
reference_oil:
type: integer
example: 562
description: ID of the oil ingredient the user usually uses. A list of all possible oil modifiers can be retrieved by calling /dataset/referenceIngredients.
reference_nutrients:
type: array
items:
type: string
example:
- FAPU
- ZN
description: Nutrients set as reference (important) for the user
timezone:
type: string
example: Europe/Madrid
description: Timezone the user is located at. This requires a TZ database name; you can find them here https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
user_id:
type: integer
example: 123
description: ID of the user to be modified. You must be the owner of the user to do any modification.
diet_labels:
type: array
items:
type: string
enum:
- Balanced
- High-Fiber
- High-Protein
- Low-Carb
- Low-Fat
- High-Sodium
- Low-Sodium
example:
- Balanced
- Low-Carb
description: This attribute is optional. These are the diet labels of the user. Possible values are ["Balanced", "High-Fiber", "High-Protein", "Low-Carb", "Low-Fat", "High-Sodium", "Low-Sodium"]. The information is used for personalizing the recipe recommendation for the user.
food_restrictions:
type: array
items:
type: string
enum:
- Alcohol-Free
- Immuno-Supportive
- Celery-Free
- Crustacean-Free
- Dairy-Free
- Egg-Free
- Fish-Free
- Fodmap-Free
- Gluten-Free
- Keto-Friendly
- Kidney-Friendly
- Kosher
- Low-Potassium
- Lupine-Free
- Mustard-Free
- Low-Fat-Abs
- No-oil-added
- Low-Sugar
- Paleo
- Peanut-Free
- Pescatarian
- Pork-Free
- Red-Meat-Free
- Sesame-Free
- shellfish-Free
- Soy-Free
- Sugar-Conscious
- Tree-Nut-Free
- Vegan
- Vegetarian
- Wheat-Free
example:
- Alcohol-Free
- Dairy-Free
description: This attribute is optional. These are food restrictions and allergies of the user. The information is used for personalizing the recipe recommendation for the user
weight_system:
type: string
enum:
- metric
- imperial
description: Set the user's preferred system for measuring weights.
preferred_measure:
type: string
enum:
- weight
- cooking_measures
- portions
description: Set the user's preferred way to see food quantity information.
min_max_food_groups:
type: object
description: "Customize the recommended minimum and/or maximum portions per food group.\n\nThis field allows setting user-specific dietary goals by specifying optional `min` and/or `max` values for one or more food groups.\n\n \n\n**Important notes:**\n\n- If you want to indicate _no minimum_ for a food group, use `null` as the `min` value. Do **not** use `0`, as that implies a strict minimum intake of 0 portions.\n\n- If you want to prevent the user from consuming a food group, set `max` to `0`.\n\n \n\n**Example:**\n\n\n \"min_max_food_groups\": {\n\n \"fish\": {\"min\": null, \"max\": 1},\n\n \"red meat\": {\"min\": null, \"max\": 0},\n\n \"fruit\": {\"min\": 3, \"max\": 5},\n\n }\n\n\n \n\n**Available Food Groups:**\n\n- ['Dairy Products', 'Vegetables', 'Grains and Tubers', 'Water', 'Fruit', 'Whole Grain', 'Meat', 'Fish', 'Nuts', 'Legumes', 'Egg', 'Red Meat']\n"
additionalProperties:
type: object
properties:
min:
type:
- number
- 'null'
description: Minimum number of portions (use `null` to specify no minimum).
max:
type:
- number
- 'null'
description: Maximum number of portions (use `0` to restrict intake entirely).
required:
- user_id
- type: object
properties:
enabled:
type: boolean
example: true
description: Whether the APIUser is enabled and allowed to access the API endpoints available to enabled users.
'400':
description: Bad request.
content:
application/json:
schema:
type: object
properties:
code:
type: integer
message:
type: string
'401':
description: Unauthorized, invalid token
'404':
description: Not found.
security:
- Bearer: []
operationId: getV2ProfileGetUserProfileInfo
x-operation-id-source: derived
components:
securitySchemes:
Bearer:
type: http
scheme: bearer
bearerFormat: JWT
x-build:
time: '2026-10-19T02:02:11.433999Z'
x-provenance:
method: harvested
publisher: LogMeal
source: https://docs.logmeal.com/openapi/logmeal_openapi.yaml
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)