{"openapi":"3.0.3","info":{"title":"PixelPanda API","description":"AI-powered image processing, product photography, avatar generation, and video creation API. Full docs at https://pixelpanda.ai/developers","version":"2.0.0","contact":{"email":"support@pixelpanda.ai","url":"https://pixelpanda.ai"}},"servers":[{"url":"https://pixelpanda.ai","description":"Production"}],"paths":{"/api/auth/login":{"post":{"summary":"Login (returns JWT)","operationId":"login","tags":["Authentication"],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","required":["username","password"],"properties":{"username":{"type":"string","description":"Email address"},"password":{"type":"string"}}}}}},"responses":{"200":{"description":"JWT token","content":{"application/json":{"schema":{"type":"object","properties":{"access_token":{"type":"string"},"token_type":{"type":"string"}}}}}}}}},"/api/auth/me":{"get":{"summary":"Get current user info","operationId":"getCurrentUser","tags":["Authentication"],"security":[{"BearerAuth":[]}],"responses":{"200":{"description":"User info"}}}},"/api/auth/regenerate-token":{"post":{"summary":"Regenerate API key","operationId":"regenerateToken","tags":["Authentication"],"security":[{"BearerAuth":[]}],"responses":{"200":{"description":"New API key","content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string"},"message":{"type":"string"}}}}}}}}},"/api/auth/register":{"post":{"summary":"Create account","operationId":"register","tags":["Authentication"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email","password"],"properties":{"email":{"type":"string","format":"email"},"password":{"type":"string","minLength":6}}}}}},"responses":{"200":{"description":"Account created"}}}},"/api/avatars/generate-from-reference":{"post":{"summary":"Generate avatar from reference image","operationId":"generateFromReference","tags":["Avatar Studio"],"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["reference_image","count"],"properties":{"reference_image":{"type":"string","description":"Base64-encoded reference image"},"count":{"type":"integer"},"additional_details":{"type":"string"}}}}}},"responses":{"200":{"description":"Avatar generated from reference"}}}},"/api/avatars/generate-guided":{"post":{"summary":"Generate avatar with guided builder (Flux 1.1 Pro Ultra)","operationId":"generateGuidedAvatar","tags":["Avatar Studio"],"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string","description":"Full prompt describing the avatar"},"count":{"type":"integer","default":3}}}}}},"responses":{"200":{"description":"Avatar images generated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"images":{"type":"array","items":{"type":"string"}},"credits_used":{"type":"integer"}}}}}}}}},"/api/avatars/saved":{"get":{"summary":"List saved custom avatars","operationId":"listSavedAvatars","tags":["Avatar Studio"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"include_variations","in":"query","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Saved avatars list"}}},"post":{"summary":"Save avatar (auto-generates 6 samples, 6 credits)","operationId":"saveAvatar","tags":["Avatar Studio"],"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["name","image_url"],"properties":{"name":{"type":"string"},"image_url":{"type":"string"},"base_model_id":{"type":"string"},"prompt":{"type":"string"},"style":{"type":"string"},"parent_id":{"type":"integer","description":"Set to create a variation (0 credits)"}}}}}},"responses":{"200":{"description":"Avatar saved"}}}},"/api/catalog":{"get":{"summary":"List and search products","operationId":"listProducts","tags":["Product Catalog"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"page","in":"query","schema":{"type":"integer","default":1}},{"name":"page_size","in":"query","schema":{"type":"integer","default":25,"maximum":100}},{"name":"search","in":"query","schema":{"type":"string"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"brand","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"collection_id","in":"query","schema":{"type":"integer"}}],"responses":{"200":{"description":"Product list with pagination"}}}},"/api/catalog/{product_id}/create-silo":{"post":{"summary":"Generate silo images for product (1 credit/image)","operationId":"createSiloImages","tags":["Product Catalog"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"product_id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["num_images"],"properties":{"num_images":{"type":"integer"},"actor_id":{"type":"integer"},"actor_type":{"type":"string"}}}}}},"responses":{"200":{"description":"Silo images generated"}}}},"/api/credits/balance":{"get":{"summary":"Get credit balance","operationId":"getCreditBalance","tags":["Credits"],"security":[{"BearerAuth":[]}],"responses":{"200":{"description":"Credit balance","content":{"application/json":{"schema":{"type":"object","properties":{"credits":{"type":"integer"},"total_purchased":{"type":"integer"}}}}}}}}},"/api/credits/pricing":{"get":{"summary":"Get pricing tiers (no auth)","operationId":"getPricing","tags":["Credits"],"responses":{"200":{"description":"Pricing info"}}}},"/api/tryon/classify-product":{"post":{"summary":"Classify product image category (FREE)","operationId":"classifyProduct","tags":["Product Marketing"],"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["product_image"],"properties":{"product_image":{"type":"string","format":"binary"},"source_filename":{"type":"string"}}}}}},"responses":{"200":{"description":"Product classified","content":{"application/json":{"schema":{"type":"object","properties":{"category":{"type":"string"},"confidence":{"type":"number"},"description":{"type":"string"}}}}}}}}},"/api/tryon/create-video":{"post":{"summary":"Create UGC video with lip-synced speech (async)","operationId":"createVideo","tags":["Video Generation"],"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["image_url"],"properties":{"image_url":{"type":"string"},"script":{"type":"string"},"prompt":{"type":"string"},"tone":{"type":"string","default":"problem-solution"},"duration":{"type":"integer","default":5},"enable_subtitles":{"type":"string","default":"false"}}}}}},"responses":{"200":{"description":"Video job created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoJobResponse"}}}}}}},"/api/tryon/generate":{"post":{"summary":"Generate product image on AI model","operationId":"generateProductImage","tags":["Product Marketing"],"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["product_image","model_id","model_type"],"properties":{"product_image":{"type":"string","format":"binary"},"model_id":{"type":"string","description":"Model ID (e.g. 'sophia_white' or saved avatar ID)"},"model_type":{"type":"string","enum":["public","user","saved"]},"prompt":{"type":"string","default":""},"num_outputs":{"type":"integer","default":1,"minimum":1,"maximum":4},"model_image_url":{"type":"string"},"product_category":{"type":"string"},"product_description":{"type":"string"},"pose_key":{"type":"string"},"catalog_product_id":{"type":"integer"}}}}}},"responses":{"200":{"description":"Product image generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TryOnResponse"}}}}}}},"/api/tryon/generate-ai-ad":{"post":{"summary":"Generate marketing ad (FREE, 0 credits)","operationId":"generateAiAd","tags":["Product Marketing"],"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["image_url","platform"],"properties":{"image_url":{"type":"string"},"platform":{"type":"string","enum":["instagram-square","instagram-story","facebook-feed","facebook-square","twitter","linkedin","pinterest","tiktok"]},"headline":{"type":"string"},"tagline":{"type":"string"},"style":{"type":"string","default":"minimal"}}}}}},"responses":{"200":{"description":"Ad generated","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean"},"ad_url":{"type":"string"}}}}}}}}},"/api/tryon/generate-script":{"post":{"summary":"Generate UGC video script from product image (FREE)","operationId":"generateScript","tags":["Video Generation"],"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["image_url"],"properties":{"image_url":{"type":"string"},"duration_seconds":{"type":"integer","default":15},"tone":{"type":"string","enum":["enthusiastic","casual","professional"],"default":"enthusiastic"},"product_name":{"type":"string"},"product_hint":{"type":"string"}}}}}},"responses":{"200":{"description":"Script generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScriptResponse"}}}}}}},"/api/tryon/start-asset-collection":{"post":{"summary":"Start async asset collection (6 marketing images)","operationId":"startAssetCollection","tags":["Asset Collections"],"security":[{"BearerAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["product_image","category"],"properties":{"product_image":{"type":"string","format":"binary"},"category":{"type":"string","enum":["clothing","jewelry","furniture","electronics","food","cosmetics","accessories","shoes","bags","watches","toys","other"]},"product_description":{"type":"string"},"catalog_product_id":{"type":"integer"}}}}}},"responses":{"200":{"description":"Collection started","content":{"application/json":{"schema":{"type":"object","properties":{"collection_id":{"type":"integer"},"status":{"type":"string"},"credits_reserved":{"type":"integer"}}}}}}}}},"/api/tryon/video-status/{job_id}":{"get":{"summary":"Get video generation status","operationId":"getVideoStatus","tags":["Video Generation"],"security":[{"BearerAuth":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Video status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoStatusResponse"}}}}}}},"/api/v1/credits":{"get":{"summary":"Get credit balance","operationId":"getCredits","tags":["Image Processing (v1)"],"security":[{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Credit balance","content":{"application/json":{"schema":{"type":"object","properties":{"credits":{"type":"integer"},"total_purchased":{"type":"integer"}}}}}}}}},"/api/v1/history":{"get":{"summary":"Get processing history","operationId":"getHistory","tags":["Image Processing (v1)"],"security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","default":50,"maximum":100}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}}],"responses":{"200":{"description":"Processing history"}}}},"/api/v1/image-to-image":{"post":{"summary":"Transform image with text prompt","operationId":"imageToImage","tags":["Image Processing (v1)"],"security":[{"ApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file","prompt"],"properties":{"file":{"type":"string","format":"binary"},"prompt":{"type":"string","description":"Transformation description"},"strength":{"type":"number","minimum":0,"maximum":1,"default":0.75,"description":"Transform strength (0=subtle, 1=strong)"}}}}}},"responses":{"200":{"description":"Image transformed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingResult"}}}}}}},"/api/v1/remove-background":{"post":{"summary":"Remove image background","operationId":"removeBackground","tags":["Image Processing (v1)"],"security":[{"ApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary","description":"Image file (JPEG/PNG, max 50MB)"}}}}}},"responses":{"200":{"description":"Background removed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingResult"}}}},"401":{"description":"Unauthorized"},"402":{"description":"Insufficient credits"}}}},"/api/v1/remove-text":{"post":{"summary":"Remove text and watermarks from image","operationId":"removeText","tags":["Image Processing (v1)"],"security":[{"ApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"Text removed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingResult"}}}}}}},"/api/v1/upscale":{"post":{"summary":"Upscale image resolution (2x-8x)","operationId":"upscaleImage","tags":["Image Processing (v1)"],"security":[{"ApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary","description":"Image file (JPEG/PNG, max 50MB)"},"scale":{"type":"integer","enum":[2,4,8],"default":2,"description":"Upscale factor"},"quality":{"type":"string","enum":["fast","balanced","high"],"default":"balanced","description":"Quality mode"}}}}}},"responses":{"200":{"description":"Image upscaled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingResult"}}}}}}},"/api/v1/user":{"get":{"summary":"Get user info and credit balance","operationId":"getUser","tags":["Image Processing (v1)"],"security":[{"ApiKeyAuth":[]}],"responses":{"200":{"description":"User info","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"email":{"type":"string"},"credits":{"type":"integer"},"is_active":{"type":"boolean"}}}}}}}}},"/api/v2/account":{"get":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Account","description":"Validate an API key and return the account it belongs to.\nUsed by plugins (WordPress, Zapier) to confirm the key and show the credit balance.","operationId":"api_v2_account_api_v2_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/ad-pack":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Create Ad Pack","description":"Paste a product URL → scrape → images + UGC video + static ads + captions. Async; poll GET /ad-pack/{job_id}.","operationId":"create_ad_pack_api_v2_ad_pack_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__AdPackRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdPackResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/ad-pack/{job_id}":{"get":{"tags":["API v2 - Batch Processing"],"summary":"Get Ad Pack","description":"Poll an ad pack job. Returns product_images[], ugc_video_url, static_ads[], captions[] as they complete.","operationId":"get_ad_pack_api_v2_ad_pack__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/analyze":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Analyze","description":"Analyze an image using AI. Returns objects, colors, mood, quality assessment, and SEO alt text.\nCost: 1 credit.","operationId":"api_v2_analyze_api_v2_analyze_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__ProcessingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/avatars":{"get":{"tags":["API v2 - Batch Processing"],"summary":"List Avatars","description":"List your saved avatars with UUIDs for use in generation calls.","operationId":"list_avatars_api_v2_avatars_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/app__routers__api_v2__AvatarResponse"},"type":"array","title":"Response List Avatars Api V2 Avatars Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/avatars/{avatar_uuid}":{"get":{"tags":["API v2 - Batch Processing"],"summary":"Get Avatar","description":"Get a single avatar by UUID.","operationId":"get_avatar_api_v2_avatars__avatar_uuid__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"avatar_uuid","in":"path","required":true,"schema":{"type":"string","title":"Avatar Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__AvatarResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/batches":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Create Batch","description":"Submit a batch of product images for processing.\n\n- Maximum 100 images per batch (varies by subscription tier)\n- Each image generates multiple marketing photos (default 6)\n- Credits reserved upfront, unused credits refunded on completion\n- Returns a batch_id for polling status","operationId":"create_batch_api_v2_batches_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCreateRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["API v2 - Batch Processing"],"summary":"List Batches","description":"List all batches for the current user.","operationId":"list_batches_api_v2_batches_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Filter"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Batches Api V2 Batches Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/batches/{batch_id}":{"get":{"tags":["API v2 - Batch Processing"],"summary":"Get Batch Status","description":"Get detailed status of a batch job including all images.","operationId":"get_batch_status_api_v2_batches__batch_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"include_images","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Include Images"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/batches/{batch_id}/cancel":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Cancel Batch","description":"Cancel a pending or processing batch. Unused credits will be refunded.","operationId":"cancel_batch_api_v2_batches__batch_id__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/colorize":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Colorize","description":"Colorize a black & white image using AI.\nCost: 1 credit.","operationId":"api_v2_colorize_api_v2_colorize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__ProcessingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/convert":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Convert","description":"Convert image format. Supports PNG, JPG, WebP.\nCost: 1 credit.","operationId":"api_v2_convert_api_v2_convert_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__ProcessingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/edit":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Edit","description":"Edit an image with a text prompt — AI image-to-image (2 credits).\n\nUses FLUX.1 Kontext Pro for prompt-driven editing: change colors, swap\nscenes, restyle, add or remove elements while keeping the subject intact.\n\nProvide either `image_url` (public URL) or `image_base64`.","operationId":"api_v2_edit_api_v2_edit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EditRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__ProcessingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/enhance":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Enhance","description":"Enhance and sharpen an image using multiple AI methods.\n\nReturns the best result from 4 parallel enhancement methods:\nAI Restore, Face Restore, Full Restore, and Creative Enhance.\nCost: 1 credit.\n\nProvide either `image_url` (public URL) or `image_base64`.","operationId":"api_v2_enhance_api_v2_enhance_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__EnhanceRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__ProcessingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/generate/avatar":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Generate Avatar","description":"Generate AI avatars — reusable characters for product photos, try-on, and video.\n\n1 credit per avatar. Async: returns a job id; poll\n`/api/v2/jobs/avatar/{job_id}` for the generated images. Save one to your\navatar library and reference it by UUID in `/generate/product-photo` and\n`/generate/tryon`.\n\n`generation_type=\"reference\"` matches the look of `reference_image_url`;\n`\"guided\"` builds from `prompt` + optional `characteristics`.","operationId":"api_v2_generate_avatar_api_v2_generate_avatar_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__AvatarGenerateRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__AvatarGenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/generate/product-photo":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Generate Product Photo","description":"Generate product photography — avatar holding/using product.\n\nUses saved avatar and product UUIDs. Returns a job ID for polling.\nCost: 1 credit per image.","operationId":"generate_product_photo_api_v2_generate_product_photo_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/generate/scenes":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Generate Scenes","description":"Generate product scene photography (no avatar needed).\n\nCreates contextual scene images based on product category.\nCost: 1 credit per scene image.","operationId":"generate_scenes_api_v2_generate_scenes_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__ScenesRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/generate/scenes-from-url":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Generate Scenes From Url","description":"Image URL in → product saved → scene job started. Poll GET /jobs/{job_id} for result URLs.","operationId":"generate_scenes_from_url_api_v2_generate_scenes_from_url_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenesFromUrlRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenesFromUrlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/generate/tryon":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Generate Tryon","description":"Generate virtual try-on — avatar wearing the clothing product.\n\nUses saved avatar and product UUIDs. Returns a job ID for polling.\nBest for clothing, swimwear, activewear, outerwear.\nCost: 1 credit per image.","operationId":"generate_tryon_api_v2_generate_tryon_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/generate/video":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Generate Video","description":"Generate a UGC-style video from a still image (50 credits).\n\nAnimates the source image with xAI Grok Imagine, which produces **native\naudio and lip-sync** from `script` — no separate TTS step. Async: returns\na job id immediately; poll `/api/v2/jobs/video/{job_id}` for the result.\nTypical completion is a few minutes.\n\nNote: video can only animate what is already in the source image — it\ncannot add a product that isn't pictured.","operationId":"api_v2_generate_video_api_v2_generate_video_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoRequest"}}},"required":true},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/image-to-image":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Image To Image","description":"Transform an image using AI with a text prompt.\nCost: 2 credits.","operationId":"api_v2_image_to_image_api_v2_image_to_image_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageToImageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__ProcessingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/image-to-prompt":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Image To Prompt","description":"Reverse-engineer any image into ready-to-use AI-art prompts.\n\nReturns four prompt variants tuned for different generators:\n`general`, `flux`, `midjourney`, and `stable_diffusion`\n(with positive + negative prompts). Cost: 1 credit.\n\nProvide either `image_url` (public URL) or `image_base64`.\nSame engine as the free tool at /free-tools/image-to-prompt,\nwithout the monthly cap — built for automation.","operationId":"api_v2_image_to_prompt_api_v2_image_to_prompt_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageToPromptResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/jobs":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Create Job","description":"Submit a single product image for processing.\n\nDesigned for high-volume individual requests. Each request generates\nmultiple marketing photos for one product.\n\n- Returns immediately with a job_id\n- Poll /jobs/{job_id} for status or provide webhook_url for notification\n- Credits reserved upfront, unused credits refunded on failure","operationId":"create_job_api_v2_jobs_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobCreateRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JobCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["API v2 - Batch Processing"],"summary":"List Jobs","description":"List jobs for the current user.","operationId":"list_jobs_api_v2_jobs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"status_filter","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Filter"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response List Jobs Api V2 Jobs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/jobs/avatar/{job_id}":{"get":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Avatar Job Status","description":"Poll an avatar generation job started via `POST /api/v2/generate/avatar`.","operationId":"api_v2_avatar_job_status_api_v2_jobs_avatar__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvatarJobStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/jobs/video/{job_id}":{"get":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Video Status","description":"Poll a video generation job started via `POST /api/v2/generate/video`.","operationId":"api_v2_video_status_api_v2_jobs_video__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"integer","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__VideoStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/jobs/{job_id}":{"get":{"tags":["API v2 - Batch Processing"],"summary":"Get Job Status","description":"Get detailed status of a job including results.","operationId":"get_job_status_api_v2_jobs__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__JobStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/make-transparent":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Make Transparent","description":"Remove background to make image transparent. Same as remove-background but returns PNG with alpha.\nCost: 1 credit.","operationId":"api_v2_make_transparent_api_v2_make_transparent_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__ProcessingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/products":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Upload Product","description":"Upload a product image and save it to your product library.\n\nReturns a UUID you can use in generation calls instead of re-uploading.\nThe product is auto-analyzed for category and description if not provided.","operationId":"upload_product_api_v2_products_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductUploadRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__ProductResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["API v2 - Batch Processing"],"summary":"List Products","description":"List your saved products with UUIDs for use in generation calls.","operationId":"list_products_api_v2_products_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/app__routers__api_v2__ProductResponse"},"title":"Response List Products Api V2 Products Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/products/{product_uuid}":{"get":{"tags":["API v2 - Batch Processing"],"summary":"Get Product","description":"Get a single product by UUID.","operationId":"get_product_api_v2_products__product_uuid__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_uuid","in":"path","required":true,"schema":{"type":"string","title":"Product Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__ProductResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["API v2 - Batch Processing"],"summary":"Delete Product","description":"Soft-delete a product from your library.","operationId":"delete_product_api_v2_products__product_uuid__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"product_uuid","in":"path","required":true,"schema":{"type":"string","title":"Product Uuid"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/remove-background":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Remove Background","description":"Remove background from an image using AI.\nCost: 1 credit. Returns PNG with transparent background.","operationId":"api_v2_remove_background_api_v2_remove_background_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveBackgroundRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__ProcessingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/remove-text":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Remove Text","description":"Remove text, watermarks, and logos from an image using AI (EasyOCR + LaMa inpainting).\nCost: 1 credit.","operationId":"api_v2_remove_text_api_v2_remove_text_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TextRemovalRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__ProcessingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/replace-background":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Replace Background","description":"Remove background and replace with an AI-generated scene.\nCost: 2 credits.","operationId":"api_v2_replace_background_api_v2_replace_background_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplaceBackgroundRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__ProcessingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/shopify/activities":{"post":{"tags":["Shopify App API"],"summary":"Create Activity","description":"Log a new activity from the Shopify app.\n\nCall this when an enrichment operation completes (or fails).","operationId":"create_activity_api_v2_shopify_activities_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Shopify App API"],"summary":"List Activities","description":"List activities for the authenticated user.\n\nSupports filtering by shop_domain, activity_type, and status.\nResults are ordered by created_at descending (newest first).","operationId":"list_activities_api_v2_shopify_activities_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"shop_domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by shop domain","title":"Shop Domain"},"description":"Filter by shop domain"},{"name":"activity_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by type: enrichment, description, images, tags","title":"Activity Type"},"description":"Filter by type: enrichment, description, images, tags"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by status: pending, processing, completed, failed","title":"Status"},"description":"Filter by status: pending, processing, completed, failed"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/shopify/activities/summary":{"get":{"tags":["Shopify App API"],"summary":"Get Activities Summary","description":"Get summary statistics for activities.\n\nReturns counts for completed activities, products processed, and image jobs.","operationId":"get_activities_summary_api_v2_shopify_activities_summary_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"shop_domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by shop domain","title":"Shop Domain"},"description":"Filter by shop domain"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/shopify/activities/{activity_id}":{"get":{"tags":["Shopify App API"],"summary":"Get Activity","description":"Get detailed information about a specific activity.\n\nReturns the activity with full product change details.","operationId":"get_activity_api_v2_shopify_activities__activity_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","title":"Activity Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityDetailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Shopify App API"],"summary":"Update Activity","description":"Update an activity's status (e.g., mark as completed or failed).","operationId":"update_activity_api_v2_shopify_activities__activity_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"activity_id","in":"path","required":true,"schema":{"type":"string","title":"Activity Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"error_message","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/shopify/enrichment-jobs":{"post":{"tags":["Shopify App API"],"summary":"Create Enrichment Job","description":"Create a new background enrichment job.\n\nThe job is processed by a background worker. Poll /enrichment-jobs/{job_id} for status.","operationId":"create_enrichment_job_api_v2_shopify_enrichment_jobs_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichmentJobCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Shopify App API"],"summary":"List Enrichment Jobs","description":"List enrichment jobs for the authenticated user.","operationId":"list_enrichment_jobs_api_v2_shopify_enrichment_jobs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"shop_domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shop Domain"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/shopify/enrichment-jobs/{job_id}":{"get":{"tags":["Shopify App API"],"summary":"Get Enrichment Job","description":"Get the status and results of an enrichment job.","operationId":"get_enrichment_job_api_v2_shopify_enrichment_jobs__job_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EnrichmentJobResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Shopify App API"],"summary":"Update Enrichment Job","description":"Update an enrichment job's progress or status.\n\nCalled by the Shopify app to update job progress.","operationId":"update_enrichment_job_api_v2_shopify_enrichment_jobs__job_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"products_completed","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Products Completed"}},{"name":"products_failed","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Products Failed"}},{"name":"credits_used","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Credits Used"}},{"name":"results_json","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Results Json"}},{"name":"error_message","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Shopify App API"],"summary":"Delete Enrichment Job","description":"Delete an enrichment job (used when user declines the results).\n\nThis removes the job and its results from the database.","operationId":"delete_enrichment_job_api_v2_shopify_enrichment_jobs__job_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v2/style-transfer":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Style Transfer","description":"Apply an artistic style to an image using AI.\nCost: 1 credit. Styles: cinematic, anime, oil_painting, watercolor, sketch, pop_art, cyberpunk, vintage.","operationId":"api_v2_style_transfer_api_v2_style_transfer_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StyleTransferRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__ProcessingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/unblur":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Unblur","description":"Deblur and sharpen an image using AI (CodeFormer face restoration + super-resolution).\nCost: 1 credit.","operationId":"api_v2_unblur_api_v2_unblur_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnblurRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__ProcessingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/upscale":{"post":{"tags":["API v2 - Batch Processing"],"summary":"Api V2 Upscale","description":"Upscale an image using AI.\n\n- **2x**: 1 credit (Real-ESRGAN — falls back to Clarity for large images)\n- **4x**: 1 credit (Clarity Upscaler, handles any size)\n- **8x**: 2 credits (Clarity multi-pass, print-ready)\n\nProvide either `image_url` (public URL) or `image_base64`.","operationId":"api_v2_upscale_api_v2_upscale_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpscaleRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/app__routers__api_v2__ProcessingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v2/webhooks":{"post":{"summary":"Register webhook URL","operationId":"createWebhook","tags":["Webhooks"],"security":[{"ApiKeyAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri"},"secret":{"type":"string","description":"For HMAC signature verification"}}}}}},"responses":{"200":{"description":"Webhook registered"}}},"get":{"summary":"List registered webhooks","operationId":"listWebhooks","tags":["Webhooks"],"security":[{"ApiKeyAuth":[]}],"responses":{"200":{"description":"Webhook list"}}}},"/api/v2/webhooks/{webhook_id}":{"delete":{"summary":"Delete webhook","operationId":"deleteWebhook","tags":["Webhooks"],"security":[{"ApiKeyAuth":[]}],"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"Webhook deleted"}}}}},"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","description":"JWT token from /api/auth/login"},"ApiKeyAuth":{"type":"http","scheme":"bearer","description":"API key (pk_live_*) from dashboard settings"}},"schemas":{"ProcessingResult":{"type":"object","properties":{"success":{"type":"boolean"},"processing_id":{"type":"string"},"result":{"type":"string","description":"Base64-encoded result image"},"credits_remaining":{"type":"integer"},"processing_time":{"type":"number"}}},"TryOnResponse":{"type":"object","properties":{"result_url":{"type":"string"},"result_urls":{"type":"array","items":{"type":"string"}},"results":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"model":{"type":"string"}}}},"credits_used":{"type":"integer"}}},"ScriptResponse":{"type":"object","properties":{"script":{"type":"string"},"product_name":{"type":"string"},"product_description":{"type":"string"},"duration_seconds":{"type":"integer"},"word_count":{"type":"integer"}}},"VideoJobResponse":{"type":"object","properties":{"job_id":{"type":"integer"},"status":{"type":"string","enum":["pending","processing","completed","failed"]},"credits_used":{"type":"integer"},"message":{"type":"string"}}},"VideoStatusResponse":{"type":"object","properties":{"job_id":{"type":"integer"},"status":{"type":"string","enum":["pending","processing","completed","failed"]},"video_url":{"type":"string"},"error_message":{"type":"string"},"created_at":{"type":"string"},"completed_at":{"type":"string"},"current_step":{"type":"string"},"retry_count":{"type":"integer"}}},"BatchCreateRequest":{"properties":{"images":{"items":{"$ref":"#/components/schemas/BatchImageInput"},"type":"array","maxItems":100,"minItems":1,"title":"Images"},"images_per_product":{"type":"integer","maximum":12.0,"minimum":1.0,"title":"Images Per Product","default":6},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url","description":"Override webhook URL for this batch"}},"type":"object","required":["images"],"title":"BatchCreateRequest","description":"Request to create a new batch job."},"BatchCreateResponse":{"properties":{"batch_id":{"type":"string","title":"Batch Id"},"status":{"type":"string","title":"Status"},"total_images":{"type":"integer","title":"Total Images"},"images_to_generate":{"type":"integer","title":"Images To Generate"},"credits_reserved":{"type":"integer","title":"Credits Reserved"},"credits_remaining":{"type":"integer","title":"Credits Remaining"},"poll_url":{"type":"string","title":"Poll Url"}},"type":"object","required":["batch_id","status","total_images","images_to_generate","credits_reserved","credits_remaining","poll_url"],"title":"BatchCreateResponse","description":"Response after creating a batch."},"BatchStatusResponse":{"properties":{"batch_id":{"type":"string","title":"Batch Id"},"status":{"type":"string","title":"Status"},"progress":{"additionalProperties":true,"type":"object","title":"Progress"},"credits_reserved":{"type":"integer","title":"Credits Reserved"},"credits_used":{"type":"integer","title":"Credits Used"},"created_at":{"type":"string","title":"Created At"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"},"images":{"items":{"$ref":"#/components/schemas/BatchImageResult"},"type":"array","title":"Images","default":[]}},"type":"object","required":["batch_id","status","progress","credits_reserved","credits_used","created_at","started_at","completed_at"],"title":"BatchStatusResponse","description":"Response for batch status."},"JobCreateRequest":{"properties":{"product_image":{"type":"string","title":"Product Image","description":"Base64-encoded product image"},"product_filename":{"type":"string","title":"Product Filename","description":"Original filename","default":"product.png"},"category":{"type":"string","title":"Category","description":"Product category: clothing, jewelry, furniture, beauty, houseware, other","default":"other"},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id","description":"Public model ID (e.g., 'sophia_white')"},"model_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Url","description":"Custom model image URL (alternative to model_id)"},"images_to_generate":{"type":"integer","maximum":12.0,"minimum":1.0,"title":"Images To Generate","description":"Number of images to generate","default":6},"custom_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Custom Prompt","description":"Custom prompt for generation"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url","description":"URL to receive completion webhook"}},"type":"object","required":["product_image"],"title":"JobCreateRequest","description":"Request to create a single product image generation job."},"JobCreateResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"images_to_generate":{"type":"integer","title":"Images To Generate"},"credits_reserved":{"type":"integer","title":"Credits Reserved"},"credits_remaining":{"type":"integer","title":"Credits Remaining"},"poll_url":{"type":"string","title":"Poll Url"}},"type":"object","required":["job_id","status","images_to_generate","credits_reserved","credits_remaining","poll_url"],"title":"JobCreateResponse","description":"Response after creating a job."},"JobStatusResponse":{"type":"object","properties":{"job_id":{"type":"string"},"status":{"type":"string","enum":["pending","queued","processing","completed","failed"]},"images_to_generate":{"type":"integer"},"credits_used":{"type":"integer"},"results":{"type":"array","items":{"type":"object","properties":{"scene":{"type":"string"},"url":{"type":"string"},"created_at":{"type":"string"}}}},"error":{"type":"string"},"created_at":{"type":"string"},"started_at":{"type":"string"},"completed_at":{"type":"string"}}},"ActivityCreateRequest":{"properties":{"shop_domain":{"type":"string","title":"Shop Domain","description":"Shopify store domain"},"action":{"type":"string","title":"Action","description":"Short action description (e.g., 'Enriched 5 products')"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Detailed description"},"activity_type":{"type":"string","title":"Activity Type","description":"Type: enrichment, description, images, tags"},"status":{"type":"string","title":"Status","description":"Status: pending, processing, completed, failed","default":"completed"},"product_count":{"type":"integer","title":"Product Count","default":0},"credits_used":{"type":"integer","title":"Credits Used","default":0},"products":{"items":{"$ref":"#/components/schemas/ProductChanges"},"type":"array","title":"Products","description":"Products affected with changes"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["shop_domain","action","activity_type"],"title":"ActivityCreateRequest","description":"Request to log a new activity."},"ActivityCreateResponse":{"properties":{"activity_id":{"type":"string","title":"Activity Id"},"status":{"type":"string","title":"Status"},"message":{"type":"string","title":"Message"}},"type":"object","required":["activity_id","status","message"],"title":"ActivityCreateResponse","description":"Response after creating an activity."},"ActivityDetailResponse":{"properties":{"id":{"type":"integer","title":"Id"},"activity_id":{"type":"string","title":"Activity Id"},"action":{"type":"string","title":"Action"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"activity_type":{"type":"string","title":"Activity Type"},"status":{"type":"string","title":"Status"},"product_count":{"type":"integer","title":"Product Count"},"credits_used":{"type":"integer","title":"Credits Used"},"time":{"type":"string","title":"Time"},"created_at":{"type":"string","title":"Created At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"},"products":{"items":{"$ref":"#/components/schemas/ProductChanges"},"type":"array","title":"Products","default":[]}},"type":"object","required":["id","activity_id","action","description","activity_type","status","product_count","credits_used","time","created_at","completed_at"],"title":"ActivityDetailResponse","description":"Detailed activity response with product changes."},"ActivityListResponse":{"properties":{"activities":{"items":{"$ref":"#/components/schemas/ActivityResponse"},"type":"array","title":"Activities"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"total_pages":{"type":"integer","title":"Total Pages"}},"type":"object","required":["activities","total","page","per_page","total_pages"],"title":"ActivityListResponse","description":"Paginated list of activities."},"ActivityResponse":{"properties":{"id":{"type":"integer","title":"Id"},"activity_id":{"type":"string","title":"Activity Id"},"action":{"type":"string","title":"Action"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"activity_type":{"type":"string","title":"Activity Type"},"status":{"type":"string","title":"Status"},"product_count":{"type":"integer","title":"Product Count"},"credits_used":{"type":"integer","title":"Credits Used"},"time":{"type":"string","title":"Time"},"created_at":{"type":"string","title":"Created At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["id","activity_id","action","description","activity_type","status","product_count","credits_used","time","created_at","completed_at"],"title":"ActivityResponse","description":"Single activity response."},"AdPackResponse":{"properties":{"job_id":{"type":"integer","title":"Job Id"},"status":{"type":"string","title":"Status"},"product_name":{"type":"string","title":"Product Name"},"credits_reserved":{"type":"integer","title":"Credits Reserved"},"credits_remaining":{"type":"integer","title":"Credits Remaining"},"poll_url":{"type":"string","title":"Poll Url"}},"type":"object","required":["job_id","status","product_name","credits_reserved","credits_remaining","poll_url"],"title":"AdPackResponse"},"AnalyzeRequest":{"properties":{"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Public URL of the image"},"image_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Base64","description":"Base64-encoded image data (without data: prefix)"}},"type":"object","title":"AnalyzeRequest","description":"Request to analyze image with AI."},"AvatarJobStatusResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"count":{"type":"integer","title":"Count"},"results":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Results"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["job_id","status","count"],"title":"AvatarJobStatusResponse","description":"Status of an avatar generation job."},"BatchImageInput":{"properties":{"id":{"type":"string","title":"Id","description":"Your reference ID for this image"},"image":{"type":"string","title":"Image","description":"Base64-encoded image data"},"filename":{"type":"string","title":"Filename","description":"Original filename"},"category":{"type":"string","title":"Category","description":"Product category: clothing, jewelry, furniture, beauty, houseware, other","default":"other"}},"type":"object","required":["id","image","filename"],"title":"BatchImageInput","description":"Single image input for batch processing."},"BatchImageResult":{"properties":{"id":{"type":"string","title":"Id"},"client_id":{"type":"string","title":"Client Id"},"status":{"type":"string","title":"Status"},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename"},"results":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Results","default":[]},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["id","client_id","status","filename"],"title":"BatchImageResult","description":"Result for a single image in the batch."},"ConvertRequest":{"properties":{"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Public URL of the image"},"image_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Base64","description":"Base64-encoded image data"},"format":{"type":"string","title":"Format","description":"Output format: png, jpg, webp","default":"png"},"quality":{"type":"integer","title":"Quality","description":"Quality for JPG/WebP (1-100)","default":92}},"type":"object","title":"ConvertRequest","description":"Request to convert image format."},"EditRequest":{"properties":{"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Public URL of the image to edit"},"image_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Base64","description":"Base64-encoded image data (without data: prefix)"},"prompt":{"type":"string","title":"Prompt","description":"What to change, e.g. 'make the car yellow', 'change to a winter scene'"},"strength":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Strength","description":"0.0-0.3 subtle, 0.4-0.6 moderate, 0.7-1.0 strong","default":0.75}},"type":"object","required":["prompt"],"title":"EditRequest","description":"Request to transform an image with a text prompt (FLUX Kontext Pro)."},"EnrichmentJobCreateRequest":{"properties":{"shop_domain":{"type":"string","title":"Shop Domain"},"product_ids":{"items":{"type":"string"},"type":"array","title":"Product Ids"},"enrich_options":{"additionalProperties":true,"type":"object","title":"Enrich Options"},"products_data":{"anyOf":[{"items":{"$ref":"#/components/schemas/ProductDataItem"},"type":"array"},{"type":"null"}],"title":"Products Data"}},"type":"object","required":["shop_domain","product_ids","enrich_options"],"title":"EnrichmentJobCreateRequest","description":"Request to create a new enrichment job."},"EnrichmentJobResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"total_products":{"type":"integer","title":"Total Products"},"products_completed":{"type":"integer","title":"Products Completed"},"products_failed":{"type":"integer","title":"Products Failed"},"credits_used":{"type":"integer","title":"Credits Used"},"created_at":{"type":"string","title":"Created At"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"},"results":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Results"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["job_id","status","total_products","products_completed","products_failed","credits_used","created_at","started_at","completed_at"],"title":"EnrichmentJobResponse","description":"Response for an enrichment job."},"GenerateRequest":{"properties":{"avatar_uuid":{"type":"string","title":"Avatar Uuid","description":"UUID of a saved avatar"},"product_uuid":{"type":"string","title":"Product Uuid","description":"UUID of a saved product"},"num_outputs":{"type":"integer","maximum":30.0,"minimum":1.0,"title":"Num Outputs","description":"Number of images to generate","default":6},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Optional style/scene prompt"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url","description":"URL to receive completion notification"}},"type":"object","required":["avatar_uuid","product_uuid"],"title":"GenerateRequest","description":"Unified generation request using UUIDs."},"GenerateResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"mode":{"type":"string","title":"Mode"},"credits_reserved":{"type":"integer","title":"Credits Reserved"},"credits_remaining":{"type":"integer","title":"Credits Remaining"},"poll_url":{"type":"string","title":"Poll Url"}},"type":"object","required":["job_id","status","mode","credits_reserved","credits_remaining","poll_url"],"title":"GenerateResponse","description":"Response after starting a generation job."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImageRequest":{"properties":{"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Public URL of the image"},"image_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Base64","description":"Base64-encoded image data (without data: prefix)"}},"type":"object","title":"ImageRequest","description":"Base request for image processing endpoints."},"ImageToImageRequest":{"properties":{"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Public URL of the image"},"image_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Base64","description":"Base64-encoded image data"},"prompt":{"type":"string","title":"Prompt","description":"Description of desired transformation"},"strength":{"type":"number","title":"Strength","description":"Transformation strength (0.0–1.0)","default":0.75}},"type":"object","required":["prompt"],"title":"ImageToImageRequest","description":"Request for AI image-to-image transformation."},"ImageToPromptResponse":{"properties":{"status":{"type":"string","title":"Status"},"prompts":{"additionalProperties":true,"type":"object","title":"Prompts"},"credits_used":{"type":"integer","title":"Credits Used"},"credits_remaining":{"type":"integer","title":"Credits Remaining"}},"type":"object","required":["status","prompts","credits_used","credits_remaining"],"title":"ImageToPromptResponse","description":"Response for image-to-prompt generation."},"ProductChange":{"properties":{"field":{"type":"string","title":"Field","description":"Field that was changed (Title, Description, Tags, etc.)"},"before":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before","description":"Value before the change"},"after":{"type":"string","title":"After","description":"Value after the change"}},"type":"object","required":["field","after"],"title":"ProductChange","description":"A single field change for a product."},"ProductChanges":{"properties":{"productId":{"type":"string","title":"Productid","description":"Shopify product GID"},"productTitle":{"type":"string","title":"Producttitle","description":"Product title"},"productImage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Productimage","description":"Product image URL"},"changes":{"items":{"$ref":"#/components/schemas/ProductChange"},"type":"array","title":"Changes"}},"type":"object","required":["productId","productTitle"],"title":"ProductChanges","description":"Changes made to a single product."},"ProductDataItem":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title","default":""},"image_url":{"type":"string","title":"Image Url","default":""}},"type":"object","required":["id"],"title":"ProductDataItem","description":"Product data for enrichment."},"ProductUploadRequest":{"properties":{"image":{"type":"string","title":"Image","description":"Base64-encoded product image"},"filename":{"type":"string","title":"Filename","description":"Original filename","default":"product.png"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Product name (auto-detected if omitted)"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Product category: clothing, jewelry, furniture, accessories, beauty, other"}},"type":"object","required":["image"],"title":"ProductUploadRequest","description":"Request to upload and save a product."},"RemoveBackgroundRequest":{"properties":{"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Public URL of the image"},"image_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Base64","description":"Base64-encoded image data (without data: prefix)"}},"type":"object","title":"RemoveBackgroundRequest","description":"Request to remove image background."},"ReplaceBackgroundRequest":{"properties":{"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Public URL of the image"},"image_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Base64","description":"Base64-encoded image data"},"prompt":{"type":"string","title":"Prompt","description":"Scene description for new background","default":"white studio background"}},"type":"object","title":"ReplaceBackgroundRequest","description":"Request to replace image background with AI-generated scene."},"ScenesFromUrlRequest":{"properties":{"image_url":{"type":"string","title":"Image Url","description":"Public URL of a product photo"},"num_scenes":{"type":"integer","maximum":12.0,"minimum":1.0,"title":"Num Scenes","description":"Number of scene images (1 credit each)","default":4},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Product name (auto-detected if omitted)"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"clothing, jewelry, furniture, accessories, beauty, other"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url","description":"URL to receive completion notification"}},"type":"object","required":["image_url"],"title":"ScenesFromUrlRequest","description":"Save a product from an image URL and start scene generation in one call."},"ScenesFromUrlResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"mode":{"type":"string","title":"Mode"},"credits_reserved":{"type":"integer","title":"Credits Reserved"},"credits_remaining":{"type":"integer","title":"Credits Remaining"},"poll_url":{"type":"string","title":"Poll Url"},"product_uuid":{"type":"string","title":"Product Uuid"}},"type":"object","required":["job_id","status","mode","credits_reserved","credits_remaining","poll_url","product_uuid"],"title":"ScenesFromUrlResponse"},"StyleTransferRequest":{"properties":{"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Public URL of the image"},"image_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Base64","description":"Base64-encoded image data"},"style":{"type":"string","title":"Style","description":"Style: cinematic, anime, oil_painting, watercolor, sketch, pop_art, cyberpunk, vintage","default":"cinematic"}},"type":"object","title":"StyleTransferRequest","description":"Request for AI style transfer."},"TextRemovalRequest":{"properties":{"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Public URL of the image"},"image_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Base64","description":"Base64-encoded image data (without data: prefix)"}},"type":"object","title":"TextRemovalRequest","description":"Request to remove text from image."},"UnblurRequest":{"properties":{"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Public URL of the image"},"image_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Base64","description":"Base64-encoded image data (without data: prefix)"}},"type":"object","title":"UnblurRequest","description":"Request to deblur/sharpen an image."},"UpscaleRequest":{"properties":{"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Public URL of the image to upscale"},"image_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Base64","description":"Base64-encoded image data (without data: prefix)"},"scale":{"type":"integer","title":"Scale","description":"Upscale factor: 2, 4, or 8","default":4},"quality":{"type":"string","title":"Quality","description":"Quality mode: fast (Real-ESRGAN), balanced (Clarity), high (Clarity max)","default":"balanced"}},"type":"object","title":"UpscaleRequest","description":"Request to upscale an image."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VideoRequest":{"properties":{"image_url":{"type":"string","title":"Image Url","description":"Public URL of the source image to animate"},"script":{"type":"string","title":"Script","description":"Spoken script — Grok generates native audio + lip-sync from it","default":""},"prompt":{"type":"string","title":"Prompt","description":"Optional motion/scene direction","default":""},"duration":{"type":"integer","title":"Duration","description":"Video duration in seconds: 5, 8, or 10","default":5},"tone":{"type":"string","title":"Tone","description":"Content style/tone","default":"problem-solution"},"enable_subtitles":{"type":"boolean","title":"Enable Subtitles","description":"Burn in TikTok-style captions","default":false}},"type":"object","required":["image_url"],"title":"VideoRequest","description":"Request to generate a UGC-style video from a still image."},"VideoResponse":{"properties":{"job_id":{"type":"integer","title":"Job Id"},"status":{"type":"string","title":"Status"},"credits_used":{"type":"integer","title":"Credits Used"},"credits_remaining":{"type":"integer","title":"Credits Remaining"},"poll_url":{"type":"string","title":"Poll Url"}},"type":"object","required":["job_id","status","credits_used","credits_remaining","poll_url"],"title":"VideoResponse","description":"Response after starting a video generation job."},"app__routers__api_v2__AdPackRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Product page URL (Shopify, WooCommerce, Amazon, any page with OG images)"},"avatar_uuid":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Uuid","description":"UUID of a saved avatar to feature. Omit for a default public model."},"include_images":{"type":"boolean","title":"Include Images","description":"6 product scene images (6 credits)","default":true},"include_animations":{"type":"boolean","title":"Include Animations","description":"2 animated clips (60 credits)","default":false},"include_video":{"type":"boolean","title":"Include Video","description":"1 UGC video with script + lip-sync (50 credits)","default":true},"include_ads":{"type":"boolean","title":"Include Ads","description":"8 platform-sized static ads (free)","default":true},"include_captions":{"type":"boolean","title":"Include Captions","description":"3 caption variations (3 credits)","default":true}},"type":"object","required":["url"],"title":"AdPackRequest","description":"Generate a complete ad pack from a product page URL."},"app__routers__api_v2__AvatarGenerateRequest":{"properties":{"prompt":{"type":"string","title":"Prompt","description":"Description of the avatar to create"},"count":{"type":"integer","maximum":8.0,"minimum":1.0,"title":"Count","description":"How many avatar variations to generate","default":3},"generation_type":{"type":"string","title":"Generation Type","description":"'guided' (from prompt) or 'reference' (match a photo)","default":"guided"},"reference_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Image Url","description":"Public URL of a reference photo (generation_type='reference')"},"characteristics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Characteristics","description":"Optional structured traits (age, gender, ethnicity, style, ...)"}},"type":"object","required":["prompt"],"title":"AvatarGenerateRequest","description":"Request to generate AI avatars (character creation)."},"app__routers__api_v2__AvatarGenerateResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"count":{"type":"integer","title":"Count"},"credits_used":{"type":"integer","title":"Credits Used"},"credits_remaining":{"type":"integer","title":"Credits Remaining"},"poll_url":{"type":"string","title":"Poll Url"}},"type":"object","required":["job_id","status","count","credits_used","credits_remaining","poll_url"],"title":"AvatarGenerateResponse","description":"Response after starting an avatar generation job."},"app__routers__api_v2__AvatarResponse":{"properties":{"uuid":{"type":"string","title":"Uuid"},"name":{"type":"string","title":"Name"},"image_url":{"type":"string","title":"Image Url"},"style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Style"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["uuid","name","image_url","created_at"],"title":"AvatarResponse","description":"Saved avatar details."},"app__routers__api_v2__EnhanceRequest":{"properties":{"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url","description":"Public URL of the image to enhance"},"image_base64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Base64","description":"Base64-encoded image data (without data: prefix)"}},"type":"object","title":"EnhanceRequest","description":"Request to enhance/unblur an image."},"app__routers__api_v2__JobStatusResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"images_to_generate":{"type":"integer","title":"Images To Generate"},"credits_used":{"type":"integer","title":"Credits Used"},"results":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Results","default":[]},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"created_at":{"type":"string","title":"Created At"},"started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Started At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["job_id","status","images_to_generate","credits_used","created_at","started_at","completed_at"],"title":"JobStatusResponse","description":"Response for job status."},"app__routers__api_v2__ProcessingResponse":{"properties":{"status":{"type":"string","title":"Status"},"result_url":{"type":"string","title":"Result Url"},"credits_used":{"type":"integer","title":"Credits Used"},"credits_remaining":{"type":"integer","title":"Credits Remaining"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details"}},"type":"object","required":["status","result_url","credits_used","credits_remaining"],"title":"ProcessingResponse","description":"Response for image processing operations."},"app__routers__api_v2__ProductResponse":{"properties":{"uuid":{"type":"string","title":"Uuid"},"name":{"type":"string","title":"Name"},"image_url":{"type":"string","title":"Image Url"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"total_images_generated":{"type":"integer","title":"Total Images Generated","default":0},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["uuid","name","image_url","created_at"],"title":"ProductResponse","description":"Saved product details."},"app__routers__api_v2__ScenesRequest":{"properties":{"product_uuid":{"type":"string","title":"Product Uuid","description":"UUID of a saved product"},"num_scenes":{"type":"integer","maximum":12.0,"minimum":1.0,"title":"Num Scenes","description":"Number of scene images","default":6},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Override product category for scene selection"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url","description":"URL to receive completion notification"}},"type":"object","required":["product_uuid"],"title":"ScenesRequest","description":"Request to generate product scenes (no avatar needed)."},"app__routers__api_v2__VideoStatusResponse":{"properties":{"job_id":{"type":"integer","title":"Job Id"},"status":{"type":"string","title":"Status"},"video_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video Url"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"duration_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Seconds"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["job_id","status"],"title":"VideoStatusResponse","description":"Status of a video generation job."}}},"tags":[{"name":"Image Processing (v1)","description":"Single image processing with API key auth"},{"name":"Product Marketing","description":"Generate product photos with AI models"},{"name":"Asset Collections","description":"Batch marketing image sets"},{"name":"Video Generation","description":"AI-generated UGC marketing videos"},{"name":"Avatar Studio","description":"Create and manage AI avatar models"},{"name":"Batch Processing (v2)","description":"High-volume batch image generation"},{"name":"Single Jobs (v2)","description":"High-volume individual request processing"},{"name":"Webhooks","description":"Receive completion notifications"},{"name":"Product Catalog","description":"Import and manage product catalogs"},{"name":"Authentication","description":"Account management and tokens"},{"name":"Credits","description":"Credit balance and purchasing"}]}