---
search:
  tags:
    - Nutrition
    - POST
seo:
  description: >-
    Sends a freeform meal description to Claude for per-item calorie and
    protein… Reference for the POST /api/nutrition/describe endpoint in the
    skcal API.
sidebar:
  label: Log a meal from a description
  badge: POST
title: Log a meal from a description
type: openapi-operation
---
Sends a freeform meal description to Claude for per-item calorie and protein estimates, respecting stated portions and excluding anything the user says they skipped, then stores it as a meal.

`POST /api/nutrition/describe`

**Request body** (`application/json`, required)

The freeform meal description to analyze.

- `text` (string, required) — What you ate, in your own words. State anything you skipped so it is excluded.

Request body example:

```json
{
  "text": "two scrambled eggs, a slice of sourdough, and black coffee"
}
```

**Responses**

- `200` — The meal description was analyzed and logged.
- `400` — The request body or parameters failed validation.
- `502` — The upstream model call failed.
- `503` — A required secret (model key or ingest token) is not configured.

Response example, 200:

```json
{
  "ok": true,
  "mealId": "3f8b1c2a-5d6e-4f70-8a1b-2c3d4e5f6071",
  "items": [
    {
      "name": "grilled chicken breast",
      "kcal": 284,
      "proteinG": 53.4
    },
    {
      "name": "toum",
      "kcal": 90,
      "proteinG": 0.4
    }
  ],
  "totalKcal": 374,
  "totalProteinG": 54,
  "note": "assumed a single chicken breast and one tablespoon of toum",
  "photoKeys": [
    "nick@mintlify.com/2026-06-29/3f8b1c2a-5d6e-4f70-8a1b-2c3d4e5f6071"
  ]
}
```
