curl --request PATCH \
--url https://api.print.app/v2/designs/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"tags": [
"<string>"
],
"connectorIds": [
"<string>"
],
"resourceProfileIds": [
"<string>"
],
"pdfProfileId": "<string>",
"settings": {
"welcomeMsg": "<string>",
"lockBackground": true,
"renderCutLines": true,
"enablePageSorting": true,
"enableSaveLater": true,
"graphicsSearchCustomers": true,
"addToCartOnSave": true,
"hideCustomColor": true,
"hideUploads": true,
"hideGraphics": true,
"hideBackgrounds": true,
"hideTypography": true,
"hideColorButton": true,
"hideMenubar": true,
"hideContextbar": true,
"showItemTabInProject": true,
"disableCanvas": true
}
}
'import requests
url = "https://api.print.app/v2/designs/{id}"
payload = {
"title": "<string>",
"tags": ["<string>"],
"connectorIds": ["<string>"],
"resourceProfileIds": ["<string>"],
"pdfProfileId": "<string>",
"settings": {
"welcomeMsg": "<string>",
"lockBackground": True,
"renderCutLines": True,
"enablePageSorting": True,
"enableSaveLater": True,
"graphicsSearchCustomers": True,
"addToCartOnSave": True,
"hideCustomColor": True,
"hideUploads": True,
"hideGraphics": True,
"hideBackgrounds": True,
"hideTypography": True,
"hideColorButton": True,
"hideMenubar": True,
"hideContextbar": True,
"showItemTabInProject": True,
"disableCanvas": True
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
tags: ['<string>'],
connectorIds: ['<string>'],
resourceProfileIds: ['<string>'],
pdfProfileId: '<string>',
settings: {
welcomeMsg: '<string>',
lockBackground: true,
renderCutLines: true,
enablePageSorting: true,
enableSaveLater: true,
graphicsSearchCustomers: true,
addToCartOnSave: true,
hideCustomColor: true,
hideUploads: true,
hideGraphics: true,
hideBackgrounds: true,
hideTypography: true,
hideColorButton: true,
hideMenubar: true,
hideContextbar: true,
showItemTabInProject: true,
disableCanvas: true
}
})
};
fetch('https://api.print.app/v2/designs/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.print.app/v2/designs/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'title' => '<string>',
'tags' => [
'<string>'
],
'connectorIds' => [
'<string>'
],
'resourceProfileIds' => [
'<string>'
],
'pdfProfileId' => '<string>',
'settings' => [
'welcomeMsg' => '<string>',
'lockBackground' => true,
'renderCutLines' => true,
'enablePageSorting' => true,
'enableSaveLater' => true,
'graphicsSearchCustomers' => true,
'addToCartOnSave' => true,
'hideCustomColor' => true,
'hideUploads' => true,
'hideGraphics' => true,
'hideBackgrounds' => true,
'hideTypography' => true,
'hideColorButton' => true,
'hideMenubar' => true,
'hideContextbar' => true,
'showItemTabInProject' => true,
'disableCanvas' => true
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.print.app/v2/designs/{id}"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"connectorIds\": [\n \"<string>\"\n ],\n \"resourceProfileIds\": [\n \"<string>\"\n ],\n \"pdfProfileId\": \"<string>\",\n \"settings\": {\n \"welcomeMsg\": \"<string>\",\n \"lockBackground\": true,\n \"renderCutLines\": true,\n \"enablePageSorting\": true,\n \"enableSaveLater\": true,\n \"graphicsSearchCustomers\": true,\n \"addToCartOnSave\": true,\n \"hideCustomColor\": true,\n \"hideUploads\": true,\n \"hideGraphics\": true,\n \"hideBackgrounds\": true,\n \"hideTypography\": true,\n \"hideColorButton\": true,\n \"hideMenubar\": true,\n \"hideContextbar\": true,\n \"showItemTabInProject\": true,\n \"disableCanvas\": true\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.print.app/v2/designs/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"connectorIds\": [\n \"<string>\"\n ],\n \"resourceProfileIds\": [\n \"<string>\"\n ],\n \"pdfProfileId\": \"<string>\",\n \"settings\": {\n \"welcomeMsg\": \"<string>\",\n \"lockBackground\": true,\n \"renderCutLines\": true,\n \"enablePageSorting\": true,\n \"enableSaveLater\": true,\n \"graphicsSearchCustomers\": true,\n \"addToCartOnSave\": true,\n \"hideCustomColor\": true,\n \"hideUploads\": true,\n \"hideGraphics\": true,\n \"hideBackgrounds\": true,\n \"hideTypography\": true,\n \"hideColorButton\": true,\n \"hideMenubar\": true,\n \"hideContextbar\": true,\n \"showItemTabInProject\": true,\n \"disableCanvas\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.print.app/v2/designs/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"connectorIds\": [\n \"<string>\"\n ],\n \"resourceProfileIds\": [\n \"<string>\"\n ],\n \"pdfProfileId\": \"<string>\",\n \"settings\": {\n \"welcomeMsg\": \"<string>\",\n \"lockBackground\": true,\n \"renderCutLines\": true,\n \"enablePageSorting\": true,\n \"enableSaveLater\": true,\n \"graphicsSearchCustomers\": true,\n \"addToCartOnSave\": true,\n \"hideCustomColor\": true,\n \"hideUploads\": true,\n \"hideGraphics\": true,\n \"hideBackgrounds\": true,\n \"hideTypography\": true,\n \"hideColorButton\": true,\n \"hideMenubar\": true,\n \"hideContextbar\": true,\n \"showItemTabInProject\": true,\n \"disableCanvas\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"object": "design",
"id": "design_01J8Z9K2M3N4P5Q6R7S8T9V0W1",
"title": "Business Card",
"unit": "mm",
"pages": [
{
"index": 0,
"title": "Front",
"previewUrl": "https://d1p81tn8mwpox2.cloudfront.net/?k=s3%3A%2F%2Fapp-print-cdn%2Fcontent_f1.png&size=1000"
},
{
"index": 1,
"title": "Back",
"previewUrl": "https://d1p81tn8mwpox2.cloudfront.net/?k=s3%3A%2F%2Fapp-print-cdn%2Fcontent_b1.png&size=1000"
}
],
"tags": [
"cards"
],
"connectorIds": [],
"resourceProfileIds": [],
"pdfProfileId": null,
"settings": {},
"created": "2026-09-02T14:05:11Z",
"modified": "2026-10-11T08:40:27Z"
}{
"error": true,
"code": "invalid_request",
"message": "width is required.",
"param": "width",
"requestId": "FZn-uhymjoEEJow="
}{
"error": true,
"code": "unauthorized",
"message": "Missing or invalid secret key. Send it as \"Authorization: Bearer sk_…\".",
"requestId": "FZn-uhymjoEEJow="
}{
"error": true,
"code": "account_suspended",
"message": "This account is suspended. Settle the outstanding invoice in the Print.App dashboard.",
"requestId": "FZn-uhymjoEEJow="
}{
"error": true,
"code": "not_found",
"message": "Not found.",
"requestId": "FZn-uhymjoEEJow="
}{
"error": true,
"code": "unsupported_media_type",
"message": "Send the request body as JSON, with \"Content-Type: application/json\".",
"requestId": "FZn-uhymjoEEJow="
}{
"message": "Too Many Requests"
}{
"error": true,
"code": "internal_error",
"message": "Something went wrong on our side. Retry the request; if it keeps failing, contact support with the requestId.",
"requestId": "FZn-uhymjoEEJow="
}Update a design
Changes a design’s title or tags, the connectors, resource profiles and PDF profile it uses, or its own settings over the store’s (settings: send null for one to follow the store again). Only the fields you send change.
curl --request PATCH \
--url https://api.print.app/v2/designs/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"tags": [
"<string>"
],
"connectorIds": [
"<string>"
],
"resourceProfileIds": [
"<string>"
],
"pdfProfileId": "<string>",
"settings": {
"welcomeMsg": "<string>",
"lockBackground": true,
"renderCutLines": true,
"enablePageSorting": true,
"enableSaveLater": true,
"graphicsSearchCustomers": true,
"addToCartOnSave": true,
"hideCustomColor": true,
"hideUploads": true,
"hideGraphics": true,
"hideBackgrounds": true,
"hideTypography": true,
"hideColorButton": true,
"hideMenubar": true,
"hideContextbar": true,
"showItemTabInProject": true,
"disableCanvas": true
}
}
'import requests
url = "https://api.print.app/v2/designs/{id}"
payload = {
"title": "<string>",
"tags": ["<string>"],
"connectorIds": ["<string>"],
"resourceProfileIds": ["<string>"],
"pdfProfileId": "<string>",
"settings": {
"welcomeMsg": "<string>",
"lockBackground": True,
"renderCutLines": True,
"enablePageSorting": True,
"enableSaveLater": True,
"graphicsSearchCustomers": True,
"addToCartOnSave": True,
"hideCustomColor": True,
"hideUploads": True,
"hideGraphics": True,
"hideBackgrounds": True,
"hideTypography": True,
"hideColorButton": True,
"hideMenubar": True,
"hideContextbar": True,
"showItemTabInProject": True,
"disableCanvas": True
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
tags: ['<string>'],
connectorIds: ['<string>'],
resourceProfileIds: ['<string>'],
pdfProfileId: '<string>',
settings: {
welcomeMsg: '<string>',
lockBackground: true,
renderCutLines: true,
enablePageSorting: true,
enableSaveLater: true,
graphicsSearchCustomers: true,
addToCartOnSave: true,
hideCustomColor: true,
hideUploads: true,
hideGraphics: true,
hideBackgrounds: true,
hideTypography: true,
hideColorButton: true,
hideMenubar: true,
hideContextbar: true,
showItemTabInProject: true,
disableCanvas: true
}
})
};
fetch('https://api.print.app/v2/designs/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.print.app/v2/designs/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'title' => '<string>',
'tags' => [
'<string>'
],
'connectorIds' => [
'<string>'
],
'resourceProfileIds' => [
'<string>'
],
'pdfProfileId' => '<string>',
'settings' => [
'welcomeMsg' => '<string>',
'lockBackground' => true,
'renderCutLines' => true,
'enablePageSorting' => true,
'enableSaveLater' => true,
'graphicsSearchCustomers' => true,
'addToCartOnSave' => true,
'hideCustomColor' => true,
'hideUploads' => true,
'hideGraphics' => true,
'hideBackgrounds' => true,
'hideTypography' => true,
'hideColorButton' => true,
'hideMenubar' => true,
'hideContextbar' => true,
'showItemTabInProject' => true,
'disableCanvas' => true
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.print.app/v2/designs/{id}"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"connectorIds\": [\n \"<string>\"\n ],\n \"resourceProfileIds\": [\n \"<string>\"\n ],\n \"pdfProfileId\": \"<string>\",\n \"settings\": {\n \"welcomeMsg\": \"<string>\",\n \"lockBackground\": true,\n \"renderCutLines\": true,\n \"enablePageSorting\": true,\n \"enableSaveLater\": true,\n \"graphicsSearchCustomers\": true,\n \"addToCartOnSave\": true,\n \"hideCustomColor\": true,\n \"hideUploads\": true,\n \"hideGraphics\": true,\n \"hideBackgrounds\": true,\n \"hideTypography\": true,\n \"hideColorButton\": true,\n \"hideMenubar\": true,\n \"hideContextbar\": true,\n \"showItemTabInProject\": true,\n \"disableCanvas\": true\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.print.app/v2/designs/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"connectorIds\": [\n \"<string>\"\n ],\n \"resourceProfileIds\": [\n \"<string>\"\n ],\n \"pdfProfileId\": \"<string>\",\n \"settings\": {\n \"welcomeMsg\": \"<string>\",\n \"lockBackground\": true,\n \"renderCutLines\": true,\n \"enablePageSorting\": true,\n \"enableSaveLater\": true,\n \"graphicsSearchCustomers\": true,\n \"addToCartOnSave\": true,\n \"hideCustomColor\": true,\n \"hideUploads\": true,\n \"hideGraphics\": true,\n \"hideBackgrounds\": true,\n \"hideTypography\": true,\n \"hideColorButton\": true,\n \"hideMenubar\": true,\n \"hideContextbar\": true,\n \"showItemTabInProject\": true,\n \"disableCanvas\": true\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.print.app/v2/designs/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<string>\",\n \"tags\": [\n \"<string>\"\n ],\n \"connectorIds\": [\n \"<string>\"\n ],\n \"resourceProfileIds\": [\n \"<string>\"\n ],\n \"pdfProfileId\": \"<string>\",\n \"settings\": {\n \"welcomeMsg\": \"<string>\",\n \"lockBackground\": true,\n \"renderCutLines\": true,\n \"enablePageSorting\": true,\n \"enableSaveLater\": true,\n \"graphicsSearchCustomers\": true,\n \"addToCartOnSave\": true,\n \"hideCustomColor\": true,\n \"hideUploads\": true,\n \"hideGraphics\": true,\n \"hideBackgrounds\": true,\n \"hideTypography\": true,\n \"hideColorButton\": true,\n \"hideMenubar\": true,\n \"hideContextbar\": true,\n \"showItemTabInProject\": true,\n \"disableCanvas\": true\n }\n}"
response = http.request(request)
puts response.read_body{
"object": "design",
"id": "design_01J8Z9K2M3N4P5Q6R7S8T9V0W1",
"title": "Business Card",
"unit": "mm",
"pages": [
{
"index": 0,
"title": "Front",
"previewUrl": "https://d1p81tn8mwpox2.cloudfront.net/?k=s3%3A%2F%2Fapp-print-cdn%2Fcontent_f1.png&size=1000"
},
{
"index": 1,
"title": "Back",
"previewUrl": "https://d1p81tn8mwpox2.cloudfront.net/?k=s3%3A%2F%2Fapp-print-cdn%2Fcontent_b1.png&size=1000"
}
],
"tags": [
"cards"
],
"connectorIds": [],
"resourceProfileIds": [],
"pdfProfileId": null,
"settings": {},
"created": "2026-09-02T14:05:11Z",
"modified": "2026-10-11T08:40:27Z"
}{
"error": true,
"code": "invalid_request",
"message": "width is required.",
"param": "width",
"requestId": "FZn-uhymjoEEJow="
}{
"error": true,
"code": "unauthorized",
"message": "Missing or invalid secret key. Send it as \"Authorization: Bearer sk_…\".",
"requestId": "FZn-uhymjoEEJow="
}{
"error": true,
"code": "account_suspended",
"message": "This account is suspended. Settle the outstanding invoice in the Print.App dashboard.",
"requestId": "FZn-uhymjoEEJow="
}{
"error": true,
"code": "not_found",
"message": "Not found.",
"requestId": "FZn-uhymjoEEJow="
}{
"error": true,
"code": "unsupported_media_type",
"message": "Send the request body as JSON, with \"Content-Type: application/json\".",
"requestId": "FZn-uhymjoEEJow="
}{
"message": "Too Many Requests"
}{
"error": true,
"code": "internal_error",
"message": "Something went wrong on our side. Retry the request; if it keeps failing, contact support with the requestId.",
"requestId": "FZn-uhymjoEEJow="
}Authorizations
A secret key from Print.App admin → Domains → Secret keys, sent as Authorization: Bearer sk_…. Server-side only.
Path Parameters
The designId.
Body
The fields to change.
The design's name.
1 - 200Labels for finding it again.
501 - 50The connectors the design runs on the product page. Replaces the list; to add or remove one, use POST / DELETE /v2/designs/{id}/connectors.
501 - 120The resource profiles that limit the fonts, colours and graphics its editor offers.
201 - 120The PDF profile its print PDF is made with; null for the design's own PDF settings.
1 - 120This design's own settings, over the store's. Only the ones you send change; null (or "" on a choice) goes back to the store's.
Show child attributes
Show child attributes
Response
OK.
A design (template) your customers start from. Open it in the editor with new PrintAppClient({ designId }).
"design"The designId to pass to PrintAppClient.
The unit the design is measured in: mm, cm, in, pt, px or ft.
Show child attributes
Show child attributes
The connectors the design runs on the product page.
The resource profiles that limit what its editor offers.
The PDF profile its print PDF is made with; null: its own settings.
The settings this design sets for itself, over the store's (see GET /v2/settings). Settings it doesn't set follow the store.
Show child attributes
Show child attributes