Create Prints Checkout API

Create a human-completed checkout and inspect payment and fulfilment progress.

GitHub OpenAPI

Operations 3

POST /api/checkout Create a human-completed checkout #
GET /api/checkout-status Get checkout, fulfilment, and shipment status #
POST /api/checkout-status Retry production submission for prepared print assets #

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-checkout-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-checkout-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Createprints Ai Checkout 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 Checkout 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: Checkout
  description: Create a human-completed checkout and inspect payment and fulfilment progress.
paths:
  /api/checkout:
    post:
      operationId: createAgentCheckout
      summary: Create a human-completed checkout
      description: 'Creates a checkout link on the Create Prints website for one or more completed, account-owned artworks. Every artwork must have an uploaded image and its aspect must match the selected variant. The agent returns `checkoutUrl` to the person, who reviews the basket and completes payment. A basket supports at most 20 line items; each line supports quantity 1–20. `GB` uses GBP and `US` uses USD. Multi-item or multi-quantity shipping is quoted before checkout; a temporary quote failure returns `503` with `retryable: true`.'
      tags:
      - Checkout
      security:
      - agentApiKey: []
      - agentBearer: []
      - oauth2:
        - checkout:create
      parameters:
      - name: Idempotency-Key
        in: header
        description: Optional opaque key passed to checkout creation. Reuse it when retrying the same logical request.
        schema:
          type: string
          minLength: 1
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckoutRequest'
            example:
              country: GB
              jobId: 1ae94a6e-f1dd-44c7-8314-a869e8357cc1
              productVariantId: a5894107-bd91-48fb-a37c-49718c82ec84
              quantity: 1
      responses:
        '200':
          description: Checkout was created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckoutResponse'
        '400':
          description: Missing or invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: The credential is missing, invalid, revoked, or expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: The credential lacks the required scope or cannot perform this operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: The resource was not found for the authenticated account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: The resource state does not permit this operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '410':
          description: The selected product is no longer available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Create Prints could not complete the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: The payment provider could not create the checkout.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: A shipping quote could not be obtained for the basket.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: https://api.createprints.ai
      description: Create Prints API origin
  /api/checkout-status:
    get:
      operationId: getAgentCheckoutStatus
      summary: Get checkout, fulfilment, and shipment status
      description: For a simple payment lookup, provide `sessionId` and omit `view`. For the combined agent workflow, set `view=agent` and provide at least one of `jobId`, `sessionId`, or `orderId`. Agent view combines artwork readiness, checkout state, print-asset preparation, production, shipments, and a machine-readable `nextAction`. A signed-in user-session token is accepted for this read operation in addition to account API keys and MCP OAuth tokens.
      tags:
      - Checkout
      security:
      - agentApiKey: []
      - agentBearer: []
      - userSessionBearer: []
      - oauth2:
        - checkout:read
      parameters:
      - $ref: '#/components/parameters/SessionId'
      - name: jobId
        in: query
        description: Account-owned artwork job ID.
        schema:
          type: string
          format: uuid
      - name: orderId
        in: query
        description: Account-owned order ID.
        schema:
          type: string
          format: uuid
      - name: view
        in: query
        description: Set to `agent` for combined workflow status.
        schema:
          type: string
          const: agent
      responses:
        '200':
          description: Current payment and, when requested, fulfilment and shipment state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckoutStatus'
        '400':
          description: Missing or invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: The credential is missing, invalid, revoked, or expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: The credential lacks the required scope or cannot perform this operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: The resource was not found for the authenticated account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Create Prints could not complete the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: retryAgentFulfilment
      summary: Retry production submission for prepared print assets
      description: 'Attempts production submission for an account-owned order whose print assets are already prepared. It does not restart image upscaling. An already-submitted order returns `200` with `accepted: false` and `reason: already_submitted`; orders still preparing assets or containing failed assets return `409`. The endpoint currently returns `200` after a successful submission attempt.'
      tags:
      - Checkout
      security:
      - agentApiKey: []
      - agentBearer: []
      - oauth2:
        - checkout:create
      parameters:
      - name: action
        in: query
        required: true
        description: Selects the fulfilment retry action.
        schema:
          type: string
          const: retry-fulfillment
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderIdRequest'
      responses:
        '200':
          description: The order was already submitted or its prepared assets were submitted to production.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FulfilmentRetry'
        '400':
          description: Missing or invalid input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: The credential is missing, invalid, revoked, or expired.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: The credential lacks the required scope or cannot perform this operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: The resource was not found for the authenticated account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: The resource state does not permit this operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '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:
    FulfilmentItem:
      type: object
      required:
      - id
      - generationJobId
      - productVariantId
      - quantity
      - status
      properties:
        id:
          type: string
          format: uuid
        generationJobId:
          type: string
          format: uuid
        productVariantId:
          type: string
          format: uuid
        quantity:
          type: integer
          minimum: 1
        status:
          type: string
          enum:
          - pending
          - ready
          - failed
    OrderIdRequest:
      type: object
      required:
      - orderId
      properties:
        orderId:
          type: string
          format: uuid
      additionalProperties: false
    FulfilmentRetry:
      type: object
      required:
      - code
      - orderId
      - accepted
      - reason
      properties:
        code:
          type: string
          const: ok
        orderId:
          type: string
          format: uuid
        accepted:
          type: boolean
          const: false
        reason:
          type: string
          enum:
          - already_submitted
          - submitted_existing_asset
    Shipment:
      type: object
      required:
      - status
      - shippedAt
      - carrier
      - trackingNumber
      - trackingUrl
      properties:
        status:
          type: string
        shippedAt:
          type:
          - string
          - 'null'
          format: date-time
        carrier:
          type:
          - string
          - 'null'
        trackingNumber:
          type:
          - string
          - 'null'
        trackingUrl:
          type:
          - string
          - 'null'
          format: uri
    CheckoutRequest:
      oneOf:
      - allOf:
        - $ref: '#/components/schemas/CheckoutItem'
        - type: object
          properties:
            country:
              type: string
              enum:
              - GB
              - US
              default: GB
      - type: object
        required:
        - items
        properties:
          country:
            type: string
            enum:
            - GB
            - US
            default: GB
          items:
            type: array
            minItems: 1
            maxItems: 20
            items:
              $ref: '#/components/schemas/CheckoutItem'
    AgentCheckoutState:
      type: object
      required:
      - sessionId
      - status
      - paymentStatus
      - orderId
      - nextAction
      properties:
        sessionId:
          type:
          - string
          - 'null'
        status:
          type:
          - string
          - 'null'
        paymentStatus:
          type:
          - string
          - 'null'
        orderId:
          type:
          - string
          - 'null'
          format: uuid
        nextAction:
          type: string
    AgentCheckoutStatus:
      type: object
      required:
      - code
      - job
      - checkout
      - fulfillment
      - orderStatus
      properties:
        code:
          type: string
          const: ok
        job:
          oneOf:
          - $ref: '#/components/schemas/AgentJobState'
          - type: 'null'
        checkout:
          oneOf:
          - $ref: '#/components/schemas/AgentCheckoutState'
          - type: 'null'
        fulfillment:
          oneOf:
          - $ref: '#/components/schemas/FulfilmentStatus'
          - type: 'null'
        orderStatus:
          oneOf:
          - $ref: '#/components/schemas/ProductionStatus'
          - type: 'null'
    ProductionStatus:
      type: object
      required:
      - stage
      - isShipped
      - shipments
      - updatedAt
      - nextAction
      properties:
        stage:
          type: string
        isShipped:
          type: boolean
        shipments:
          type: array
          items:
            $ref: '#/components/schemas/Shipment'
        updatedAt:
          type:
          - string
          - 'null'
          format: date-time
        nextAction:
          type: string
    CheckoutStatus:
      oneOf:
      - $ref: '#/components/schemas/SimpleCheckoutStatus'
      - $ref: '#/components/schemas/AgentCheckoutStatus'
    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
    AgentJobState:
      type: object
      required:
      - id
      - status
      - purchasable
      - nextAction
      properties:
        id:
          type: string
          format: uuid
        status:
          type: string
        purchasable:
          type: boolean
        nextAction:
          type: string
    SimpleCheckoutStatus:
      type: object
      required:
      - checkoutSessionId
      - status
      - paymentStatus
      - orderId
      properties:
        checkoutSessionId:
          type: string
          pattern: ^cs_
        status:
          type:
          - string
          - 'null'
        paymentStatus:
          type:
          - string
          - 'null'
        orderId:
          type:
          - string
          - 'null'
          format: uuid
    CheckoutResponse:
      type: object
      required:
      - code
      - checkoutUrl
      - checkoutSessionId
      - currency
      properties:
        code:
          type: string
          const: ok
        checkoutUrl:
          type: string
          format: uri
          description: Create Prints website URL for human review and payment.
        checkoutSessionId:
          type: string
          pattern: ^cs_
        basketId:
          type: string
          format: uuid
        jobId:
          type: string
          format: uuid
        productVariantId:
          type: string
          format: uuid
        productAmountCents:
          type: integer
          minimum: 0
        shippingAmountCents:
          type: integer
          minimum: 0
        totalAmountCents:
          type: integer
          minimum: 0
        currency:
          type: string
          enum:
          - GBP
          - USD
        productAmountFormatted:
          type: string
        shippingAmountFormatted:
          type: string
        totalAmountFormatted:
          type: string
    FulfilmentStatus:
      type: object
      required:
      - orderId
      - stage
      - retryable
      - nextAction
      properties:
        orderId:
          type: string
          format: uuid
        stage:
          type: string
        retryable:
          type: boolean
        nextAction:
          type: string
        items:
          type: array
          items:
            $ref: '#/components/schemas/FulfilmentItem'
        retryFulfillment:
          type: object
          additionalProperties: true
    CheckoutItem:
      type: object
      required:
      - jobId
      - productVariantId
      properties:
        jobId:
          type: string
          format: uuid
        productVariantId:
          type: string
          format: uuid
        quantity:
          type: integer
          minimum: 1
          maximum: 20
          default: 1
        frameOptionId:
          type: integer
          description: Required for framed variants; invalid for unframed variants.
  parameters:
    SessionId:
      name: sessionId
      in: query
      description: Checkout-session ID returned by checkout creation.
      schema:
        type: string
        pattern: ^cs_
  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