Choose what's switched on
Two separate lists matter here. Your plan decides which datasets and features you have access to. Your capabilities decide which analysis endpoints you've chosen to use. We set the first. You control the second.
What your plan includes
curl -H "x-api-key: YOUR-API-KEY" https://api.thedogapi.com/v1/accounts/features
["full_breed_schema", "enable_health_tips", "exercise_by_lifestage", "clinical_history"]
These are the features enabled on your account. To add one, contact us.
Capabilities
Body condition, muscle condition, estimated age and estimated weight have to be included in your plan first. We switch those on for you; contact us to add one. Every other capability is included for everyone.
Once a capability is included, it's on unless you switch it off. Switching one off makes its endpoints return 403 for your account, which is useful when a tool is included in your plan but doesn't fit your product, or when several teams share a key.
curl -H "x-api-key: YOUR-API-KEY" https://api.thedogapi.com/v1/accounts/capabilities
[
{
"id": "body_condition",
"name": "Body condition score",
"description": "WSAVA 1-9 body condition from photos, with vet review when the model is not confident.",
"endpoints": [
"POST /pets/{petId}/body-condition-score",
"GET /pets/{petId}/body-condition-score/reviews"
],
"included": true,
"enabled": true,
"updated_at": null
},
{
"id": "portraits",
"name": "Pet portraits",
"description": "Stylised artwork generated from the pet's photos.",
"endpoints": ["POST /pets/{petId}/portrait", "GET /pets/{petId}/portraits"],
"included": true,
"enabled": false,
"updated_at": "2026-09-30T02:00:00.000Z"
}
]
included says whether your account has the capability, and only we can change it. enabled is your own switch. An endpoint works when both are true.
id | Endpoints it covers | Included |
|---|---|---|
body_condition | Body condition score and its vet reviews | When we switch it on |
muscle_condition | Muscle condition score (beta) | When we switch it on |
breed_identification | Breed identification | Always |
estimated_age | Estimated age | When we switch it on |
estimated_weight | Estimated weight | When we switch it on |
portraits | Portrait generation and listing | Always |
pet_health_tips | Health tips for a specific pet | Always |
Switch one off
curl -X PATCH -H "x-api-key: YOUR-API-KEY" -H "Content-Type: application/json" \
-d '{"enabled": false}' \
https://api.thedogapi.com/v1/accounts/capabilities/portraits
Calls to a switched-off capability get:
{
"statusCode": 403,
"timestamp": "2026-09-30T02:05:11.000Z",
"path": "/v1/pets/Mhq3zCuduT/portrait",
"error": "Forbidden",
"message": "The portraits capability is switched off for this account. Switch it on with PATCH /accounts/capabilities/portraits."
}
A capability that isn't included gets a different 403, naming the feature to ask us for. Switching it on yourself won't help:
{
"statusCode": 403,
"message": "Body condition score is not enabled for this account. Contact us to have the body_condition feature switched on.",
"error": "Forbidden"
}
The response is the updated capability. Send {"enabled": true} to switch it back on. Changes take effect on the next request.
Switching a capability off only ever removes access. It can't give your account anything your plan doesn't include, and results already generated stay on your pets.
Staging and production accounts have separate settings, so switch things off in both.