---
title: "Create a design id (variant + validated artwork) for UCP checkout line items"
method: POST
path: "/v1/designs"
---

# Create a design id (variant + validated artwork) for UCP checkout line items

`POST /v1/designs`

## Request

- Base URL: `https://pod.agentmade.dev`
- URL: `https://pod.agentmade.dev/v1/designs`
- Auth: none declared

UCP has no customization field, so the design travels in the item id. Use the design_id as line_items[].item.id at POST /ucp/v1/checkout-sessions. The UCP business profile is at /.well-known/ucp.

## Request body

- CreateDesign
  - `product_id` string, required: Product id from search_products, e.g. "tee-heavyweight".
  - `color` string, required: Colour id or name, e.g. "black".
  - `size` string, required: Size, e.g. "XL". For one-size products use "ONE SIZE" ("ONE" also works).
  - `artwork` object[], required: One entry per print placement. Each placement may appear once per item.
    - `placement` string: Print location on the product, e.g. "front" or "back". See get_product for the list.
    - `preset` string: Named position inside the placement, e.g. "center_chest", "left_chest", "full_front". Defaults to the placement default.
    - `width_mm` number: Exact printed width of the visible artwork in millimetres. Height follows the aspect ratio.
    - `height_mm` number: Maximum printed height in millimetres.
    - `top_mm` number: Distance from the top of the print area to the top of the artwork.
    - `left_mm` number: Distance from the left edge of the print area. Default: horizontally centred.
    - `artwork_id` string, required: artwork_id returned by validate_artwork.

## Response `201`

Design id

- Design
  - `design_id` string, required: Use as line_items[].item.id in a UCP checkout.
  - `title` string, required
  - `product_id` string, required
  - `variant_id` string, required
  - `placements` object[], required
    - `artwork_id` string, required
    - `placement` string, required
    - `status` 'PASS' | 'WARN' | 'FAIL', required
    - `summary` string, required
  - `next_step` string, required: What the agent should do next, in plain language.

## Other responses

- `4XX`: Error with a machine-readable code and a hint for the next step
- `5XX`: Error with a machine-readable code and a hint for the next step

---

[API](https://skmtc.dev/agentmade/apis/agentmade-print-on-demand-api.md) · [All operations](https://skmtc.dev/agentmade/apis/agentmade-print-on-demand-api/llms.txt) · [OpenAPI document](https://skmtc.dev/agentmade/apis/agentmade-print-on-demand-api/revisions/542fad1de43b?raw)
