---
title: "Start Subscription Checkout"
method: POST
path: "/api/v1/billing/checkout/subscription"
tags: ["billing"]
---

# Start Subscription Checkout

`POST /api/v1/billing/checkout/subscription`

Start checkout for the monthly plan.

Grants nothing: the returned URL is an invitation to pay, and entitlement
follows the webhook that confirms payment. A workspace that already has a
payable session is redirected to it rather than given a second one, so a
double-clicked upgrade cannot become two subscriptions.

## Headers

- `Idempotency-Key` string, nullable

## Response `200`

Successful Response

- CheckoutSessionResponse — Where to send the browser to complete payment.
  - `checkout_url` string, required

## Other responses

- `409` — Conflict
- `422` — Validation Error
- `503` — Service Unavailable

## Changes

- **2026-09-15** `499d0b94aa94` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/maia-analytics/apis/maia-api/changes/api/v1/billing/checkout/subscription/post.md)

---

[API](https://skmtc.dev/maia-analytics/apis/maia-api.md) · [All operations](https://skmtc.dev/maia-analytics/apis/maia-api/llms.txt) · [OpenAPI document](https://skmtc.dev/maia-analytics/apis/maia-api/revisions/499d0b94aa94?raw)
