Build path: product to print-ready PDF
Printcart's REST API build path takes a product from nothing to a print-ready PDF in a fixed sequence: create the product, define a printable side with bleed and a safe zone, save a design against it, and generate the file. This guide walks each step, with links to the full schema in the API Reference.
Updated . Maintained by the Printcart team.
The sequence
POST /account -> JWT
POST /stores -> sid, secret, unauth_token
POST /products -> product
POST /sides -> printable surface (design area, bleed, safe zone)
or POST /products/{id}/sides/import-from-template
POST /images -> upload artwork (or POST /multipart/create for large files)
POST /designs -> saved design (creates a project implicitly)
POST /projects -> order (or reuse the implicit one)
POST /designs/{id}/generate/print-pdf -> print-ready PDF
POST /webhooks -> get notified when things changeEach step is documented with request and response schemas in the API reference. Authentication for each call is covered in Authentication.
Sides carry print-readiness
A product on its own is not printable. The side carries the geometry:
| Response field | Meaning |
|---|---|
design_area | {width, height, top, left}: the printable rectangle |
cut_line_margin | {x, y}: bleed, left and right and top and bottom |
safe_zone_margin | {x, y}: the keep-clear margin inside the trim |
side_image_size | {width, height}: the mockup image size |
scale | pixels per dimension_unit, which turns canvas coordinates into physical size |
Geometry is submitted in the same grouped form, not as flat columns. Units come from the product's dimension_unit, which is inch, cm or px.
GET /products/{product}/production-readiness reports what is still missing before a product can produce output. It is a useful onboarding pre-flight.
Designs
POST /designs takes either multipart/form-data with a design_file, or JSON that references a design_image_id you uploaded earlier. Send exactly one of side_id or product_id, and exactly one of the two file inputs.
layers, the canvas document, is submitted as a JSON-encoded string and returned as JSON. Each design snapshots the side geometry into original_side, so editing the side later does not change how an existing design renders.
Output
| Endpoint | Produces |
|---|---|
POST /designs/{design}/generate/print-pdf | A print-ready CMYK PDF with TrimBox and BleedBox and marks. For a canvas product, the full print sheet with a cut line |
POST /designs/{design}/generate/pdf | A plain RGB page at the design-area size, with no bleed, marks or boxes. Not a press file |
POST /designs/{design}/generate/preview-pdf | A low-resolution proof. Do not send it to press |
POST /designs/{design}/generate/png | A raster image for thumbnails and emails |
The PDF endpoints cache their result: repeat calls return the same file until you pass {"reset": true}. The PNG endpoint takes no body. Rendering is synchronous and can take several seconds.
Projects are orders
When a store is connected to a platform such as WooCommerce, Shopify or Wix, one platform order becomes one project. Commercial fields on a project, such as customer email, totals and currency, are derived from the order data the platform integration wrote.
A project you create directly through the API does not have that order data, so those fields are empty. Keep your own order record as the source of truth for commerce and use the project id as the join key.
GET /projects/{project} returns everything needed to produce an order. It is the only response that embeds project_items, and those items embed their designs.
Related
- Webhooks to react to design and project changes without polling.
- Design Tool SDK to put the customizer on a product page.
- Preparing print-ready files for DPI, bleed, color and fonts.
- Automating POD orders and fulfillment with the Printcart API.
Questions & answers
What is the shortest path from a new product to a print-ready PDF?
- Create the product, add a side (or import one from a template) with its bleed and safe zone, upload artwork, save a design, then call POST /designs/{id}/generate/print-pdf.
What is the difference between generate/print-pdf and generate/pdf?
- generate/print-pdf is a CMYK, press-ready file with TrimBox, BleedBox and marks. generate/pdf is a plain RGB page at the design-area size with no bleed or marks — not a press file.
How do I know a product is ready to produce?
- Call GET /products/{product}/production-readiness. It reports what is still missing before the product can generate real output.
Can you work with a merchant in my country?
- Yes. Printcart services are delivered remotely, so we work with merchants in any country. Netbase JSC, the company behind Printcart, has worked with clients in 80+ countries.
Do you support my industry?
- Printcart services are not tied to one industry. Full stores, custom development, integration and support are delivered remotely; tell us what you sell and we will say plainly whether Printcart fits.
How do I pay securely?
- You sign the contract with and pay the company, Netbase JSC. App plans are billed through Shopify or Wix for stores on those platforms, and through PayPal for WooCommerce and direct stores. Full-store orders on solution.printcart.com check out through PayPal. Service work is quoted in writing in your Helpdesk ticket before any payment.
Who do I talk to?
- Talk to our CEO, Huy Nguyen (David), on WhatsApp at https://wa.me/84937869689 or by email at support@printcart.com.