Cloudprinter Products & Pricing API

List products enabled for the account and retrieve detailed product specifications, available options, and pricing via the products and products/info endpoints.

OpenAPI Specification

cloudprinter-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Cloudprinter CloudCore API
  description: >-
    The Cloudprinter.com CloudCore API is a JSON REST interface for the global
    print-on-demand and print-fulfillment network. All calls are HTTP POST and
    authenticate with a CloudCore apikey supplied in the JSON request body. The
    API exposes product catalog lookups, real-time price and shipping quotes,
    order creation and management, and shipping reference data. Production and
    shipment events are delivered separately via CloudSignal webhooks.
  termsOfService: https://www.cloudprinter.com/terms-conditions
  contact:
    name: Cloudprinter.com Support
    url: https://www.cloudprinter.com/contact
  version: '1.0'
servers:
  - url: https://api.cloudprinter.com/cloudcore/1.0
    description: CloudCore API v1.0 production server
security:
  - apikeyBody: []
tags:
  - name: Orders
    description: Create, list, retrieve, cancel, and audit print orders.
  - name: Products
    description: List products and retrieve product specifications and options.
  - name: Quotes
    description: Request real-time product and shipping price quotes.
  - name: Shipping
    description: Shipping levels, supported countries, and states reference data.
paths:
  /orders/:
    post:
      operationId: listOrders
      tags:
        - Orders
      summary: List orders
      description: Request a list of all orders for the account.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiKeyRequest'
      responses:
        '200':
          description: A list of orders.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderListResponse'
        '403':
          $ref: '#/components/responses/Forbidden'
  /orders/info:
    post:
      operationId: getOrderInfo
      tags:
        - Orders
      summary: Get order info
      description: >-
        Retrieve comprehensive details for a specific order including addresses,
        items, files, and current state.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderReferenceRequest'
      responses:
        '200':
          description: Order details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '403':
          $ref: '#/components/responses/Forbidden'
        '410':
          $ref: '#/components/responses/NotFound'
  /orders/add:
    post:
      operationId: addOrder
      tags:
        - Orders
      summary: Add order
      description: >-
        Create a new order with items, addresses, options, and print file
        references. Items may reference a quote hash or specify a shipping level
        directly.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddOrderRequest'
      responses:
        '201':
          description: Order created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddOrderResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
  /orders/cancel:
    post:
      operationId: cancelOrder
      tags:
        - Orders
      summary: Cancel order
      description: Request cancellation of an order that has not yet entered production.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderReferenceRequest'
      responses:
        '200':
          description: Cancellation accepted.
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '410':
          $ref: '#/components/responses/NotFound'
  /orders/log:
    post:
      operationId: getOrderLog
      tags:
        - Orders
      summary: Order log
      description: Retrieve the historical state changes for an order.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrderReferenceRequest'
      responses:
        '200':
          description: Order state-change log.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderLogResponse'
        '403':
          $ref: '#/components/responses/Forbidden'
        '410':
          $ref: '#/components/responses/NotFound'
  /orders/quote:
    post:
      operationId: getOrderQuote
      tags:
        - Quotes
      summary: Order quote
      description: >-
        Calculate product prices and shipping options for a list of items in a
        destination country. Each returned quote carries a unique hash valid for
        48 hours that can be referenced when adding an order.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteRequest'
      responses:
        '200':
          description: Quote results with product prices and shipping options.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuoteResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
  /products:
    post:
      operationId: listProducts
      tags:
        - Products
      summary: List products
      description: Request a list of all products already enabled for the account.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiKeyRequest'
      responses:
        '200':
          description: A list of products.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductListResponse'
        '403':
          $ref: '#/components/responses/Forbidden'
  /products/info:
    post:
      operationId: getProductInfo
      tags:
        - Products
      summary: Product info
      description: >-
        Get detailed specifications, available options, and pricing for a single
        product by its product reference.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProductInfoRequest'
      responses:
        '200':
          description: Product specification and options.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductInfo'
        '403':
          $ref: '#/components/responses/Forbidden'
        '410':
          $ref: '#/components/responses/NotFound'
  /shipping/levels:
    post:
      operationId: getShippingLevels
      tags:
        - Shipping
      summary: Shipping levels
      description: Retrieve the available shipping service tiers (cp_fast, cp_saver, cp_ground, cp_postal).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiKeyRequest'
      responses:
        '200':
          description: Available shipping levels.
        '403':
          $ref: '#/components/responses/Forbidden'
  /shipping/countries:
    post:
      operationId: getShippingCountries
      tags:
        - Shipping
      summary: Shipping countries
      description: List supported delivery destination countries.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApiKeyRequest'
      responses:
        '200':
          description: Supported countries.
        '403':
          $ref: '#/components/responses/Forbidden'
  /shipping/states:
    post:
      operationId: getShippingStates
      tags:
        - Shipping
      summary: Shipping states
      description: Get the regions or states available for a specific country.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShippingStatesRequest'
      responses:
        '200':
          description: States for the given country.
        '403':
          $ref: '#/components/responses/Forbidden'
components:
  securitySchemes:
    apikeyBody:
      type: apiKey
      in: header
      name: apikey
      description: >-
        CloudCore API key from the Cloudprinter.com dashboard. The API key is
        supplied in the JSON request body as the "apikey" field on every call;
        this scheme is declared as a header for tooling compatibility.
  responses:
    BadRequest:
      description: Invalid request parameters.
    Forbidden:
      description: Missing or invalid credentials.
    Conflict:
      description: Conflict - the order is in a state that does not allow the operation.
    NotFound:
      description: Resource not found.
  schemas:
    ApiKeyRequest:
      type: object
      required:
        - apikey
      properties:
        apikey:
          type: string
          description: CloudCore API key.
    OrderReferenceRequest:
      type: object
      required:
        - apikey
        - reference
      properties:
        apikey:
          type: string
        reference:
          type: string
          description: The unique order reference.
    ShippingStatesRequest:
      type: object
      required:
        - apikey
        - country
      properties:
        apikey:
          type: string
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code.
    ProductInfoRequest:
      type: object
      required:
        - apikey
        - product
      properties:
        apikey:
          type: string
        product:
          type: string
          description: The product reference.
    QuoteRequest:
      type: object
      required:
        - apikey
        - country
        - items
      properties:
        apikey:
          type: string
        country:
          type: string
          description: ISO 3166-1 alpha-2 destination country code.
        state:
          type: string
          description: State or region code, required for some countries (e.g. US).
        currency:
          type: string
          description: ISO 4217 currency code for returned prices.
        items:
          type: array
          items:
            $ref: '#/components/schemas/QuoteItem'
    QuoteItem:
      type: object
      required:
        - reference
        - product
        - count
      properties:
        reference:
          type: string
          description: Caller-supplied item reference.
        product:
          type: string
          description: Product reference.
        count:
          type: integer
          description: Number of copies.
        options:
          type: array
          items:
            $ref: '#/components/schemas/Option'
    QuoteResponse:
      type: object
      properties:
        quotes:
          type: array
          items:
            type: object
            properties:
              hash:
                type: string
                description: Unique quote hash, valid for 48 hours.
              price:
                type: string
              currency:
                type: string
              shipping_options:
                type: array
                items:
                  type: object
                  properties:
                    level:
                      type: string
                    price:
                      type: string
                    currency:
                      type: string
    Option:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          description: Option type reference (e.g. type_cover_paper, type_book_binding).
        count:
          type: integer
    File:
      type: object
      required:
        - type
        - url
      properties:
        type:
          type: string
          description: File type - product, cover, or book.
          enum:
            - product
            - cover
            - book
        url:
          type: string
          format: uri
          description: Publicly reachable URL of the print-ready file.
        md5sum:
          type: string
          description: MD5 checksum used to validate the downloaded file.
    Address:
      type: object
      required:
        - type
        - firstname
        - lastname
        - street1
        - zip
        - city
        - country
      properties:
        type:
          type: string
          description: Address type - delivery or invoice.
        firstname:
          type: string
        lastname:
          type: string
        company:
          type: string
        street1:
          type: string
        street2:
          type: string
        zip:
          type: string
        city:
          type: string
        state:
          type: string
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code.
        email:
          type: string
        phone:
          type: string
    OrderItem:
      type: object
      required:
        - reference
        - product
        - count
      properties:
        reference:
          type: string
        product:
          type: string
        count:
          type: integer
        shipping_level:
          type: string
          description: Shipping level reference (e.g. cp_saver). Use this or a quote hash.
        quote:
          type: string
          description: Quote hash from a prior /orders/quote call.
        options:
          type: array
          items:
            $ref: '#/components/schemas/Option'
        files:
          type: array
          items:
            $ref: '#/components/schemas/File'
    AddOrderRequest:
      type: object
      required:
        - apikey
        - reference
        - email
        - addresses
        - items
      properties:
        apikey:
          type: string
        reference:
          type: string
          description: Unique order reference supplied by the caller.
        email:
          type: string
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/Address'
        items:
          type: array
          items:
            $ref: '#/components/schemas/OrderItem'
    AddOrderResponse:
      type: object
      properties:
        reference:
          type: string
        order:
          type: string
          description: Cloudprinter order identifier.
    Order:
      type: object
      properties:
        reference:
          type: string
        order:
          type: string
        state:
          type: string
        email:
          type: string
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/Address'
        items:
          type: array
          items:
            $ref: '#/components/schemas/OrderItem'
    OrderListResponse:
      type: object
      properties:
        orders:
          type: array
          items:
            $ref: '#/components/schemas/Order'
    OrderLogResponse:
      type: object
      properties:
        log:
          type: array
          items:
            type: object
            properties:
              date:
                type: string
                format: date-time
              state:
                type: string
              message:
                type: string
    ProductListResponse:
      type: object
      properties:
        products:
          type: array
          items:
            type: object
            properties:
              reference:
                type: string
              name:
                type: string
              category:
                type: string
    ProductInfo:
      type: object
      properties:
        reference:
          type: string
        name:
          type: string
        options:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
              name:
                type: string
        price_units:
          type: array
          items:
            type: string
            description: Price unit type (e.g. price_unit_pr_order, price_unit_pr_page).