---
title: "Switch subscription plan (free plans switch immediately; paid plans return an approval_url)"
method: POST
path: "/api/v1/billing/plan"
tags: ["billing"]
---

# Switch subscription plan (free plans switch immediately; paid plans return an approval_url)

`POST /api/v1/billing/plan`

## Request

- Base URL: `https://www.callagent.pro`
- URL: `https://www.callagent.pro/api/v1/billing/plan`
- Auth: HTTP bearer

## Request body

- object
  - `plan_id` integer, required

## Response `200`

Either the plan switched outright (switched true, e.g. a downgrade needing no payment) or a payment is required first, in which case approval_url is present and the plan changes only after the human approves. Exactly one of the two fields is present.

- object
  - `ok` boolean
  - `switched` boolean: Present and true when the change took effect immediately
  - `approval_url` string, uri: Present when the human must approve a payment first

## Other responses

- `401`: Missing or invalid Bearer key
- `429`: Too many requests — see the endpoint's rate limit tier (agent-api 120/min, agent-api-heavy 6/min, agent-api-secrets 10/min)

---

[API](https://skmtc.dev/callagent/apis/callagent-pro-agent-api.md) · [All operations](https://skmtc.dev/callagent/apis/callagent-pro-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/callagent/apis/callagent-pro-agent-api/revisions/38072cf8a24b?raw)
