メインコンテンツまでスキップ

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.

Before you start

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_kg is one number. Show it to owners as approximate ("about 34 kg"), not as a measurement.
  • size_classification is small, medium or large for the species. It's useful for grouping content even when you don't show the weight.
  • reasons explains 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.