> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ezforge.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Billing

> Subscription management and usage data

**Required scope:** `billing:read`

***

## Get billing status

```
GET /v1/billing
```

Returns the current subscription and usage summary.

**Response `200`:**

```json theme={null}
{
  "data": {
    "plan": "developer",
    "status": "active",
    "currentPeriodStart": "2026-03-01T00:00:00Z",
    "currentPeriodEnd": "2026-04-01T00:00:00Z",
    "usage": {
      "requestCount": 42000,
      "computeSeconds": 18300,
      "bandwidthBytes": 5242880
    },
    "limits": {
      "requestsPerMonth": null,
      "computeSecondsPerMonth": null,
      "maxServers": 10
    }
  }
}
```

**Plan values:** `free` | `developer` | `pro` | `enterprise`

**Status values:** `active` | `past_due` | `canceled` | `trialing`

***

## Subscribe / upgrade plan

```
POST /v1/billing/subscribe
```

Initiates a Stripe checkout session to subscribe or upgrade. Use this to go from the free plan to a paid plan.

**Request body:**

```json theme={null}
{
  "plan": "developer"
}
```

**Response `201`:**

```json theme={null}
{
  "data": {
    "url": "https://checkout.stripe.com/pay/cs_..."
  }
}
```

Redirect the user to `url` to complete payment.

***

## Cancel subscription

```
DELETE /v1/billing/subscribe
```

Cancels the current paid subscription at the end of the current billing period (`cancel_at_period_end = true` in Stripe). The subscription remains active until the period ends.

**Response `204`:** No content.

***

## Change plan

```
PATCH /v1/billing/plan
```

Immediately changes the active paid subscription to a different paid plan (e.g. Developer → Pro). This performs an inline Stripe subscription update without a new checkout session.

To downgrade to the free plan, use `DELETE /v1/billing/subscribe` (cancel) instead.
To upgrade from the free plan, use `POST /v1/billing/subscribe` (checkout) instead.

**Request body:**

```json theme={null}
{
  "plan": "pro"
}
```

| Field  | Type   | Required | Description                         |
| ------ | ------ | -------- | ----------------------------------- |
| `plan` | string | ✓        | `developer`, `pro`, or `enterprise` |

**Response `204`:** No content.

***

## Plan comparison

| Feature          | Free       | Developer | Pro       | Enterprise |
| ---------------- | ---------- | --------- | --------- | ---------- |
| Servers          | 2          | 10        | 50        | Unlimited  |
| Requests / month | 10,000     | 100,000   | 1,000,000 | Unlimited  |
| Regions          | `ord` only | All       | All       | All        |
| Auto-stop        | Required   | Optional  | Optional  | Optional   |
| Deployments kept | 3          | 10        | 10        | 10         |
| Support          | Community  | Email     | Priority  | Priority   |
| Price            | \$0        | \$29/mo   | \$99/mo   | \$199/mo   |

See [Billing Tiers](/concepts/billing-tiers) for full details.
