Bootic Promotions API

Promotional discount codes and automatic discounts applied at checkout.

Operations 5

GET /promotions List promotions #
POST /promotions Create a promotion #
GET /promotions/{id} Get a promotion #
PUT /promotions/{id} Update a promotion #
DELETE /promotions/{id} Delete a promotion #

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-promotions-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-promotions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Bolder API v2 Promotions 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: Promotions
  description: Promotional discount codes and automatic discounts applied at checkout.
paths:
  /promotions:
    get:
      tags:
      - Promotions
      summary: List promotions
      description: 'Returns discount promotions. Promotions apply percentage or

        fixed-amount discounts via coupon codes or automatic rules.'
      operationId: listPromotions
      parameters:
      - name: shop_id
        in: query
        schema:
          type: integer
        description: ID of the shop whose promotions to list.
        example: 1
      - name: status
        in: query
        schema:
          type: string
          enum:
          - active
          - expired
          - all
          default: all
        description: Filter by promotion status.
        example: active
      - name: q
        in: query
        schema:
          type: string
        description: Search by promotion name or code.
        example: SUMMER20
      - name: page
        in: query
        schema:
          type: integer
          default: 1
          minimum: 1
        example: 1
      - name: per_page
        in: query
        schema:
          type: integer
          default: 20
          minimum: 1
          maximum: 200
        example: 20
      responses:
        '200':
          description: Paginated promotions list
          content:
            application/json:
              example:
                _class:
                - results
                - promotions
                total_items: 1
                per_page: 20
                page: 1
                _links:
                  self:
                    href: https://api.onbolder.com/v2/promotions?shop_id=1
                _embedded:
                  items:
                  - id: 20
                    name: Summer Sale 20%
                    code: SUMMER20
                    activation_mode: code
                    discount_type: percentage
                    discount: 20
                    status: active
                    starts_at: '2024-06-01T00:00:00Z'
                    expires_at: '2024-08-31T23:59:59Z'
                    _links:
                      self:
                        href: https://api.onbolder.com/v2/promotions/20
        '422':
          description: '`shop_id` required'
        '403':
          description: Access denied
    post:
      tags:
      - Promotions
      summary: Create a promotion
      description: 'Creates a new promotion for a shop. Promotions apply percentage or fixed-amount

        discounts via coupon codes or automatic rules.

        `shop_id` is required in the body.'
      operationId: createPromotion
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PromotionInput'
            example:
              shop_id: 1
              name: Summer Sale
              code: SUMMER20
              discount_type: percentage
              discount: 20
              activation_mode: code
              starts_at: '2024-06-01T00:00:00Z'
              expires_at: '2024-08-31T23:59:59Z'
      responses:
        '201':
          description: Promotion created
          content:
            application/json:
              example:
                id: 20
                name: Summer Sale
                code: SUMMER20
                discount_type: percentage
                discount: 20
                status: active
                starts_at: '2024-06-01T00:00:00Z'
                expires_at: '2024-08-31T23:59:59Z'
                _links:
                  self:
                    href: https://api.onbolder.com/v2/promotions/20
        '422':
          description: Validation error
  /promotions/{id}:
    get:
      tags:
      - Promotions
      summary: Get a promotion
      description: Returns a single promotion by ID.
      operationId: getPromotion
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        description: ID of the promotion to retrieve.
        example: 20
      responses:
        '200':
          description: Promotion details
          content:
            application/json:
              example:
                id: 20
                name: Summer Sale
                code: SUMMER20
                discount_type: percentage
                discount: 20
                status: active
                starts_at: '2024-06-01T00:00:00Z'
                expires_at: '2024-08-31T23:59:59Z'
                usage_count: 0
                _links:
                  self:
                    href: https://api.onbolder.com/v2/promotions/20
        '404':
          description: Promotion not found
    put:
      tags:
      - Promotions
      summary: Update a promotion
      description: Updates an existing promotion.
      operationId: updatePromotion
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        description: ID of the promotion to update.
        example: 20
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PromotionInput'
            example:
              name: Summer Sale Extended
              discount: 25
      responses:
        '200':
          description: Promotion updated
          content:
            application/json:
              example:
                id: 20
                name: Summer Sale Extended
                discount: 25
                _links:
                  self:
                    href: https://api.onbolder.com/v2/promotions/20
        '404':
          description: Promotion not found
    delete:
      tags:
      - Promotions
      summary: Delete a promotion
      description: Soft-deletes a promotion.
      operationId: deletePromotion
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        description: ID of the promotion to delete.
        example: 20
      responses:
        '204':
          description: Promotion deleted
components:
  schemas:
    PromotionInput:
      type: object
      required:
      - name
      - shop_id
      - discount_type
      - discount
      - activation_mode
      description: 'Input for creating or updating a promotion. On update (PUT) all fields are optional.

        '
      properties:
        shop_id:
          type: integer
          description: ID of the shop (required on create)
        name:
          type: string
        status:
          type: string
          enum:
          - active
          - inactive
          default: active
        cumulative:
          type: boolean
          default: true
          description: Whether this promotion can stack with others. Defaults to `true`.
        discount_type:
          type: string
          enum:
          - fixed
          - percentage
          - free-shipping
        discount:
          type: number
          description: Discount value — a percentage (0–100) or a fixed amount in cents.
        activation_mode:
          type: string
          enum:
          - code
          - auto
          - fulfillment
          - payment
          description: 'How the promotion is activated. `code` requires a coupon code; `auto` applies automatically to eligible orders; `fulfillment` activates for a specific fulfillment method; `payment` activates for a specific payment method.

            '
        code:
          type: string
          description: Coupon code (required when `activation_mode` is `code`).
        fulfillment_method:
          type: integer
          description: Fulfillment method ID (required when `activation_mode` is `fulfillment`).
        payment_method_id:
          type: integer
          description: Payment method ID (required when `activation_mode` is `payment`).
        usage_limit:
          type: integer
          description: Maximum total redemptions. Unlimited if omitted.
        per_user_limit:
          type: integer
          description: Maximum redemptions per customer. Unlimited if omitted.
        starts_at:
          type: string
          format: date-time
        expires_at:
          type: string
          format: date-time
        price_range_from:
          type: integer
          description: Minimum order subtotal in cents for the promotion to apply.
        price_range_to:
          type: integer
          description: Maximum order subtotal in cents for the promotion to apply.
        product_range_from:
          type: integer
          description: Minimum number of qualifying products required in the cart.
        product_range_to:
          type: integer
          description: Maximum number of qualifying products allowed in the cart.
        product_discount_group_id:
          type: integer
          description: ID of the group whose products receive the discount.
        product_discount_group_type:
          type: string
          enum:
          - AllProducts
          - AllBundles
          - Collection
          - ProductType
          - Vendor
          - Tag
          - Product
        product_discount_group_filter_mode:
          type: string
          enum:
          - all
          - all_except
          - single_cheapest
          - single_most_expensive
          - all_but_cheapest
          - all_but_most_expensive
          - cheapest_half
          - most_expensive_half
          - cheapest_third
          - most_expensive_third
          - cheapest_fourth
          - most_expensive_fourth
          - single_cheapest_from_count_group
          - single_most_expensive_from_count_group
          - cheapest_half_from_count_group
          - most_expensive_half_from_count_group
          - cheapest_third_from_count_group
          - most_expensive_third_from_count_group
          - cheapest_fourth_from_count_group
          - most_expensive_fourth_from_count_group
          description: Which items within the discount group receive the discount.
        product_count_group_id:
          type: integer
          description: Group used to count qualifying products (for count-gated discounts).
        product_count_group_type:
          type: string
          enum:
          - AllProducts
          - AllBundles
          - Collection
          - ProductType
          - Vendor
          - Tag
          - Product
        price_list_id:
          type: integer
          description: Restrict the promotion to orders using this price list.
        apply_tag:
          type: string
          description: Tag to apply to the order when this promotion is used.
  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