Create Prints Artwork API

Create, import, inspect, retry, and list account-owned artwork.

GitHub OpenAPI

Operations 5

POST /api/image-generations Queue an artwork generation #
GET /api/image-generations Get an artwork job #
POST /api/image-generations/import Import a standalone artwork file #
GET /api/image-generations/list List account artwork #
POST /api/image-generations/retry Requeue a stalled artwork job #

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-artwork-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-artwork-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Createprints Ai Artwork 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 Artwork 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: Artwork
  description: Create, import, inspect, retry, and list account-owned artwork.
paths:
  /api/image-generations:
    post:
      operationId: createArtwork
      summary: Queue an artwork generation
      description: 'Spends one available generation credit and queues an artwork job. For text-only creation, send JSON with `inputType: describe`, a prompt, and an image-model size. Multipart form data additionally supports an uploaded reference image; `printPhoto` and `interiorPhoto` require that image. An interior photo supplies palette, mood, and style context—the output is standalone artwork, not a recreation of the room. Use the selected print variant''s exact `generation.imageModelSize` to guarantee aspect compatibility at checkout.'
      tags:
      - Artwork
      security:
      - agentApiKey: []
      - agentBearer: []
      - userSessionBearer: []
      - oauth2:
        - artwork:create
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateArtworkJson'
            example:
              inputType: describe
              prompt: A calm abstract coastal landscape in muted blue and sand tones
              size: 1536x1024
              keywords:
              - coastal
              - abstract
              - calm
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CreateArtworkMultipart'
      responses:
        '202':
          description: The artwork job was queued.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueuedArtwork'
              example:
                jobId: 1ae94a6e-f1dd-44c7-8314-a869e8357cc1
                status: queued
                statusUrl: /api/image-generations?id=1ae94a6e-f1dd-44c7-8314-a869e8357cc1
                creditsRemaining: 4
        '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'
        '500':
          description: Create Prints could not complete the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    get:
      operationId: getArtworkStatus
      summary: Get an artwork job
      description: Returns processing state and print eligibility for one account-owned artwork. `purchasable` becomes true only after processing completes and an image is uploaded. For a private import, image paths are returned only to the signed-in owner using a user-session token and are null for account API keys and MCP access tokens.
      tags:
      - Artwork
      security:
      - agentApiKey: []
      - agentBearer: []
      - userSessionBearer: []
      - oauth2:
        - artwork:read
      parameters:
      - $ref: '#/components/parameters/ArtworkJobId'
      responses:
        '200':
          description: Current artwork state and metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArtworkStatus'
        '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'
    servers:
    - url: https://api.createprints.ai
      description: Create Prints API origin
  /api/image-generations/import:
    post:
      operationId: importArtwork
      summary: Import a standalone artwork file
      description: Runs safety and artwork-presentation checks on a PNG, JPEG, or WebP file up to 20 MB. An accepted file is stored privately and returned as completed and purchasable (`201`). If it appears to be a room scene, framed mockup, or another image rather than standalone artwork, no bytes or job are retained and the endpoint returns a structured rejection with HTTP `200`. If the safety service cannot run, the import is not accepted and the endpoint returns `503`.
      tags:
      - Artwork
      security:
      - agentApiKey: []
      - agentBearer: []
      - userSessionBearer: []
      - oauth2:
        - artwork:create
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - image
              properties:
                image:
                  type: string
                  format: binary
                  description: Standalone PNG, JPEG, or WebP artwork; maximum 20 MB.
                title:
                  type: string
                  description: Optional title stored with an accepted import.
      responses:
        '200':
          description: The file was rejected as non-standalone artwork and was not retained.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RejectedImport'
        '201':
          description: The artwork passed both checks and was retained privately.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedImport'
        '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'
        '500':
          description: Create Prints could not complete the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: The image safety check was unavailable; the file was not imported.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: https://api.createprints.ai
      description: Create Prints API origin
  /api/image-generations/list:
    get:
      operationId: listArtworks
      summary: List account artwork
      description: Returns the authenticated account's artwork newest first. Set `purchasable=true` to retain only completed jobs with uploaded images. Private image paths are exposed only to the signed-in owner using a user-session token; API keys and MCP tokens receive `null`.
      tags:
      - Artwork
      security:
      - agentApiKey: []
      - agentBearer: []
      - userSessionBearer: []
      - oauth2:
        - artwork:read
      parameters:
      - name: limit
        in: query
        description: Maximum records to return. Values are clamped to 1–50.
        schema:
          type: integer
          minimum: 1
          maximum: 50
          default: 10
      - name: cursor
        in: query
        description: Return records created before this ISO 8601 timestamp, normally the previous response's cursor.
        schema:
          type: string
          format: date-time
      - name: purchasable
        in: query
        description: Return only completed artwork with an uploaded image.
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: A cursor-paginated artwork page.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArtworkList'
        '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'
        '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/image-generations/retry:
    post:
      operationId: retryArtworkGeneration
      summary: Requeue a stalled artwork job
      description: Requeues an account-owned processing job only after it has been inactive for at least 90 seconds. Completed, failed, and actively processing jobs return `409`; create a new generation instead of retrying a job marked failed.
      tags:
      - Artwork
      security:
      - agentApiKey: []
      - agentBearer: []
      - userSessionBearer: []
      - oauth2:
        - artwork:create
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ArtworkJobRequest'
      responses:
        '202':
          description: The stalled job was requeued.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RequeuedArtwork'
        '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:
    QueuedArtwork:
      type: object
      required:
      - jobId
      - status
      - statusUrl
      - creditsRemaining
      properties:
        jobId:
          type: string
          format: uuid
        status:
          type: string
          const: queued
        statusUrl:
          type: string
          description: Relative polling URL.
        creditsRemaining:
          type: integer
          minimum: 0
    ColorScheme:
      type: object
      description: Persisted colour classification and affect analysis. Legacy palette fields retain their stored JSON value shapes.
      required:
      - colorPsychology
      - colorPalette
      - dominantColor
      - vibrantColor
      - complementaryColors
      - affect
      properties:
        colorCategory:
          type:
          - string
          - 'null'
        colorPsychology:
          type: object
          required:
          - impactLevel
          - primaryTrait
          properties:
            impactLevel:
              type:
              - string
              - 'null'
            primaryTrait:
              type:
              - string
              - 'null'
        recommendedRoom:
          type:
          - string
          - 'null'
        colorPalette:
          type: array
          items: {}
        dominantColor:
          type: array
          items: {}
        vibrantColor:
          type: array
          items: {}
        complementaryColors:
          type: array
          items: {}
        affect:
          oneOf:
          - $ref: '#/components/schemas/ColorAffect'
          - type: 'null'
    ArtworkListItem:
      type: object
      required:
      - jobId
      - status
      - purchasable
      - imagePrivate
      - createdAt
      properties:
        jobId:
          type: string
          format: uuid
        status:
          type: string
          enum:
          - processing
          - failed
          - complete
          - unknown
        purchasable:
          type: boolean
        title:
          type:
          - string
          - 'null'
        imagePaths:
          type:
          - array
          - 'null'
          items:
            type: string
        imagePrivate:
          type: boolean
        createdAt:
          type: string
          format: date-time
    ArtworkCheck:
      type: object
      description: Standalone-artwork classifier result; fields may expand.
      properties:
        status:
          type: string
        warningCodes:
          type: array
          items:
            type: string
        error:
          type:
          - string
          - 'null'
      additionalProperties: true
    ArtworkStatus:
      type: object
      required:
      - jobId
      - id
      - status
      - statusCode
      - creditsRemaining
      - imageUploaded
      - imagePrivate
      - purchasable
      - aspect
      - imageModelSize
      - colorScheme
      properties:
        jobId:
          type: string
          format: uuid
        id:
          type: string
          format: uuid
          description: Legacy alias of `jobId`.
        status:
          type: string
          enum:
          - processing
          - failed
          - complete
          - unknown
        statusCode:
          type: integer
          enum:
          - 1
          - 2
          - 3
        creditsRemaining:
          type: integer
          minimum: 0
        imageUploaded:
          type: boolean
        imagePaths:
          type:
          - array
          - 'null'
          items:
            type: string
        image_paths:
          type:
          - array
          - 'null'
          items:
            type: string
        imagePrivate:
          type: boolean
        visibility:
          type:
          - string
          - 'null'
        source:
          type:
          - string
          - 'null'
        purchasable:
          type: boolean
        aspect:
          $ref: '#/components/schemas/Aspect'
        imageModelSize:
          type: string
        promptSize:
          type:
          - integer
          - 'null'
        title:
          type:
          - string
          - 'null'
        description:
          type:
          - string
          - 'null'
        originalPrompt:
          type:
          - string
          - 'null'
        revisedPrompt:
          type:
          - string
          - 'null'
        keywords:
          type:
          - array
          - 'null'
          items:
            type: string
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/ImportWarning'
        artworkCheck:
          $ref: '#/components/schemas/ArtworkCheck'
        colorScheme:
          $ref: '#/components/schemas/ColorScheme'
      additionalProperties: true
    ArtworkList:
      type: object
      required:
      - jobs
      - cursor
      properties:
        jobs:
          type: array
          items:
            $ref: '#/components/schemas/ArtworkListItem'
        cursor:
          type:
          - string
          - 'null'
          format: date-time
    ImportWarning:
      type: object
      required:
      - code
      - severity
      - message
      properties:
        code:
          type: string
        severity:
          type: string
          const: warning
        message:
          type: string
    CreateArtworkMultipart:
      type: object
      required:
      - inputType
      - size
      properties:
        inputType:
          type: string
          enum:
          - describe
          - printPhoto
          - interiorPhoto
        size:
          type: string
          examples:
          - 1536x1536
          - 1024x1536
          - 1536x1024
        prompt:
          type: string
          description: Required for `describe` unless an image is supplied.
        image:
          type: string
          format: binary
          description: Required for photo inputs; optional for `describe`.
        keywords:
          type: string
          description: Comma-separated values or a JSON array encoded as a form field.
        colors:
          type: string
          description: Comma-separated values or a JSON array encoded as a form field.
        styleId:
          type: string
        seedId:
          type: string
        creativeDirection:
          type: string
        forceOriginalPrompt:
          type: string
          enum:
          - 'true'
          - 'false'
          default: 'false'
        revision:
          type: string
          enum:
          - 'true'
          - 'false'
          default: 'false'
    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
    ColorAffect:
      type: object
      description: Continuous mood and colour analysis generated from the artwork palette.
      required:
      - arousal
      - valence
      - warmth
      - complexity
      - emotions
      - primaryTrait
      - temperature
      - energyLevel
      - impactLevel
      - harmony
      - rooms
      - recommendedRooms
      - rationale
      properties:
        arousal:
          type: number
          minimum: 0
          maximum: 1
        valence:
          type: number
          minimum: 0
          maximum: 1
        warmth:
          type: number
          minimum: 0
          maximum: 1
        complexity:
          type:
          - number
          - 'null'
          minimum: 0
          maximum: 1
        emotions:
          type: array
          maxItems: 4
          items:
            type: string
        primaryTrait:
          type: string
        temperature:
          type: string
        energyLevel:
          type: string
        impactLevel:
          type: string
        harmony:
          type: object
          required:
          - type
          - hueClusters
          properties:
            type:
              type: string
            hueClusters:
              type: integer
              minimum: 0
        rooms:
          type: array
          maxItems: 5
          items:
            type: object
            required:
            - room
            - score
            properties:
              room:
                type: string
              score:
                type: number
                minimum: 0
                maximum: 1
        recommendedRooms:
          type: array
          maxItems: 3
          items:
            type: string
        rationale:
          type: string
      additionalProperties: true
    Aspect:
      type: string
      enum:
      - square
      - portrait
      - landscape
    AcceptedImport:
      type: object
      required:
      - jobId
      - status
      - purchasable
      - imageUploaded
      - retained
      - imagePrivate
      - aspect
      - width
      - height
      - warnings
      properties:
        jobId:
          type: string
          format: uuid
        status:
          type: string
          const: complete
        purchasable:
          type: boolean
          const: true
        imageUploaded:
          type: boolean
          const: true
        retained:
          type: boolean
          const: true
        imagePrivate:
          type: boolean
          const: true
        aspect:
          $ref: '#/components/schemas/Aspect'
        width:
          type: integer
          minimum: 1
        height:
          type: integer
          minimum: 1
        warnings:
          type: array
          items:
            $ref: '#/components/schemas/ImportWarning'
        artworkCheck:
          $ref: '#/components/schemas/ArtworkCheck'
    CreateArtworkJson:
      type: object
      required:
      - prompt
      - size
      properties:
        inputType:
          type: string
          enum:
          - describe
          - printPhoto
          - interiorPhoto
          default: describe
        prompt:
          type: string
          minLength: 1
          description: Artwork description; required for JSON.
        size:
          type: string
          pattern: ^[0-9]+x[0-9]+$
          description: Width and height must be multiples of 16; longest side ≤3840 px; aspect ≤3:1; 655,360–8,294,400 total pixels. Prefer the selected variant's `generation.imageModelSize`.
          examples:
          - 1536x1536
          - 1024x1536
          - 1536x1024
        keywords:
          type: array
          items:
            type: string
        colors:
          type: array
          items:
            type: string
        styleId:
          type:
          - string
          - integer
          - 'null'
        seedId:
          type:
          - string
          - 'null'
        forceOriginalPrompt:
          type: boolean
          default: false
        referenceImageUrl:
          type:
          - string
          - 'null'
          format: uri
        revision:
          type: boolean
          default: false
      additionalProperties: true
    ArtworkJobRequest:
      type: object
      required:
      - jobId
      properties:
        jobId:
          type: string
          format: uuid
      additionalProperties: false
    RejectedImport:
      type: object
      required:
      - status
      - purchasable
      - imageUploaded
      - retained
      - aspect
      - width
      - height
      - warnings
      - artworkCheck
      properties:
        status:
          type: string
          const: rejected
        purchasable:
          type: boolean
          const: false
        imageUploaded:
          type: boolean
          const: false
        retained:
          type: boolean
          const: false
        aspect:
          $ref: '#/components/schemas/Aspect'
        width:
          type: integer
          minimum: 1
        height:
          type: integer
          minimum: 1
        warnings:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/ImportWarning'
        artworkCheck:
          $ref: '#/components/schemas/ArtworkCheck'
    RequeuedArtwork:
      type: object
      required:
      - code
      - jobId
      - status
      properties:
        code:
          type: string
          const: ok
        jobId:
          type: string
          format: uuid
        status:
          type: string
          const: requeued
  parameters:
    ArtworkJobId:
      name: id
      in: query
      required: true
      description: Account-owned artwork job ID.
      schema:
        type: string
        format: uuid
  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