---
title: "Pre-purchase mockup preview — render kind+design_url(+position) WITHOUT creating a product; returns a durable preview_url (R2). May return status='processing' + preview_id when Printful's queue is slow"
method: POST
path: "/api/agent/preview"
---

# Pre-purchase mockup preview — render kind+design_url(+position) WITHOUT creating a product; returns a durable preview_url (R2). May return status='processing' + preview_id when Printful's queue is slow

`POST /api/agent/preview`

## Request

- Base URL: `https://wearmu.com`
- URL: `https://wearmu.com/api/agent/preview`
- Auth: HTTP bearer

## Request body

- object
  - `design_url` string, uri, required
  - `kind` string, required: any allowed product kind (see /api/agent/me limits)
  - `position` PrintPosition: Print placement for front-print DTG apparel (tee/tee_white/hoodie/crewneck/tank/long_sleeve_tee). The mockup AND the real print order use the same resolved box (WYSIWYG).
    - `w_pct` number, required: print width as % of the printable area
    - `x_pct` number, required: horizontal position of the print box (0=left, 50=centered, 100=right)
    - `y_pct` number, required: vertical position of the print box (0=top, 50=centered, 100=bottom)

## Response `200`

{status:'done', preview_url, source:'printful'|'card'} or {status:'processing', preview_id}

## Other responses

- `400`: unknown kind / bad design_url / position unsupported for kind
- `429`: rate limit (30 previews/hour)

---

[API](https://skmtc.dev/wearmu/apis/mu-agent-api.md) · [All operations](https://skmtc.dev/wearmu/apis/mu-agent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/wearmu/apis/mu-agent-api/revisions/d2bc00756d6e?raw)
