Skip to content

Billing & Subscriptions

All billing endpoints require authentication. Use a Firebase token or management key (mk_):

Authorization: Bearer YOUR_AUTH_TOKEN

Deprecated. The legacy flat plans (Standard, Pro, and their annual variants) have been retiredGET /api/plans returns an empty list and the POST /api/billing/subscribe / POST /api/billing/checkout endpoints below are no longer used for new subscriptions.

The current subscription product is pool time-block subscriptions (“Unlimited Subscriptions”): reserve 1–3 daily 8-hour UTC blocks (asia, europe, americas) for unlimited usage during your reserved hours, from $39/mo. Subscribe via POST /api/pools/:id/subscribe. See the full reference at Unlimited Subscriptions API.

Terminal window
# List available pools
curl https://api.cheapestinference.com/api/pools \
-H "Authorization: Bearer mk_your_key"
# Subscribe to a time block (e.g. Europe), billed monthly
curl -X POST https://api.cheapestinference.com/api/pools/POOL_SLUG/subscribe \
-H "Authorization: Bearer mk_your_key" \
-H "Content-Type: application/json" \
-d '{"blocks": ["europe"], "quantity": 1, "billingCycle": "month"}'

After subscribing, create your API key with POST /api/keys/subscription.


GET /api/billing/status

Returns all active subscriptions and credit balance.

Terminal window
curl https://api.cheapestinference.com/api/billing/status \
-H "Authorization: Bearer mk_your_key"
{
"success": true,
"data": {
"subscriptions": [],
"poolPledges": [
{
"id": "pledge_uuid",
"poolId": "pool_uuid",
"poolSlug": "kimi26",
"status": "active",
"currentPeriodEnd": "2026-05-23T15:55:16.220Z",
"cancelAtPeriodEnd": true,
"hasKey": true
}
],
"plan": null,
"status": "active",
"creditBalance": 25.00,
"stripeCustomerId": "cus_xxx",
"subscriptionExpiresAt": null,
"legacySubscriptionKeys": []
}
}
FieldDescription
subscriptionsArray of active recurring subscriptions from legacy flat plans. Now always empty — flat plans are retired.
subscriptions[].statusactive, past_due, canceled
subscriptions[].cancelAtPeriodEndIf true, cancels at period end
subscriptions[].keys[]Keys with id, name, isActive, createdAt
poolPledgesArray of active pool (Unlimited) subscriptions — the current subscription product
poolPledges[].poolSlugPool identifier — use with GET /api/pools/:slug or GET /api/pools/:slug/my-pledge
poolPledges[].statusactive, pending_key, past_due, canceled
poolPledges[].hasKeyWhether the API key has been created for this pledge
planHighest active legacy flat plan slug, or null (flat plans are retired)
statusOverall billing status (active or inactive)
creditBalancePay-as-you-go credit balance in USD (number)
stripeCustomerIdStripe customer ID (null if no card set up)

POST /api/billing/cancel

Cancels a specific subscription. It stays active until the current billing period ends.

ParameterTypeRequiredDescription
subscriptionIdstringYesThe subscription UUID from /status
Terminal window
curl -X POST https://api.cheapestinference.com/api/billing/cancel \
-H "Authorization: Bearer mk_your_key" \
-H "Content-Type: application/json" \
-d '{"subscriptionId": "sub_uuid"}'

POST /api/billing/topup

Top up your credit balance. Pay with card (Stripe) or USDC on Base.

ParameterTypeRequiredDescription
amountnumberYesAmount in USD (min $10)
methodstringYesstripe, stripe_direct, or usdc
Terminal window
curl -X POST https://api.cheapestinference.com/api/billing/topup \
-H "Authorization: Bearer mk_your_key" \
-H "Content-Type: application/json" \
-d '{"amount": 50, "method": "stripe"}'

Returns { "success": true, "data": { "sessionUrl": "...", "sessionId": "..." } } for Stripe Checkout.

Terminal window
curl -X POST https://api.cheapestinference.com/api/billing/topup \
-H "Authorization: Bearer mk_your_key" \
-H "Content-Type: application/json" \
-d '{"amount": 50, "method": "usdc"}'
{
"success": true,
"data": {
"address": "0x...",
"chain": "base",
"amount": "50"
}
}

Send USDC to the address on Base L2, then verify (amount must be at least $10):

Terminal window
curl -X POST https://api.cheapestinference.com/api/billing/verify-topup \
-H "Authorization: Bearer mk_your_key" \
-H "Content-Type: application/json" \
-d '{"txHash": "0xabc...", "amount": 50}'

GET /api/billing/credits
Terminal window
curl https://api.cheapestinference.com/api/billing/credits \
-H "Authorization: Bearer mk_your_key"
{
"success": true,
"data": {
"totalTopUp": 100,
"remaining": 74.50,
"hasCreditKey": true,
"creditKeyCount": 2,
"userId": "ci_user_xxx"
}
}

GET /api/billing/payment-address

Returns the USDC payment address and chain for direct payments.

{
"success": true,
"data": {
"address": "0x...",
"chain": "base"
}
}

GET /api/billing/payment-methods
Terminal window
curl https://api.cheapestinference.com/api/billing/payment-methods \
-H "Authorization: Bearer mk_your_key"
{
"success": true,
"data": [
{
"id": "pm_1abc...",
"type": "card",
"brand": "visa",
"last4": "4242",
"expMonth": 12,
"expYear": 2028
}
]
}
DELETE /api/billing/payment-methods/:id
Terminal window
curl -X DELETE https://api.cheapestinference.com/api/billing/payment-methods/pm_1abc... \
-H "Authorization: Bearer mk_your_key"
POST /api/billing/setup-intent

Returns a Stripe clientSecret to collect card details client-side via Stripe.js.

Terminal window
curl -X POST https://api.cheapestinference.com/api/billing/setup-intent \
-H "Authorization: Bearer mk_your_key"
{
"success": true,
"data": {
"clientSecret": "seti_1abc_secret_..."
}
}
POST /api/billing/setup-checkout

Returns a Stripe-hosted URL to add a card and billing address.

Terminal window
curl -X POST https://api.cheapestinference.com/api/billing/setup-checkout \
-H "Authorization: Bearer mk_your_key"
{
"success": true,
"data": {
"sessionUrl": "https://checkout.stripe.com/..."
}
}

POST /api/billing/portal

Opens the Stripe Customer Portal for managing invoices and payment methods.

Terminal window
curl -X POST https://api.cheapestinference.com/api/billing/portal \
-H "Authorization: Bearer mk_your_key"
{
"success": true,
"data": {
"url": "https://billing.stripe.com/p/session/..."
}
}

GET /api/billing/transactions

Returns payment and credit history.

Terminal window
curl https://api.cheapestinference.com/api/billing/transactions \
-H "Authorization: Bearer mk_your_key"

  • Subscriptions last 30 days with no auto-renewal — you renew manually when ready.
  • Cancel anytime — the subscription stays active until the end of the 30-day period.
  • You can hold multiple subscriptions, each with its own key pool and budget.
  • When a subscription expires or is canceled and the period ends, its keys are revoked automatically.
  • Credit keys are not affected by subscription expiry.