Polotno + Prodigi pairs Polotno's embedded design editor SDK with Prodigi's Print API. Prodigi's model is explicitly bring-your-own-artwork. Your users create that artwork inside your app with Polotno, your backend posts the order with an asset URL, and Prodigi prints and ships fine art, framed prints, canvas, and photo products worldwide.
Try it below. Design the print, then open the Prodigi tab, pick a frame colour and where the buyer lives, and press Send to Prodigi: the editor exports the file at the exact 3600 × 4800 px Prodigi expects, Prodigi quotes it for buyers in four countries and shows which lab would print each one, then takes a sandbox order and checks the file. Sandbox orders are never printed.
The full code, editor and server, is on GitHub: polotno-prodigi-demo. It runs on Polotno SDK, so it needs a Polotno API key. To compare it with the other print APIs, see the print on demand API comparison.
The problem Prodigi doesn't solve
Prodigi is deliberate about its scope: a print and fulfillment API with a strong fine-art catalog (giclée prints, framing, canvas, metal, photo books) and no design tooling for your web app. Their own docs assume a developer wires the API and the artwork arrives ready-made.
That's clean architecture, but it moves the hard problem to you. "Bring your own artwork" means your product needs a way to make the artwork, sized to the SKU, at print resolution, positioned correctly for the print area. Without one:
- Users upload arbitrary images and discover resolution problems after delivery, as returns
- Personalization (text on prints, layouts, collages) is off the table entirely
- Building an in-house editor becomes the plan, the project that looks finite at kickoff and compounds for years
- Or the catalog stays limited to plain photo uploads while competitors ship customization
Polotno is the artwork layer Prodigi intentionally leaves to you: an embedded editor that produces assets at exactly the dimensions each SKU expects.
How to place orders with the Prodigi Print API
- Design: User opens a template in the embedded Polotno editor, canvas sized to the Prodigi SKU's asset spec.
- Edit: User composes the piece: photos, text, layouts, collages, inside the constraints your product defines.
- Export: Your app exports a print-resolution PNG or PDF from the design JSON and hosts it at a URL Prodigi can fetch.
- Order: Your backend creates the order on Prodigi's Print API, referencing the SKU, quantity, shipping address, and asset URL per print area.
- Fulfill: Prodigi prints and ships from its global lab network. Order status flows back via webhooks or polling.
Polotno owns creation. Prodigi owns production and logistics. Your backend is the thin layer between them.
What a request looks like
// 1. Client-side: export print-resolution artwork.
// Prodigi lists required pixel dimensions per SKU – export the
// canvas at that size.
const imageDataUrl = await store.toDataURL({
pixelRatio: assetWidth / store.width,
mimeType: "image/png",
})
const assetUrl = await uploadToYourStorage(imageDataUrl)
// 2. Backend: create the order on Prodigi's Print API.
await fetch("https://api.prodigi.com/v4.0/Orders", {
method: "POST",
headers: {
"X-API-Key": PRODIGI_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
shippingMethod: "Standard",
recipient: {
name: customer.name,
address: {
line1: shipping.address1,
postalOrZipCode: shipping.zip,
countryCode: shipping.country,
townOrCity: shipping.city,
},
},
items: [
{
sku: "GLOBAL-FAP-10x10", // fine art print, 10 × 10", the SKU in Prodigi's docs
copies: 1,
sizing: "fillPrintArea",
assets: [{ printArea: "default", url: assetUrl }],
},
],
}),
})
// 3. Prodigi prints at the nearest lab, ships, and reports status.What Polotno handles vs. what Prodigi handles
Polotno (in your app)
- Embedded editor UI: photos, text, layouts, multi-element compositions
- Canvases sized per SKU asset spec, DPI-safe by construction
- Templates, brand locking, variable data
- Print-resolution PNG/PDF export from open design JSON
- Client, self-hosted, or cloud rendering depending on throughput
Prodigi (backend)
- Fine art and photo product catalog: prints, framing, canvas, metal, acrylic
- Global lab network with local production
- Printing, framing, packaging, shipping
- Order status via webhooks and API
Technical details
- Export format: PNG at the SKU's required pixel dimensions via store.toDataURL, or PDF where the product calls for it; server-side export via polotno-node for batches.
- Sizing: Export at the exact print-area dimensions and use sizing: "fillPrintArea" so what the user composed is what prints. No surprise crops.
- Resolution safety: every element's properties are readable through the store API, so your own check can flag a low-DPI upload in the editor, before the order, not after delivery.
- Variable data: Generate personalized prints in batch from one template. See dynamic template variables.
- Handoff to Prodigi: POST the order (sku, assets, recipient) to /v4.0/Orders, then track status.
What you can build
Any Prodigi SKU that takes flat artwork:
- Fine art: giclée prints, framed prints, mounted prints
- Photo products: canvas, metal, acrylic, photo books
- Home: cushions, blankets, mugs
- Personalized gifts: text-on-print, collages, star maps, name art
FAQ
Do I need a Prodigi account?
Yes. Prodigi handles the catalog, production, and shipping; the API key comes from their dashboard. Their sandbox environment works for development.
What does Prodigi expect from the artwork?
A URL to a print-resolution asset per print area, at the SKU's listed dimensions. Polotno exports exactly that from the design JSON.
Can users personalize prints, not just upload photos?
Yes. That's the reason to pair the two. Text, layouts, multi-photo compositions, templates with locked branding: all standard Polotno editor capability.
How do I avoid low-resolution orders?
Validate in the editor. Read each image element through the store API to get its source file and the size it is placed at, measure that file's pixel dimensions yourself, and warn or block export when it can't hold the SKU's DPI.
Is this self-serve yet?
Yes. Try the demo above, then start from its code with a Polotno API key and your own Prodigi account.
Start building
The code for the demo above is on GitHub: polotno-prodigi-demo. Clone it, add a Polotno API key (a trial key from your Polotno dashboard works) and your Prodigi API key, and the editor-to-order flow runs locally.
