Bootic Content API
CMS-style content for a shop's storefront — blog posts, static pages, and contact/lead-capture forms.
CMS-style content for a shop's storefront — blog posts, static pages, and contact/lead-capture forms.
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-content-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 Content 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: Content
description: 'CMS-style content for a shop''s storefront — blog posts, static pages, and
contact/lead-capture forms.'
paths:
/shops/{shop_id}/posts:
parameters:
- name: shop_id
in: path
required: true
schema:
type: integer
example: 1
get:
tags:
- Content
summary: List shop posts
description: Returns blog/news posts for the shop.
operationId: listShopPosts
x-codeSamples:
- lang: Shell
label: cURL
source: "curl -s -H \"Authorization: Bearer $BOLDER_TOKEN\" \\\n \"https://api.onbolder.com/v2/shops/1/posts\"\n"
parameters:
- name: page
in: query
schema:
type: integer
default: 1
- name: per_page
in: query
schema:
type: integer
default: 20
responses:
'200':
description: Posts list
content:
application/json:
example:
_class:
- results
- posts
total_items: 5
_embedded:
items:
- id: 1
shop_id: 1
title: Summer Sale is Here
slug: summer-sale
published: true
published_on: '2024-06-01T00:00:00Z'
created_on: '2024-06-01T00:00:00Z'
post:
tags:
- Content
summary: Create a post
operationId: createPost
x-codeSamples:
- lang: Shell
label: cURL
source: "curl -s -X POST \\\n -H \"Authorization: Bearer $BOLDER_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"title\":\"Winter Sale\",\"body\":\"<p>Save big!</p>\",\"published\":true}' \\\n \"https://api.onbolder.com/v2/shops/1/posts\"\n"
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- title
- body
properties:
title:
type: string
body:
type: string
slug:
type: string
description: Auto-generated from title if blank
description:
type: string
short_description:
type: string
published:
type: boolean
default: false
published_on:
type: string
format: date-time
format:
type: string
enum:
- html
- blocks
- markdown
default: html
description: '`markdown` is accepted as input and converted to `html` before saving; the stored format will be `html`.'
example:
title: Winter Sale
body: <p>Save big!</p>
published: true
responses:
'201':
description: Post created
content:
application/json:
schema:
$ref: '#/components/schemas/Post'
'422':
description: Validation error
/posts/{id}:
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Post ID or slug
get:
tags:
- Content
summary: Get a post
operationId: getPost
responses:
'200':
description: Post entity
content:
application/json:
schema:
$ref: '#/components/schemas/Post'
'404':
description: Post not found
put:
tags:
- Content
summary: Update a post
operationId: updatePost
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
body:
type: string
published:
type: boolean
published_on:
type: string
format: date-time
format:
type: string
enum:
- html
- blocks
- markdown
description: '`markdown` is accepted as input and converted to `html` before saving.'
responses:
'200':
description: Post updated
content:
application/json:
schema:
$ref: '#/components/schemas/Post'
delete:
tags:
- Content
summary: Delete a post
operationId: deletePost
responses:
'204':
description: Post deleted
/shops/{shop_id}/pages:
parameters:
- name: shop_id
in: path
required: true
schema:
type: integer
example: 1
get:
tags:
- Content
summary: List pages
description: Returns static content pages for the shop.
operationId: listShopPages
responses:
'200':
description: Pages list
content:
application/json:
example:
_class:
- results
- pages
total_items: 3
_embedded:
items:
- id: 1
shop_id: 1
title: About Us
slug: about-us
visible: true
post:
tags:
- Content
summary: Create a page
operationId: createPage
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- title
properties:
title:
type: string
body:
type: string
slug:
type: string
description:
type: string
visible:
type: boolean
default: true
format:
type: string
enum:
- html
- blocks
- markdown
default: html
description: '`markdown` is accepted as input and converted to `html` before saving; the stored format will be `html`.'
example:
title: About Us
body: <p>We are a small shop.</p>
responses:
'201':
description: Page created
content:
application/json:
schema:
$ref: '#/components/schemas/Page'
'422':
description: Validation error
/pages/{id}:
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Page ID or slug
get:
tags:
- Content
summary: Get a page
operationId: getPage
responses:
'200':
description: Page entity
content:
application/json:
schema:
$ref: '#/components/schemas/Page'
'404':
description: Page not found
put:
tags:
- Content
summary: Update a page
operationId: updatePage
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
slug:
type: string
description:
type: string
format:
type: string
enum:
- html
- blocks
- markdown
description: '`markdown` is accepted as input and converted to `html` before saving.'
body:
type: string
visible:
type: boolean
responses:
'200':
description: Page updated
content:
application/json:
schema:
$ref: '#/components/schemas/Page'
delete:
tags:
- Content
summary: Delete a page
operationId: deletePage
responses:
'204':
description: Page deleted
/shops/{shop_id}/forms:
parameters:
- name: shop_id
in: path
required: true
schema:
type: integer
example: 1
get:
tags:
- Content
summary: List forms
description: Returns contact/lead-capture forms for the shop.
operationId: listShopForms
responses:
'200':
description: Forms list
content:
application/json:
example:
_class:
- results
- forms
total_items: 1
_embedded:
items:
- id: 1
shop_id: 1
title: Contact Us
slug: contact-us
visible: true
post:
tags:
- Content
summary: Create a form
operationId: createForm
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- title
properties:
title:
type: string
body:
type: string
description: Intro text shown above the form fields
slug:
type: string
description:
type: string
visible:
type: boolean
default: true
format:
type: string
enum:
- html
- markdown
default: html
description: '`markdown` is accepted as input and converted to `html` before saving; the stored format will be `html`.'
has_address_fields:
type: boolean
default: false
success_message:
type: string
example:
title: Contact Us
has_address_fields: false
responses:
'201':
description: Form created
content:
application/json:
schema:
$ref: '#/components/schemas/Form'
'422':
description: Validation error
/forms/{id}:
parameters:
- name: id
in: path
required: true
schema:
type: string
description: Form ID or slug
get:
tags:
- Content
summary: Get a form
operationId: getForm
responses:
'200':
description: Form entity
content:
application/json:
schema:
$ref: '#/components/schemas/Form'
'404':
description: Form not found
put:
tags:
- Content
summary: Update a form
operationId: updateForm
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
title:
type: string
slug:
type: string
description:
type: string
format:
type: string
enum:
- html
- markdown
description: '`markdown` is accepted as input and converted to `html` before saving.'
body:
type: string
visible:
type: boolean
success_message:
type: string
has_address_fields:
type: boolean
responses:
'200':
description: Form updated
content:
application/json:
schema:
$ref: '#/components/schemas/Form'
delete:
tags:
- Content
summary: Delete a form
operationId: deleteForm
responses:
'204':
description: Form deleted
components:
schemas:
Post:
type: object
properties:
_links:
$ref: '#/components/schemas/HalLinks'
id:
type: integer
shop_id:
type: integer
title:
type: string
slug:
type: string
body:
type: string
description:
type: string
short_description:
type: string
published:
type: boolean
description: There is no `status` field — this is a boolean.
published_on:
type: string
format: date-time
format:
type: string
enum:
- html
- blocks
user_id:
type: integer
created_on:
type: string
format: date-time
updated_on:
type: string
format: date-time
Form:
type: object
properties:
_links:
$ref: '#/components/schemas/HalLinks'
id:
type: integer
shop_id:
type: integer
title:
type: string
slug:
type: string
body:
type: string
description:
type: string
visible:
type: boolean
format:
type: string
has_address_fields:
type: boolean
success_message:
type: string
created_on:
type: string
format: date-time
updated_on:
type: string
format: date-time
Page:
type: object
properties:
_links:
$ref: '#/components/schemas/HalLinks'
id:
type: integer
shop_id:
type: integer
title:
type: string
slug:
type: string
body:
type: string
description:
type: string
visible:
type: boolean
format:
type: string
created_on:
type: string
format: date-time
updated_on:
type: string
format: date-time
HalLinks:
type: object
additionalProperties:
oneOf:
- $ref: '#/components/schemas/HalLink'
- type: array
items:
$ref: '#/components/schemas/HalLink'
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
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