Create Prints Product discovery API

Read print variants, generation dimensions, frames, prices, and postage estimates.

GitHub OpenAPI

Operations 4

4 of 4 operations are conformant: apis.io called them with no credentials and the responses matched this contract. Checked 2026-11-12. how this works · status file

GET /api/agent-print-options List purchasable physical print variants conformant #
GET /api/prints Search the public print catalogue conformant #
GET /api/print-sizes List unframed print sizes conformant #
GET /api/frame-options List frame colours conformant #

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/createprints-ai:createprints-ai-product-discovery-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

createprints-ai-product-discovery-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Createprints Ai Product discovery API
  version: 1.1.0
  contact:
    name: Create Prints support
    url: https://www.createprints.ai/contact
  license:
    name: Proprietary
    url: https://www.createprints.ai/terms
  description: 'Operations tagged Product discovery across 2 of this provider''s published API definitions: createprints-ai-openapi.json, createprints-ai-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.createprints.ai
  description: Create Prints API origin
tags:
- name: Product discovery
  description: Read print variants, generation dimensions, frames, prices, and postage estimates.
paths:
  /api/agent-print-options:
    get:
      operationId: listAgentPrintOptions
      summary: List purchasable physical print variants
      description: 'Returns canonical `productVariantId` values, print dimensions, format, optional extras, compatible generation size, frame choices, product price, and a single-item postage estimate. That estimate is not final basket postage: checkout recalculates postage for quantity and multi-item baskets. Use `generation.imageModelSize` when creating artwork for the selected variant.'
      tags:
      - Product discovery
      security: []
      parameters:
      - name: country
        in: query
        description: Supported destination market. `GB` returns GBP; `US` returns USD.
        schema:
          type: string
          enum:
          - GB
          - US
          default: GB
      responses:
        '200':
          description: Currently purchasable physical print variants.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrintOptions'
        '500':
          description: Create Prints could not complete the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: https://api.createprints.ai
      description: Create Prints API origin
  /api/prints:
    get:
      operationId: searchPrints
      summary: Search the public print catalogue
      description: Searches every published print by free text and by any combination of attributes. Values within one attribute are OR-ed and attributes are AND-ed together, so `colour=Blue&colour=Green&room=Bedroom` means (blue or green) and bedroom. Each attribute accepts repeated parameters or a comma-separated list, and matches case-insensitively with dashes, underscores and spaces treated alike, so `red-orange` and `Red Orange` are the same value. Set `facets=1` to receive the remaining attribute values with the count of prints each would yield, which is the reliable way to narrow a search without guessing at vocabulary. Use the returned `id` with the checkout and print-option endpoints.
      tags:
      - Product discovery
      security: []
      parameters:
      - name: q
        in: query
        description: Free text over title, keywords, colour and description. Terms match at the start of a word, so prefixes work and mid-word noise does not. Every term must match, so more words narrow the result.
        schema:
          type: string
      - name: colour
        in: query
        description: Colour category, e.g. Blue, Orange, Grey. `color` is accepted too.
        schema:
          type: string
      - name: room
        in: query
        description: Recommended room, e.g. Bedroom, Living Room, Home Office.
        schema:
          type: string
      - name: trait
        in: query
        description: Mood, e.g. Serene, Bold, Grounded. `mood` is accepted too.
        schema:
          type: string
      - name: impact
        in: query
        description: Visual impact, e.g. Subtle, Moderate, Dramatic.
        schema:
          type: string
      - name: keyword
        in: query
        description: Subject or style keyword, e.g. botanical, minimal.
        schema:
          type: string
      - name: palette
        in: query
        description: Any named colour present in the artwork, from its extracted palette or its colour category, e.g. navy, sage, blue. Broader than `colour`, which is the single dominant category.
        schema:
          type: string
      - name: featured
        in: query
        description: Set to 1 to return only prints marked featured.
        schema:
          type: string
          enum:
          - '1'
          - 'true'
      - name: similarTo
        in: query
        description: A print id. Returns prints sharing any of its colour, room, mood, impact, keyword or palette, best match first, never the print itself. This is how to answer "more like this"; the attribute filters AND together and cannot express it. Composes with the other filters.
        schema:
          type: string
          format: uuid
      - name: sort
        in: query
        description: Defaults to similar when `similarTo` is given, relevance when `q` is given, and newest otherwise.
        schema:
          type: string
          enum:
          - relevance
          - newest
          - oldest
          - featured
          - similar
      - name: limit
        in: query
        description: Prints per response, 1-96.
        schema:
          type: integer
          minimum: 1
          maximum: 96
          default: 24
      - name: offset
        in: query
        description: Rows to skip. Page with `offset += limit` while `hasMore` is true.
        schema:
          type: integer
          minimum: 0
          default: 0
      - name: page
        in: query
        description: Shorthand for `offset = (page - 1) * limit`. Ignored when `offset` is given.
        schema:
          type: integer
          minimum: 1
      - name: facets
        in: query
        description: Set to 1 to include the available attribute values and their counts.
        schema:
          type: string
          enum:
          - '1'
          - 'true'
      responses:
        '200':
          description: Matching prints, the total match count, and optionally the facet counts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrintSearchResult'
        '503':
          description: The catalogue is temporarily unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: https://api.createprints.ai
      description: Create Prints API origin
  /api/print-sizes:
    get:
      operationId: listPrintSizes
      summary: List unframed print sizes
      description: Returns the legacy unframed-print size list in GBP. New agent integrations should normally use `/api/agent-print-options`, which also supplies generation dimensions, formats, frames, currency selection, and postage estimates.
      tags:
      - Product discovery
      security: []
      responses:
        '200':
          description: Available unframed print sizes and GBP prices.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PrintSizes'
        '500':
          description: Create Prints could not complete the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: https://api.createprints.ai
      description: Create Prints API origin
  /api/frame-options:
    get:
      operationId: listFrameOptions
      summary: List frame colours
      description: 'Returns frame-option identifiers and labels. `frameOptionId` is required only when the chosen product variant has `requiresFrameOption: true`.'
      tags:
      - Product discovery
      security: []
      responses:
        '200':
          description: Available frame colour options.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FrameOptions'
        '500':
          description: Create Prints could not complete the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: https://api.createprints.ai
      description: Create Prints API origin
components:
  schemas:
    FrameOptions:
      type: object
      required:
      - frameOptions
      properties:
        frameOptions:
          type: array
          items:
            $ref: '#/components/schemas/Option'
    CataloguePrint:
      type: object
      required:
      - id
      - imagePaths
      properties:
        id:
          type: string
          format: uuid
          description: Use this as `jobId` when creating a checkout.
        title:
          type:
          - string
          - 'null'
        description:
          type:
          - string
          - 'null'
        imagePaths:
          type: array
          items:
            type: string
            format: uri
        colorCategory:
          type:
          - string
          - 'null'
        recommendedRoom:
          type: array
          items:
            type: string
        colorPsychologyPrimaryTrait:
          type:
          - string
          - 'null'
        colorPsychologyImpactLevel:
          type:
          - string
          - 'null'
        keywords:
          type: array
          items:
            type: string
        paletteColors:
          type: array
          items:
            type: string
          description: Named colours extracted from the artwork. The `palette` filter also matches on colorCategory, so it can match a print whose list here is empty.
        createdAt:
          type:
          - string
          - 'null'
          format: date-time
        width:
          type:
          - integer
          - 'null'
        height:
          type:
          - integer
          - 'null'
        aspectRatio:
          type:
          - number
          - 'null'
        orientation:
          type:
          - string
          - 'null'
          enum:
          - portrait
          - landscape
          - square
          - null
    PrintOptions:
      type: object
      required:
      - currency
      - usage
      - productVariants
      properties:
        currency:
          type: string
          enum:
          - GBP
          - USD
        usage:
          type: string
        productVariants:
          type: array
          items:
            $ref: '#/components/schemas/ProductVariant'
    PrintSizes:
      type: object
      required:
      - sizes
      properties:
        sizes:
          type: array
          items:
            $ref: '#/components/schemas/PrintSize'
    PrintSize:
      type: object
      required:
      - id
      - productVariantId
      - sizeOptionId
      - name
      - price
      - priceFormatted
      properties:
        id:
          type: string
          format: uuid
        productVariantId:
          type: string
          format: uuid
        sizeOptionId:
          type: string
          format: uuid
        name:
          type: string
        price:
          type: number
          minimum: 0
        priceFormatted:
          type: string
    GenerationSpec:
      type: object
      required:
      - aspect
      - imageModelSize
      - promptSizeId
      properties:
        aspect:
          $ref: '#/components/schemas/Aspect'
        imageModelSize:
          type: string
          examples:
          - 1536x1536
          - 1024x1536
          - 1536x1024
        promptSizeId:
          type: integer
          enum:
          - 1
          - 2
          - 3
    ProductVariant:
      type: object
      required:
      - productVariantId
      - productId
      - sizeOptionId
      - size
      - format
      - extra
      - generation
      - requiresFrameOption
      - frameOptions
      - price
      - priceFormatted
      - shippingPrice
      - shippingPriceFormatted
      - estimatedCheckoutTotal
      - estimatedCheckoutTotalFormatted
      - shipping
      - checkout
      properties:
        productVariantId:
          type: string
          format: uuid
        productId:
          type:
          - string
          - integer
        sku:
          type:
          - string
          - 'null'
        sizeOptionId:
          type: string
          format: uuid
          description: Legacy alias; use `productVariantId`.
        size:
          $ref: '#/components/schemas/Option'
        format:
          $ref: '#/components/schemas/Option'
        extra:
          oneOf:
          - $ref: '#/components/schemas/Option'
          - type: 'null'
        generation:
          $ref: '#/components/schemas/GenerationSpec'
        requiresFrameOption:
          type: boolean
        frameOptions:
          type: array
          items:
            $ref: '#/components/schemas/Option'
        price:
          type: number
          minimum: 0
        priceFormatted:
          type: string
        shippingPrice:
          type:
          - number
          - 'null'
          minimum: 0
        shippingPriceFormatted:
          type:
          - string
          - 'null'
        estimatedCheckoutTotal:
          type:
          - number
          - 'null'
          minimum: 0
        estimatedCheckoutTotalFormatted:
          type:
          - string
          - 'null'
        shipping:
          type: object
          required:
          - price
          - priceFormatted
          - includedInPrice
          - note
          properties:
            price:
              type:
              - number
              - 'null'
            priceFormatted:
              type:
              - string
              - 'null'
            includedInPrice:
              type: boolean
              const: false
            note:
              type: string
        checkout:
          type: object
          required:
          - productVariantId
          - frameOptionId
          properties:
            productVariantId:
              type: string
              format: uuid
            frameOptionId:
              type:
              - string
              - 'null'
    Error:
      type: object
      description: Errors use `error`; some endpoints also return a stable `code`, validation `details`, or `retryable` hint.
      properties:
        error:
          type: string
        code:
          type: string
        details:
          type: array
          items:
            type: string
        retryable:
          type: boolean
      additionalProperties: true
    Aspect:
      type: string
      enum:
      - square
      - portrait
      - landscape
    Option:
      type: object
      required:
      - id
      - value
      - name
      properties:
        id:
          type:
          - integer
          - string
        value:
          type:
          - string
          - 'null'
        name:
          type: string
    FacetOption:
      type: object
      required:
      - value
      - slug
      - count
      - selected
      properties:
        value:
          type: string
          description: Pass this back as the filter value.
        slug:
          type: string
        count:
          type: integer
          minimum: 0
          description: Prints this value would yield alongside the other filters already applied. Zero means the combination is empty.
        selected:
          type: boolean
    PrintSearchResult:
      type: object
      required:
      - prints
      - total
      - limit
      - offset
      - hasMore
      - sort
      properties:
        prints:
          type: array
          items:
            $ref: '#/components/schemas/CataloguePrint'
        total:
          type: integer
          minimum: 0
          description: Full match count, so a pager needs no second request.
        limit:
          type: integer
        offset:
          type: integer
        hasMore:
          type: boolean
        sort:
          type: string
          enum:
          - relevance
          - newest
          - oldest
          - featured
          - similar
        q:
          type:
          - string
          - 'null'
        appliedFilters:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        facets:
          $ref: '#/components/schemas/PrintSearchFacets'
        truncated:
          type: boolean
          description: Present only when the catalogue outgrew the search index and the answer is partial.
    PrintSearchFacets:
      type: object
      description: Available values per attribute. A facet's counts ignore that facet's own selection, so a second value can always be added to widen the search.
      properties:
        colour:
          type: array
          items:
            $ref: '#/components/schemas/FacetOption'
        room:
          type: array
          items:
            $ref: '#/components/schemas/FacetOption'
        trait:
          type: array
          items:
            $ref: '#/components/schemas/FacetOption'
        impact:
          type: array
          items:
            $ref: '#/components/schemas/FacetOption'
        keyword:
          type: array
          items:
            $ref: '#/components/schemas/FacetOption'
        palette:
          type: array
          items:
            $ref: '#/components/schemas/FacetOption'
  securitySchemes:
    agentApiKey:
      type: apiKey
      in: header
      name: X-API-Key
      description: Create Prints account API key beginning with `cp_`. Required scopes vary by operation.
    agentBearer:
      type: http
      scheme: bearer
      description: Account API key (`cp_…`) or MCP OAuth token (`cp_mcp_access_…`) in Authorization.
    userSessionBearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Signed-in Create Prints user-session token; supported only where this scheme is listed.
    oauth2:
      type: oauth2
      description: Create Prints OAuth 2.0 authorization-code flow with PKCE for MCP and agent clients.
      flows:
        authorizationCode:
          authorizationUrl: https://api.createprints.ai/api/oauth/authorize
          tokenUrl: https://api.createprints.ai/api/oauth/token
          scopes:
            artwork:create: Create, import, and retry artwork jobs.
            artwork:read: Read and list artwork jobs.
            print_options:read: Read print variants, frames, prices, and postage estimates.
            checkout:create: Create checkout sessions and retry production submission.
            checkout:read: Read checkout, fulfilment, and shipment status.
            orders:read: Read orders and, on the current credit endpoint, generation credits.
externalDocs:
  description: Create Prints developer resources
  url: https://www.createprints.ai/developers
x-refined-from:
- createprints-ai-openapi.json
- createprints-ai-openapi.yml