Polotno + Spreadconnect pairs Polotno's embedded design editor SDK with Spreadconnect, the print-on-demand API from Spread Group (Spreadshirt), formerly SPOD. Your users design apparel inside your app, your backend creates the product and the order through the Spreadconnect API, and Spread Group prints and ships.
Try it below. Design the shirt, then press Send to Spreadconnect: the editor exports each side at the size of Spreadconnect's print areas, and Spreadconnect's API returns its own product previews. Nothing is ordered.
The full code, editor and server, is on GitHub: polotno-spreadconnect-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 Spreadconnect doesn't solve
Spreadconnect gives partner apps Spread Group's catalog, production and order flow. The designer is left to you. Their native designer stays on Spreadshirt's site; external sites and Shopify stores are left to build their own.
Teams integrating Spreadshirt without a design layer usually:
- Link users off-site to Spreadshirt's designer, breaking the flow
- Build a bare upload UI and leave layout to the customer
- Commit to one garment because recomposing designs per product is a project
Polotno goes in front of Spreadconnect so Shopify and custom stores get a web-native designer tied to Spreadconnect's product types and print areas.
How to create Spreadconnect products with the API
- Design: User picks a garment and base color from Spreadconnect's product types. Polotno loads the canvas with print-zone overlays.
- Edit: User composes artwork, selects placements (front, back, sleeve).
- Export: Your app exports a PNG per placement using store.toDataURL . Spreadconnect takes PNG artwork under 10 MB.
- Preview: Your backend can ask Spreadconnect for product previews of the design before the order.
- Order: Your backend creates the article with the artwork, then POSTs the order to the Spreadconnect API.
- Fulfill: Spread Group prints and ships. Status updates arrive on your webhook.
What a request looks like
// 1. Export a PNG per placement. Spreadconnect takes PNG under 10 MB.
const frontPng = await frontStore.toDataURL({ mimeType: "image/png", pixelRatio: 4 })
const frontUrl = await uploadToYourStorage(frontPng)
const spreadconnect = (path, body) =>
fetch(`https://api.spreadconnect.app${path}`, {
method: "POST",
headers: {
"X-SPOD-ACCESS-TOKEN": SPREADCONNECT_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify(body),
}).then((r) => r.json())
// 2. Optional: product previews of the design, without changing anything.
await spreadconnect(`/productTypes/${PRODUCT_TYPE_ID}/previews`, {
/* appearanceId, configurations with the design and hotspot, width, height */
})
// 3. Create the article with the artwork (an image URL or a designId),
// then the order. See https://rest.spod.com/docs/ for the full schemas.
const article = await spreadconnect("/articles", {
/* title, variants, configurations: [{ image: { url: frontUrl }, ... }] */
})
await spreadconnect("/orders", {
/* orderItems, shipping, email, phone, externalOrderReference */
})What Polotno handles vs. what Spreadshirt handles
Polotno (in your app)
- Per-garment templates + print-zone overlays
- Embedded editor UI
- Multi-placement design (front, back, sleeve)
- Garment color + size preview, built in your app around the editor
- PNG export per placement
Spreadconnect (backend)
- Spread Group's garment catalog
- Product previews from the API
- Printing and fulfillment
- Order and shipping status webhooks
Technical details
- Export: PNG per placement via store.toDataURL . Spreadconnect accepts PNG artwork under 10 MB, by URL or uploaded first with
POST /designs/upload. - Endpoint: https://api.spreadconnect.app , with a separate staging environment and its own account.
- Auth: your API key in the X-SPOD-ACCESS-TOKEN header. Create it under Connect Integration at login.spreadconnect.app.
- Previews:
POST /productTypes/{id}/previewsrenders the design on the product without changing anything. - Webhooks: signed with an HMAC in the X-SPRD-SIGNATURE header.
- Rate limit: 60 calls per minute per integration.
- Rendering modes: Client, self-hosted, or cloud .
What you can build
Any garment or accessory in the Spreadconnect catalog:
- T-shirts, long sleeves, tank tops
- Hoodies and sweatshirts
- Kids and baby apparel
- Bags and accessories
- Phone cases
- Caps
FAQ
Do I need a Spreadconnect account?
Yes. Create an API integration at login.spreadconnect.app to get the key. Staging uses a separate account.
Is Spreadconnect the same as SPOD?
Yes. SPOD, Spread Group's print-on-demand service, is now called Spreadconnect, and its API docs live at rest.spod.com/docs.
Start building
The code for the demo above is on GitHub: polotno-spreadconnect-demo. Clone it, add a Polotno API key (a trial key from your Polotno dashboard works) and your Spreadconnect API key, and the editor-to-order flow runs locally.
