---
title: "BMR, TDEE, a calorie target and the macros to hit it"
method: POST
path: "/v1/energy-expenditure"
tags: ["Calculators"]
---

# BMR, TDEE, a calorie target and the macros to hit it

`POST /v1/energy-expenditure`

## Request

- Base URL: `https://api.calculate.co.nz`
- URL: `https://api.calculate.co.nz/v1/energy-expenditure`
- Auth: API key in header `X-API-Key`

Maintenance calories, and the target for losing or gaining.

"What are my maintenance calories" and "what deficit do I need" are the
same calculation from either end, which is why they are one endpoint rather
than two that would return identical numbers.

**The formulas disagree, and the response says by how much.** Mifflin-St
Jeor and the revised Harris-Benedict differ by 5 to 10% for the same
person, which is often more than the entire deficit someone is trying to
run. `formula_spread_kcal` is that gap and `bmr_formula_used` names the one
the answer took: Mifflin-St Jeor normally, Katch-McArdle when body fat is
given, because that works from lean mass and is the better estimate.
Quoting a single number without saying which formula produced it is the
failure mode here.

Projections use 7,700 kcal per kilogram of body fat, so a 500 kcal daily
deficit is about half a kilogram a week. `weeks_to_target` applies that to
a target weight, and the caveats say plainly that a long projection runs
optimistic, because metabolic rate falls as weight does.

These are population formulas, not a measurement of anyone's metabolism.
The honest instruction, which is in `caveats`, is to eat at the number for
two to three weeks and adjust from what the scale does.

## Request body

- EnergyExpenditureRequest
  - `sex` string, required: "male" or "female". It changes the formula constant.
  - `age` integer, required: Age in years. The formulas are validated roughly 18 to 75.
  - `weight_kg` number, required: Body weight in kilograms.
  - `height_cm` number, required: Height in centimetres.
  - `activity_level` string: sedentary, light, moderate, very_active or extra_active. Most people overestimate this; one level lower than it feels is usually closer.
  - `goal` string: lose, maintain or gain.
  - `body_fat_pct` number: Optional. When known, Katch-McArdle is computed and used as the primary, because it works from lean mass.
  - `target_weight_kg` number: Optional. Produces a timeline at the chosen offset.

## Response `200`

All three BMR formulas with their spread, the maintenance figure, and a target for the goal.

- EnergyExpenditureResponse
  - `result` EnergyExpenditureResult, required
    - `sex` string, required: Sex as given.
    - `age` integer, required: Age as given.
    - `weight_kg` number, required: Weight as given.
    - `height_cm` number, required: Height as given.
    - `activity_level` string, required: Activity level used.
    - `activity_multiplier` number, required: The multiplier applied to BMR.
    - `activity_description` string, required: What that level means in practice.
    - `bmr` number, required: The basal metabolic rate the answer used.
    - `bmr_formula_used` string, required: Which formula, and why that one.
    - `bmr_mifflin_st_jeor` number, required: Mifflin-St Jeor (1990).
    - `bmr_harris_benedict` number, required: Revised Harris-Benedict (1984). Tends to read high.
    - `bmr_katch_mcardle` number, required: Katch-McArdle, or zero when body fat was not given.
    - `formula_spread_kcal` number, required: The gap between the highest and lowest formula. Often larger than the deficit someone is trying to run, which is why the formula used is named rather than averaged.
    - `tdee` number, required: Total daily energy expenditure, the maintenance figure.
    - `goal` string, required: Goal as given.
    - `daily_calorie_target` number, required: TDEE plus the goal offset.
    - `daily_offset` number, required: The offset applied: -500, 0 or +300.
    - `projected_weekly_change_kg` number, required: At 7,700 kcal per kilogram of body fat.
    - `protein_g` number, required: Daily protein target in grams.
    - `fat_g` number, required: Daily fat target in grams.
    - `carbs_g` number, required: Daily carbohydrate target in grams.
    - `protein_kcal` number, required: Calories from protein.
    - `fat_kcal` number, required: Calories from fat.
    - `carbs_kcal` number, required: Calories from carbohydrate.
    - `minimum_fat_applied` boolean, required: True when fat was raised to the 0.8 g per kg floor.
    - `weeks_to_target` number, required: Weeks to the target weight at this offset, or 0 if not applicable.
    - `caveats` string[], required: What these numbers are and are not. Worth passing on.
  - `disclaimer` string, required: Scope and limits of this calculation.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/calculate/apis/calculate-co-nz-api.md) · [All operations](https://skmtc.dev/calculate/apis/calculate-co-nz-api/llms.txt) · [OpenAPI document](https://skmtc.dev/calculate/apis/calculate-co-nz-api/revisions/aa59a8e76614?raw)
