---
title: "Create a print-ready design from an idea"
method: POST
path: "/api/design/custom"
tags: ["Design Pipeline"]
---

# Create a print-ready design from an idea

`POST /api/design/custom`

## Request

- Base URL: `https://api.crayonz.ai`
- URL: `https://api.crayonz.ai/api/design/custom`
- Auth: API key in header `X-API-Key`

One transparent, print-resolution design from a plain-language idea, with your brand colours, style and target products. Returns a print-ready file_url you can pass to /api/mockup/render and to the photoshoot endpoints.

## Request body

- object
  - `idea` string, required
  - `style_preferences` string[]: Any of minimal, bold, vintage, futuristic, hand-drawn
  - `color_preferences` string[]: Hex colours to favour
  - `target_products` string[]: tshirt, oversized_tshirt, hoodie, zipper_hoodie, polo, acid_wash_tshirt
  - `suggested_text` string: Exact wording to include, if any
  - `auto_mockups` boolean: Also render mockups on the target products
  - `garment_colors` string[]: Garment colours for auto_mockups
  - `use_references` boolean: Find 2–3 Pinterest reference images for the idea and use them as style anchors, the way the studio does. Ignored when reference_image_base64 is set. Default true.
  - `reference_image_base64` string: Your own reference image (base64). When set, it is the only reference and the design follows it closely.

## Response `200`

Success

- object
  - `status` string: "success" or "error"
  - `design_id` string: Row id in your designs library — GET /api/designs/{id}
  - `file_url` string: Print-resolution, transparent PNG. Pass this to /api/mockup/render, the photoshoot endpoints and /api/quality/score.
  - `print_ready` boolean: False if background removal failed — the raw (uncut) file_url is still returned and cut_status tells you what happens next.
  - `cut_status` string: done | fallback | pending | failed. "fallback": the hosted cutter was unavailable, so file_url is a transparent file from the built-in white-key cutter (printable) and a higher-quality re-cut is queued that will replace file_url. "pending": no cut could be made yet; file_url is the raw render, print_ready is false, and the re-cut is retried for up to ~10 hours. Poll GET /api/designs/{design_id} to see file_url and print_ready update.
  - `enhanced_prompt` string: The brief the image model actually rendered from, after style/colour/product framing was added.
  - `references` object: Present when use_references was true: { used, queries } — how many Pinterest anchors were found and what was searched.

## Other responses

- `401`: Unauthorized — invalid or missing API key
- `402`: Insufficient credits
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/crayonz/apis/crayonz-api.md) · [All operations](https://skmtc.dev/crayonz/apis/crayonz-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crayonz/apis/crayonz-api/revisions/1114c84167b2?raw)
