---
title: "Start a hosted checkout for a paid pack"
method: POST
path: "/v1/admin/registry/packs/{packId}/checkout"
tags: ["Marketplace"]
---

# Start a hosted checkout for a paid pack

`POST /v1/admin/registry/packs/{packId}/checkout`

## Request

- Base URL: `https://brain.inite.ai`
- URL: `https://brain.inite.ai/v1/admin/registry/packs/{packId}/checkout`
- Auth: HTTP bearer

Creates a billing checkout session for the BUYING tenant (the caller's company is the billing userId). Open `checkoutUrl`, pay, then retry POST /v1/admin/packs/from-registry — the 402 hint on that route points here. Answers 400 for a free pack or while the billing integration is disabled. An `idempotency-key` header is forwarded to billing so client retries collapse into one order. Throttled to 10 requests/min per credential.

Required scope: `brain:admin`.

## Path parameters

- `packId` string, required

## Request body

- CheckoutRequest
  - `errorUrl` string
  - `successUrl` string

## Response `201`

The checkout session.

- CheckoutResponse
  - `checkoutUrl` string, required: Hosted billing checkout URL to open.
  - `sessionId` string, required

## Other responses

- `400`: Validation failed.
- `401`: Missing or unknown bearer key.
- `403`: The key lacks the required scope.
- `404`: No such resource in this tenant.
- `429`: Per-credential throttle exceeded.
- `502`: The billing service rejected the request.
- `503`: The billing service is unreachable — paid-pack entitlements cannot be verified (fail-closed). Retry shortly.

---

[API](https://skmtc.dev/inite/apis/inite-brain-platform-api.md) · [All operations](https://skmtc.dev/inite/apis/inite-brain-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/inite/apis/inite-brain-platform-api/revisions/c7c3eb5e304b?raw)
