Bootic Subscriptions API
Recurring product subscriptions. `SubscriptionFee` defines the recurring payment terms attached to a product/variant; `SubscriptionPurchase` is a customer's active subscription created from a recurring order.
Recurring product subscriptions. `SubscriptionFee` defines the recurring payment terms attached to a product/variant; `SubscriptionPurchase` is a customer's active subscription created from a recurring order.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/bootic-subscriptions-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Bolder API v2 Subscriptions API
version: '2.0'
description: '## Getting Started
The Bolder API provides programmatic access to your Bolder Shop data through a
hypermedia-driven REST interface.'
contact:
name: Bolder API Support
url: https://www.onbolder.com
servers:
- url: https://api.onbolder.com/v2
description: Production
security:
- bearerAuth: []
tags:
- name: Subscriptions
description: 'Recurring product subscriptions. `SubscriptionFee` defines the recurring
payment terms attached to a product/variant; `SubscriptionPurchase` is a
customer''s active subscription created from a recurring order.'
paths:
/subscription_purchases:
get:
tags:
- Subscriptions
summary: List subscription purchases
description: Returns customer subscriptions.
operationId: listSubscriptionPurchases
parameters:
- name: shop_id
in: query
schema:
type: integer
- name: seller_ids
in: query
schema:
type: string
description: Comma-separated seller IDs.
- name: state
in: query
schema:
type: string
- name: contact_id
in: query
schema:
type: integer
- name: page
in: query
schema:
type: integer
default: 1
- name: per_page
in: query
schema:
type: integer
default: 30
responses:
'200':
description: Subscription purchases list
content:
application/json:
schema:
type: object
properties:
_embedded:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/SubscriptionPurchase'
'422':
description: '`shop_id` or `seller_ids` is required'
/subscription_purchases/{id}:
parameters:
- name: id
in: path
required: true
schema:
type: integer
get:
tags:
- Subscriptions
summary: Get a subscription purchase
operationId: getSubscriptionPurchase
responses:
'200':
description: Subscription purchase entity
content:
application/json:
schema:
$ref: '#/components/schemas/SubscriptionPurchase'
'404':
description: Not found
put:
tags:
- Subscriptions
summary: Update a subscription purchase
description: Only the fields listed below are writable.
operationId: updateSubscriptionPurchase
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
state:
type: string
next_payment_on:
type: string
format: date
total_renewal_fee:
type: integer
remaining_payments:
type: integer
subscription_fee_id:
type: integer
cancel_at:
type: string
format: date
payments_to_skip:
type: integer
paused_by:
type: string
last_pause_at:
type: string
format: date-time
renewal_discount:
type: number
discount_num_charges:
type: integer
end_date:
type: string
format: date
example:
state: paused
paused_by: admin
responses:
'200':
description: Subscription purchase updated
content:
application/json:
schema:
$ref: '#/components/schemas/SubscriptionPurchase'
'422':
description: Validation error (e.g. invalid `state`, or no updatable fields provided)
/subscription_purchases/{id}/renew:
parameters:
- name: id
in: path
required: true
schema:
type: integer
put:
tags:
- Subscriptions
summary: Record a manual renewal
description: Advances `last_payment_on`/`next_payment_on` and sets `state` back to `active`. Decrements `remaining_payments` if the subscription has a fixed number of payments left.
operationId: renewSubscriptionPurchase
requestBody:
content:
application/json:
schema:
type: object
properties:
payment_date:
type: string
format: date
description: Defaults to today if omitted
responses:
'200':
description: Subscription purchase renewed
content:
application/json:
schema:
$ref: '#/components/schemas/SubscriptionPurchase'
'422':
description: Invalid `payment_date`, or validation error
/subscription_fees:
get:
tags:
- Subscriptions
summary: List subscription fees
operationId: listSubscriptionFees
parameters:
- name: shop_id
in: query
schema:
type: integer
- name: product_id
in: query
schema:
type: integer
- name: variant_id
in: query
schema:
type: integer
- name: page
in: query
schema:
type: integer
default: 1
- name: per_page
in: query
schema:
type: integer
default: 30
responses:
'200':
description: Subscription fees list
content:
application/json:
schema:
type: object
properties:
_embedded:
type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/SubscriptionFee'
post:
tags:
- Subscriptions
summary: Create a subscription fee
description: Attaches recurring-payment terms to a product (and optionally a specific variant).
operationId: createSubscriptionFee
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- product_id
- payment_interval
properties:
product_id:
type: integer
variant_id:
type: integer
payment_interval:
type: string
enum:
- 1_week
- 1_month
- 3_months
- 6_months
- 12_months
renewal_fee:
type: integer
description: In cents
setup_fee:
type: integer
description: In cents
number_of_payments:
type: integer
payment_day:
type: integer
by_percentage:
type: boolean
allow_non_recurring_payment:
type: boolean
min_days_for_cancellation:
type: integer
allow_changing_day:
type: boolean
extend_on_reenable:
type: boolean
on_first_renewal:
type: string
example:
product_id: 101
payment_interval: 1_month
renewal_fee: 2999
responses:
'201':
description: Subscription fee created
content:
application/json:
schema:
$ref: '#/components/schemas/SubscriptionFee'
'422':
description: Validation error
/subscription_fees/{id}:
parameters:
- name: id
in: path
required: true
schema:
type: integer
get:
tags:
- Subscriptions
summary: Get a subscription fee
operationId: getSubscriptionFee
responses:
'200':
description: Subscription fee entity
content:
application/json:
schema:
$ref: '#/components/schemas/SubscriptionFee'
'404':
description: Not found
put:
tags:
- Subscriptions
summary: Update a subscription fee
operationId: updateSubscriptionFee
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
payment_interval:
type: string
enum:
- 1_week
- 1_month
- 3_months
- 6_months
- 12_months
renewal_fee:
type: integer
setup_fee:
type: integer
number_of_payments:
type: integer
payment_day:
type: integer
update_purchases_fees:
type: boolean
description: Also apply the new fee terms to existing active purchases
notify_purchases:
type: boolean
responses:
'200':
description: Subscription fee updated
content:
application/json:
schema:
$ref: '#/components/schemas/SubscriptionFee'
'422':
description: Validation error
delete:
tags:
- Subscriptions
summary: Delete a subscription fee
operationId: deleteSubscriptionFee
responses:
'204':
description: Subscription fee deleted
'422':
description: Cannot delete (e.g. in use by active purchases)
components:
schemas:
SubscriptionFee:
type: object
description: Recurring-payment terms attached to a product or variant.
properties:
_links:
$ref: '#/components/schemas/HalLinks'
id:
type: integer
seller_id:
type: integer
product_id:
type: integer
variant_id:
type: integer
payment_interval:
type: string
enum:
- 1_week
- 1_month
- 3_months
- 6_months
- 12_months
renewal_fee:
type: integer
description: In cents
renewal_fee_price:
type: integer
description: In cents
setup_fee:
type: integer
description: In cents
number_of_payments:
type: integer
payment_day:
type: integer
by_percentage:
type: boolean
allow_non_recurring_payment:
type: boolean
min_days_for_cancellation:
type: integer
allow_changing_day:
type: boolean
extend_on_reenable:
type: boolean
on_first_renewal:
type: string
created_on:
type: string
format: date-time
updated_on:
type: string
format: date-time
SubscriptionPurchase:
type: object
description: A customer's active subscription to a product (created via a recurring order).
properties:
_links:
$ref: '#/components/schemas/HalLinks'
id:
type: integer
shop_id:
type: integer
contact_id:
type: integer
original_order_id:
type: integer
product_id:
type: integer
product_name:
type: string
state:
type: string
currency_code:
type: string
total_renewal_fee:
type: integer
description: In cents
payment_interval:
type: string
total_payments:
type: integer
remaining_payments:
type: integer
failed_attempts:
type: integer
last_payment_on:
type: string
format: date
next_payment_on:
type: string
format: date
start_date:
type: string
format: date
end_date:
type:
- string
- 'null'
format: date
cancel_at:
type:
- string
- 'null'
format: date
subscription_fee_id:
type: integer
renewal_discount:
type: number
discount_num_charges:
type: integer
payments_to_skip:
type: integer
paused_by:
type: string
paid_setup_fee:
type: boolean
units:
type: integer
created_on:
type: string
format: date-time
updated_on:
type: string
format: date-time
HalLink:
type: object
required:
- href
properties:
href:
type: string
templated:
type: boolean
method:
type: string
enum:
- get
- post
- put
- patch
- delete
title:
type: string
type:
type: string
HalLinks:
type: object
additionalProperties:
oneOf:
- $ref: '#/components/schemas/HalLink'
- type: array
items:
$ref: '#/components/schemas/HalLink'
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
oauth2:
type: oauth2
flows:
clientCredentials:
tokenUrl: https://auth.onbolder.com/oauth/token
scopes:
products.read: View products, variants and collections
products.write: Create and update products
orders.read: View orders
orders.write: Create and update orders
customers.read: View customer profiles
customers.write: Update customer profiles
shops.read: View shop configuration
shops.write: Update shop configuration
hub.read: View content (posts, pages)
hub.write: Create and update content
store.read: View themes and assets
store.write: Manage themes and assets
sellers.read: View seller information
batches.read: View batch job status
batches.write: Create and run batch jobs
authorizationCode:
authorizationUrl: https://auth.onbolder.com/oauth/authorize
tokenUrl: https://auth.onbolder.com/oauth/token
scopes:
products.read: View products, variants and collections
products.write: Create and update products
orders.read: View orders
orders.write: Create and update orders
customers.read: View customer profiles
customers.write: Update customer profiles
shops.read: View shop configuration
shops.write: Update shop configuration
hub.read: View content (posts, pages)
hub.write: Create and update content
store.read: View themes and assets
store.write: Manage themes and assets
sellers.read: View seller information
batches.read: View batch job status
batches.write: Create and run batch jobs