Skip to main content

Weight-loss plan

Cutting a pet's food sharply is hard on the pet and on the owner, and most give up. The weight-loss plan works out an ideal weight and steps down to it one body condition band at a time, with dates to check progress and clear points at which a vet should be involved.

Before you start

You need a pet to use pet_id. See Create a pet. A weight and a body condition score on their own work without one.

It follows the AAHA weight management guidelines and the WSAVA body condition scale, and every response cites them.

Enabled per account

Like the daily calories calculator, this is switched on per account with calculators.

1. Ask for a plan​

Send a weight and a body condition score (BCS, 1 to 9), or a pet_id that has them:

curl -X POST -H "x-api-key: YOUR-API-KEY" -H "Content-Type: application/json" \
-d '{"species": "dog", "weight_kg": 40, "bcs": 7}' \
https://api.thedogapi.com/v1/calculators/weight-loss-plan
{
"status": "overweight",
"mode": "staged",
"current_weight_kg": 40,
"ideal_weight_kg": { "min": 33.3, "mid": 33.3, "max": 33.3, "source": "bcs" },
"bcs_category": "too_heavy",
"direct": { "kcal_per_day": { "min": 971, "mid": 971, "max": 971 } },
"staged_steps": [
{ "step": 1, "target_bcs": 6, "target_weight_kg": 36.7, "kcal_per_day": 1043,
"expected_weeks": { "min": 4.2, "max": 8.3 }, "starts_after_weeks": { "min": 0, "max": 0 } },
{ "step": 2, "target_bcs": 5, "target_weight_kg": 33.3, "kcal_per_day": 971,
"expected_weeks": { "min": 4.5, "max": 9.1 }, "starts_after_weeks": { "min": 4.2, "max": 8.3 } }
],
"recheck_schedule": {
"days_from_today": [14, 28, 58, 88, 118],
"weekly_loss_rate_pct": { "min": 1, "max": 2 },
"if_losing_slower": { "action": "reduce_kcal", "pct": { "min": 10, "max": 20 } },
"if_losing_faster": { "action": "increase_kcal", "pct": 10 }
},
"red_flags": [
{ "code": "still_losing_at_ideal", "text": "Your pet keeps losing weight after reaching the target." },
{ "code": "not_at_target_after_3_months", "text": "Your pet is not at the target after three months on the plan." },
{ "code": "lethargy_or_sudden_gain", "text": "Your pet is sleeping a lot, slowing down, or has gained weight suddenly." }
],
"provisional": false
}

The response also carries formulas, citations, inputs_assumed, improvements and messages, as on the daily calories calculator.

2. Ideal weight​

The plan needs an ideal weight. It uses the first of these it has:

  1. ideal_weight_kg in the request, for example one a vet has given.
  2. A weight recorded within a week of the pet scoring BCS 5.
  3. The current weight and BCS: each point above 5 is about 10% overweight.
  4. The top of the breed's standard weight range.

ideal_weight_kg.source says which one was used.

3. Staged or direct​

  • staged (the default) aims for the next body condition band down, then the next, until BCS 5. Each step has its own daily target and an expected duration at a healthy rate of loss: 1 to 2% of body weight a week for dogs, 0.5 to 2% for cats.
  • direct feeds for the ideal weight straight away. Clinicians often prefer it. direct.kcal_per_day is returned in both modes.

4. Rechecks and adjustments​

Weigh the pet on the days in recheck_schedule.days_from_today: every two weeks to start with, then monthly. If it's losing more slowly than weekly_loss_rate_pct, cut the daily amount by 10 to 20%. If it's losing faster, add 10%. These are good dates for reminders or check-in emails.

Show red_flags as a checklist. Any one of them is a reason to see a vet.

Pets that aren't overweight​

Every response has a status, so you can branch on it rather than on the score:

statusWhenWhat you get
very_leanBCS 1 or 2vet_referral with urgency: "urgent" and no feeding numbers. Show it prominently: a pet this lean may be unwell.
below_idealBCS 3feeding_target for reaching ideal weight, and a vet_referral with urgency: "routine". Needs an ideal weight from the request, a weight at BCS 5 or a breed_id; without one it's a 422.
at_idealBCS 4 or 5feeding_target to stay at the current weight. No plan needed.
overweightBCS 6 to 9, or above ideal weightThe plan above.

Growing animals get a 422 with code: "growing_animal": weight loss for a puppy or kitten is a conversation for a vet.

Errors​

Problems with the inputs come back as a 422 with a code you can act on:

{
"statusCode": 422,
"code": "ideal_weight_required_below_ideal",
"message": "below ideal condition: send ideal_weight_kg or a breed_id, or ask a vet"
}

What it doesn't claim​

A plan from this endpoint supports a conversation with a vet. It doesn't replace one. Every response carries a vet_review_diet message, and a pack feeding guide often suggests more food than the plan: a pack_guide_is_a_guide message says so in plain words for owners.