Printful Mockup Generator: How It Works, API Limits and Terms
Printful's free mockup generator makes sense when you sell only Printful products, since its terms limit the mockups to selling those. For your own scenes, several suppliers or high volume, SudoMock renders your own PSD in under a second, and Printful still prints and ships.
Published 6 min readBeck

Key takeaways
- Printful's mockup API is asynchronous: create a task, then poll or wait for a webhook.
- Mockup image URLs from Printful's v1 API expire after 72 hours, so store the images yourself.
- SudoMock's renders match Photoshop's own output, with over 2 billion served at 99.9% uptime.
Printful's mockup generator is free: after you sign up, you place your design on any product in Printful's catalog and download or publish the mockups from the Design Maker or your product's mockup library. The catch is scope. The mockups only cover Printful catalog products, the API version is an asynchronous task whose image links expire after 72 hours (per the v1 docs), and Printful's terms say the mockups may only be used to sell Printful products.
This guide covers how the generator works in the dashboard and through the API, the limits that matter at volume, and when it makes sense to render listing images from your own PSD instead.
How to use Printful's mockup generator (free)
Printful describes it plainly: "Create and download free mockups of your Printful products. No complicated software or upfront costs." It covers the whole catalog: "If it's in our Catalog, we have mockups for it", including apparel, accessories, home and living, and embroidery.
There are two ways in, according to Printful's help center:
- Design Maker: open a product, add your design, click Preview, then Download mockup.
- Mockup library: go to My products, open a product and use View all mockups to filter and download the images you need.
Printful also lets you upload your own mockups to a product as JPG, PNG or SVG, up to 30,000 x 30,000 px, as long as the product in the image closely matches the Printful product.
Printful does not publish a count of mockup styles per product. Its page says it keeps adding templates "from lifestyle shots to clean studio backgrounds".
Is the Printful mockup generator really free?
Yes. The Free plan ($0 per month) lists "Free Design Maker and Mockup Generator". Printful Growth costs $24.99 per month and is free once annual sales reach $12K (printful.com/pricing, read 4 October 2026). It adds discounts and a few print perks. There is no separate paid mockup tier on the pricing page as of September 30, 2026.
What you pay for is the product. The mockups exist to sell items Printful prints and ships.
The Printful mockup generator API
Developers reach the same catalog mockups through the Printful API. It needs a private token from the Developer Portal, sent as Authorization: Bearer {token}. Account-level tokens also need an X-PF-Store-Id header.
The flow is task based:
- v1:
POST /mockup-generator/create-task/{id}with the product, variants and your file placement, thenGET /mockup-generator/task?task_key=...for the result. Helper endpointsGET /mockup-generator/printfiles/{id}andGET /mockup-generator/templates/{id}return print areas and templates. - v2 (open beta):
POST /v2/mockup-tasks, then pollGET /v2/mockup-tasks?id=...or listen for themockup_task_finishedwebhook.
Printful is explicit that this is not real time: "Mockup generation requires some time, that is why it cannot happen in real-time", and "The first request for a result should not be sooner than 10 seconds."
Limits worth planning around:
| Limit | Printful mockup generator API |
|---|---|
| General rate limit | 120 API calls per minute (v2: leaky bucket, 120 requests per 60 seconds by default) |
| Mockup endpoints | Lower than the general limit ("resource intensive operations (such as mockup generator) have a lower allowed request limit"); exact number not published |
| Image links | "URLs to mockup images are temporary, they will expire after 72h, so you have to store them on your server" |
| Products | Printful catalog products and variants only |
| Your own template | No documented way to send your own PSD or scene through the API |
Printful: pick a catalog item, create a task, poll or wait for a webhook, then store the URL within 72 hours. PSD rendering: upload a template once, render with an artwork URL, and get the image in the response.
Can you use Printful mockups anywhere?
No. Printful's Terms of Service (section 4.6) say digital items "like mockups, templates, images and other design assets" belong to Printful and may only be used "in connection with the advertising, promoting, offering and sale of Printful's Products and may not be used for other purposes or in conjunction with products from other manufacturers."
In practice: if you also sell products printed by Gelato, Printify or your own shop, you cannot reuse Printful's mockups for those listings. The help center confirms the intended use is "your store listings or social media content" for Printful products.
When your own PSD is the better fit
Teams move to their own templates when:
- The brand needs its own look. Catalog scenes are available to every Printful seller, so listings start to look alike.
- They sell through more than one supplier. A PSD you own is not tied to one manufacturer's terms.
- They render at volume. Hundreds of designs and colorways are easier with a synchronous render call than with tasks you poll and URLs you must copy before they expire.
- They need large files. SudoMock renders up to 10,000 px.
SudoMock renders the PSD you upload to match Photoshop's own output, in under a second, and has served over 2 billion renders at 99.9% uptime. You send the artwork URL and, if needed, a color per smart object, and the response contains the finished image URL:
curl -X POST "https://api.sudomock.com/api/v1/renders" \-H "x-api-key: sm_your_api_key" \-H "Content-Type: application/json" \-d '{"mockup_uuid": "YOUR_TEMPLATE_UUID","smart_objects": [{"uuid": "FRONT_PRINT_SMART_OBJECT_UUID","asset": { "url": "https://yourcdn.com/designs/front.png", "fit": "fit" }},{"uuid": "GARMENT_COLOR_SMART_OBJECT_UUID","color": { "hex": "#1E3A5F", "blending_mode": "multiply" }}],"export_options": { "image_format": "webp", "image_size": 1024, "quality": 90 }}'
const response = await fetch('https://api.sudomock.com/api/v1/renders', {method: 'POST',headers: {'x-api-key': 'sm_your_api_key','Content-Type': 'application/json',},body: JSON.stringify({"mockup_uuid": "YOUR_TEMPLATE_UUID","smart_objects": [{"uuid": "FRONT_PRINT_SMART_OBJECT_UUID","asset": {"url": "https://yourcdn.com/designs/front.png","fit": "fit"}},{"uuid": "GARMENT_COLOR_SMART_OBJECT_UUID","color": {"hex": "#1E3A5F","blending_mode": "multiply"}}],"export_options": {"image_format": "webp","image_size": 1024,"quality": 90}}),});const data = await response.json();console.log(data);
import requestsresponse = requests.post("https://api.sudomock.com/api/v1/renders",headers={"x-api-key": "sm_your_api_key","Content-Type": "application/json",},json={"mockup_uuid": "YOUR_TEMPLATE_UUID","smart_objects": [{"uuid": "FRONT_PRINT_SMART_OBJECT_UUID","asset": {"url": "https://yourcdn.com/designs/front.png","fit": "fit",},},{"uuid": "GARMENT_COLOR_SMART_OBJECT_UUID","color": {"hex": "#1E3A5F","blending_mode": "multiply",},},],"export_options": {"image_format": "webp","image_size": 1024,"quality": 90,},},)print(response.json())
package mainimport ("bytes""fmt""io""net/http")func main() {payload := []byte(`{"mockup_uuid": "YOUR_TEMPLATE_UUID","smart_objects": [{"uuid": "FRONT_PRINT_SMART_OBJECT_UUID","asset": {"url": "https://yourcdn.com/designs/front.png","fit": "fit"}},{"uuid": "GARMENT_COLOR_SMART_OBJECT_UUID","color": {"hex": "#1E3A5F","blending_mode": "multiply"}}],"export_options": {"image_format": "webp","image_size": 1024,"quality": 90}}`)req, err := http.NewRequest("POST", "https://api.sudomock.com/api/v1/renders", bytes.NewBuffer(payload))if err != nil {panic(err)}req.Header.Set("x-api-key", "sm_your_api_key")req.Header.Set("Content-Type", "application/json")resp, err := http.DefaultClient.Do(req)if err != nil {panic(err)}defer resp.Body.Close()body, _ := io.ReadAll(resp.Body)fmt.Println(string(body))}
<?php$payload = <<<'JSON'{"mockup_uuid": "YOUR_TEMPLATE_UUID","smart_objects": [{"uuid": "FRONT_PRINT_SMART_OBJECT_UUID","asset": {"url": "https://yourcdn.com/designs/front.png","fit": "fit"}},{"uuid": "GARMENT_COLOR_SMART_OBJECT_UUID","color": {"hex": "#1E3A5F","blending_mode": "multiply"}}],"export_options": {"image_format": "webp","image_size": 1024,"quality": 90}}JSON;$ch = curl_init('https://api.sudomock.com/api/v1/renders');curl_setopt_array($ch, [CURLOPT_CUSTOMREQUEST => 'POST',CURLOPT_RETURNTRANSFER => true,CURLOPT_HTTPHEADER => ['x-api-key: sm_your_api_key','Content-Type: application/json',],CURLOPT_POSTFIELDS => $payload,]);$response = curl_exec($ch);curl_close($ch);echo $response;
The image URL is in data.print_files[0].export_path. For big batches, set "is_async": true, then poll the job or register a webhook endpoint for render.succeeded.
Cost, side by side
| Printful mockup generator | SudoMock | |
|---|---|---|
| Price | Free with a Printful account | 500 free credits. Plans start at $25/month. Subscriptions from $0.002 per render. Without one, $0.05 per render, the same rate standalone mockup APIs charge on a paid plan. |
| Templates | Printful catalog scenes | Your own PSD |
| Output | Size not published; v1 API links expire after 72h | PNG, JPG or WebP up to 10,000 px |
| Usage | Only to sell Printful products (ToS 4.6) | Your template, your listing images |
Many sellers use both: Printful for printing and shipping, and their own PSD for the images that have to look like their brand.
Next step
Render one of your designs on your own PSD. The quickstart takes a Photoshop file to a rendered mockup in two requests, and SudoMock's library has 300+ Printful-compatible mockup templates if you have no PSD yet.
To run that render without code, use the n8n integration. The print on demand use case shows the same setup across a whole catalog.
Frequently asked questions
Is the Printful mockup generator free?
Yes. Printful's Free plan ($0 per month) includes the free Design Maker and Mockup Generator for every product in its catalog. You pay for the products you sell, not for the mockups.
Does Printful have a mockup generator API?
Yes. In v1 you call POST /mockup-generator/create-task/{id} and fetch the result with GET /mockup-generator/task. In the v2 open beta you call POST /v2/mockup-tasks and poll GET /v2/mockup-tasks or listen for the mockup_task_finished webhook. It needs a private token and only covers Printful catalog products.
What are the limits of the Printful mockup API?
The general API limit is 120 calls per minute, and Printful says resource intensive endpoints such as the mockup generator have a lower limit without publishing the number. Mockup image URLs expire after 72 hours, and results are not real time: the first poll should come no sooner than 10 seconds after creating the task.
Can I use Printful mockups for products from other suppliers?
No. Printful's Terms of Service, section 4.6, say mockups and other digital items belong to Printful and may only be used to advertise and sell Printful's products, not in conjunction with products from other manufacturers.
Can I use my own PSD with the Printful mockup generator?
Not through the API. In the dashboard you can upload your own mockup images (JPG, PNG or SVG up to 30,000 x 30,000 px) if the product closely matches the Printful item. To render your own PSD template automatically, use a PSD render API such as SudoMock.
Sources
- Printful: Free mockup generator (opens in new tab)
- How can I download mockups from Printful? (opens in new tab)
- How do I upload custom mockups for a product? (opens in new tab)
- Printful Help Center: What are mockup images (opens in new tab)
- Printful API documentation (v1) (opens in new tab)
- Printful API documentation (v2 beta) (opens in new tab)
- Printful Terms of Service (opens in new tab)
- SudoMock pricing (opens in new tab)
- SudoMock render API reference (opens in new tab)
- Printful pricing (opens in new tab), Printful
Beck
CTO
Related articles

Gelato Mockup Generator: How It Works, Limits, and API Options
Gelato's mockup generator is built into the dashboard, with premium scenes and downloads on Gelato+. Here is what each tool does, the limits, what the API returns, and when your own PSD is the better fit.
8 min read

Printify Mockup API vs Your Own Brand PSD (2026)
Printify's mockup generator is free but locked to its product catalog. Here is what changes when you render your own brand PSD at Photoshop fidelity instead.
7 min read

How to Make Your Own Mockup from Any Product Photo
One photo of your own product becomes a reusable mockup: the create call, the render call and real renders of four designs on a canvas tote.
7 min read
Explore by use case
See SudoMock in action for your specific product category
Your own PSD, rendered via API
Render your own PSD through the API. Start with 500 one-time credits, no card.