Crayonz Virtual Try-On API
Async try-on rendering, variations, sizing, outfit coordination
Async try-on rendering, variations, sizing, outfit coordination
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/crayonz-ai:crayonz-ai-virtual-try-on-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Crayonz Ai Virtual Try-On API
version: 1.0.0
contact:
name: Crayonz API Support
url: https://crayonz.ai/api-console
description: 'Operations tagged Virtual Try-On across 2 of this provider''s published API definitions: crayonz-ai-openapi.json, crayonz-ai-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.crayonz.ai
description: Production
security:
- ApiKeyAuth: []
tags:
- name: Virtual Try-On
description: Async try-on rendering, variations, sizing, outfit coordination
paths:
/v1/try-on:
post:
summary: Create a virtual try-on task
description: Render a user wearing a product. Async — returns a task_id; poll /v1/tasks/:id for the result.
tags:
- Virtual Try-On
operationId: vto_try_on
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
userPhoto:
type: string
description: URL or base64 of the user photo
example: https://example.com/shopper.jpg
productImage:
type: string
description: URL or base64 of the product image
example: https://example.com/tee.png
customPrompt:
type: string
description: Optional styling instructions
required:
- userPhoto
- productImage
example:
userPhoto: https://example.com/shopper.jpg
productImage: https://example.com/tee.png
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
taskId:
type: string
description: Poll GET /v1/tasks/{taskId} with this id
status:
type: string
description: queued, processing, completed or failed
message:
type: string
example:
taskId: live_a1b2c3…
status: queued
message: Try-on processing
'401':
description: Unauthorized — invalid or missing API key
'402':
description: Insufficient credits
'429':
description: Rate limit exceeded
servers:
- url: https://api.crayonz.ai
description: Production
/v1/try-on/variations:
post:
summary: Multi-pose try-on variations
description: Generate multiple pose variations from a single user + product pair.
tags:
- Virtual Try-On
operationId: vto_variations
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
userPhoto:
type: string
example: https://example.com/shopper.jpg
productImage:
type: string
example: https://example.com/tee.png
posePresets:
type: array
description: 1–4 custom poses, each { id, pose } where pose is a short text description
items:
type: object
required:
- userPhoto
- productImage
example:
userPhoto: https://example.com/shopper.jpg
productImage: https://example.com/tee.png
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
taskId:
type: string
description: Poll GET /v1/tasks/{taskId} — resultImages carries one entry per pose
status:
type: string
description: queued, processing, completed or failed
message:
type: string
example:
taskId: live_a1b2c3…
status: queued
message: Try-on processing
'401':
description: Unauthorized — invalid or missing API key
'402':
description: Insufficient credits
'429':
description: Rate limit exceeded
servers:
- url: https://api.crayonz.ai
description: Production
/v1/size-recommendation:
post:
summary: AI size recommendation
description: Recommend a product size given the product image and a size chart.
tags:
- Virtual Try-On
operationId: vto_size_recommendation
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
image:
type: string
description: Product image URL, or a photo of the shopper when imageType is "person"
example: https://example.com/tee.png
sizeChart:
type: string
description: The size chart as plain text (max 10,000 chars)
example: 'S: chest 36in, M: chest 40in, L: chest 44in, XL: chest 48in'
imageType:
type: string
description: '"person" recommends for the shopper in the photo; default "product" recommends for an average adult'
enum:
- product
- person
availableSizes:
type: array
description: Allowed size labels; the answer is validated against them
example:
- S
- M
- L
- XL
items:
type: string
required:
- image
- sizeChart
example:
image: https://example.com/tee.png
sizeChart: 'S: chest 36in, M: chest 40in, L: chest 44in, XL: chest 48in'
availableSizes:
- S
- M
- L
- XL
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
recommendedSize:
type: string
description: Exact label from the size chart (or from availableSizes when given)
reasoning:
type: string
confidence:
type: number
description: From 0 to 1; omitted when the model did not report one
example:
recommendedSize: M
reasoning: Chest measurement falls in the M range on the supplied chart
confidence: 0.82
'401':
description: Unauthorized — invalid or missing API key
'402':
description: Insufficient credits
'429':
description: Rate limit exceeded
servers:
- url: https://api.crayonz.ai
description: Production
/v1/complete-outfit:
post:
summary: Complete the outfit
description: Suggest complementary pieces for a base product to form a styled outfit.
tags:
- Virtual Try-On
operationId: vto_complete_outfit
security:
- ApiKeyAuth: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
productImages:
type: array
description: 1–10 product image URLs to pair into outfits
example:
- https://example.com/tee.png
- https://example.com/jeans.png
- https://example.com/jacket.png
items:
type: string
userImage:
type: string
description: Optional shopper photo or try-on result, so pairings suit their look
required:
- productImages
example:
productImages:
- https://example.com/tee.png
- https://example.com/jeans.png
- https://example.com/jacket.png
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
outfits:
type: array
description: 'One entry per suggested pairing: itemIndices (into productImages), description, category'
items:
type: object
summary:
type: string
example:
outfits:
- itemIndices:
- 0
- 2
description: Denim jacket over the white tee, cuffed at the sleeve
category: casual
summary: Two strong pairings for a relaxed daytime look.
'401':
description: Unauthorized — invalid or missing API key
'402':
description: Insufficient credits
'429':
description: Rate limit exceeded
servers:
- url: https://api.crayonz.ai
description: Production
/v1/tasks/{taskId}:
get:
summary: Poll a try-on task
description: Status and result images of a task created by POST /v1/try-on or /v1/try-on/variations. Poll every few seconds until status is completed or failed. Free.
tags:
- Virtual Try-On
operationId: vto_task_status
security:
- ApiKeyAuth: []
parameters:
- name: taskId
in: path
required: true
schema:
type: string
description: The taskId from the create response
description: The taskId from the create response
responses:
'200':
description: Success
content:
application/json:
schema:
type: object
properties:
taskId:
type: string
status:
type: string
description: queued | processing | completed | failed
resultImage:
type: string
description: The main result image URL, when completed
resultImages:
type: array
description: 'Every pose rendered: { id, pose, image } (variations return several)'
items:
type: object
error:
type: string
description: Why the task failed, when status is failed (a failed task is not charged)
createdAt:
type: string
completedAt:
type: string
example:
taskId: live_a1b2c3…
status: completed
resultImage: https://…/vto-images/results/….jpg
resultImages:
- id: front
pose: front
image: https://…/vto-images/results/….jpg
createdAt: '2026-09-28T15:42:40Z'
completedAt: '2026-09-28T15:43:19Z'
'401':
description: Unauthorized — invalid or missing API key
'402':
description: Insufficient credits
'429':
description: Rate limit exceeded
servers:
- url: https://api.crayonz.ai
description: Production
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: API key prefixed cz_live_ (production) or cz_test_ (sandbox).
x-refined-from:
- crayonz-ai-openapi.json
- crayonz-ai-openapi.yml