Run a virtual try-on. Reference an existing product or describe one inline; pre-upload the customer image or ship it in the same request.
Creates a virtual try-on generation. Runs asynchronously — poll Generation Status for the result. Each generation consumes 1 credit. The body has two parts: aDocumentation Index
Fetch the complete documentation index at: https://docs.genlook.app/docs/llms.txt
Use this file to discover all available pages before exploring further.
product object that describes what to try on, and a customer image (either pre-uploaded or shipped inline).
product works three ways:
{ "externalId": "..." } only. Cheapest call (~50 bytes on the wire).{ "externalId": "...", "title": ..., "description": ..., "images": [...] }. Creates the product if it’s new; updates it if it’s not. Inline-created products live for 15 days from their last use; the server refreshes the timer on every generation, so an actively-used product never expires.externalId. The server returns a generated ID in the response under productExternalId that you can pass back if you want to reference the same product later. One-shot products live for 7 days from their last use.id, url, or fileKey must be set.DELETE /customers/:customerId.1, 3, 7. Defaults to your account’s configured customer-retention window. Ignored when customer.id references an already-uploaded image (the existing storage path is reused).false to skip for this generation. No-op if your
account has no logo configured. See Watermark.POST /images/upload — gets you an imageId you can reuse./try-on with { product: { externalId }, customer: { id: imageId } } for repeat generations against known products, or with the full inline product when introducing a new SKU.customer.url and customer.fileKey paths are convenient one-shot conveniences but they re-download/re-upload on every call. Stick to /images/upload once you’re in steady state.
GET /generations/:id every 2s until status is COMPLETED or
FAILED.PENDING.| Code | HTTP | Meaning |
|---|---|---|
PRODUCT_NOT_FOUND | 404 | The referenced externalId doesn’t exist (or has expired). Retry with a full inline payload. |
PRODUCT_IMAGES_REQUIRED | 400 | One-shot call (no externalId) without any image. |
CUSTOMER_IMAGE_REQUIRED | 400 | customer is missing. |
CUSTOMER_IMAGE_FETCH_FAILED | 400 | customer: { url } could not be downloaded — DNS fail, host unreachable, or non-2xx status. |
MULTIPART_FILE_NOT_FOUND | 400 | A fileKey from data doesn’t appear in the multipart payload. |
VALIDATION_FAILED | 400 | Request body failed validation — see details[] for the offending fields. |
INSUFFICIENT_CREDITS | 402 | Account is out of credits. |
RESERVED_EXTERNAL_ID | 409 | product.externalId starts with _anon_, which is reserved for server-generated IDs. |
PRODUCT_NOT_FOUND, the product has fallen out of cache — retry with the full inline payload to recreate it. No sync loop required.
useWatermark: false to skip it on a single call. See Watermark for configuration.