Skip to main content

PrintCart Rest API (1.0.0)

Download OpenAPI specification:Download

PrintCart REST API Doc.

Authentication

PrintCart offers two forms of authentication:

  • Basic Auth
  • UnAuthToken

BasicAuth

  • The client sends HTTP requests with the Authorization header that contains the word Basic word followed by a space and a base64-encoded string
Security Scheme Type: HTTP
HTTP Authorization Scheme:

UnAuthToken

  • Some Printcart API endpoints don't need your username and password to authenticate. Those endpoints only interact with your public data so the code can be shared publicly.
  • To request to those endpoints, you only need to send UnAuthToken in the X-PrintCart-Unauth-Token header
Security Scheme Type: API Key
Header parameter name: X-PrintCart-Unauth-Token

Account

Create Account

Request Body schema: application/json
name
required
string

Customer name

email
required
string <email>

The email address for the customer.

password
required
string
  • Require at least 8 characters
  • Require at least one number
  • Require at least one symbol
  • Require at least one uppercase and one lowercase letter

Responses

Request samples

Content type
application/json
{
  • "name": "admin",
  • "email": "admin@example.com",
  • "password": "Password1234@"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Created successfully"
}

Get Account Info

Authorizations:
BasicAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Update Account Details

Authorizations:
BasicAuth
Request Body schema: application/json
name
string

Customer name.

email
string <email>

The email address for the customer.

Responses

Request samples

Content type
application/json
{
  • "name": "admin",
  • "email": "admin@example.com"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Updated successfully"
}

Store

Create Store

Authorizations:
BasicAuth
Request Body schema: application/json
store_name
required
string

Customer store name

google_font_api
string

API Key Google Font

unsplash
string

API Key Unsplash

pixabay
string

API Key Pixabay

pexels
string

API Key Pexels

Responses

Request samples

Content type
application/json
{
  • "store_name": "Store Example",
  • "google_font_api": "string",
  • "unsplash": "string",
  • "pixabay": "string",
  • "pexels": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Created successfully"
}

Get Store Info

Authorizations:
BasicAuth
query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

Update Store Details

Authorizations:
BasicAuth
Request Body schema: application/json
store_name
string

Customer store name

google_font_api
string

API Key Google Font

unsplash
string

API Key Unsplash

pixabay
string

API Key Pixabay

pexels
string

API Key Pexels

Responses

Request samples

Content type
application/json
{
  • "store_name": "Store Example",
  • "google_font_api": "string",
  • "unsplash": "string",
  • "pixabay": "string",
  • "pexels": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Updated successfully"
}

Delete a store

Authorizations:
BasicAuth

Responses

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Get Store Details

Authorizations:
BasicAuthUnAuthToken

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Renew UnAuth Token

Authorizations:
BasicAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Updated successfully"
}

Product

Create Product

Authorizations:
BasicAuth
Request Body schema: application/json
name
required
string

The name given to a product

dynamic_side
boolean
viewport_width
number <float>
viewport_height
number <float>
scale
number <float>
dpi
integer <int64>
Default: 72
dimension_unit
string
Default: "cm"
Enum: "inch" "cm"
status
string
Default: "publish"
Enum: "publish" "draft" "trashed"

Product status

allowed_file_types
Array of strings
Items Enum: "jpg" "png" "ai" "pdf" "svg" "ps"
enable_design
boolean
enable_upload
boolean
enable_pod
boolean
Default: false

True if you want the product to be published on our POD page

product_image_id
string

Image ID.

max_file_upload
integer <int64>
Default: 1
min_jpg_dpi
integer <int64>
Default: 0
type_id
string
Enum: "simple" "variant" "variant_option"
description
string

Product description

category_ids
Array of strings

Category ID (Storage ID)

parent_id
string

Product ID

upload_max_filesize
integer

Limit file upload size

metadata
Array of arrays

Responses

Request samples

Content type
application/json
{
  • "name": "Product Example",
  • "dynamic_side": true,
  • "viewport_width": 50.5,
  • "viewport_height": 50.5,
  • "scale": 50.5,
  • "dpi": 72,
  • "dimension_unit": "inch",
  • "status": "publish",
  • "allowed_file_types": [
    ],
  • "enable_design": false,
  • "enable_upload": false,
  • "enable_pod": false,
  • "product_image_id": "e8304b84-a015-3bd4-a7d3-7a978f465df2",
  • "max_file_upload": 500,
  • "min_jpg_dpi": 500,
  • "type_id": "simple",
  • "description": null,
  • "category_ids": [
    ],
  • "parent_id": null,
  • "upload_max_filesize": null,
  • "metadata": [
    ]
}

Response samples

Content type
application/json
{}

Get a list of products

Authorizations:
BasicAuthUnAuthToken
query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"
status
string
Default: "publish"
Enum: "publish" "draft" "trashed"

Product status

Responses

Response samples

Content type
application/json
{}

Get Product Details

Authorizations:
BasicAuthUnAuthToken
path Parameters
productId
required
string

Product ID

Responses

Response samples

Content type
application/json
{}

Update Product Details

Authorizations:
BasicAuth
path Parameters
productId
required
string

Product ID

Request Body schema: application/json
name
string

Updated name of the product

dynamic_side
boolean
viewport_width
number <float>
viewport_height
number <float>
scale
number <float>
dpi
integer <int64>
dimension_unit
string
Enum: "inch" "cm"
status
string
Enum: "publish" "draft" "trashed"

Product status

allowed_file_types
Array of strings
Items Enum: "jpg" "png" "ai" "pdf" "ps"
max_file_upload
integer <int64>
min_jpg_dpi
integer <int64>
enable_design
boolean
enable_upload
boolean
enable_pod
boolean

True if you want the product to be published on our POD page

product_image_id
string

Image ID.

description
string

Product description

category_ids
Array of strings

Category ID (Storage ID)

upload_max_filesize
integer

Limit file upload size

metadata
Array of arrays

Responses

Request samples

Content type
application/json
{
  • "name": "product example update",
  • "dynamic_side": true,
  • "viewport_width": 50.5,
  • "viewport_height": 50.5,
  • "scale": 50.5,
  • "dpi": 100,
  • "dimension_unit": "inch",
  • "status": "publish",
  • "allowed_file_types": [
    ],
  • "max_file_upload": 500,
  • "min_jpg_dpi": 500,
  • "enable_design": false,
  • "enable_upload": false,
  • "enable_pod": false,
  • "product_image_id": "e8304b84-a015-3bd4-a7d3-7a978f465df2",
  • "description": null,
  • "category_ids": [
    ],
  • "upload_max_filesize": null,
  • "metadata": [
    ]
}

Response samples

Content type
application/json
{}

Delete a product

Authorizations:
BasicAuth
path Parameters
productId
required
string

Product ID

Responses

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Create batch products

Authorizations:
BasicAuth
Request Body schema: application/json
Array of objects (Product)
Array
name
required
string

The name given to a product

dynamic_side
boolean
viewport_width
number <float>
viewport_height
number <float>
scale
number <float>
dpi
integer <int64>
Default: 72
dimension_unit
string
Default: "cm"
Enum: "inch" "cm"
status
string
Default: "publish"
Enum: "publish" "draft" "trashed"

Product status

allowed_file_types
Array of strings
Items Enum: "jpg" "png" "ai" "pdf" "svg" "ps"
enable_design
boolean
enable_upload
boolean
enable_pod
boolean
Default: false

True if you want the product to be published on our POD page

product_image_id
string

Image ID.

max_file_upload
integer <int64>
Default: 1
min_jpg_dpi
integer <int64>
Default: 0
type_id
string
Enum: "simple" "variant" "variant_option"
description
string

Product description

category_ids
Array of strings

Category ID (Storage ID)

parent_id
string

Product ID

upload_max_filesize
integer

Limit file upload size

metadata
Array of arrays

Responses

Request samples

Content type
application/json
{
  • "products": [
    ]
}

Response samples

Content type
application/json
{}

Update batch products

Authorizations:
BasicAuth
Request Body schema: application/json
Array of objects
Array
id
required
string

Product ID.

name
string

Updated name of the product

dynamic_side
boolean
viewport_width
number <float>
viewport_height
number <float>
scale
number <float>
dpi
integer <int64>
dimension_unit
string
Enum: "inch" "cm"
status
string
Enum: "publish" "draft" "trashed"

Product status

allowed_file_types
Array of strings
Items Enum: "jpg" "png" "ai" "pdf" "ps"
max_file_upload
integer <int64>
min_jpg_dpi
integer <int64>
enable_design
boolean
enable_upload
boolean
enable_pod
boolean

True if you want the product to be published on our POD page

product_image_id
string

Image ID

description
string

Product description

upload_max_filesize
integer

Limit file upload size

metadata
Array of arrays

Responses

Request samples

Content type
application/json
{
  • "products": [
    ]
}

Response samples

Content type
application/json
{}

Delete batch products

Authorizations:
BasicAuth
Request Body schema: application/json
Array of objects
Array
id
required
string

Product ID

Responses

Request samples

Content type
application/json
{
  • "products": [
    ]
}

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Get a count of products

Authorizations:
BasicAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Get a list of designs by product

Authorizations:
BasicAuth
path Parameters
productId
required
string

Product ID

query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"
status
string
Default: "publish"
Enum: "publish" "draft" "trashed"

Product status

Responses

Response samples

Content type
application/json
{}

Get a list of sides by product

Authorizations:
BasicAuthUnAuthToken
path Parameters
productId
required
string

Product ID

query Parameters
limit
integer

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

Get a count of designs by product

Authorizations:
BasicAuth
path Parameters
productId
required
string

Product ID

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Get a count of sides by product

Authorizations:
BasicAuth
path Parameters
productId
required
string

Product ID

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Side

Create new product side

Authorizations:
BasicAuth
Request Body schema: application/json
product_id
required
string

Product ID

name
required
string

The name given to a side

bg_type
string
Default: "image"
Enum: "color" "image" "transparent"
bg_color_value
string
img_overlay_id
string
scale
required
number <double>
background_included
boolean
show_overlay
boolean
include_overlay
boolean
object
object
show_cut_line
boolean
object
show_safe_zone
boolean
object
side_image_id
required
string
status
string
Default: "publish"
Enum: "publish" "draft" "trashed"

Side status

Responses

Request samples

Content type
application/json
{
  • "product_id": "962af342-a2c9-4665-bb5d-cb208258d958",
  • "name": "Side Example",
  • "bg_type": "image",
  • "bg_color_value": "red",
  • "img_overlay_id": "e8304b84-a015-3bd4-a7d3-7a978f465df2",
  • "scale": 100,
  • "background_included": true,
  • "show_overlay": true,
  • "include_overlay": true,
  • "side_image_size": {
    },
  • "design_area": {
    },
  • "show_cut_line": true,
  • "cut_line_margin": {
    },
  • "show_safe_zone": true,
  • "safe_zone_margin": {
    },
  • "side_image_id": "e8304b84-a015-3bd4-a7d3-7a978f465df2",
  • "status": "publish"
}

Response samples

Content type
application/json
{}

Get a list of product sides

Authorizations:
BasicAuthUnAuthToken
query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"
status
string
Default: "publish"
Enum: "publish" "draft" "trashed"

Side status

Responses

Response samples

Content type
application/json
{}

Get product side details

Authorizations:
BasicAuthUnAuthToken
path Parameters
sideId
required
string

Side ID

Responses

Response samples

Content type
application/json
{}

Update a product side details

Authorizations:
BasicAuth
path Parameters
sideId
required
string

Side ID

Request Body schema: application/json
product_id
string

Product ID

name
string

The name given to a side

bg_type
string
Default: "image"
Enum: "color" "image" "transparent"
bg_color_value
string
img_overlay_id
string
scale
number <double>
background_included
boolean
show_overlay
boolean
include_overlay
boolean
object
object
show_cut_line
boolean
object
show_safe_zone
boolean
object
side_image_id
string
status
string
Default: "publish"
Enum: "publish" "draft" "trashed"

Side status

Responses

Request samples

Content type
application/json
{
  • "product_id": "962af342-a2c9-4665-bb5d-cb208258d958",
  • "name": "Side Example",
  • "bg_type": "image",
  • "bg_color_value": "red",
  • "img_overlay_id": "e8304b84-a015-3bd4-a7d3-7a978f465df2",
  • "scale": 100,
  • "background_included": true,
  • "show_overlay": true,
  • "include_overlay": true,
  • "side_image_size": {
    },
  • "design_area": {
    },
  • "show_cut_line": true,
  • "cut_line_margin": {
    },
  • "show_safe_zone": true,
  • "safe_zone_margin": {
    },
  • "side_image_id": "e8304b84-a015-3bd4-a7d3-7a978f465df2",
  • "status": "publish"
}

Response samples

Content type
application/json
{}

Delete a product side

Authorizations:
BasicAuth
path Parameters
sideId
required
string

Side ID

Responses

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Create batch sides

Authorizations:
BasicAuth
Request Body schema: application/json
Array of objects (Side)
Array
product_id
required
string

Product ID

name
required
string

The name given to a side

bg_type
string
Default: "image"
Enum: "color" "image" "transparent"
bg_color_value
string
img_overlay_id
string
scale
required
number <double>
background_included
boolean
show_overlay
boolean
include_overlay
boolean
object
object
show_cut_line
boolean
object
show_safe_zone
boolean
object
side_image_id
required
string
status
string
Default: "publish"
Enum: "publish" "draft" "trashed"

Side status

Responses

Request samples

Content type
application/json
{
  • "sides": [
    ]
}

Response samples

Content type
application/json
{}

Update batch sides

Authorizations:
BasicAuth
Request Body schema: application/json
Array of objects
Array
id
required
string

Side ID

name
string

The name given to a side

bg_type
string
Default: "image"
Enum: "color" "image" "transparent"
bg_color_value
string
img_overlay_id
string
scale
number <double>
background_included
boolean
show_overlay
boolean
include_overlay
boolean
object
object
show_cut_line
boolean
object
show_safe_zone
boolean
object
side_image_id
string
status
string
Default: "publish"
Enum: "publish" "draft" "trashed"

Side status

Responses

Request samples

Content type
application/json
{
  • "sides": [
    ]
}

Response samples

Content type
application/json
{}

Delete batch sides

Authorizations:
BasicAuth
Request Body schema: application/json
Array of objects
Array
id
required
string

Side ID

Responses

Request samples

Content type
application/json
{
  • "sides": [
    ]
}

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Get a list of templates by side

Authorizations:
BasicAuthUnAuthToken
path Parameters
sideId
required
string

Side ID

query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

Get a count of product sides

Authorizations:
BasicAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Image

Add new image

Authorizations:
BasicAuthUnAuthToken
Request Body schema: multipart/form-data
file
string <binary>

Image to upload

type
string
Default: null
Enum: null "cliparts" "designs"
custom_width
integer <int64>

Custom width thumbnail image

Responses

Response samples

Content type
application/json
{}

Get a list of images

Authorizations:
BasicAuthUnAuthToken
query Parameters
limit
integer

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json

Get image details

Authorizations:
BasicAuth
path Parameters
imageId
required
string

Image ID

Responses

Response samples

Content type
application/json
{}

Delete a image

Authorizations:
BasicAuth
path Parameters
imageId
required
string

Image Id

Responses

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Add new batch images

Authorizations:
BasicAuthUnAuthToken
Request Body schema: multipart/form-data
files[]
string <binary>

Multiple File Images Upload

type
string
Default: null
Enum: null "cliparts" "designs"

Responses

Response samples

Content type
application/json
{}

Get a count of images

Authorizations:
BasicAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Clipart

Add new Clipart

Authorizations:
BasicAuth
Request Body schema: multipart/form-data
file
string <binary>

Clipart to upload

Responses

Response samples

Content type
application/json
{}

Get a list of cliparts

Authorizations:
BasicAuthUnAuthToken
query Parameters
limit
integer

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json

Get a list of cliparts default

Authorizations:
BasicAuthUnAuthToken
query Parameters
limit
integer

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json

Get clipart details

Authorizations:
BasicAuthUnAuthToken
path Parameters
clipartId
required
string

Clipart ID

Responses

Response samples

Content type
application/json
{}

Update clipart details

Authorizations:
BasicAuth
path Parameters
clipartId
required
string

Clipart ID

Request Body schema: application/json
storages
Array of arrays

Storage ID

Responses

Request samples

Content type
application/json
{
  • "storages": [
    ]
}

Response samples

Content type
application/json
{}

Delete a clipart

Authorizations:
BasicAuth
path Parameters
clipartId
required
string

Clipart Id

Responses

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Add new batch clipart

Authorizations:
BasicAuth
Request Body schema: multipart/form-data
files[]
string <binary>

ultiple File Cliparts Upload

Responses

Response samples

Content type
application/json
{}

Get a count of cliparts

Authorizations:
BasicAuthUnAuthToken

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Get a count of cliparts default

Authorizations:
BasicAuthUnAuthToken

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Design

Create new design

Authorizations:
BasicAuthUnAuthToken
Request Body schema: application/json
project_id
string

Project ID

side_id
required
string

Side ID

preview_image_id
string

Image ID

design_image_id
string

Image ID

note
string
is_uploader
boolean
Default: false
layers
Array of objects

Lorem ipsum...

status
string
Default: "processing"
Enum: "accepted" "processing" "declined" "trashed"

Design status

viewport_width
number <float>
viewport_height
number <float>

Responses

Request samples

Content type
application/json
{
  • "project_id": "4419934f-8e1b-4cf0-b432-01ef9258a812",
  • "side_id": "c5661a1e-8147-4dc3-8600-00fdc81ed14b",
  • "preview_image_id": "e8304b84-a015-3bd4-a7d3-7a978f465df2",
  • "design_image_id": "e8304b84-a015-3bd4-a7d3-7a978f465df2",
  • "note": "Design Example",
  • "is_uploader": false,
  • "layers": {
    },
  • "status": "accepted",
  • "viewport_width": 50.5,
  • "viewport_height": 50.5
}

Response samples

Content type
application/json
{}

Get a list of designs

Authorizations:
BasicAuth
query Parameters
limit
integer

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"
status
string
Enum: "accepted" "processing" "declined" "trashed"

Design status

Responses

Response samples

Content type
application/json
{}

Get design details

Authorizations:
BasicAuthUnAuthToken
path Parameters
designId
required
string

Design ID

Responses

Response samples

Content type
application/json
{}

Update design details

Authorizations:
BasicAuthUnAuthToken
path Parameters
designId
required
string

Design ID

Request Body schema: application/json
project_id
string

Project ID

side_id
string

Side ID

preview_image_id
string

Image ID

design_image_id
string

Image ID

note
string
is_uploader
boolean
Default: false
layers
Array of objects

Lorem ipsum...

status
string
Default: "processing"
Enum: "accepted" "processing" "declined" "trashed"

Design status

viewport_width
number <float>
viewport_height
number <float>

Responses

Request samples

Content type
application/json
{
  • "project_id": "4419934f-8e1b-4cf0-b432-01ef9258a812",
  • "side_id": "c5661a1e-8147-4dc3-8600-00fdc81ed14b",
  • "preview_image_id": "e8304b84-a015-3bd4-a7d3-7a978f465df2",
  • "design_image_id": "e8304b84-a015-3bd4-a7d3-7a978f465df2",
  • "note": "Design Example",
  • "is_uploader": false,
  • "layers": {
    },
  • "status": "accepted",
  • "viewport_width": 50.5,
  • "viewport_height": 50.5
}

Response samples

Content type
application/json
{}

Delete a design

Authorizations:
BasicAuth
path Parameters
designId
required
string

Design ID

Responses

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Create batch designs

Authorizations:
BasicAuthUnAuthToken
Request Body schema: application/json
Array of objects (DesignJson)
Array
project_id
string

Project ID

side_id
required
string

Side ID

preview_image_id
string

Image ID

design_image_id
string

Image ID

note
string
is_uploader
boolean
Default: false
layers
Array of objects

Lorem ipsum...

status
string
Default: "processing"
Enum: "accepted" "processing" "declined" "trashed"

Design status

viewport_width
number <float>
viewport_height
number <float>

Responses

Request samples

Content type
application/json
{
  • "designs": [
    ]
}

Response samples

Content type
application/json
{}

Update batch designs

Authorizations:
BasicAuthUnAuthToken
Request Body schema: application/json
Array of objects
Array
id
required
string

Design ID

project_id
string

Project ID

side_id
string

Side ID

preview_image_id
string

Image ID

design_image_id
string

Image ID

note
string
is_uploader
boolean
Default: false
layers
Array of objects
status
string
Default: "processing"
Enum: "accepted" "processing" "declined" "trashed" "deleted"

Design status

viewport_width
number <float>
viewport_height
number <float>

Responses

Request samples

Content type
application/json
{
  • "designs": [
    ]
}

Response samples

Content type
application/json
{}

Delete batch designs

Authorizations:
BasicAuth
Request Body schema: application/json
Array of objects
Array
id
required
string

Design ID

Responses

Request samples

Content type
application/json
{
  • "designs": [
    ]
}

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Get list fonts layer by design

Authorizations:
BasicAuthUnAuthToken
path Parameters
designId
required
string

Design ID

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "message": "Retrieved successfully"
}

Get a list images design

Authorizations:
BasicAuthUnAuthToken
query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json

Get a count of designs

Authorizations:
BasicAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Template

Create new template

Authorizations:
BasicAuthUnAuthToken
Request Body schema: application/json
project_id
string

Project ID

side_id
required
string

Side ID

preview_image_id
string

Image ID

template_image_id
string

Image ID

note
string
layers
Array of objects

Lorem ipsum...

viewport_width
number <float>
viewport_height
number <float>

Responses

Request samples

Content type
application/json
{
  • "project_id": "4419934f-8e1b-4cf0-b432-01ef9258a812",
  • "side_id": "c5661a1e-8147-4dc3-8600-00fdc81ed14b",
  • "preview_image_id": "e8304b84-a015-3bd4-a7d3-7a978f465df2",
  • "template_image_id": "e8304b84-a015-3bd4-a7d3-7a978f465df2",
  • "note": "Template example note",
  • "layers": [
    ],
  • "viewport_width": 50.5,
  • "viewport_height": 50.5
}

Response samples

Content type
application/json
{}

Get a list of templates

Authorizations:
BasicAuthUnAuthToken
query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

Get a list of templates default

Authorizations:
BasicAuthUnAuthToken
query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

Get template details

Authorizations:
BasicAuthUnAuthToken
path Parameters
templateId
required
string

Template ID

Responses

Response samples

Content type
application/json
{}

Update template details

Authorizations:
BasicAuthUnAuthToken
path Parameters
templateId
required
string

Template ID

Request Body schema: application/json
project_id
string

Project ID

side_id
string

Side ID

preview_image_id
string

Image ID

template_image_id
string

Image ID

note
string
layers
Array of objects

Lorem ipsum...

viewport_width
number <float>
viewport_height
number <float>

Responses

Request samples

Content type
application/json
{
  • "project_id": "4419934f-8e1b-4cf0-b432-01ef9258a812",
  • "side_id": "c5661a1e-8147-4dc3-8600-00fdc81ed14b",
  • "preview_image_id": "e8304b84-a015-3bd4-a7d3-7a978f465df2",
  • "template_image_id": "e8304b84-a015-3bd4-a7d3-7a978f465df2",
  • "note": "printcart",
  • "layers": {
    },
  • "viewport_width": 50.5,
  • "viewport_height": 50.5
}

Response samples

Content type
application/json
{}

Delete a template

Authorizations:
BasicAuth
path Parameters
templateId
required
string

Template ID

Responses

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Create batch templates

Authorizations:
BasicAuthUnAuthToken
Request Body schema: application/json
Array of objects (TemplateJson)
Array
project_id
string

Project ID

side_id
required
string

Side ID

preview_image_id
string

Image ID

template_image_id
string

Image ID

note
string
layers
Array of objects

Lorem ipsum...

viewport_width
number <float>
viewport_height
number <float>

Responses

Request samples

Content type
application/json
{
  • "templates": [
    ]
}

Response samples

Content type
application/json
{}

Update batch templates

Authorizations:
BasicAuthUnAuthToken
Request Body schema: application/json
Array of objects
Array
id
required
string

Template ID

project_id
string

Project ID

side_id
string

Side ID

preview_image_id
string

Image ID

template_image_id
string

Image ID

note
string
layers
Array of objects

Lorem ipsum...

viewport_width
number <float>
viewport_height
number <float>

Responses

Request samples

Content type
application/json
{
  • "templates": [
    ]
}

Response samples

Content type
application/json
{}

Delete batch templates

Authorizations:
BasicAuth
Request Body schema: application/json
Array of objects
Array
id
required
string

Template ID

Responses

Request samples

Content type
application/json
{
  • "templates": [
    ]
}

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Get list fonts layer by template

Authorizations:
BasicAuthUnAuthToken
path Parameters
templateId
required
string

Template ID

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "message": "Retrieved successfully"
}

Get a count of templates

Authorizations:
BasicAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Get a count of templates default

Authorizations:
BasicAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Project

Create new project

Authorizations:
BasicAuthUnAuthToken
Request Body schema: application/json
name
required
string

The name given to a project

status
string
Default: "processing"
Enum: "processing" "reviewing" "accepted" "trashed"

Project status

note
string

Responses

Request samples

Content type
application/json
{
  • "name": "Project example",
  • "status": "processing",
  • "note": "project example note"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Created successfully"
}

Get a list of projects

Authorizations:
BasicAuth
query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"
status
string
Enum: "processing" "reviewing" "accepted" "trashed"

Project status

s
string

Search List Project By Name

Responses

Response samples

Content type
application/json
{}

Get project details

Authorizations:
BasicAuth
path Parameters
projectId
required
string

Project ID

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Update project details

Authorizations:
BasicAuth
path Parameters
projectId
required
string

Project ID

Request Body schema: application/json
name
string

The name given to a project

status
string
Default: "processing"
Enum: "processing" "reviewing" "accepted" "trashed"

Project status

note
string

Responses

Request samples

Content type
application/json
{
  • "name": "Project example update",
  • "status": "processing",
  • "note": "Project example update note"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Updated successfully"
}

Delete a project

Authorizations:
BasicAuth
path Parameters
projectId
required
string

Project ID

Responses

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Create batch projects

Authorizations:
BasicAuthUnAuthToken
Request Body schema: application/json
object (Project)
name
required
string

The name given to a project

status
string
Default: "processing"
Enum: "processing" "reviewing" "accepted" "trashed"

Project status

note
string

Responses

Request samples

Content type
application/json
{
  • "projects": {
    }
}

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "message": "Created successfully"
}

Update batch projects

Authorizations:
BasicAuth
Request Body schema: application/json
Array of objects
Array
id
required
string

Project ID

name
string

Updated name of the project

status
string
Enum: "processing" "reviewing" "accepted" "trashed"

Project status

note
string

Responses

Request samples

Content type
application/json
{
  • "projects": [
    ]
}

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "message": "Updated successfully"
}

Delete batch projects

Authorizations:
BasicAuth
Request Body schema: application/json
Array of objects
Array
id
required
string

Project ID

Responses

Request samples

Content type
application/json
{
  • "projects": [
    ]
}

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Get a list of designs by project

Authorizations:
BasicAuth
path Parameters
projectId
required
string

Project ID

query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"
status
string
Enum: "accepted" "processing" "declined" "trashed"

Design status

Responses

Response samples

Content type
application/json
{}

Get a list of products by project

Authorizations:
BasicAuth
path Parameters
projectId
required
string

Project ID

query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"
status
string
Default: "publish"
Enum: "publish" "draft" "trashed"

Product status

Responses

Response samples

Content type
application/json
{}

Get a count of projects

Authorizations:
BasicAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Get a count of designs by project

Authorizations:
BasicAuth
path Parameters
projectId
required
string

Project ID

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Get a count of products by project

Authorizations:
BasicAuth
path Parameters
projectId
required
string

Project ID

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Storage

Create new storage

Authorizations:
BasicAuth
Request Body schema: application/json
name
required
string

The name given to a storage

parent_id
string

Storage ID

Responses

Request samples

Content type
application/json
{
  • "name": "storage example",
  • "parent_id": null
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Created successfully"
}

Get a list of storages

Authorizations:
BasicAuthUnAuthToken
query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

Get a list of storages default

Authorizations:
BasicAuthUnAuthToken
query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

Get Storage details

Authorizations:
BasicAuthUnAuthToken
path Parameters
storageId
required
string

Storage ID

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Update Storage details

Authorizations:
BasicAuth
path Parameters
storageId
required
string

Storage ID

Request Body schema: application/json
name
string

Updated name of the storage

parent_id
string

Storage ID

Responses

Request samples

Content type
application/json
{
  • "name": "storage example update",
  • "parent_id": null
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Updated successfully"
}

Get a count of Storages

Authorizations:
BasicAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Font

Add new font

Authorizations:
BasicAuth
Request Body schema: application/json
name
required
string

The name given to a font

alias
required
string
url
string <url>
type
string
subset
required
string

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Created successfully"
}

Get a list of fonts

Authorizations:
BasicAuthUnAuthToken
query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

Get a list of fonts default

Authorizations:
BasicAuthUnAuthToken
query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

Get font details

Authorizations:
BasicAuthUnAuthToken
path Parameters
fontId
required
string

Font ID

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Update font details

Authorizations:
BasicAuth
path Parameters
fontId
required
string

Font ID

Request Body schema: application/json
name
string

Updated name of the font

alias
string
url
string <url>
type
string
subset
string

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Update successfully"
}

Delete font

Authorizations:
BasicAuth
path Parameters
fontId
required
string

Font ID

Responses

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Get a count of fonts

Authorizations:
BasicAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Get a count of fonts default

Authorizations:
BasicAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Webhook

Create new webhook

Authorizations:
BasicAuth
Request Body schema: application/json
event
required
string
Default: "POST"
Enum: "POST" "PUT" "DELETE" "POST BATCH" "PUT BATCH" "DELETE BATCH"

Event that triggers the webhook.

callback_url
required
string <url>
topic
required
string
Enum: "projects" "products" "designs" "templates" "sides"

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "data": {},
  • "message": "Created successfully"
}

Get a list of webhooks

Authorizations:
BasicAuth
query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

Get webhook details

Authorizations:
BasicAuth
path Parameters
webhookId
required
string

Webhook ID

Responses

Response samples

Content type
application/json
{
  • "data": {},
  • "message": "Retrieved successfully"
}

Update webhook details

Authorizations:
BasicAuth
path Parameters
webhookId
required
string

Webhook ID

Request Body schema: application/json
event
string
Enum: "POST" "PUT" "DELETE" "POST BATCH" "PUT BATCH" "DELETE BATCH"

Event that triggers the webhook.

callback_url
string <url>
topic
string
Enum: "projects" "products" "designs" "templates" "sides"

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "data": {},
  • "message": "Updated successfully"
}

Delete a webhook

Authorizations:
BasicAuth
path Parameters
webhookId
required
string

Webhook ID

Responses

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Clipart Storage

Create new Clipart - Storage

Authorizations:
BasicAuth
Request Body schema: application/json
name
required
string

The name given to a clipart - storage

parent_id
string

Storage ID

Responses

Request samples

Content type
application/json
{
  • "name": "Clipart - Storage example",
  • "parent_id": null
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Created successfully"
}

Get a list of Cliparts - Storages

Authorizations:
BasicAuthUnAuthToken
query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

Get a list of Cliparts - Storages default

Authorizations:
BasicAuthUnAuthToken
query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

Delete a Clipart - Storage

Authorizations:
BasicAuth
path Parameters
storageId
required
string

Storage ID

Responses

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Get a list of Cliparts by Storage

Authorizations:
BasicAuthUnAuthToken
path Parameters
storageId
required
string

Storage ID

query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json

Get a list of Cliparts by Storage default

Authorizations:
BasicAuthUnAuthToken
path Parameters
storageId
required
string

Storage ID

query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json

Get a list of Storages by Clipart

Authorizations:
BasicAuthUnAuthToken
path Parameters
clipartId
required
string

Clipart ID

query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

Get a list of Storages by Clipart default

Authorizations:
BasicAuthUnAuthToken
path Parameters
clipartId
required
string

Clipart ID

query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

Get a count of cliparts storages

Authorizations:
BasicAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Get a count of cliparts storages default

Authorizations:
BasicAuth

Responses

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Retrieved successfully"
}

Project Folder

Create new Project Folder

Authorizations:
BasicAuth
Request Body schema: application/json
category_id
required
string

Storage ID

project_id
string

Project ID

Responses

Request samples

Content type
application/json
{
  • "category_id": "57eea14b-4e8d-4b7b-b864-b31cb8e6ac62",
  • "project_id": "e8304b84-a015-3bd4-a7d3-7a978fxxxxxx"
}

Response samples

Content type
application/json
{
  • "data": {
    },
  • "message": "Created successfully"
}

Get a list of Projects Folders

Authorizations:
BasicAuthUnAuthToken
query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

Delete a Project Folder

Authorizations:
BasicAuth
path Parameters
storageId
required
string

Storage ID

Responses

Response samples

Content type
application/json
{
  • "message": "Deleted successfully"
}

Get a list of Projects by Folder

Authorizations:
BasicAuthUnAuthToken
path Parameters
storageId
required
string

Storage ID

query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

Get a list of Folders by Project

Authorizations:
BasicAuthUnAuthToken
path Parameters
projectId
required
string

Project ID

query Parameters
limit
integer
Default: 20

The numbers of items to return

sort
string
Default: "desc"
Enum: "desc" "asc"
sortBy
string
Default: "id"

Responses

Response samples

Content type
application/json
{}

3D Preview

Get product 3D preview config

Returns the 3D preview configuration for a product: whether 3D preview is enabled, the render profile, and per-side print geometry needed by the render widget. Intended for the embedded designer / storefront SDK.

Authorizations:
BasicAuthUnAuthToken
path Parameters
productId
required
string

Product ID

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create product 3D profile

Enables and configures 3D edge preview for a product. One profile per product.

Authorizations:
BasicAuth
path Parameters
productId
required
string

Product ID

Request Body schema: application/json
mode
string
Enum: "edge_preview" "model_preview" "hybrid"

Render mode. Only edge_preview is available currently.

enabled
boolean

Enable/disable 3D preview for the product

edge_style_default
string
Enum: "wrap" "mirror" "blur" "solid_color" "blurred_mirror"

Default edge fill style

edge_depth
number

Physical depth of the product edge (0-50)

edge_depth_unit
string
Enum: "mm" "cm" "in"

Responses

Request samples

Content type
application/json
{
  • "mode": "edge_preview",
  • "enabled": true,
  • "edge_style_default": "wrap",
  • "edge_depth": 1.5,
  • "edge_depth_unit": "cm"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update product 3D profile

Updates the 3D preview profile. Changing a render-affecting field (mode, edge style, edge depth, edge depth unit) bumps config_version so cached renders invalidate.

Authorizations:
BasicAuth
path Parameters
productId
required
string

Product ID

profileId
required
string

3D Profile ID

Request Body schema: application/json
mode
string
Enum: "edge_preview" "model_preview" "hybrid"

Render mode. Only edge_preview is available currently.

enabled
boolean

Enable/disable 3D preview for the product

edge_style_default
string
Enum: "wrap" "mirror" "blur" "solid_color" "blurred_mirror"

Default edge fill style

edge_depth
number

Physical depth of the product edge (0-50)

edge_depth_unit
string
Enum: "mm" "cm" "in"

Responses

Request samples

Content type
application/json
{
  • "mode": "edge_preview",
  • "enabled": true,
  • "edge_style_default": "wrap",
  • "edge_depth": 1.5,
  • "edge_depth_unit": "cm"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete product 3D profile

Disables 3D preview for the product (soft delete). Re-creating the profile later restores it with a bumped config_version.

Authorizations:
BasicAuth
path Parameters
productId
required
string

Product ID

profileId
required
string

3D Profile ID

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Render a 3D edge preview

Renders a 2D artwork into a procedural 3D edge preview image (canvas / wall-art style). Requires the product to have an enabled 3D profile and a Pro plan or higher.

Artwork resolution order: design_id preview image → artwork_url (must be a Printcart CDN URL) → the side background image. Results are cached by content hash — identical requests return cache_hit: true without re-rendering. Send reset: true to force a re-render. Rate limited to 10 renders per minute per store.

Authorizations:
BasicAuthUnAuthToken
Request Body schema: application/json
product_id
required
string

Product ID (must have an enabled 3D profile)

side_id
required
string

Side ID providing the print geometry

design_id
string or null

Optional design whose preview image is used as artwork

artwork_url
string or null

Optional artwork URL. Must be an https URL on the Printcart CDN.

edge_style
string
Enum: "wrap" "mirror" "blur" "solid_color" "blurred_mirror"

Overrides the profile's default edge style

edge_color
string or null

Hex color, used with edge_style solid_color

object
reset
boolean

Force a re-render, bypassing the cached result

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{}

Generate 3D preview for a saved design

Generates a 3D edge preview for an already-saved design. Print geometry is read from the design's original_side snapshot (captured when the design was saved), so later product edits never change the proof of an existing customer design.

Requires the design's product to have an enabled 3D profile and a Pro plan or higher. Results are cached — send reset: true in the body to force a re-render. Rate limited to 10 renders per minute per store.

Authorizations:
BasicAuth
path Parameters
designId
required
string

Design ID

Request Body schema: application/json
reset
boolean

Force a re-render, bypassing the cached result

Responses

Request samples

Content type
application/json
{
  • "reset": false
}

Response samples

Content type
application/json
{}

Get a list of 3D models

Lists the store's uploaded 3D models (GLB assets). Cursor paginated.

Authorizations:
BasicAuth
query Parameters
limit
integer [ 1 .. 100 ]
Default: 24

Items per page (1–100, default 24)

status
string
Enum: "uploaded" "queued" "validating" "active" "failed"

Filter by lifecycle status

search
string

Filter by model name (substring match)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "links": {
    }
}

Register a new 3D model

Registers a previously uploaded GLB file (via the multipart upload flow) as a 3D model. The referenced image must be a .glb file under the images/ prefix and no larger than 25MB. The model starts in uploaded status; call the validate endpoint to run async GLB validation.

Authorizations:
BasicAuth
Request Body schema: application/json
name
required
string <= 255 characters
source_image_id
required
string <uuid>

UUID of the uploaded GLB image (must be a .glb under images/)

metadata
object or null

Optional arbitrary metadata

Responses

Request samples

Content type
application/json
{
  • "name": "Coffee Mug 350ml",
  • "source_image_id": "3f2a1b0c-9d8e-7f6a-5b4c-3d2e1f0a9b8c",
  • "metadata": { }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get 3D model details

Authorizations:
BasicAuth
path Parameters
modelId
required
string

3D model ID

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Update 3D model details

Updates editable metadata (name, metadata). Does not change the uploaded file.

Authorizations:
BasicAuth
path Parameters
modelId
required
string

3D model ID

Request Body schema: application/json
name
string <= 255 characters
metadata
object or null

Responses

Request samples

Content type
application/json
{
  • "name": "Coffee Mug (updated)",
  • "metadata": { }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete a 3D model

Soft-deletes the model. Returns 409 if the model is still referenced by a profile or a side mapping.

Authorizations:
BasicAuth
path Parameters
modelId
required
string

3D model ID

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Validate a 3D model

Queues async validation of the model's GLB file (geometry, textures ≤ 4096px, no external dependencies). Returns 202 with the model in queued status while validation runs; on success the model becomes active. If the model is already active, returns 200 without re-queuing unless reset: true is sent. Rate limited to 10 requests per minute per store.

Authorizations:
BasicAuth
path Parameters
modelId
required
string

3D model ID

Request Body schema: application/json
reset
boolean

Re-run validation even if the model is already active

Responses

Request samples

Content type
application/json
{
  • "reset": false
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Get a side's 3D model mapping

Returns the 3D model mapping bound to a product side, if any.

Authorizations:
BasicAuth
path Parameters
sideId
required
string

Side ID

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Create or update a side's 3D model mapping

Binds an active 3D model to a product side and sets its surface/material mapping and transform. Creating or changing the mapping bumps its config_version.

Authorizations:
BasicAuth
path Parameters
sideId
required
string

Side ID

Request Body schema: application/json
model_id
required
string <uuid>

UUID of an active 3D model to bind to this side

surface_name
string or null <= 255 characters
material_name
string or null <= 255 characters
mapping
object or null
transform
object or null
camera
object or null
enabled
boolean or null

Responses

Request samples

Content type
application/json
{
  • "model_id": "7c8d9e0f-1a2b-3c4d-5e6f-7a8b9c0d1e2f",
  • "surface_name": "front_panel",
  • "material_name": "body",
  • "mapping": { },
  • "transform": { },
  • "camera": { },
  • "enabled": true
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete a side's 3D model mapping

Authorizations:
BasicAuth
path Parameters
sideId
required
string

Side ID

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}