---
title: "Create a product (status='review' pending MA approval)"
method: POST
path: "/api/agent/products"
---

# Create a product (status='review' pending MA approval)

`POST /api/agent/products`

## Request

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

## Request body

- object
  - `audio_url` string, uri: https listen link. song はもちろん、物理Tシャツ等にも付けられる(mu.koe.live/oto.html?s=KEY を渡すとPDPに試聴プレイヤー)
  - `capacity` integer: event_ticket only: ticket capacity
  - `description` string, required
  - `design_url` string, uri, required: absolute https URL
  - `kind` 'tee' | 'rashguard_ls' | 'rashguard_black' | 'hoodie' | 'crewneck' | 'phone_case' | 'tote' | 'tank' | 'cap' | 'nfc_coin' | 'device' | 'event_ticket' | 'song' | 'poster' | 'zine' | 'video' | 'karaoke_ticket', required
  - `label` string, required
  - `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)
  - `price_jpy` integer: optional; clamped up to the per-kind floor
  - `store` string, required

## Response `200`

{sku, status:'review', pdp_url}

## Other responses

- `400`: unknown kind / missing design_url
- `403`: not your store
- `429`: rate limit

---

[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)
