---
title: "Readiness probe for the staged voice-model upgrade executor (agents:read). Returns the model-upgrades-v1 capability contract: `available`, `mutations_enabled`, `notice_ready` and the remaining `prerequisites`. Deliberately not env-gated — every flag reports false until a trusted provider-receipt adapter is implemented, so a 200 here means \"the contract is readable\", never \"upgrades are live\". Poll this before attempting an upgrade rather than inferring readiness from a successful HTTP status."
method: GET
path: "/v1/model-upgrades"
---

# Readiness probe for the staged voice-model upgrade executor (agents:read). Returns the model-upgrades-v1 capability contract: \`available\`, \`mutations_enabled\`, \`notice_ready\` and the remaining \`prerequisites\`. Deliberately not env-gated — every flag reports false until a trusted provider-receipt adapter is implemented, so a 200 here means "the contract is readable", never "upgrades are live". Poll this before attempting an upgrade rather than inferring readiness from a successful HTTP status.

`GET /v1/model-upgrades`

## Request

- Base URL: `https://www.kaicalls.com/api`
- URL: `https://www.kaicalls.com/api/v1/model-upgrades`
- Auth: HTTP bearer

## Query parameters

- `business_id` string, required

## Response `200`

Capability contract for the upgrade executor. `available: false` today; `reason` names the blocker.

## Other responses

- `400`: business_id was not supplied.
- `403`: Missing agents:read, or the business is not accessible.

---

[API](https://skmtc.dev/kaicalls/apis/kaicalls-public-api.md) · [All operations](https://skmtc.dev/kaicalls/apis/kaicalls-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kaicalls/apis/kaicalls-public-api/revisions/e607fc6cf36e?raw)
