Estimate weight from photos
Most owners don't know what their dog weighs today. A photo estimate gives you a starting point for portions and calorie targets until someone weighs the pet on a scale. Treat it as a placeholder: a measured weight is always better, and the calculators prefer one when they have it.
You need a pet with at least one photo. See Create a pet.
Estimated weight is switched on per account. If you get a 403 naming estimated_weight, contact us to add it.
1. Ask for an estimate
curl -X POST -H "x-api-key: YOUR-API-KEY" https://api.thedogapi.com/v1/pets/{pet_id}/estimated-weight
{
"weight_kg": 34,
"size_classification": "large",
"reasons": "The animal is an adult Labrador Retriever, a breed known for its solid, muscular build. … Based on the typical weight range for a male Labrador Retriever (29-36 kg) and its robust physique, an estimate of 34.0 kg is appropriate.",
"generated_at": "2026-10-06T03:05:42.028Z"
}
weight_kgis one number. Show it to owners as approximate ("about 34 kg"), not as a measurement.size_classificationissmall,mediumorlargefor the species. It's useful for grouping content even when you don't show the weight.reasonsexplains what the model saw. It's written for you, not the owner.- The estimate is saved on the pet, and each call runs a fresh one from the latest photos. Store the result on your side rather than calling again on every page view.
Optional query parameters: lang for the language of reasons, and country or season to override the seasonal context (a winter coat can hide a lot).
2. Photos that work
A side-on photo of the whole body, standing, with nothing in the way. Send the breed when you create the pet, because the model checks its estimate against the breed's normal range. A photo of a face alone gives a poor estimate.
3. Use it in the calculators
If a pet has no recent measured weight, the calculators use the photo estimate, as long as it's under 90 days old. The response tells you that's what happened:
{
"input_quality": "estimated",
"inputs_assumed": {
"weight_kg": { "value": 35, "source": "estimated_photo", "observed_at": "2026-10-06T03:06:34.283Z" }
},
"improvements": [
{ "input": "weight_kg", "wanted": "measured", "effect": "narrows_range" }
],
"messages": [
{ "code": "estimated_inputs", "text": "Some inputs were estimated from photos, so the result is shown as a wider range." }
]
}
The calorie range is wider than it would be with a measured weight. When the owner weighs the pet, record the weight and the calculators switch to it automatically.
To keep photo estimates out of a calculation altogether, send "input_policy": "measured_only". The calculator then ignores estimates and uses a measured weight or the breed's weight range.
Muscle condition (beta)
POST /pets/{pet_id}/muscle-condition-score works on the same photos and returns a muscle-loss flag with reasons. It's in beta, switched on by request (muscle_condition), and not vet reviewed, so don't show it to owners as a finding. See the roadmap.
Access
estimated_weight on the capabilities list. We switch it on for your account, and you can switch it off.