Skip to content

Subscription routes: keep, pause, renew, resize

The Subscription Verbs keep, pause, renew, resize as api.sb routes, with inputs, result, refusals and an example.

Reference for Subscription, one group of Subscription routes.

Subscription.keep

Keep takes back a cancel before the period closes, so the Subscription renews on its date at the same terms. Verb page.

Text
POST /{namespace}/subscriptions/{subscription}/keep

Path: subscription. Body, as JSON: the other inputs. Emits Subscription.kept.

Inputs

InputTypeRequiredDescription
subscriptionSubscriptionrequiredThe ending Subscription.
offerOfferThe Offer to renew on, when the Customer took the save offer.

Returns

OutputTypeRequiredDescription
subscriptionSubscriptionrequiredThe Subscription, active again.

Refuses when

CheckErrorFixThen call
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.None.
Once the period has closed; a canceled Subscription starts again as a new onerefusedClear what the check names, then call it again.None.

Example

Terminal
curl -X POST https://api.sb/leaseline.app/subscriptions/sub_whVFaHKWIV/keep \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
JSON
{
  "api": "https://api.sb/leaseline.app",
  "subscription": {
    "$id": "https://api.sb/leaseline.app/subscriptions/sub_whVFaHKWIV",
    "$type": "Subscription",
    "status": "active"
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/act_br07HsG8MG",
    "operation": "Subscription.keep",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/act_br07HsG8MG"
  }
}

Subscription.pause

Pause stops billing and Entitlements on a Subscription until a date, without ending it. Verb page.

Text
POST /{namespace}/subscriptions/{subscription}/pause

Path: subscription. Body, as JSON: the other inputs. Emits Subscription.paused.

Inputs

InputTypeRequiredDescription
subscriptionSubscriptionrequiredThe active Subscription.
untildaterequiredWhen billing resumes on its own.

Returns

OutputTypeRequiredDescription
subscriptionSubscriptionrequiredThe paused Subscription.

Refuses when

CheckErrorFixThen call
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.None.

Example

Terminal
curl -X POST https://api.sb/leaseline.app/subscriptions/sub_whVFaHKWIV/pause \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"until":"2026-10-22"}'
JSON
{
  "api": "https://api.sb/leaseline.app",
  "subscription": {
    "$id": "https://api.sb/leaseline.app/subscriptions/sub_whVFaHKWIV",
    "$type": "Subscription",
    "status": "paused"
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/act_br07HsG8MG",
    "operation": "Subscription.pause",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/act_br07HsG8MG"
  }
}

Subscription.renew

Renew starts a Subscription’s next period and bills it at the Offer Version the Customer accepted. Verb page.

Text
POST /{namespace}/subscriptions/{subscription}/renew

Path: subscription. Emits Subscription.renewed.

Inputs

InputTypeRequiredDescription
subscriptionSubscriptionrequiredThe Subscription to renew.

Returns

OutputTypeRequiredDescription
invoiceInvoicerequiredThe Invoice for the new period.
subscriptionSubscriptionrequiredThe Subscription in its new period.

Refuses when

CheckErrorFixThen call
The operation is part of an Offer the caller has not accepted or paid for.payment-requiredAccept the Offer named in the response, then retry the call.Offer.accept
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.None.

Example

Terminal
curl -X POST https://api.sb/leaseline.app/subscriptions/sub_zgJUx08kwY/renew \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
JSON
{
  "api": "https://api.sb/leaseline.app",
  "invoice": {
    "$id": "https://api.sb/leaseline.app/invoices/inv_Ez0sMX4WOW",
    "$type": "Invoice",
    "total": {
      "amount": 29,
      "currency": "USD"
    },
    "due": "2026-10-22"
  },
  "subscription": {
    "$id": "https://api.sb/leaseline.app/subscriptions/sub_zgJUx08kwY",
    "$type": "Subscription",
    "status": "trialing"
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/act_br07HsG8MG",
    "operation": "Subscription.renew",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/act_br07HsG8MG"
  }
}

Subscription.resize

Resize changes how many units a Subscription holds and prorates the current period. Verb page.

Text
POST /{namespace}/subscriptions/{subscription}/resize

Path: subscription. Body, as JSON: the other inputs. Emits Subscription.resized.

Inputs

InputTypeRequiredDescription
subscriptionSubscriptionrequiredThe Subscription to change.
quantityintegerrequiredThe new unit count.

Returns

OutputTypeRequiredDescription
subscriptionSubscriptionrequiredThe Subscription at its new quantity.

Refuses when

CheckErrorFixThen call
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.None.

Example

Terminal
curl -X POST https://api.sb/leaseline.app/subscriptions/sub_whVFaHKWIV/resize \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"quantity":1}'
JSON
{
  "api": "https://api.sb/leaseline.app",
  "subscription": {
    "$id": "https://api.sb/leaseline.app/subscriptions/sub_whVFaHKWIV",
    "$type": "Subscription",
    "status": "active"
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/act_br07HsG8MG",
    "operation": "Subscription.resize",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/act_br07HsG8MG"
  }
}