Module configuration
The recipe targets HTTP v4, which supports centralized API-key keychains and authenticated downloads. Keep response parsing enabled for JSON job and status calls. Set Content type through the body controls, not as a duplicate header. Older HTTP modules may expose different field names; match the HTTP contract rather than importing an invented blueprint.
{
"template_id": "REPLACE_TEMPLATE_ID",
"options": {
"format": "png",
"mode": "full",
"slots": {
"REPLACE_SLOT_ID": {
"asset_id": "REPLACE_ASSET_ID",
"fit": "contain"
}
}
}
}
Official platform documentation for this setup
Collections without a long synchronous request
Add a preflight POST to /api/v1/bulk-jobs/preflight, a filter requiring valid=true and a review of total, warnings and sample output. For areas-based assignments, store plan_id and plan_hash before the submit module. Submit only the saved token, idempotency_key and optional continue_on_error or webhook_url. Poll /bulk-jobs/{id}, then download the ZIP. Persist an accepted token across retries rather than running preflight again with the same key.
Use webhooks deliberately
A Make Custom webhook can trigger a separate completion scenario. Your Mockups Generator submission can supply that public webhook_url, but cannot add custom outbound webhook authentication headers. If your Make hook requires an extra API-key header, place a verifier in front of it or use polling. Verify the HMAC where raw bytes are available, deduplicate event_id, correlate a known job ID and confirm its state before applying updates.
Official platform documentation for this setup
Artworks, folders and output profiles
Use the asset list's offset and has_more values to fetch complete artwork pools. A collection can reference folder IDs through its area pools; a reviewed plan fixes the resolved inputs even if the folder changes later. GET /api/public/output-profiles supplies listing dimensions. A profile fits the scene on a white canvas and does not crop it into a new composition.
Verify completion and move a real file
Treat 202 as acceptance. Persist id, then poll the canonical job endpoint with the same bearer credential. queued, running and cancelling mean wait; done means download; error and cancelled need a recovery branch. A protected result URL cannot be pasted into a destination that has no way to send your API key. Download the bytes through an authenticated action, then upload a file to your destination. A temporary signed link can expire, so refresh it or use the canonical result endpoint. Do not forward the bearer key across a redirect to another origin.
Retries, duplicate events and interrupted runs
Use one key for one intended operation, such as order-1042-artwork-v1. Keep it stable on a lost-response retry. The same inputs and key return the same render job; changed inputs return 409 and need an explicit new version. Do not repeat a synchronous paid render just because the previous step timed out. Retry reads and idempotent submissions with bounded backoff for temporary network or 5xx errors. Fix 401 credentials, 404 ownership, 402 allowance and 422 validation before retrying. When a polling deadline is reached, save the job ID and resume checking it later; the server continues independently.
Troubleshooting checklist
Check the actual HTTP status and detail field before changing the workflow. Test a single ready template and saved asset first, then add multi-area placements and collection output. Avoid enabling schedules until the downloaded file and its destination record have both been inspected.
| Field or condition | Mapping or action |
|---|
| 401 | Use the full Bearer value and a non-revoked API key; a website key is for the iframe only. |
|---|
| 404 | Confirm the template, asset or job belongs to this account or is an accessible public template. |
|---|
| 409 | Read detail: result not ready, changed inputs, stale revision and expired review need different actions. |
|---|
| 402 / 429 | Check account allowance / reduce concurrency and back off for rate limits. |
|---|
| 422 | Inspect the slot ID, ready status, nested options and direct-image URL. JSON options must be an object. |
|---|
| Broken destination image | Download with authentication and upload bytes; protected URLs are not public attachments. |
|---|