BETTERMENU
Studio

Get Nutrition Label

Get a render-ready nutrition label for one serving, optionally pinned to a version.

Assembles header, regulatory-ordered nutrient columns (per-serving and optional per-container), footnotes, staleness, and completeness into a single response ready for label rendering.

Accepts ?version_id= to read the label at a specific version snapshot.

Available only on API versions declaring the recipe_versioning capability. Older versions fall through to the legacy endpoint (no version_id stamping).

GET
/studio/recipes/{recipe_id}/servings/{serving_id}/nutrition-label

Path Parameters

serving_id*Serving Id

Serving identifier

recipe_id*Recipe Id

Query Parameters

version_id?|

Optional version ULID to pin the response to a historical snapshot. Omit to read the live HEAD on the main branch. 26-character Crockford Base32 (no I, L, O, U).

Response Body

application/json

application/json

curl -X GET "https://loading/studio/recipes/string/servings/string/nutrition-label"
{
  "data": {
    "header": {
      "serving_size_household": "string",
      "serving_size_metric": "string",
      "servings_per_container": "string",
      "demographic": "string"
    },
    "per_serving": {
      "reference_weight_grams": "string",
      "nutrients": [
        {
          "bmid": "string",
          "display_name": "string",
          "amount": "string",
          "unit": "string",
          "display_text": "string",
          "percent_dv": "string",
          "is_mandatory": true,
          "is_visible": true,
          "children": [
            {
              "bmid": "string",
              "display_name": "string",
              "amount": "string",
              "unit": "string",
              "display_text": "string",
              "percent_dv": "string",
              "is_mandatory": true,
              "is_visible": true,
              "children": []
            }
          ]
        }
      ]
    },
    "per_container": {
      "reference_weight_grams": "string",
      "nutrients": [
        {
          "bmid": "string",
          "display_name": "string",
          "amount": "string",
          "unit": "string",
          "display_text": "string",
          "percent_dv": "string",
          "is_mandatory": true,
          "is_visible": true,
          "children": [
            {
              "bmid": "string",
              "display_name": "string",
              "amount": "string",
              "unit": "string",
              "display_text": "string",
              "percent_dv": "string",
              "is_mandatory": true,
              "is_visible": true,
              "children": []
            }
          ]
        }
      ]
    },
    "footnotes": [
      "string"
    ],
    "staleness": {
      "is_current": true,
      "calculated_at": "string"
    },
    "completeness": {
      "is_complete": true,
      "missing_mandatory": [
        {
          "bmid": "string",
          "display_name": "string"
        }
      ]
    }
  },
  "meta": {
    "version": "string",
    "request_id": "string",
    "timestamp": "string"
  }
}
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string",
      "input": null,
      "ctx": {}
    }
  ]
}