Bootic Content API

CMS-style content for a shop's storefront — blog posts, static pages, and contact/lead-capture forms.

Operations 15

GET /shops/{shop_id}/posts List shop posts #
POST /shops/{shop_id}/posts Create a post #
GET /posts/{id} Get a post #
PUT /posts/{id} Update a post #
DELETE /posts/{id} Delete a post #
GET /shops/{shop_id}/pages List pages #
POST /shops/{shop_id}/pages Create a page #
GET /pages/{id} Get a page #
PUT /pages/{id} Update a page #
DELETE /pages/{id} Delete a page #
GET /shops/{shop_id}/forms List forms #
POST /shops/{shop_id}/forms Create a form #
GET /forms/{id} Get a form #
PUT /forms/{id} Update a form #
DELETE /forms/{id} Delete a form #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/bootic-content-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

bootic-content-api-openapi.yml Raw ↑
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