---
title: "Purchase Subscription"
method: POST
path: "/api/profile/subscriptions/purchase"
tags: ["Profile"]
---

# Purchase Subscription

`POST /api/profile/subscriptions/purchase`

## Request

- Base URL: `https://api.agentstack.tech` (the document declares no server; this is the origin it was published from)
- URL: `https://api.agentstack.tech/api/profile/subscriptions/purchase`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Purchase a subscription via finance.pay (wallet). Card checkout uses payments.create.

## Headers

- `Idempotency-Key` string

## Request body

- BodyPurchaseSubscriptionApiProfileSubscriptionsPurchasePost
  - `tier` string, required: Subscription tier (free, starter, pro, premium, enterprise)
  - `billing_cycle` string: Billing cycle (monthly, yearly)
  - `wallet_id` string, nullable: Wallet ID to use for payment (required)
  - `currency` string: Currency for payment
  - `idempotency_key` string, nullable: Idempotency key for finance.pay execute

## Response `200`

Successful Response

- unknown

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `422`: Validation Error
- `429`: Too Many Requests
- `500`: Internal Server Error

---

[API](https://skmtc.dev/agentstack/apis/agentstack-core-api.md) · [All operations](https://skmtc.dev/agentstack/apis/agentstack-core-api/llms.txt) · [OpenAPI document](https://skmtc.dev/agentstack/apis/agentstack-core-api/revisions/79f4a4dd8813?raw)
