Bolot Studio Products API

The Products API from Bolot Studio — 1 operation(s) for products.

Operations 1

GET /api/ucp/products List or search products #

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/bolotstudio-com:bolotstudio-com-products-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

bolotstudio-com-products-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Bolot Studio UCP Products API
  version: 1.1.0
  description: Universal Commerce Protocol API for Bolot Studio — custom made-to-order metal products. Photo-print products require a customer-provided image before checkout can be completed. The Address Sign uses template and address inputs, not photo upload. AI agents should direct customers to the product configurator before checkout. Pricing updated 2026-09-04; Statement single from PL 219 zł / DE €99 / CZ 1499 Kč / DK 749 kr / SE 999 kr / NO 999 kr / CH CHF129 / UK £79 / CA $229 / HU HUF25990 / RO RON319. Public agentic discovery is catalog/search plus hosted-Shopify handoff only; cart, checkout, photo-upload, order, and payment mutation APIs are intentionally omitted from this public OpenAPI surface.
  contact:
    name: Bolot Studio Support
    email: support@bolotstudio.com
    url: https://bolotstudio.com/en/pages/contact
  x-llms-txt: https://bolotstudio.com/llms.txt
  x-pricing-updated: '2026-09-04'
  x-pricing-version: v5.2.3 July 2026
  license:
    name: Proprietary
servers:
- url: https://bolotstudio.com
  description: Production
tags:
- name: Products
paths:
  /api/ucp/products:
    get:
      operationId: listProducts
      summary: List or search products
      description: Query the product catalog. Supports searching by term, filtering by handle, and sorting.
      tags:
      - Products
      parameters:
      - name: handle
        in: query
        description: Get a single product by its handle
        schema:
          type: string
          example: the-legacy-print
      - name: search
        in: query
        description: Search products by keyword
        schema:
          type: string
          example: metal print
      - name: sortBy
        in: query
        description: Sort field
        schema:
          type: string
          enum:
          - title
          - price
          - created
          - updated
          - best_selling
      - name: sortOrder
        in: query
        description: Sort direction
        schema:
          type: string
          enum:
          - asc
          - desc
      - name: limit
        in: query
        description: Maximum number of results (1-50)
        schema:
          type: integer
          minimum: 1
          maximum: 50
          default: 20
      - name: country
        in: query
        description: ISO 3166-1 alpha-2 country code for geo-specific pricing (e.g., GB, PL, DE)
        schema:
          type: string
      - name: locale
        in: query
        description: Locale code for localized URLs and descriptions (e.g. en, de, pl)
        schema:
          type: string
          enum:
          - en
          - pl
          - de
          - fr
          - it
          - es
          - nl
          - 'no'
          - sv
          - da
          - cs
          - pt
          - el
      - name: market
        in: query
        description: Bolot Shopify Market code. Use this to force market/currency context when locale is generic (for example locale=en, market=UK). If `country` is present, country and market must agree. The US market is not currently supported.
        schema:
          type: string
          minLength: 2
          maxLength: 2
          example: UK
      responses:
        '200':
          description: Product list or single product
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  data:
                    oneOf:
                    - $ref: '#/components/schemas/UCPProduct'
                    - type: object
                      properties:
                        items:
                          type: array
                          items:
                            $ref: '#/components/schemas/UCPProduct'
                        totalCount:
                          type: integer
        '400':
          description: Invalid request parameters
        '404':
          description: Product not found
components:
  schemas:
    Money:
      type: object
      description: 'Currency amounts use major units as decimal strings. v5.2.3 July 2026 Statement reference prices: PL 219 zł / DE €99 / CZ 1499 Kč / DK 749 kr / SE 999 kr / NO 999 kr / CH CHF129 / UK £79 / CA $229 / HU HUF25990 / RO RON319.'
      properties:
        amount:
          type: string
          example: '99.00'
        currency:
          type: string
          example: EUR
    UCPProduct:
      type: object
      description: Product in UCP format
      properties:
        id:
          type: string
          description: Shopify product GID
        handle:
          type: string
          example: the-legacy-print
        title:
          type: string
          example: The Legacy Print
        description:
          type: string
        price:
          oneOf:
          - $ref: '#/components/schemas/Money'
          - type: 'null'
          description: Lowest market-visible resolver price, or null when no sellable offer is available in the requested market.
        images:
          type: array
          items:
            $ref: '#/components/schemas/Image'
        variants:
          type: array
          items:
            $ref: '#/components/schemas/UCPVariant'
        options:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                example: Size
              values:
                type: array
                items:
                  type: string
                example:
                - Small
                - Medium
                - Large
        availability:
          type: string
          enum:
          - in_stock
          - out_of_stock
        vendor:
          type: string
          example: Bolot Studio
        productType:
          type: string
          example: Metal Photo Print
        shipping:
          type: object
          properties:
            freeAbove:
              $ref: '#/components/schemas/Money'
            estimatedDays:
              type: object
              properties:
                min:
                  type: integer
                  example: 4
                max:
                  type: integer
                  example: 12
            zones:
              type: array
              items:
                type: string
              example:
              - EU
              - UK
              - 'NO'
              - CH
        returns:
          type: object
          properties:
            days:
              type:
              - integer
              - 'null'
              example: null
              description: Commercial return-window length, or null when no blanket change-of-mind window is offered.
            type:
              type: string
              enum:
              - statutory_remedies_personalized_goods
              example: statutory_remedies_personalized_goods
            freeReturns:
              type: boolean
              const: false
              example: false
              description: True only for a blanket merchant-paid commercial return policy. Mandatory statutory-remedy costs are described separately.
            changeOfMindReturns:
              type: string
              description: No blanket voluntary change-of-mind window is promised; mandatory destination-law rights remain.
              enum:
              - not_offered_for_personalized_goods
            qualityIssueReportingTiming:
              type: string
              const: promptly_after_discovery
              example: promptly_after_discovery
              description: Contact timing for voluntary Verified quality support. It does not create a separate claim deadline or limit mandatory rights.
            qualityIssueReportingHasSeparateDeadline:
              type: boolean
              const: false
              example: false
              description: Verified quality support does not impose a separate voluntary claim deadline.
            merchantPaidVerifiedIssueReturns:
              type: boolean
              const: true
              example: true
              description: If Bolot Studio accepts a physical return for a verified quality issue, Bolot Studio pays that return cost.
            personalizedGoodsExemption:
              type: boolean
              const: true
            legalBasis:
              type: string
            process:
              type: string
            eligibleReasons:
              type: array
              items:
                type: string
            excludedReasons:
              type: array
              items:
                type: string
            coverage:
              type: string
        customization:
          type: object
          description: 'Customization requirements. IMPORTANT: Most products require a customer-uploaded photo; the Address Sign uses text/template input instead.'
          properties:
            required:
              type: boolean
              description: Whether customization is mandatory to order
            type:
              type: string
              description: Type of customization (e.g., photo_upload)
            description:
              type: string
            image_upload:
              type: object
              properties:
                required:
                  type: boolean
                formats:
                  type: array
                  items:
                    type: string
                max_file_size:
                  type: string
                min_resolution:
                  type: object
                  properties:
                    width:
                      type: integer
                    height:
                      type: integer
                recommended_resolution:
                  type: object
                  properties:
                    width:
                      type: integer
                    height:
                      type: integer
            configurator_url:
              type: string
              format: uri
              description: URL where customer can upload photo and configure the product
            ordering_flow:
              type: array
              items:
                type: string
              description: Step-by-step ordering flow
            checkout_attribute:
              type: object
              description: How to pass the customer's image URL when creating a checkout session
              properties:
                key:
                  type: string
                  description: Attribute key to use in line_items[].custom_attributes
                description:
                  type: string
                required:
                  type: boolean
        product_nature:
          type: string
          description: Whether product is made_to_order, ready_made, etc.
        material:
          type: object
          properties:
            type:
              type: string
            thickness:
              type: string
            process:
              type: string
            mounting:
              type: string
        social_proof:
          type: object
          description: Social proof and review data for AI shopping agent recommendations
          properties:
            aggregate_rating:
              type: object
              properties:
                value:
                  type: number
                  description: Average rating (e.g. 4.9)
                scale:
                  type: number
                  description: Rating scale maximum (5)
                review_count:
                  type: integer
                  description: Total number of reviews
                verified_purchase_count:
                  type: integer
                  description: Number of verified purchase reviews
                reviews_with_photos_count:
                  type: integer
                  description: Number of reviews with photos
            featured_reviews:
              type: array
              items:
                type: object
                properties:
                  author:
                    type: string
                  rating:
                    type: number
                  variant:
                    type: string
                  body:
                    type: string
                  verified_purchase:
                    type: boolean
                  has_photo:
                    type: boolean
                  date:
                    type: string
                    format: date
            review_source:
              type: string
              description: Review platform (judge.me)
            review_page_url:
              type: string
              format: uri
        use_cases:
          type: array
          description: Recommended use cases with variant/finish suggestions for AI recommendation engines
          items:
            type: object
            properties:
              occasion:
                type: string
                description: Use case identifier (birthday_gift, home_decor, etc.)
              recommended_variant:
                type: string
              recommended_finish:
                type: string
              price_from:
                type:
                - object
                - 'null'
                properties:
                  amount:
                    type: string
                  currency:
                    type: string
              why:
                type: string
                description: Explanation for the recommendation
              recipient_profile:
                type: string
                description: Target recipient profile, e.g. man_who_has_everything, woman, couple
              age_range:
                type: string
                description: Target age range, e.g. 30, 40-49, 50, 60+
              seasonal:
                type: boolean
                description: Whether this use case is seasonal (Valentine's, Christmas, etc.)
        gifting:
          type: object
          description: Gift purchasing metadata with budget tiers
          properties:
            is_giftable:
              type: boolean
            gift_wrapping:
              type: boolean
            gift_message:
              type: boolean
            budget_tiers:
              type: array
              items:
                type: object
                properties:
                  label:
                    type: string
                  variant:
                    type: string
                  from:
                    type:
                    - string
                    - 'null'
                  currency:
                    type:
                    - string
                    - 'null'
        competitive_positioning:
          type: object
          description: Competitive comparison data for AI shopping comparison
          properties:
            category:
              type: string
            differentiators:
              type: array
              items:
                type: object
                properties:
                  feature:
                    type: string
                  value:
                    oneOf:
                    - type: string
                    - type: boolean
                  competitor_typical:
                    oneOf:
                    - type: string
                    - type: boolean
            vs_competitors:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                  key_differences:
                    type: array
                    items:
                      type: string
        sustainability:
          type: object
          description: Environmental and sustainability claims
          properties:
            material_recyclability:
              type: string
            process_claims:
              type: array
              items:
                type: string
            packaging:
              type: string
            certifications:
              type: array
              items:
                type: string
        gallery:
          type: object
          description: Semantically tagged image gallery for AI visual context
          properties:
            product_shots:
              type: array
              items:
                $ref: '#/components/schemas/UCPImage'
            lifestyle:
              type: array
              items:
                $ref: '#/components/schemas/UCPImage'
            size_comparison:
              type: array
              items:
                $ref: '#/components/schemas/UCPImage'
            mounting_detail:
              type: array
              items:
                $ref: '#/components/schemas/UCPImage'
            close_up:
              type: array
              items:
                $ref: '#/components/schemas/UCPImage'
        active_promotions:
          type: array
          description: Currently active promotional offers
          items:
            type: object
            properties:
              id:
                type: string
              type:
                type: string
              title:
                type: string
              description:
                type: string
              qualifying_variants:
                type: array
                items:
                  type: string
              gift_value:
                type: object
                properties:
                  amount:
                    type: string
                  currency:
                    type: string
              active:
                type: boolean
              terms:
                type: string
        finish_guide:
          type: object
          description: Finish selection guide for AI recommendations
          properties:
            options:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                  description:
                    type: string
                  best_for:
                    type: array
                    items:
                      type: string
                  avoid_for:
                    type: array
                    items:
                      type: string
            decision_rule:
              type: string
        b2b:
          type: object
          description: B2B purchasing information
          properties:
            available:
              type: boolean
            programs:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                  min_order:
                    type: integer
                    nullable: true
                  description:
                    type: string
            contact_email:
              type: string
              format: email
            contact_subject:
              type: string
            b2b_page_url:
              type: string
              format: uri
            vat_invoicing:
              type: boolean
        quality_assurance:
          type: object
          description: Quality assurance and trust signals
          properties:
            individual_inspection:
              type: boolean
            inspection_description:
              type: string
            color_accuracy:
              type: string
            production_method:
              type: string
            quality_standard:
              type: string
            defect_policy:
              type: string
        localized_urls:
          type: object
          description: Product URLs for all supported locales
          additionalProperties:
            type: string
            format: uri
        available_locales:
          type: array
          description: List of available locale codes
          items:
            type: string
        ai_summary:
          type: object
          description: Structured AI-friendly summary for shopping agents and LLMs
          properties:
            one_liner:
              type: string
            key_differentiator:
              type: string
            ideal_for:
              type: array
              items:
                type: string
            not_ideal_for:
              type: array
              items:
                type: string
            decision_factors:
              type: array
              items:
                type: string
            requires_photo_upload:
              type: boolean
            has_3d_preview:
              type: boolean
            has_template_editor:
              type: boolean
            production_timeline:
              type: object
              description: Made-to-order production timeline
              properties:
                min_days:
                  type: integer
                  description: Minimum production days
                max_days:
                  type: integer
                  description: Maximum production days
                note:
                  type: string
                  description: Production timeline note
            price_breakdown:
              type: array
              description: Price breakdown per variant size
              items:
                type: object
                properties:
                  variant:
                    type: string
                  from:
                    type:
                    - string
                    - 'null'
                  currency:
                    type:
                    - string
                    - 'null'
            unique_benefits:
              type: array
              description: Product-specific benefits (e.g. tool_free_mounting, protective_uv_laminate_included)
              items:
                type: string
        ai_description:
          type: string
          description: Markdown-formatted product description optimized for LLM consumption
        faqs:
          type: array
          description: Frequently asked questions about this product
          items:
            type: object
            properties:
              question:
                type: string
              answer:
                type: string
        product_comparison:
          type: object
          description: Comparison with related products to help AI agents guide selection
          properties:
            vs_product:
              type: string
              description: Handle of the compared product
            vs_product_title:
              type: string
              description: Title of the compared product
            differences:
              type: array
              items:
                type: string
            when_to_choose_this:
              type: array
              items:
                type: string
            when_to_choose_other:
              type: array
              items:
                type: string
        shipping_zones:
          type: array
          description: Detailed shipping zone information with delivery estimates per region
          items:
            type: object
            properties:
              zone:
                type: string
              countries:
                type: array
                items:
                  type: string
              delivery_days:
                type: object
                properties:
                  min:
                    type: integer
                  max:
                    type: integer
              carrier:
                type: string
    UCPVariantDimensions:
      type: object
      description: Verified face dimensions of a product variant
      properties:
        width_cm:
          type: number
          description: Width in centimeters
        height_cm:
          type: number
          description: Height in centimeters
    Image:
      type: object
      properties:
        url:
          type: string
          format: uri
        altText:
          type: string
        width:
          type: integer
        height:
          type: integer
    UCPVariant:
      type: object
      properties:
        id:
          type: string
        title:
          type: string
          example: Large / Glossy
        sku:
          type: string
          nullable: true
        price:
          $ref: '#/components/schemas/Money'
        availability:
          type: string
          enum:
          - in_stock
          - out_of_stock
        options:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              value:
                type: string
        dimensions:
          $ref: '#/components/schemas/UCPVariantDimensions'
    UCPImage:
      type: object
      description: Semantically tagged product image
      properties:
        url:
          type: string
          format: uri
        alt:
          type: string
        context:
          type: string
        width:
          type: integer
        height:
          type: integer
      required:
      - url
      - alt
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Access token obtained from POST /api/ucp/auth
    ucp_agent:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'Agent identification JWT signed with ES256 (EC P-256, asymmetric). Issued by Bolot via POST /api/ucp/auth; the matching public key is published at /.well-known/jwks.json (keyed by `kid`). Include `UCP-Agent: profile="<agent profile URL>"` header alongside. Mutating checkout requests MAY additionally be signed at the HTTP-message level: send RFC 9421 `Signature-Input` + `Signature` headers (derived components @method @authority @path plus `content-digest` per RFC 9530, alg=ecdsa-p256-sha256), OR the legacy custom `request-signature` JWT. When present, the signature is verified against the agent''s UCP-profile signing keys; RFC 9421 takes precedence over the custom JWT.'