Gensprite
Billing

Open the billing pages

POST
/v1/billing/portal

Returns a link to Stripe's own billing pages, where a plan can be cancelled or switched, a card replaced and past invoices read.

Those live there rather than here on purpose. Proration on an upgrade, when a downgrade takes effect, tax, and what follows a failed payment are all decisions with money attached, and a second implementation of them here would be a second billing system that has to agree with the first. Whatever is changed there arrives back as the same webhooks a checkout produces, so getSubscription reflects it without this endpoint writing anything.

invalid_request means the account has never bought anything and so has no billing to manage - offer a plan from GET /v1/products instead.

A URL rather than a redirect, for the same reason createCheckout returns one.

Authorization

AuthorizationBearer <token>

API key: Authorization: Bearer gsk_.... Used by the Godot plugin, the MCP server and the engine.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/billing/portal" \  -H "Content-Type: application/json" \  -d '{}'
{  "portal_url": "http://example.com"}