Skip to main content

Nutrition

The Nutrition object contains complete nutrition facts for a dish, following FDA nutrition label standards.

Schema

type Nutrition {
  # Energy
  calories: Int
  caloriesFromFat: Int

  # Fats
  fatTotal: Float        # grams
  fatSaturated: Float    # grams
  fatTrans: Float        # grams

  # Other
  cholesterol: Float     # milligrams
  sodium: Float          # milligrams

  # Carbohydrates
  carbohydrates: Float   # grams
  dietaryFiber: Float    # grams
  sugar: Float           # grams

  # Protein
  protein: Float         # grams

  # Vitamins & Minerals (% Daily Value)
  vitaminA: Float
  vitaminC: Float
  calcium: Float
  iron: Float

  # Serving
  servingSize: String        # e.g., "1 bowl (425g)"
  servingSizeGrams: Float    # grams
}

Fields

Energy

FieldTypeUnitDescription
caloriesIntkcalTotal calories
caloriesFromFatIntkcalCalories from fat

Fats

FieldTypeUnitDescription
fatTotalFloatgTotal fat
fatSaturatedFloatgSaturated fat
fatTransFloatgTrans fat

Other

FieldTypeUnitDescription
cholesterolFloatmgCholesterol
sodiumFloatmgSodium

Carbohydrates

FieldTypeUnitDescription
carbohydratesFloatgTotal carbohydrates
dietaryFiberFloatgDietary fiber
sugarFloatgTotal sugars

Protein

FieldTypeUnitDescription
proteinFloatgProtein

Vitamins & Minerals

FieldTypeUnitDescription
vitaminAFloat%DVVitamin A (% Daily Value)
vitaminCFloat%DVVitamin C (% Daily Value)
calciumFloat%DVCalcium (% Daily Value)
ironFloat%DVIron (% Daily Value)
Vitamin and mineral values are expressed as percentage of Daily Value (%DV) based on a 2,000 calorie diet.

Example Query

query GetDishNutrition($id: ID!) {
  dish(menuKey: "your_key", id: $id) {
    name
    nutrition {
      calories
      caloriesFromFat
      fatTotal
      fatSaturated
      fatTrans
      cholesterol
      sodium
      carbohydrates
      dietaryFiber
      sugar
      protein
      vitaminA
      vitaminC
      calcium
      iron
      servingSize
    }
  }
}

Example Response

{
  "data": {
    "dish": {
      "name": "Pomegranate Acai Salad",
      "nutrition": {
        "calories": 400,
        "caloriesFromFat": 180,
        "fatTotal": 20,
        "fatSaturated": 4,
        "fatTrans": 0,
        "cholesterol": 15,
        "sodium": 520,
        "carbohydrates": 45,
        "dietaryFiber": 8,
        "sugar": 22,
        "protein": 12,
        "vitaminA": 45,
        "vitaminC": 60,
        "calcium": 15,
        "iron": 10,
        "servingSize": "1 salad (380g)"
      }
    }
  }
}

Displaying Nutrition

Compact View (Card)

Show key macros on dish cards:
<div className="nutrition-compact">
  <span>{nutrition.calories} cal</span>
  <span>{nutrition.protein}g protein</span>
  <span>{nutrition.carbohydrates}g carbs</span>
</div>

Full Nutrition Label

Nutrition Panel
For detailed view, display FDA-style nutrition facts:
<div className="nutrition-label">
  <h3>Nutrition Facts</h3>
  <p className="serving">Serving Size: {nutrition.servingSize}</p>

  <div className="calories">
    <strong>{nutrition.calories}</strong> Calories
  </div>

  <table>
    <tr><td>Total Fat</td><td>{nutrition.fatTotal}g</td></tr>
    <tr className="indent"><td>Saturated Fat</td><td>{nutrition.fatSaturated}g</td></tr>
    <tr className="indent"><td>Trans Fat</td><td>{nutrition.fatTrans}g</td></tr>
    <tr><td>Cholesterol</td><td>{nutrition.cholesterol}mg</td></tr>
    <tr><td>Sodium</td><td>{nutrition.sodium}mg</td></tr>
    <tr><td>Total Carbohydrate</td><td>{nutrition.carbohydrates}g</td></tr>
    <tr className="indent"><td>Dietary Fiber</td><td>{nutrition.dietaryFiber}g</td></tr>
    <tr className="indent"><td>Sugars</td><td>{nutrition.sugar}g</td></tr>
    <tr><td>Protein</td><td>{nutrition.protein}g</td></tr>
  </table>
</div>

Filtering by Nutrients

Use nutrient ranges in your filter criteria:
query {
  dishes(
    menuKey: "your_key",
    filters: {
      calorieRange: { min: 300, max: 600 },
      nutrientTargets: {
        protein: { min: 20 },          # At least 20g protein
        carbohydrates: { max: 50 },    # Under 50g carbs
        sodium: { max: 800 }           # Under 800mg sodium
      }
    }
  ) {
    results {
      dish { name }
      nutrition { calories, protein, carbohydrates, sodium }
    }
  }
}

Dynamic Nutrition (Customizable Dishes)

For build-your-own dishes, nutrition updates as selections are made:
query CalculateNutrition(
  $dishId: ID!,
  $selections: [SelectionInput!]!
) {
  calculateNutrition(
    menuKey: "your_key",
    dishId: $dishId,
    selections: $selections
  ) {
    nutrition {
      calories
      protein
      carbohydrates
      fatTotal
    }
  }
}
Dynamic Nutrition
See Nutrition Calculator for details.

Calorie Disclaimer

Always display the FDA calorie disclaimer:
2,000 calories a day is used for general nutrition advice, but calorie needs vary.