curl --request GET \
--url https://api.print.app/v2/library/designs/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.print.app/v2/library/designs/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.print.app/v2/library/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/library/designs/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.print.app/v2/library/designs/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.print.app/v2/library/designs/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.print.app/v2/library/designs/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "library_design",
"id": "<string>",
"title": "<string>",
"collectionId": "<string>",
"collectionTitle": "<string>",
"product": "cards",
"occasion": "holidays",
"inSeason": true,
"pages": 123,
"sizeMm": {
"width": 123,
"height": 123
},
"sizeMatch": "same",
"thumbnailUrl": "<string>",
"imageUrl": "<string>",
"importedDesignId": "<string>",
"created": "<string>",
"pagePreviews": [
{
"index": 123,
"title": "<string>",
"previewUrl": "<string>"
}
]
}{
"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="
}{
"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="
}Get a library design
Returns one library design with a preview image of every page.
curl --request GET \
--url https://api.print.app/v2/library/designs/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.print.app/v2/library/designs/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.print.app/v2/library/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/library/designs/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.print.app/v2/library/designs/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.print.app/v2/library/designs/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.print.app/v2/library/designs/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"object": "library_design",
"id": "<string>",
"title": "<string>",
"collectionId": "<string>",
"collectionTitle": "<string>",
"product": "cards",
"occasion": "holidays",
"inSeason": true,
"pages": 123,
"sizeMm": {
"width": 123,
"height": 123
},
"sizeMatch": "same",
"thumbnailUrl": "<string>",
"imageUrl": "<string>",
"importedDesignId": "<string>",
"created": "<string>",
"pagePreviews": [
{
"index": 123,
"title": "<string>",
"previewUrl": "<string>"
}
]
}{
"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="
}{
"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 library design id (design_…).
Response
OK.
A ready-made design in the Print.App library.
"library_design"The library design id: import it with POST /v2/library/designs/{id}/import.
The collection it belongs to: designs made together, in one style. Pass as collectionId to list them.
What it prints on: business is business cards and stationery, print flyers, menus and brochures, signage banners, signs and posters. Read from its title and tags; null when they don't say.
cards, invitations, business, labels, apparel, gifts, signage, print, null What it is for: life is weddings, babies, graduations and memorials. null when its title and tags don't say.
holidays, life, kids, business, food, null Whether it is for the next occasion coming up, or the one after.
How many pages it has (2 for a double-sided card).
Its trim size in mm. null when the library has no size for it.
Show child attributes
Show child attributes
With width and height in the search: same within 2%, rotated the same size turned, aspect the same shape at another size (it scales without cropping), different another shape, unknown no size known. null without them.
same, rotated, aspect, different, unknown, null Its first page, 400 px.
Its first page, 1000 px.
Your copy of it, when your account has imported it and still has the copy.
When it was added to the library (ISO 8601).
Every page with its preview image (only when getting one design).
Show child attributes
Show child attributes