---
title: "Draw a store listing or search result mockup from your details."
method: POST
path: "/v1/mockups"
tags: ["drafts"]
---

# Draw a store listing or search result mockup from your details.

`POST /v1/mockups`

## Request

- Base URL: `https://api.50heads.com`
- URL: `https://api.50heads.com/v1/mockups`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://auth.50heads.com/authorize`, token URL `https://auth.50heads.com/token`; client credentials, token URL `https://auth.50heads.com/token`, scopes: `questions:write`)

A listing or a search result in 50heads styling (never a marketplace's), 1200 × 1600, drawn from a title, a price, a rating, a review count and your image, then stored like an upload. Use `imageUrl` on an option or the stimulus within 15 minutes. See docs/specs/mockups.md.

## Request body

- MockupsRequest
  - `kind` 'listing' | 'search_result', required
  - `title` string, required
  - `price` object, required
    - `amount` number, required
    - `currency` 'GBP' | 'USD' | 'EUR' | 'CAD' | 'JPY' | 'KRW' | 'SEK' | 'DKK' | 'NOK' | 'PLN' | 'BRL' | 'CZK' | 'RON' | 'TRY' | 'CLP' | 'COP' | 'ARS' | 'PEN' | 'UYU', required
  - `rating` number
  - `reviews` integer
  - `imageUrl` string, uri, required
  - `line` string

## Response `201`

OK

- MockupsResponse
  - `kind` 'listing' | 'search_result', required
  - `imageUrl` string, required
  - `width` integer, required
  - `height` integer, required
  - `expiresAt` string, required

## Other responses

- `400`: The request is not valid; `error.details.validation` lists the fixes.
- `401`: No key or token, or it expired or was revoked.
- `403`: The key or token lacks the scope (`insufficient_scope`), or the action is not allowed.
- `429`: Too many requests; wait for Retry-After.

---

[API](https://skmtc.dev/50heads/apis/50heads-api.md) · [All operations](https://skmtc.dev/50heads/apis/50heads-api/llms.txt) · [OpenAPI document](https://skmtc.dev/50heads/apis/50heads-api/revisions/20175e8b00e3?raw)
