---
title: "Billing Upgrade"
method: POST
path: "/v1/billing/upgrade"
---

# Billing Upgrade

`POST /v1/billing/upgrade`

## Request

- Base URL: `https://api.graphify.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.graphify.com/v1/billing/upgrade`
- Auth: HTTP bearer

Pro -> Teams upgrade (owner/admin). Two-phase: an unconfirmed in-place request
returns ``{preview}``; ``confirm=true`` commits the in-place swap; ``inPlace=false``
returns ``{createNewRequired: true}`` (the FE then mints a new Teams workspace +
checks it out -- there is no ``url`` field). 402 until Teams is armed.

## Headers

- `X-Graphify-Tenant-ID` string, required

## Request body

- BillingUpgradeRequest: POST /v1/billing/upgrade (Pro -> Teams, AD-FLOW-1). Two-phase: an unconfirmed in-place request returns a proration preview; ``confirm=true`` commits the swap.
  - `seats` integer, required
  - `inPlace` boolean
  - `successUrl` string, uri, required
  - `cancelUrl` string, uri, required
  - `confirm` boolean

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/graphify/apis/graphify-control-plane.md) · [All operations](https://skmtc.dev/graphify/apis/graphify-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/graphify/apis/graphify-control-plane/revisions/0e75c82b5ea8?raw)
