{"openapi":"3.1.0","info":{"title":"PixelAPI","description":"AI Image & Video Generation API","version":"1.0.0"},"paths":{"/v1/load":{"get":{"tags":["ETA"],"summary":"Load Overview","description":"Cluster-wide summary — every heavy endpoint's current state.","operationId":"load_overview_v1_load_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/portrait/studio/eta":{"get":{"tags":["ETA"],"summary":"Eta Portrait Studio","operationId":"eta_portrait_studio_v1_portrait_studio_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/portrait/studio","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/portrait/generate/eta":{"get":{"tags":["ETA"],"summary":"Eta Portrait Generate","operationId":"eta_portrait_generate_v1_portrait_generate_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/portrait/studio","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/saree-tryon/eta":{"get":{"tags":["ETA"],"summary":"Eta Saree-Tryon","operationId":"eta_saree_tryon_v1_saree_tryon_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/saree-tryon","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/edit/eta":{"get":{"tags":["ETA"],"summary":"Eta Image Edit","operationId":"eta_image_edit_v1_image_edit_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/image/edit","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/virtual-tryon/eta":{"get":{"tags":["ETA"],"summary":"Eta Virtual-Tryon","operationId":"eta_virtual_tryon_v1_virtual_tryon_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/virtual-tryon","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/3d/generate/eta":{"get":{"tags":["ETA"],"summary":"Eta 3D Generate","operationId":"eta_3d_generate_v1_3d_generate_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/3d/generate","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/threed/generate/eta":{"get":{"tags":["ETA"],"summary":"Eta Threed Generate","operationId":"eta_threed_generate_v1_threed_generate_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/threed/generate","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/song/generate/eta":{"get":{"tags":["ETA"],"summary":"Eta Song Generate","operationId":"eta_song_generate_v1_song_generate_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/song/generate","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/upscale/eta":{"get":{"tags":["ETA"],"summary":"Eta Image Upscale","operationId":"eta_image_upscale_v1_image_upscale_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/image/upscale","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/generate/eta":{"get":{"tags":["ETA"],"summary":"Eta Image Generate","operationId":"eta_image_generate_v1_image_generate_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/image/generate","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/firered-edit/eta":{"get":{"tags":["ETA"],"summary":"Eta Image Firered-Edit","operationId":"eta_image_firered_edit_v1_image_firered_edit_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/image/firered-edit","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/remove-background/eta":{"get":{"tags":["ETA"],"summary":"Eta Image Remove-Background","operationId":"eta_image_remove_background_v1_image_remove_background_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/image/remove-background","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/replace-background/eta":{"get":{"tags":["ETA"],"summary":"Eta Image Replace-Background","operationId":"eta_image_replace_background_v1_image_replace_background_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/image/replace-background","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/remove-object/eta":{"get":{"tags":["ETA"],"summary":"Eta Image Remove-Object","operationId":"eta_image_remove_object_v1_image_remove_object_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/image/remove-object","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/unwrinkle/eta":{"get":{"tags":["ETA"],"summary":"Eta Image Unwrinkle","operationId":"eta_image_unwrinkle_v1_image_unwrinkle_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/image/unwrinkle","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/flat-lay/eta":{"get":{"tags":["ETA"],"summary":"Eta Image Flat-Lay","operationId":"eta_image_flat_lay_v1_image_flat_lay_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/image/flat-lay","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/recolor-clothing/eta":{"get":{"tags":["ETA"],"summary":"Eta Image Recolor-Clothing","operationId":"eta_image_recolor_clothing_v1_image_recolor_clothing_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/image/recolor-clothing","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/remove-text/eta":{"get":{"tags":["ETA"],"summary":"Eta Image Remove-Text","operationId":"eta_image_remove_text_v1_image_remove_text_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/image/remove-text","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/enhance/eta":{"get":{"tags":["ETA"],"summary":"Eta Image Enhance","operationId":"eta_image_enhance_v1_image_enhance_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/image/enhance","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/ghost-mannequin/eta":{"get":{"tags":["ETA"],"summary":"Eta Image Ghost-Mannequin","operationId":"eta_image_ghost_mannequin_v1_image_ghost_mannequin_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/image/ghost-mannequin","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/restore-face/eta":{"get":{"tags":["ETA"],"summary":"Eta Image Restore-Face","operationId":"eta_image_restore_face_v1_image_restore_face_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/image/restore-face","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/photo-restore/eta":{"get":{"tags":["ETA"],"summary":"Eta Photo-Restore","operationId":"eta_photo_restore_v1_photo_restore_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/photo-restore","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/interior-design/eta":{"get":{"tags":["ETA"],"summary":"Eta Interior-Design","operationId":"eta_interior_design_v1_interior_design_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/interior-design","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ad-creative/eta":{"get":{"tags":["ETA"],"summary":"Eta Ad-Creative","operationId":"eta_ad_creative_v1_ad_creative_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/ad-creative","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/thumbnail/eta":{"get":{"tags":["ETA"],"summary":"Eta Thumbnail","operationId":"eta_thumbnail_v1_thumbnail_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/thumbnail","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pixelforge/eta":{"get":{"tags":["ETA"],"summary":"Eta Pixelforge","operationId":"eta_pixelforge_v1_pixelforge_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/pixelforge","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/svdxt/eta":{"get":{"tags":["ETA"],"summary":"Eta Svdxt","operationId":"eta_svdxt_v1_svdxt_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/svdxt","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vastu/render-walkthrough/eta":{"get":{"tags":["ETA"],"summary":"Eta Vastu Render-Walkthrough","operationId":"eta_vastu_render_walkthrough_v1_vastu_render_walkthrough_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/vastu/render-walkthrough","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vastu/render-photoreal/eta":{"get":{"tags":["ETA"],"summary":"Eta Vastu Render-Photoreal","operationId":"eta_vastu_render_photoreal_v1_vastu_render_photoreal_eta_get","parameters":[{"name":"canonical","in":"query","required":false,"schema":{"default":"/v1/vastu/render-photoreal","title":"Canonical"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/{slug}/eta":{"get":{"tags":["ETA"],"summary":"Get Eta Unknown","operationId":"get_eta_unknown_v1__slug__eta_get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/catalog-tools":{"get":{"tags":["Catalog Tools"],"summary":"List Catalog Tools","description":"List Photoroom-competitive catalog tools, costs, and parameters.","operationId":"list_catalog_tools_v1_image_catalog_tools_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/image/ghost-mannequin":{"post":{"tags":["Catalog Tools"],"summary":"Ghost Mannequin v2 — open-source hollow/invisible mannequin apparel catalog shot","operationId":"ghost_mannequin_v1_image_ghost_mannequin_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ghost_mannequin_v1_image_ghost_mannequin_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogToolResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/unwrinkle":{"post":{"tags":["Catalog Tools"],"summary":"Unwrinkle clothes — remove fabric creases","operationId":"unwrinkle_v1_image_unwrinkle_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_unwrinkle_v1_image_unwrinkle_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogToolResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/recolor-clothing":{"post":{"tags":["Catalog Tools"],"summary":"Recolor clothing — SKU colourway variants","operationId":"recolor_clothing_v1_image_recolor_clothing_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_recolor_clothing_v1_image_recolor_clothing_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogToolResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/flat-lay":{"post":{"tags":["Catalog Tools"],"summary":"Flat Lay — fully-spread top-down garment catalog photo","operationId":"flat_lay_v1_image_flat_lay_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_flat_lay_v1_image_flat_lay_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogToolResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/product-staging":{"post":{"tags":["Catalog Tools"],"summary":"Product Staging — lifestyle scene placement","operationId":"product_staging_v1_image_product_staging_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_product_staging_v1_image_product_staging_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogToolResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/ai-fashion-model/presets":{"get":{"tags":["Catalog Tools"],"summary":"List curated AI fashion model presets","description":"Customer-safe model / pose / background library metadata and preview URLs.","operationId":"ai_fashion_model_presets_v1_image_ai_fashion_model_presets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/image/ai-fashion-model/poses":{"get":{"tags":["Catalog Tools"],"summary":"List curated fashion model poses","operationId":"ai_fashion_model_poses_v1_image_ai_fashion_model_poses_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/image/ai-fashion-model/poses/{pose_id}":{"get":{"tags":["Catalog Tools"],"summary":"Preview a fashion model pose plate","operationId":"ai_fashion_model_pose_preview_v1_image_ai_fashion_model_poses__pose_id__get","parameters":[{"name":"pose_id","in":"path","required":true,"schema":{"type":"string","title":"Pose Id"}},{"name":"gender","in":"query","required":false,"schema":{"type":"string","default":"female","title":"Gender"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/ai-fashion-model/backgrounds":{"get":{"tags":["Catalog Tools"],"summary":"List curated fashion backgrounds","operationId":"ai_fashion_model_backgrounds_v1_image_ai_fashion_model_backgrounds_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/image/ai-fashion-model/backgrounds/{background_id}":{"get":{"tags":["Catalog Tools"],"summary":"Preview a fashion background plate","operationId":"ai_fashion_model_background_preview_v1_image_ai_fashion_model_backgrounds__background_id__get","parameters":[{"name":"background_id","in":"path","required":true,"schema":{"type":"string","title":"Background Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/ai-fashion-model/presets/{preset_id}":{"get":{"tags":["Catalog Tools"],"summary":"Preview an AI fashion model preset","operationId":"ai_fashion_model_preset_preview_v1_image_ai_fashion_model_presets__preset_id__get","parameters":[{"name":"preset_id","in":"path","required":true,"schema":{"type":"string","title":"Preset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/ai-fashion-model":{"post":{"tags":["Catalog Tools"],"summary":"AI Fashion Model — garment on studio model without a person photo","description":"Dress a curated AI fashion model (or your own photo) with the uploaded garment.\n\nUses the production virtual-tryon queue. Prefer a clean flat-lay garment for\nbest results — pair with POST /v1/image/flat-lay first if the garment is folded.\n\nOptional `pose` and `background` select from the curated libraries\n(GET /v1/image/ai-fashion-model/presets). Background is composited under the\nmodel plate before try-on (no extra credit charge).","operationId":"ai_fashion_model_v1_image_ai_fashion_model_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_ai_fashion_model_v1_image_ai_fashion_model_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CatalogToolResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/{generation_id}":{"get":{"tags":["Image"],"summary":"Get Generation","operationId":"get_generation_v1_image__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/telemetry/event":{"post":{"tags":["telemetry"],"summary":"Submit Event","description":"Anonymous crash/error reporter. No auth required. Rate-limited per IP.\n\nThe app sends X-Install-Id (a random UUID generated on first launch and\nstored locally — not the user's API key, not their email, not anything\nthat points back to their identity). We hash it once more on the server\nside so the DB only ever sees an opaque 16-char digest used purely for\nduplicate-event collapsing.\n\nStrict privacy: we DO NOT log the client IP. CF-IPCountry (a 2-letter\ncode) is the only geographic signal kept, and only so the evolve loop\ncan detect 'this bug only hits Indian users' patterns.","operationId":"submit_event_v1_telemetry_event_post","parameters":[{"name":"x-install-id","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Install-Id"}},{"name":"cf-ipcountry","in":"header","required":false,"schema":{"type":"string","default":"","title":"Cf-Ipcountry"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelemetryEvent"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vastu/analyze":{"post":{"tags":["vastu"],"summary":"Vastu Analyze","description":"Score a floor plan against ~21 traditional Vastu rules.\n\nInput shape (all dimensions in feet, origin at SW corner):\n```\n{\n  \"facing\": \"north\",\n  \"plot\":   {\"width_ft\": 40, \"depth_ft\": 60},\n  \"rooms\":  [{\"name\":\"kitchen\",\"x\":30,\"y\":2,\"w\":8,\"h\":10}, ...],\n  \"main_entrance\": {\"x\":20,\"y\":58},\n  \"features\": {\"water_tank\":{\"x\":35,\"y\":55}, \"septic_tank\":{\"x\":5,\"y\":50}}\n}\n```\n\nReturns:\n```\n{\n  \"score\": 87.3,\n  \"bucket\": \"good\",\n  \"summary\": \"Mostly compliant; ...\",\n  \"rule_counts\": {\"pass\": 9, \"fail\": 1, \"warning\": 2, \"na\": 9},\n  \"findings\": [\n    {\"rule_id\":\"kitchen_se\",\"name\":\"Kitchen in Southeast (Agneya)\",\n     \"status\":\"pass\",\"severity\":\"high\",\"detail\":\"...\",\"suggestion\":\"\"},\n    ...\n  ]\n}\n```","operationId":"vastu_analyze_v1_vastu_analyze_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Vastu Analyze V1 Vastu Analyze Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vastu/rules":{"get":{"tags":["vastu"],"summary":"List Rules","description":"List every rule the engine evaluates, with severity + a one-line\ndescription. Useful for client UIs that want to render a checklist\nbefore the user submits.","operationId":"list_rules_v1_vastu_rules_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Rules V1 Vastu Rules Get"}}}}}}},"/v1/vastu/photoreal-styles":{"get":{"tags":["vastu"],"summary":"List Photoreal Styles","description":"List the valid `style` enum values for /v1/vastu/render-photoreal.\n\nFrontend dropdown source-of-truth so unknown styles can't sneak in.","operationId":"list_photoreal_styles_v1_vastu_photoreal_styles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Photoreal Styles V1 Vastu Photoreal Styles Get"}}}}}}},"/v1/vastu/export-dxf":{"post":{"tags":["vastu"],"summary":"Vastu Export Dxf","description":"Render the same layout as a downloadable DXF file (AutoCAD-compatible).\n\nThe DXF carries:\n  - Plot boundary, 3×3 Vastu zone grid (zones labelled with cardinal +\n    Sanskrit name), main entrance triangle, water/septic feature circles.\n  - Each room drawn as a closed polyline, colour-coded by compliance:\n    green=pass, yellow=warning, red=fail, white=not-evaluated.\n  - A compliance report (score, bucket, issues, recommendations) in the\n    right margin.\n  - Layers: PLOT, VASTU_ZONES, ROOMS_PASS/WARN/FAIL/NA, ROOM_LABELS,\n    ENTRANCE, FEATURES, REPORT.\n  - Units: decimal feet.\n\nOpens cleanly in AutoCAD, DraftSight, LibreCAD, BricsCAD, etc.","operationId":"vastu_export_dxf_v1_vastu_export_dxf_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VastuRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vastu/parse-dxf":{"post":{"tags":["vastu"],"summary":"Vastu Parse Dxf","description":"Parse a .dxf upload to a Vastu Layout JSON, then analyze it.\n\nFree during beta. Pure CPU work, deterministic.\nOptional `return_dxf=true` returns a ZIP with layout.json + analyze.json\n+ annotated.dxf.","operationId":"vastu_parse_dxf_v1_vastu_parse_dxf_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"return_dxf","in":"query","required":false,"schema":{"type":"boolean","description":"If true, return ZIP with annotated DXF.","default":false,"title":"Return Dxf"},"description":"If true, return ZIP with annotated DXF."}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_vastu_parse_dxf_v1_vastu_parse_dxf_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vastu/parse-dwg":{"post":{"tags":["vastu"],"summary":"Vastu Parse Dwg","description":"Parse a .dwg upload via LibreDWG dwg2dxf, then route through parse-dxf.","operationId":"vastu_parse_dwg_v1_vastu_parse_dwg_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_vastu_parse_dwg_v1_vastu_parse_dwg_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/vastu/parse-pdf":{"post":{"tags":["vastu"],"summary":"Vastu Parse Pdf","description":"Parse a vector / scanned PDF floor plan to Layout JSON.\n\nProxies to the llm5 sidecar (PyMuPDF + OpenCV + Tesseract).","operationId":"vastu_parse_pdf_v1_vastu_parse_pdf_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_vastu_parse_pdf_v1_vastu_parse_pdf_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/vastu/parse-image":{"post":{"tags":["vastu"],"summary":"Vastu Parse Image","description":"Parse a raster (PNG/JPG) floor plan via the CV+OCR sidecar.","operationId":"vastu_parse_image_v1_vastu_parse_image_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_vastu_parse_image_v1_vastu_parse_image_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/vastu/parse-ifc":{"post":{"tags":["vastu"],"summary":"Vastu Parse Ifc","description":"Parse an IFC building model into a Layout JSON for one floor.","operationId":"vastu_parse_ifc_v1_vastu_parse_ifc_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"floor_index","in":"query","required":false,"schema":{"type":"integer","maximum":20,"minimum":0,"description":"0=ground (lowest elevation)","default":0,"title":"Floor Index"},"description":"0=ground (lowest elevation)"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_vastu_parse_ifc_v1_vastu_parse_ifc_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vastu/render-walkthrough":{"post":{"tags":["vastu"],"summary":"Vastu Render Walkthrough","description":"Queue a Blender walkthrough render of a Layout JSON.\n\nBody = Layout JSON (same shape as /v1/vastu/analyze).\nCost: 599 credits. Returns {job_id, status:'queued', eta_seconds:600}.\nPoll via GET /v1/vastu/render-walkthrough/{job_id}.","operationId":"vastu_render_walkthrough_v1_vastu_render_walkthrough_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/vastu/render-walkthrough/{job_id}":{"get":{"tags":["vastu"],"summary":"Vastu Render Status","description":"Status / output URL for a queued vastu render job.","operationId":"vastu_render_status_v1_vastu_render_walkthrough__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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vastu/render-photoreal":{"post":{"tags":["vastu"],"summary":"Vastu Render Photoreal","description":"Queue a photoreal Flux walkthrough render of a Layout JSON.\n\nBody = Layout JSON (same shape as /v1/vastu/analyze input).\nOptional top-level keys: `style` (default \"indian-traditional\"),\n`callback_url` (optional URL to POST results to when done).\n\nCost: 1999 credits. Returns 202 with {job_id, status:\"queued\",\neta_seconds:900}. Poll via GET /v1/vastu/render-photoreal/{job_id}.\n\nThe worker:\n  1. For each room, computes its Vastu zone, builds an Indian-residential\n     photoreal prompt, calls /v1/image/generate (flux-schnell), saves PNG.\n  2. Renders narration (edge-tts en-IN-NeerjaNeural) over the room images\n     with Ken Burns motion, ducked BGM, brand outro, CTA overlay.\n  3. Produces reel.mp4 (9:16, ~30-45s), yt.mp4 (16:9), grid.png (4x2).","operationId":"vastu_render_photoreal_v1_vastu_render_photoreal_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/vastu/render-photoreal/{job_id}":{"get":{"tags":["vastu"],"summary":"Vastu Render Photoreal Status","description":"Status / output URLs for a queued Vastu photoreal render job.","operationId":"vastu_render_photoreal_status_v1_vastu_render_photoreal__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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/detect-faces":{"post":{"tags":["Image"],"summary":"Detect Faces","description":"Detect face bounding boxes in an uploaded image and return them with\nsmall (192x192 max) JPEG thumbnails base64-encoded for UI selection.","operationId":"detect_faces_v1_image_detect_faces_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_detect_faces_v1_image_detect_faces_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video/{generation_id}/notify":{"post":{"tags":["Video"],"summary":"Set Video Notify Email","description":"Register an email to notify when video is ready.","operationId":"set_video_notify_email_v1_video__generation_id__notify_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/{generation_id}":{"get":{"tags":["Video"],"summary":"Get Video Generation","operationId":"get_video_generation_v1_video__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/void_removal":{"post":{"tags":["Video"],"summary":"Void Removal","operationId":"void_removal_v1_video_void_removal_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_void_removal_v1_video_void_removal_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video/merge":{"post":{"tags":["Video"],"summary":"Video Merge","operationId":"video_merge_v1_video_merge_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_video_merge_v1_video_merge_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/memorial-video/pricing":{"get":{"tags":["memorial-video"],"summary":"Memorial Video Pricing","operationId":"memorial_video_pricing_v1_memorial_video_pricing_get","parameters":[{"name":"duration_seconds","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Duration Seconds"}},{"name":"music_mode","in":"query","required":false,"schema":{"type":"string","default":"inhouse","title":"Music Mode"}},{"name":"video_engine","in":"query","required":false,"schema":{"type":"string","default":"auto","title":"Video Engine"}},{"name":"photo_count","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Photo Count"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/memorial-video/generate":{"post":{"tags":["memorial-video"],"summary":"Generate Memorial Video","operationId":"generate_memorial_video_v1_memorial_video_generate_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_generate_memorial_video_v1_memorial_video_generate_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/memorial-video/{generation_id}/rerender":{"post":{"tags":["memorial-video"],"summary":"Rerender Memorial Video","description":"2026-07-13 Om (c): edit-after-generation. Re-render an existing memorial job\nwith changed settings WITHOUT re-uploading the photos — we reuse the photos\nstored for the original job. Any field left out keeps its previous value.\nBilled as a fresh render (new generation id returned).","operationId":"rerender_memorial_video_v1_memorial_video__generation_id__rerender_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_rerender_memorial_video_v1_memorial_video__generation_id__rerender_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/memorial-video/{generation_id}":{"get":{"tags":["memorial-video"],"summary":"Get Memorial Video","operationId":"get_memorial_video_v1_memorial_video__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/svdxt/video/{video_id}":{"get":{"tags":["SVD-XT Video"],"summary":"Get Video","operationId":"get_video_v1_svdxt_video__video_id__get","parameters":[{"name":"video_id","in":"path","required":true,"schema":{"type":"string","title":"Video Id"}},{"name":"api_key","in":"query","required":true,"schema":{"type":"string","title":"Api Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/svdxt/status":{"get":{"tags":["SVD-XT Video"],"summary":"Status","operationId":"status_v1_svdxt_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/image/upscale":{"post":{"tags":["Upscale"],"summary":"Upscale Image","description":"Upscale an image to 4x resolution using Real-ESRGAN.\n\nAccepts either:\n- File upload (multipart/form-data with 'image' field)\n- image_url (form field with URL to fetch)\n\nCost: 20 credits ($0.02)","operationId":"upscale_image_v1_image_upscale_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upscale_image_v1_image_upscale_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/upscale/{generation_id}":{"get":{"tags":["Upscale"],"summary":"Get Upscale Status","operationId":"get_upscale_status_v1_image_upscale__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpscaleStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/enhance":{"post":{"tags":["Upscale"],"summary":"Enhance Image","description":"AI Enhance: Upscale 4x + Face Restore in a single API call.\n\nChains upscale-4x → codeformer face restore for the best result.\nCosts 60 credits (vs 70 if called separately — upscale 35 + restore-face 35 — bundle discount).","operationId":"enhance_image_v1_image_enhance_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_enhance_image_v1_image_enhance_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/audio/denoise/{generation_id}":{"get":{"tags":["Audio Denoise"],"summary":"Audio Denoise Status","operationId":"audio_denoise_status_v1_audio_denoise__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolishStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/upscale":{"post":{"tags":["Video Polish"],"summary":"Video Upscale","description":"Upscale a video 4x using Real-ESRGAN x4plus, frame-by-frame.\n\nAccepts mp4 / mov / webm / mkv. Inputs >1080p are pre-shrunk to 1080p\nso output stays â‰¤4K. Audio (if present) is preserved. Up to 5 min input.\n\nCost: 3 credits/sec (min 30). 60s clip = 180 credits = $0.18.","operationId":"video_upscale_v1_video_upscale_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_video_upscale_v1_video_upscale_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video/upscale/{generation_id}":{"get":{"tags":["Video Polish"],"summary":"Video Upscale Status","operationId":"video_upscale_status_v1_video_upscale__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolishStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/denoise/{generation_id}":{"get":{"tags":["Video Polish"],"summary":"Video Denoise Status","operationId":"video_denoise_status_v1_video_denoise__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PolishStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/models":{"get":{"tags":["Models"],"summary":"List Models","description":"Public model catalogue.\n\nPRICING_TRUTH_V1 (2026-09-15): `credits_per_generation` is taken from the\nsame body /v1/pricing/live serves, and any key that feed marks publicly\nretired is dropped here too. Before this, MODELS was a second, stale\npricing truth — it advertised upscale-4x at 2 credits (live: 9),\nremove-background at 1 (live: 12), replace-background at 3 (live: 26),\nand still listed flux-schnell / sdxl / musicgen-stereo whose endpoints\nreturn 503. Fails OPEN to the static list if the feed is unavailable.","operationId":"list_models_v1_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/auth/signup":{"post":{"tags":["Account"],"summary":"Signup","operationId":"signup_v1_auth_signup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/login":{"post":{"tags":["Account"],"summary":"Login","operationId":"login_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/google/mobile":{"post":{"tags":["Account"],"summary":"Google Mobile Auth","description":"Mobile Google Sign-In via verified ID token.\n\nMobile app obtains an ID token from Google Credential Manager (Android) or\nGoogleSignIn (iOS) using our Web Client ID as serverClientId. We verify\nagainst the same Web Client ID and reuse _finalize_google_login. Returns\napi_key for subsequent Bearer auth — same data as web flow but as JSON\ninstead of a redirect.","operationId":"google_mobile_auth_v1_auth_google_mobile_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleMobileAuthRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleMobileAuthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/google":{"get":{"tags":["Account"],"summary":"Google Login","description":"Redirect user to Google consent screen.\n\nstate: optional opaque value passed through to callback. Mobile clients\npass `mobile:<nonce>` so the callback stashes the api_key in Redis under\nthat nonce, then a polling endpoint hands it back to the app — no deep\nlink or Android OAuth client needed.","operationId":"google_login_v1_auth_google_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"code_challenge","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Challenge"}},{"name":"code_challenge_method","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Challenge Method"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/google/callback":{"get":{"tags":["Account"],"summary":"Google Callback","description":"Handle Google OAuth callback — creates or logs in user.","operationId":"google_callback_v1_auth_google_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"error","in":"query","required":false,"schema":{"type":"string","title":"Error"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/google/mobile_pickup":{"get":{"tags":["Account"],"summary":"Google Mobile Pickup","description":"Mobile app polls this with the nonce it generated before opening the\nCustom Tab. Returns 204 while pending, 200 + payload after callback fired.\nSingle-use (deleted after pickup), 5-minute TTL on the stash.","operationId":"google_mobile_pickup_v1_auth_google_mobile_pickup_get","parameters":[{"name":"nonce","in":"query","required":true,"schema":{"type":"string","minLength":16,"maxLength":128,"title":"Nonce"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/mobile/exchange":{"post":{"tags":["Account"],"summary":"Mobile Code Exchange","description":"Redeem a one-time lensora:// sign-in code for the api_key (LENSORA_AUTH_CODE_V1).\nSingle-use, 120 s, bound to the PKCE verifier and the app's state.","operationId":"mobile_code_exchange_v1_auth_mobile_exchange_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MobileCodeExchangeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleMobileAuthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/account":{"get":{"tags":["Account"],"summary":"Get Account","operationId":"get_account_v1_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"tags":["Account"],"summary":"Delete Account","description":"Revoke account access and preserve generation evidence for human review.","operationId":"delete_account_v1_account_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/account/balance":{"get":{"tags":["Account"],"summary":"Get Balance","operationId":"get_balance_v1_account_balance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalanceResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/billing/checkout-target":{"get":{"tags":["Account"],"summary":"Get Checkout Target","description":"Cross-channel checkout router. Asks: where should THIS user pay?\n\nRules (canonical per Om 2026-05-17):\n1. If the user already has an active subscription in some channel, the\n   answer is \"manage it where you bought it\" — never sell a second\n   subscription. Razorpay/PayPal → manage on web; Google Play → manage\n   in the Play Store; Apple → App Store.\n2. Otherwise, route by the calling platform's payment surface.\n   Mobile-Android → Google Play. Web → Razorpay (India) or PayPal\n   (everyone else), based on billing/signup country.\n\nClient must send `X-Client-Platform: mobile-android | mobile-ios | web`\nso we know where the request is coming from. Default is `web`.","operationId":"get_checkout_target_v1_billing_checkout_target_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/account/usage":{"get":{"tags":["Account"],"summary":"Get Usage","operationId":"get_usage_v1_account_usage_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/create-account":{"post":{"tags":["Account"],"summary":"Create Manual Account","description":"Create a manual email/password account (admin only, LAN restricted via Nginx).","operationId":"create_manual_account_v1_admin_create_account_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/account/webhook":{"get":{"tags":["Account"],"summary":"Get Webhook Config","description":"Get current webhook configuration.","operationId":"get_webhook_config_v1_account_webhook_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["Account"],"summary":"Configure Webhook","description":"Set or remove a webhook URL. PixelAPI will POST job results here when complete.","operationId":"configure_webhook_v1_account_webhook_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookConfigRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/account/webhook/deliveries":{"get":{"tags":["Account"],"summary":"Webhook Delivery History","description":"List recent webhook delivery attempts.","operationId":"webhook_delivery_history_v1_account_webhook_deliveries_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/account/analytics":{"get":{"tags":["Account"],"summary":"Get Usage Analytics","description":"Return usage analytics for the authenticated user.","operationId":"get_usage_analytics_v1_account_analytics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/account/billing":{"get":{"tags":["Account"],"summary":"Get Billing Address","operationId":"get_billing_address_v1_account_billing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["Account"],"summary":"Update Billing Address","operationId":"update_billing_address_v1_account_billing_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingAddressUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/account/api-key/rotate":{"post":{"tags":["Account"],"summary":"Rotate Api Key","operationId":"rotate_api_key_v1_account_api_key_rotate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/account/generations/{gen_id}":{"delete":{"tags":["Account"],"summary":"Delete Generation","description":"Delete one gallery asset: removes the stored output image and hides the\njob from your gallery. Credits and billing history are not affected.","operationId":"delete_generation_v1_account_generations__gen_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"gen_id","in":"path","required":true,"schema":{"type":"string","title":"Gen Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/account/generations/delete-bulk":{"post":{"tags":["Account"],"summary":"Delete Generations Bulk","operationId":"delete_generations_bulk_v1_account_generations_delete_bulk_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/auth/apple/mobile":{"post":{"tags":["Account"],"summary":"Apple Mobile Auth","description":"Native Sign in with Apple: verify the identity token, then upsert by email.\n\nMirrors /v1/auth/google/mobile. The identity token's `aud` is the app bundle\nid and `iss` is https://appleid.apple.com; PyJWKClient fetches Apple's rotating\npublic keys to check the RS256 signature. On success we reuse\n_finalize_google_login (a generic email upsert), so Apple and Google converge\non the same account when the email matches.","operationId":"apple_mobile_auth_v1_auth_apple_mobile_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleMobileAuthRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleMobileAuthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/google/start":{"get":{"tags":["Account"],"summary":"Google Login Start","operationId":"google_login_start_v1_auth_google_start_get","parameters":[{"name":"client","in":"query","required":false,"schema":{"type":"string","default":"ios","title":"Client"}},{"name":"redirect","in":"query","required":false,"schema":{"type":"string","default":"lensora://auth/callback","title":"Redirect"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"code_challenge","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Challenge"}},{"name":"code_challenge_method","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Challenge Method"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/apple/start":{"get":{"tags":["Account"],"summary":"Apple Login Start","description":"Kick off web Sign in with Apple — 302 to Apple's consent screen.\n\nMirrors /v1/auth/google/start. Pass ?redirect=lensora://auth/callback to get\nthe mobile deep-link return instead of the pixelapi.dev web return; as with\nGoogle we refuse anything but the lensora scheme so this can never be used\nas an open redirector (and the redirect is carried inside our signed state,\nnever echoed back from user input).","operationId":"apple_login_start_v1_auth_apple_start_get","parameters":[{"name":"client","in":"query","required":false,"schema":{"type":"string","default":"web","title":"Client"}},{"name":"redirect","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Redirect"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"code_challenge","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Challenge"}},{"name":"code_challenge_method","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code Challenge Method"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/auth/apple/callback":{"post":{"tags":["Account"],"summary":"Apple Callback","description":"Apple's form_post lands here. Verifies state + id_token, redeems the code,\nthen finalises through the SAME upsert as Google so the member keeps one\nidentity across web, iOS and Android.","operationId":"apple_callback_v1_auth_apple_callback_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_apple_callback_v1_auth_apple_callback_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/deletion-review":{"get":{"tags":["Admin"],"summary":"Page","operationId":"page_admin_deletion_review_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/admin/deletion-review/cases":{"get":{"tags":["Admin"],"summary":"Cases","operationId":"cases_admin_deletion_review_cases_get","parameters":[{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/deletion-review/cases/{case_id}":{"get":{"tags":["Admin"],"summary":"Detail","operationId":"detail_admin_deletion_review_cases__case_id__get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Case Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/deletion-review/cases/{case_id}/files/{digest}":{"get":{"tags":["Admin"],"summary":"Evidence File","operationId":"evidence_file_admin_deletion_review_cases__case_id__files__digest__get","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Case Id"}},{"name":"digest","in":"path","required":true,"schema":{"type":"string","title":"Digest"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/deletion-review/cases/{case_id}/review":{"post":{"tags":["Admin"],"summary":"Review","operationId":"review_admin_deletion_review_cases__case_id__review_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Case Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/gateway__dashboard__deletion_review__Review"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/deletion-review/cases/{case_id}/retry":{"post":{"tags":["Admin"],"summary":"Retry","operationId":"retry_admin_deletion_review_cases__case_id__retry_post","parameters":[{"name":"case_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Case Id"}},{"name":"authorization","in":"header","required":false,"schema":{"type":"string","default":"","title":"Authorization"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/feedback":{"post":{"tags":["Feedback"],"summary":"Submit Feedback","operationId":"submit_feedback_v1_feedback_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/feedback/my":{"get":{"tags":["Feedback"],"summary":"My Feedback","operationId":"my_feedback_v1_feedback_my_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/feedback/churn":{"post":{"tags":["Feedback"],"summary":"Submit Churn Feedback","description":"Accept a response from a signed, expiring customer link.","operationId":"submit_churn_feedback_v1_feedback_churn_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChurnFeedbackRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/feedback/churn-link":{"get":{"tags":["Feedback"],"summary":"Get Own Feedback Link","operationId":"get_own_feedback_link_v1_feedback_churn_link_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/feedback/content-report":{"post":{"tags":["Feedback"],"summary":"Submit Content Report","operationId":"submit_content_report_v1_feedback_content_report_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentReport"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/reliability/tools":{"get":{"tags":["Reliability"],"summary":"Tool Reliability","operationId":"tool_reliability_v1_reliability_tools_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lensora/billing-diag":{"post":{"tags":["Lensora"],"summary":"Billing Diag","operationId":"billing_diag_v1_lensora_billing_diag_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/reports/daily":{"get":{"tags":["Reports"],"summary":"Daily Report","description":"Generate daily analytics report.","operationId":"daily_report_v1_reports_daily_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/reports/daily/formatted":{"get":{"tags":["Reports"],"summary":"Daily Report Formatted","description":"Generate a formatted text report for Telegram/email.","operationId":"daily_report_formatted_v1_reports_daily_formatted_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/entitlement":{"get":{"tags":["entitlement","entitlement"],"summary":"Get Entitlement","description":"Union of all subscription sources — pro=True if ANY is active.","operationId":"get_entitlement_v1_entitlement_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitlementResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/entitlement/google/verify":{"post":{"tags":["entitlement","entitlement"],"summary":"Verify Google","description":"Verify a Google Play purchase token and grant entitlement.\n\nReal verification (2026-05-10): calls Android Publisher API\npurchases.subscriptionsv2.get to confirm the token is genuine + active.\nExpiry is read from Google's response, NOT computed locally. On any\nverification failure we return non-2xx — we do NOT silently grant.","operationId":"verify_google_v1_entitlement_google_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/entitlement/apple/verify":{"post":{"tags":["entitlement","entitlement"],"summary":"Verify Apple","description":"Verify a StoreKit 2 signed transaction and grant PixelAPI plan+credits.\n\nReal verification (2026-08-22): App Store Server API Get Transaction Info\nusing the ASC API key. The previous stub that trusted any 20-char receipt\nis gone — forged JWS cannot grant credits.","operationId":"verify_apple_v1_entitlement_apple_verify_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppleVerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/color-grade":{"post":{"tags":["Image"],"summary":"Color Grade Image","description":"Apply color grading to uploaded image.","operationId":"color_grade_image_v1_image_color_grade_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_color_grade_image_v1_image_color_grade_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ColorGradeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/edit":{"post":{"tags":["image-edit"],"summary":"Edit image with AI instruction","description":"Edit an image using FireRed-Image-Edit 1.1.\n\nSubmit an image with a text instruction and receive an edited result.\nResults are available via GET /v1/jobs/{id}.\n\n**Examples:**\n- \"make the background a sunset beach scene\"\n- \"change the hair color to blonde\"\n- \"add dramatic studio lighting\"\n- \"make the person wear a red dress\"\n- \"restore the old photo to high quality\"\n\n**Cost:** 30 credits ($0.030) per image","operationId":"edit_image_v1_image_edit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageEditRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageEditResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/edit/{generation_id}":{"get":{"tags":["image-edit"],"summary":"Get Image Edit Status","description":"Poll status of an image-edit job. Mirrors GET /v1/image/{id}.","operationId":"get_image_edit_status_v1_image_edit__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/payments/create-subscription":{"post":{"tags":["Payments"],"summary":"Create Subscription","description":"Create a PayPal subscription for the authenticated user.\n\n1. Validates the requested plan exists\n2. Looks up the PayPal plan ID from our database\n3. Creates a subscription via PayPal API\n4. Returns the approval URL for the user to complete payment on PayPal\n\nThe user's plan is NOT activated here — that happens via webhook\nwhen PayPal confirms the subscription is active.","operationId":"create_subscription_v1_payments_create_subscription_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSubscriptionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSubscriptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/payments/webhook":{"post":{"tags":["Payments"],"summary":"Paypal Webhook","description":"PayPal webhook handler — receives subscription lifecycle events.\n\nThis endpoint is called by PayPal's servers (not by the user).\nIt must be publicly accessible and registered in PayPal's developer dashboard.\n\nEvents we handle:\n- BILLING.SUBSCRIPTION.ACTIVATED: User approved subscription → activate plan + add credits\n- PAYMENT.SALE.COMPLETED: Recurring payment succeeded → refresh credits for new period\n- BILLING.SUBSCRIPTION.CANCELLED: User or merchant cancelled → downgrade at period end\n- BILLING.SUBSCRIPTION.SUSPENDED: Payment failed → suspend immediately\n- BILLING.SUBSCRIPTION.EXPIRED: Subscription reached end → downgrade to free\n\nSecurity:\n- Webhook signature is verified via PayPal's verification endpoint\n- Event IDs are stored to prevent duplicate processing (idempotency)\n- Payment amounts are verified against our plan prices","operationId":"paypal_webhook_v1_payments_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/payments/invoices":{"get":{"tags":["Payments"],"summary":"List My Invoices","description":"List the signed-in customer's invoices (from their own payment rows).","operationId":"list_my_invoices_v1_payments_invoices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/payments/invoices/{zoho_invoice_id}/pdf":{"get":{"tags":["Payments"],"summary":"Download My Invoice","description":"Serve the customer's own invoice PDF (ownership enforced: the invoice id\nmust belong to one of THIS user's payment rows).","operationId":"download_my_invoice_v1_payments_invoices__zoho_invoice_id__pdf_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"zoho_invoice_id","in":"path","required":true,"schema":{"type":"string","title":"Zoho Invoice Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/payments/generate-invoice":{"post":{"tags":["Payments"],"summary":"Generate Invoice Now","description":"Called from the billing address modal (client-side) right after the user fills their address.\nPicks the most recent payment without a zoho_invoice_id and generates the Zoho invoice.","operationId":"generate_invoice_now_v1_payments_generate_invoice_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/payments/refund":{"post":{"tags":["Payments"],"summary":"Process Refund","description":"Unified refund endpoint:\n- Users can refund their own latest payment (user_id omitted)\n- Admins (api_key == admin key) can refund any user / payment\n\nActions:\n1. Fetch payment record\n2. Refund via PayPal or Razorpay API\n3. Void Zoho invoice\n4. Deduct credits from user\n5. Downgrade plan to free if subscription refund","operationId":"process_refund_v1_payments_refund_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/payments/subscription-status":{"get":{"tags":["Payments"],"summary":"Get Subscription Status","description":"Get the current user's subscription status.\n\nAlso checks if a cancelled subscription has expired and downgrades if needed.\nThis is a \"lazy check\" that supplements the webhook-based approach.","operationId":"get_subscription_status_v1_payments_subscription_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionStatusResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/payments/cancel-subscription":{"post":{"tags":["Payments"],"summary":"Cancel Subscription","description":"Cancel ALL of the user's PayPal subscriptions.\n\nUsers can accidentally hold several (Abbi had 3). We enumerate every subscription\nid we know for this account (users.paypal_subscription_id + all paypal_subscriptions\nrows), cancel each active one at PayPal, VERIFY each ends CANCELLED/EXPIRED, update\nlocal state, and email a confirmation ONLY after full verified cancellation.\nAccess is retained until plan_expires_at.","operationId":"cancel_subscription_v1_payments_cancel_subscription_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelSubscriptionResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/remove-background":{"post":{"tags":["editing"],"summary":"Remove Background","description":"Remove background from an image. Returns transparent PNG.\n\n- Upload image as multipart/form-data OR provide image_url\n- Cost: 12 credits ($0.012)\n- Model: BiRefNet (state-of-the-art, MIT license)\n- Typical processing: 1-3 seconds\n- Max file size: 20MB","operationId":"remove_background_v1_image_remove_background_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_remove_background_v1_image_remove_background_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/replace-background":{"post":{"tags":["editing"],"summary":"Replace Background","description":"Remove background and replace with AI-generated scene or solid color.\n\nSmart detection:\n- Solid colors: \"white background\", \"#FF5733\", \"rgb(255,87,51)\" -> instant, no GPU needed\n- Gradients: \"gradient from blue to purple\" -> instant gradient fill\n- Transparent: \"transparent\" -> PNG with alpha channel\n- Complex scenes: \"product on marble table with studio lighting\" -> SDXL generation\n\n- Upload product image + describe desired background\n- Cost: 26 credits ($0.026) — same whether solid color or AI-generated\n- Pipeline: BiRefNet (bg removal) -> smart fill or SDXL inpainting\n- Typical processing: 2-20 seconds (instant for solid colors, longer for AI scenes)","operationId":"replace_background_v1_image_replace_background_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_replace_background_v1_image_replace_background_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/vfx-compose/prepare":{"post":{"tags":["editing"],"summary":"Vfx Compose Prepare","description":"Phase 1 of hybrid VFX compose. Heavy async work: matte foreground,\nresolve background (uploaded or generated), detect light direction,\nsuggest a starting bbox. Client polls GET /v1/image/{id}; when the row's\nstatus is 'completed', `params` contains everything the finalize step\nneeds ({matte_url, bg_url, suggested_bbox, light_angle_deg, ...}).","operationId":"vfx_compose_prepare_v1_image_vfx_compose_prepare_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_vfx_compose_prepare_v1_image_vfx_compose_prepare_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/vfx-compose/state/{prepare_id}":{"get":{"tags":["editing"],"summary":"Vfx Compose State","description":"Read the prepare row's params jsonb so the client can paint the canvas.\nReturns matte_url, bg_url, sizes, suggested_bbox, and detected light info.","operationId":"vfx_compose_state_v1_image_vfx_compose_state__prepare_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"prepare_id","in":"path","required":true,"schema":{"type":"string","title":"Prepare Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/vfx-compose/finalize":{"post":{"tags":["editing"],"summary":"Vfx Compose Finalize","description":"Phase 2: pure pixel-ops over the prepare result. No GPU, no credits.\nReads the prepare row, runs LAB tone-match + alpha feather + procedural\ncast shadow + alpha-composite, writes the final PNG, returns its URL.","operationId":"vfx_compose_finalize_v1_image_vfx_compose_finalize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VfxFinalizeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/restore-face":{"post":{"tags":["editing"],"summary":"Restore Face","description":"Restore and enhance faces in an image.\n\n- Upload image with faces to enhance\n- Cost: 3 credits ($0.003)\n- Model: CodeFormer\n- Typical processing: 2-5 seconds","operationId":"restore_face_v1_image_restore_face_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_restore_face_v1_image_restore_face_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/restore-face-v2":{"post":{"tags":["editing"],"summary":"Restore Face V2","description":"Restore and enhance faces in an image (v2 pipeline).\n\nPipeline: detect (RetinaFace) -> classify -> optional DDColor for B&W/sepia\n-> per-face PMRF (or passthrough if already sharp) -> ArcFace identity gate\nwith retry/accept-original failsafe -> paste back composite.\n\n- Restores damaged / blurry / B&W / sepia old photos\n- Colorizes B&W and sepia inputs automatically\n- Identity-preserving: ArcFace cosine-distance gate\n- Cost: 2 credits ($0.002)\n- Typical processing: 1-5 seconds (after warm)","operationId":"restore_face_v2_v1_image_restore_face_v2_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_restore_face_v2_v1_image_restore_face_v2_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/remove-object":{"post":{"tags":["editing"],"summary":"Remove Object","description":"Remove an object from an image using AI inpainting.\n\n- Upload image + describe what to remove (or provide mask)\n- Cost: 12.5 credits ($0.0125)\n- Model: LaMa / SDXL inpainting\n- Typical processing: 5-15 seconds","operationId":"remove_object_v1_image_remove_object_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_remove_object_v1_image_remove_object_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/remove-text":{"post":{"tags":["editing"],"summary":"Remove Text","description":"Automatically detect and remove text/watermarks from an image.\n\n- Upload image as multipart/form-data\n- Cost: 5 credits ($0.005)\n- Pipeline: EasyOCR (text detection) -> LaMa (inpainting)\n- Typical processing: 5-15 seconds\n- Removes: watermarks, date stamps, captions, phone numbers, etc.\n- Optional `prompt` names a specific overlay so TARGET_TEXT_FILTER can\n  clamp to it (QC job 78e49b66: unnamed translucent marketplace logos\n  were declined TEXT_TOO_SCATTERED, then firered-edit left them in).","operationId":"remove_text_v1_image_remove_text_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_remove_text_v1_image_remove_text_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/audio/{generation_id}":{"get":{"tags":["audio"],"summary":"Get Audio Status","operationId":"get_audio_status_v1_audio__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/song/download/{generation_id}":{"get":{"tags":["song"],"summary":"Download Song","description":"Download generated song audio file.","operationId":"download_song_v1_song_download__generation_id__get","parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/song/{generation_id}":{"get":{"tags":["song"],"summary":"Get Song Status","description":"Check song generation status.","operationId":"get_song_status_v1_song__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/audio/stems":{"post":{"tags":["audio"],"summary":"Stems Separate","description":"Separate an audio track into stems (vocals/drums/bass/other) using\nDemucs htdemucs. Returns a ZIP of WAV files.\n\n50 credits per call (~$0.05). 1/2 of LALAL.ai $0.10/song starter pricing.","operationId":"stems_separate_v1_audio_stems_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StemsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/audio/stems/download/{generation_id}":{"get":{"tags":["audio"],"summary":"Download Stems","description":"Download a stems ZIP.","operationId":"download_stems_v1_audio_stems_download__generation_id__get","parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/controlnet":{"post":{"tags":["Image Transformation"],"summary":"Controlnet Generate","description":"Generate images following the structure of a reference image.\n\n- Auto-detects edges from your image\n- Great for: style transfer, architectural rendering, product variations\n- Cost: 5 credits ($0.005)\n- Model: ControlNet + SDXL","operationId":"controlnet_generate_v1_image_controlnet_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_controlnet_generate_v1_image_controlnet_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/razorpay/create-order":{"post":{"tags":["Razorpay Payments"],"summary":"Create Order","description":"Create a Razorpay order for plan purchase or credit top-up.","operationId":"create_order_v1_razorpay_create_order_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrderRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/razorpay/verify-payment":{"post":{"tags":["Razorpay Payments"],"summary":"Verify Payment","description":"Verify Razorpay payment signature and activate plan/add credits.","operationId":"verify_payment_v1_razorpay_verify_payment_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPaymentRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/razorpay/webhook":{"post":{"tags":["Razorpay Payments"],"summary":"Razorpay Webhook","description":"Handle Razorpay webhook events as backup verification.","operationId":"razorpay_webhook_v1_razorpay_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/razorpay/config":{"get":{"tags":["Razorpay Payments"],"summary":"Razorpay Config","description":"Return public Razorpay config for frontend (INR + USD).","operationId":"razorpay_config_v1_razorpay_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/razorpay/create-order-usd":{"post":{"tags":["Razorpay Payments"],"summary":"Create Order Usd","description":"Create a Razorpay order in USD for international credit card payments.","operationId":"create_order_usd_v1_razorpay_create_order_usd_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrderUSDRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/razorpay/create-payment-link-usd":{"post":{"tags":["Razorpay Payments"],"summary":"Create Payment Link Usd","description":"Hosted Razorpay payment link in USD for international cards. Crediting happens\nvia the payment.captured webhook (link notes propagate to the payment).","operationId":"create_payment_link_usd_v1_razorpay_create_payment_link_usd_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePaymentLinkUSDRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/payu/pricing":{"get":{"tags":["PayU Payments"],"summary":"Get Payu Pricing","operationId":"get_payu_pricing_v1_payu_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/payu/create-payment":{"post":{"tags":["PayU Payments"],"summary":"Create Payu Payment","operationId":"create_payu_payment_v1_payu_create_payment_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/payu/success":{"post":{"tags":["PayU Payments"],"summary":"Payu Success","operationId":"payu_success_v1_payu_success_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/payu/failure":{"post":{"tags":["PayU Payments"],"summary":"Payu Failure","operationId":"payu_failure_v1_payu_failure_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/tunes/config":{"get":{"tags":["TunesAPI"],"summary":"Get Config","description":"Public pricing and configuration.","operationId":"get_config_v1_tunes_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/tunes/train":{"post":{"tags":["TunesAPI"],"summary":"Submit Training","description":"Submit a LoRA training job. Upload images after this call.","operationId":"submit_training_v1_tunes_train_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrainResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/tunes/{job_id}/upload":{"post":{"tags":["TunesAPI"],"summary":"Upload Training Images","description":"Upload training images for a job.","operationId":"upload_training_images_v1_tunes__job_id__upload_post","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_training_images_v1_tunes__job_id__upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tunes/infer":{"post":{"tags":["TunesAPI"],"summary":"Submit Inference","description":"Generate images using a trained LoRA model.","operationId":"submit_inference_v1_tunes_infer_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InferRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InferResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/tunes/models":{"get":{"tags":["TunesAPI"],"summary":"List Models","description":"List all trained LoRA models for the current user.","operationId":"list_models_v1_tunes_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TuneModel"},"type":"array","title":"Response List Models V1 Tunes Models Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/tunes/{job_id}":{"get":{"tags":["TunesAPI"],"summary":"Get Job Status","description":"Check status of a training or inference job.","operationId":"get_job_status_v1_tunes__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/JobStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tunes/{tune_id}":{"delete":{"tags":["TunesAPI"],"summary":"Delete Model","description":"Delete a trained LoRA model.","operationId":"delete_model_v1_tunes__tune_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tune_id","in":"path","required":true,"schema":{"type":"string","title":"Tune Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/internal/upload":{"post":{"tags":["internal"],"summary":"Upload File","description":"Receive file from GPU worker, save to local storage.\n\nIT Rules 2021 Rule 3(3)(a)(ii): every AI-generated output carries embedded\nprovenance metadata (always). The visible \"AI · PixelAPI\" badge is applied\nonly when the job is full-regeneration AND the user is on a free plan;\npaid users + edit-class tools get an invisible LSB-stego marker instead.\nPolicy per Om msg 854 (2026-05-27). Classification + helper live in\ngateway/core/synthetic_label.py (EDIT_TYPES / REGEN_TYPES / PAID_PLANS).","operationId":"upload_file_internal_upload_post","parameters":[{"name":"x-internal-secret","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Internal-Secret"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_file_internal_upload_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/internal/job-status/{job_id}":{"get":{"tags":["internal"],"summary":"Internal Job Status","description":"Let workers verify job is still valid before processing (zombie protection).","operationId":"internal_job_status_internal_job_status__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"x-internal-secret","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Internal-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/internal/3d-result":{"post":{"tags":["internal"],"summary":"Report 3D Result","description":"Receive 3D job result from worker and update generations table.","operationId":"report_3d_result_internal_3d_result_post","parameters":[{"name":"x-internal-secret","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Internal-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/internal/apply-pricing":{"get":{"tags":["internal"],"summary":"Apply Pricing","description":"Om-authorized one-click apply of the weekly pricing-monitor suggestions.\nThe monitor email links here with the shared token; clicking executes the\npending price changes + reloads + restarts the gateway to propagate.","operationId":"apply_pricing_internal_apply_pricing_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/vitals":{"get":{"tags":["Admin Vitals"],"summary":"Get Vitals","description":"Get hardware vitals from all GPU machines.","operationId":"get_vitals_v1_admin_vitals_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/mushika-status":{"get":{"summary":"Mushika Status","operationId":"mushika_status_admin_api_mushika_status_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/ai-team":{"get":{"tags":["admin"],"summary":"Ai Team","operationId":"ai_team_admin_api_ai_team_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/ai-team/dispatch":{"post":{"tags":["admin"],"summary":"Ai Team Dispatch","description":"Om assigns a task from the portal.","operationId":"ai_team_dispatch_admin_api_ai_team_dispatch_post","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/ai-team/cancel":{"post":{"tags":["admin"],"summary":"Ai Team Cancel","operationId":"ai_team_cancel_admin_api_ai_team_cancel_post","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/ai-team/retry":{"post":{"tags":["admin"],"summary":"Ai Team Retry","operationId":"ai_team_retry_admin_api_ai_team_retry_post","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/odysseus":{"get":{"tags":["admin"],"summary":"Odysseus Proxy","description":"Proxy a manual research query to the in-house Odysseus service.\nForces a reliable local text model so the vision default is not picked.","operationId":"odysseus_proxy_admin_api_odysseus_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"token","in":"query","required":false,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/odysseus/status":{"get":{"tags":["admin"],"summary":"Odysseus Status","operationId":"odysseus_status_admin_api_odysseus_status_get","parameters":[{"name":"session_id","in":"query","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"token","in":"query","required":false,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/odysseus/result":{"post":{"tags":["admin"],"summary":"Odysseus Result","operationId":"odysseus_result_admin_api_odysseus_result_post","parameters":[{"name":"session_id","in":"query","required":true,"schema":{"type":"string","title":"Session Id"}},{"name":"token","in":"query","required":false,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tools/proxy/{path}":{"post":{"tags":["tools-proxy"],"summary":"Tools Proxy Disabled","operationId":"tools_proxy_disabled_v1_tools_proxy__path__post","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["tools-proxy"],"summary":"Tools Proxy Disabled","operationId":"tools_proxy_disabled_v1_tools_proxy__path__post","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/virtual-tryon":{"post":{"tags":["Virtual Try-On"],"summary":"Virtual Tryon","description":"Virtual Try-On: place a garment onto a person photo.\n\n- Cost: 40 credits ($0.040) per result","operationId":"virtual_tryon_v1_virtual_tryon_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VTONRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/virtual-tryon/outfit":{"post":{"tags":["Virtual Try-On"],"summary":"Virtual Tryon Outfit","description":"Single-call outfit try-on: supply a separate top and bottom garment, get one\ncomposite result. Runs two sequential VTON passes internally (lower first, upper\nlayered on the result). Charges 2x standard VTON credits.","operationId":"virtual_tryon_outfit_v1_virtual_tryon_outfit_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VTONOutfitRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/virtual-tryon/jobs/{job_id}":{"get":{"tags":["Virtual Try-On"],"summary":"Get Vton Job","operationId":"get_vton_job_v1_virtual_tryon_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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pricing/live":{"get":{"tags":["Pricing"],"summary":"Live Pricing","operationId":"live_pricing_v1_pricing_live_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/saree-tryon":{"post":{"tags":["Saree Try-On"],"summary":"Drape a saree onto a person (AI virtual try-on)","operationId":"saree_tryon_v1_saree_tryon_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SareeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video-tryon":{"post":{"tags":["Video Try-On"],"summary":"Video Try-On — wear a garment, then see yourself move in it","description":"Two-stage: dress the person in the garment, then animate the look into a\nshort video. Returns a job id; poll GET /v1/video-tryon/jobs/{id}. 200 credits.","operationId":"video_tryon_v1_video_tryon_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoTryonRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/support/chat":{"post":{"tags":["Support"],"summary":"AI support chat (visitor + customer aware)","operationId":"support_chat_v1_support_chat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupportRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/app/version":{"get":{"tags":["app"],"summary":"App Version","operationId":"app_version_v1_app_version_get","parameters":[{"name":"app","in":"query","required":false,"schema":{"type":"string","default":"lensora","title":"App"}},{"name":"platform","in":"query","required":false,"schema":{"type":"string","default":"android","title":"Platform"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/showroom":{"post":{"tags":["Showroom"],"summary":"Showroom — folded garment photo → showroom-ready try-on","description":"Upload ONE garment photo (even folded / on a shelf) and get a\ncomplete result: the garment is auto-reconstructed into a clean flat-lay, the\nbackground is removed, and it is shown worn — on an AI model by default, or on\nyour own uploaded photo or short video.\n\n**tryon_mode:** `ai-model` (default) | `own-photo` | `own-video`\n\n**Cost (charged once, refunded per failed step):**\n- ai-model / own-photo: 40 credits (+30 if the garment needs unfolding)\n- own-video: 202 credits (+30 if the garment needs unfolding)","operationId":"create_showroom_v1_showroom_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_showroom_v1_showroom_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/showroom/jobs/{job_id}":{"get":{"tags":["Showroom"],"summary":"Get Showroom Job","operationId":"get_showroom_job_v1_showroom_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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/image/add-shadow":{"post":{"tags":["Image"],"summary":"Add Shadow","description":"Add realistic AI-generated shadow to product images.","operationId":"add_shadow_v1_image_add_shadow_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIShadowRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIShadowResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/outpaint-from-upload":{"post":{"tags":["Image"],"summary":"Outpaint From Upload","description":"Mobile-friendly outpaint: take a multipart image upload, store it, and\ndelegate to the URL-based /outpaint endpoint. Lensora app uses this so users\ndon't have to host their photo at a public URL first.","operationId":"outpaint_from_upload_v1_image_outpaint_from_upload_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_outpaint_from_upload_v1_image_outpaint_from_upload_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutpaintResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/outpaint":{"post":{"tags":["Image"],"summary":"Outpaint Image","description":"Extend image beyond its borders (outpainting).","operationId":"outpaint_image_v1_image_outpaint_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutpaintRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutpaintResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/batch":{"post":{"tags":["Image"],"summary":"Batch Process","description":"Process multiple images in a single API call.","operationId":"batch_process_v1_image_batch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/batch/{batch_id}":{"get":{"tags":["Image"],"summary":"Get Batch Status","description":"Get status of all jobs in a batch.","operationId":"get_batch_status_v1_image_batch__batch_id__get","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"}}}}}}},"/v1/image/product-photo-catalogue-clean":{"post":{"tags":["Image"],"summary":"Marketplace Product Photo Cleaner","description":"Clean seller catalogue photos into marketplace-ready product images.\n\nUse this endpoint for Product Photo across PixelAPI and Lensora. It preserves the product crop, rebuilds catalogue text/layout, and returns a queued generation ID.\n\n**Cost:** 39 credits ($0.039) per image.\n\n**Form fields:** image, art_no, size_text, footer, output_format.","operationId":"create_product_photo_catalogue_clean_v1_image_product_photo_catalogue_clean_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_product_photo_catalogue_clean_v1_image_product_photo_catalogue_clean_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductPhotoCatalogueResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/caption":{"post":{"tags":["Image","image"],"summary":"Auto-generate captions, alt text, and SEO tags from product images","description":"Auto-generate product descriptions, SEO tags, and alt text using Vision-Language AI.\n\n**Modes:**\n- : caption + tags + alt text\n- : product description only\n- : SEO/search tags only\n- : accessibility alt text only\n\n**Cost:** 5 credits ($0.005) — Unique to PixelAPI, no mainstream competitor","operationId":"caption_image_v1_image_caption_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_caption_image_v1_image_caption_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/image/interior-design":{"post":{"tags":["Interior Design"],"summary":"HomeVision AI — Interior Design Visualization","description":"Generate photorealistic interior design visualizations from room photos.\n\n**Pipeline:** Room photo → SDXL style transfer → Photorealistic redesign\n\n**Room Types:** living_room, bedroom, kitchen, bathroom, office, dining_room\n\n**Styles:** modern_indian, vastu_compliant, minimalist, scandinavian, industrial, bohemian, traditional_indian, kerala_style, rajasthani_luxury, contemporary\n\n**Cost:** 6.7 credits (~$0.007) — 2x cheaper than InteriorAI / Spacely ($0.013)","operationId":"interior_design_v1_image_interior_design_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_interior_design_v1_image_interior_design_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video/auto-reel":{"post":{"tags":["Reel Director"],"summary":"Reel Director — turn source footage into a polished reel","description":"Reel Director can preserve a short source clip while adding music,\nor create a narrative highlight reel from longer footage. Auto mode keeps an\nequal-length, single-clip music edit intact instead of cutting or reordering it.\n\n**Story arc**: HOOK → WHAT IT DOES → HOW TO USE → CALL TO ACTION.\n\n**Highlight cuts are sentence-bounded** — no mid-word edits.\n\n**Inputs**: either a `source_url` (YouTube / direct mp4 URL), one multipart\n`source` upload, or ordered multipart `sources` uploads (max 10 clips,\n100 MB each, 500 MB combined).\n\n**Aspect**: `16:9` (default landscape), `9:16` (vertical for shorts/reels), `1:1`\n(square for IG feed).\n\n**BGM**: `calm` (default — sidechain-ducked under voice), `epic`, or `none`.\n\n**Edit mode**: `auto` preserves eligible equal-length music edits; `highlights`\nforces narrative cuts; `preserve` keeps the full timeline.\n\n**Cost**: 30 credits.","operationId":"auto_reel_v1_video_auto_reel_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_auto_reel_v1_video_auto_reel_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/video/auto-reel/{generation_id}":{"get":{"tags":["Reel Director"],"summary":"Reel Director — poll status","operationId":"auto_reel_status_v1_video_auto_reel__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/auto-reel/{generation_id}/dl":{"get":{"tags":["Reel Director"],"summary":"Auto Reel Download Signed","description":"Signed, owner-scoped, time-limited download — works from a bare browser link\n(the Bearer-only /download 401'd web clicks). HMAC proves the link was issued for this\nowner+reel and is unexpired; no API key in the URL.","operationId":"auto_reel_download_signed_v1_video_auto_reel__generation_id__dl_get","parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}},{"name":"exp","in":"query","required":true,"schema":{"type":"integer","title":"Exp"}},{"name":"sig","in":"query","required":true,"schema":{"type":"string","title":"Sig"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/video/auto-reel/{generation_id}/download":{"get":{"tags":["Reel Director"],"summary":"Auto Reel Download","description":"Proxy the worker mp4 back through the gateway.","operationId":"auto_reel_download_v1_video_auto_reel__generation_id__download_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vfx/edit-shot-exr/models":{"get":{"tags":["VFX"],"summary":"List V2V Models","description":"V2V model menu for the EXR tool (frontend was 404ing this -> showed raw shortcodes).","operationId":"list_v2v_models_v1_vfx_edit_shot_exr_models_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/vfx/edit-shot-exr/init":{"post":{"tags":["VFX"],"summary":"Init Job","operationId":"init_job_v1_vfx_edit_shot_exr_init_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/vfx/edit-shot-exr/upload-frame":{"post":{"tags":["VFX"],"summary":"Upload Frame","description":"Stream-write one EXR frame into the job's input dir.","operationId":"upload_frame_v1_vfx_edit_shot_exr_upload_frame_post","parameters":[{"name":"x-job-id","in":"header","required":true,"schema":{"type":"string","title":"X-Job-Id"}},{"name":"x-frame-number","in":"header","required":true,"schema":{"type":"integer","title":"X-Frame-Number"}},{"name":"x-direct-upload","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Direct-Upload"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vfx/edit-shot-exr/start":{"post":{"tags":["VFX"],"summary":"Start Job","operationId":"start_job_v1_vfx_edit_shot_exr_start_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/vfx/edit-shot-exr/status":{"get":{"tags":["VFX"],"summary":"Status","operationId":"status_v1_vfx_edit_shot_exr_status_get","parameters":[{"name":"job_id","in":"query","required":true,"schema":{"type":"string","title":"Job Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vfx/edit-shot-exr/approve-and-finalize":{"post":{"tags":["VFX"],"summary":"Approve And Finalize","operationId":"approve_and_finalize_v1_vfx_edit_shot_exr_approve_and_finalize_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/vfx/edit-shot-exr/download-matte":{"get":{"tags":["VFX"],"summary":"Download Matte","operationId":"download_matte_v1_vfx_edit_shot_exr_download_matte_get","parameters":[{"name":"job_id","in":"query","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"rgba","title":"Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vfx/edit-shot-exr/public-download/{token}":{"get":{"tags":["VFX"],"summary":"Public Download","operationId":"public_download_v1_vfx_edit_shot_exr_public_download__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"composited","title":"Type"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vfx/edit-shot-exr/download":{"get":{"tags":["VFX"],"summary":"Download","operationId":"download_v1_vfx_edit_shot_exr_download_get","parameters":[{"name":"job_id","in":"query","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"}}}}}}},"/v1/vfx/edit-shot-exr/preview":{"get":{"tags":["VFX"],"summary":"Preview","operationId":"preview_v1_vfx_edit_shot_exr_preview_get","parameters":[{"name":"job_id","in":"query","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"}}}}}}},"/v1/vfx/edit-shot-exr/encode-mov":{"post":{"tags":["VFX"],"summary":"Encode Mov","operationId":"encode_mov_v1_vfx_edit_shot_exr_encode_mov_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MovRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vfx/edit-shot-exr/mov-status":{"get":{"tags":["VFX"],"summary":"Mov Status","operationId":"mov_status_v1_vfx_edit_shot_exr_mov_status_get","parameters":[{"name":"job_id","in":"query","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"}}}}}}},"/v1/vfx/edit-shot-exr/download-mov":{"get":{"tags":["VFX"],"summary":"Download Mov","operationId":"download_mov_v1_vfx_edit_shot_exr_download_mov_get","parameters":[{"name":"job_id","in":"query","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"}}}}}}},"/v1/vfx/edit-shot-exr/my-jobs":{"get":{"tags":["VFX"],"summary":"My Jobs","description":"Let a user retrieve their own recent EXR shots (so a stuck/last process can be\nresumed or re-downloaded from the UI instead of being lost).","operationId":"my_jobs_v1_vfx_edit_shot_exr_my_jobs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/vfx/element/types":{"get":{"tags":["VFX"],"summary":"Types","operationId":"types_v1_vfx_element_types_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/vfx/element/generate":{"post":{"tags":["VFX"],"summary":"Generate","operationId":"generate_v1_vfx_element_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/vfx/element/status":{"get":{"tags":["VFX"],"summary":"Status","operationId":"status_v1_vfx_element_status_get","parameters":[{"name":"job_id","in":"query","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"}}}}}}},"/v1/vfx/element/preview":{"get":{"tags":["VFX"],"summary":"Preview","operationId":"preview_v1_vfx_element_preview_get","parameters":[{"name":"job_id","in":"query","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"}}}}}}},"/v1/vfx/element/download":{"get":{"tags":["VFX"],"summary":"Download","operationId":"download_v1_vfx_element_download_get","parameters":[{"name":"job_id","in":"query","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"fmt","in":"query","required":false,"schema":{"type":"string","default":"exr","title":"Fmt"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vfx/comp":{"post":{"tags":["VFX"],"summary":"Vfx Comp","operationId":"vfx_comp_v1_vfx_comp_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_vfx_comp_v1_vfx_comp_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/vfx/comp/status":{"get":{"tags":["VFX"],"summary":"Vfx Comp Status","operationId":"vfx_comp_status_v1_vfx_comp_status_get","parameters":[{"name":"job_id","in":"query","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"}}}}}}},"/v1/vfx/comp/download":{"get":{"tags":["VFX"],"summary":"Vfx Comp Download","operationId":"vfx_comp_download_v1_vfx_comp_download_get","parameters":[{"name":"job_id","in":"query","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"fmt","in":"query","required":false,"schema":{"type":"string","default":"preview","title":"Fmt"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/3d/status/{job_id}":{"get":{"tags":["3D Generation"],"summary":"Job Status","description":"Check 3D generation status by job ID.","operationId":"job_status_v1_3d_status__job_id__get","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"}}}}}}},"/v1/3d/result/{job_id}":{"get":{"tags":["3D Generation"],"summary":"Get Result","description":"Get completed 3D generation result.","operationId":"get_result_v1_3d_result__job_id__get","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"}}}}}}},"/v1/3d/pricing":{"get":{"tags":["3D Generation"],"summary":"Get Pricing","operationId":"get_pricing_v1_3d_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/3d/text-status/{job_id}":{"get":{"tags":["3D Generation"],"summary":"Text3D Status","description":"Check text-to-3D job status.","operationId":"text3d_status_v1_3d_text_status__job_id__get","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"}}}}}}},"/v1/3d/text-pricing":{"get":{"tags":["3D Generation"],"summary":"Text3D Pricing","operationId":"text3d_pricing_v1_3d_text_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/3d/scene-status/{job_id}":{"get":{"tags":["3D Generation"],"summary":"Scene Job Status","description":"Check scene-to-3D generation status by job ID.","operationId":"scene_job_status_v1_3d_scene_status__job_id__get","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"}}}}}}},"/v1/3d/scene-pricing":{"get":{"tags":["3D Generation"],"summary":"Get Scene Pricing","operationId":"get_scene_pricing_v1_3d_scene_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/studio/init":{"post":{"tags":["Lensora Studio"],"summary":"Studio Init","description":"Upload photo + return AI-detected object proposals.\n\nCost: 5 credits ($0.005). Returns up to N foreground object proposals\nwith bbox + label + category. The user picks one to feed /v1/studio/transform.","operationId":"studio_init_v1_studio_init_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_studio_init_v1_studio_init_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/studio/transform":{"post":{"tags":["Lensora Studio"],"summary":"Studio Transform","description":"Run the full Lensora pipeline. 75 credits. Returns job_id.\n\nPipeline: source + bbox → crop → remove-bg → optional replace-bg →\n3D-generate → turntable/cinematic/dolly render → final MP4.\n\nClient polls /v1/studio/result/{job_id} for progress + final output.","operationId":"studio_transform_v1_studio_transform_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransformRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/studio/result/{job_id}":{"get":{"tags":["Lensora Studio"],"summary":"Studio Result","operationId":"studio_result_v1_studio_result__job_id__get","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"}}}}}}},"/v1/studio/pricing":{"get":{"tags":["Lensora Studio"],"summary":"Studio Pricing","operationId":"studio_pricing_v1_studio_pricing_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/wedding-projects":{"post":{"tags":["Wedding Projects"],"summary":"Create Project","operationId":"create_project_v1_wedding_projects_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Wedding Projects"],"summary":"List Projects","operationId":"list_projects_v1_wedding_projects_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wedding-projects/{project_id}":{"get":{"tags":["Wedding Projects"],"summary":"Get Project","operationId":"get_project_v1_wedding_projects__project_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wedding-projects/{project_id}/assets":{"get":{"tags":["Wedding Projects"],"summary":"List Assets","operationId":"list_assets_v1_wedding_projects__project_id__assets_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Wedding Projects"],"summary":"Upload Asset","operationId":"upload_asset_v1_wedding_projects__project_id__assets_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_asset_v1_wedding_projects__project_id__assets_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wedding-projects/{project_id}/assets/{asset_id}":{"delete":{"tags":["Wedding Projects"],"summary":"Delete Asset","operationId":"delete_asset_v1_wedding_projects__project_id__assets__asset_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","title":"Asset Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wedding-projects/{project_id}/start":{"post":{"tags":["Wedding Projects"],"summary":"Start Project","operationId":"start_project_v1_wedding_projects__project_id__start_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wedding-projects/{project_id}/cancel":{"post":{"tags":["Wedding Projects"],"summary":"Cancel Project","operationId":"cancel_project_v1_wedding_projects__project_id__cancel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wedding-projects/{project_id}/retry":{"post":{"tags":["Wedding Projects"],"summary":"Retry Assets","operationId":"retry_assets_v1_wedding_projects__project_id__retry_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetryRequest"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wedding-projects/{project_id}/manifest":{"get":{"tags":["Wedding Projects"],"summary":"Get Manifest","operationId":"get_manifest_v1_wedding_projects__project_id__manifest_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wedding-projects/{project_id}/recipe":{"patch":{"tags":["Wedding Projects"],"summary":"Recipe","operationId":"recipe_v1_wedding_projects__project_id__recipe_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Recipe"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wedding-projects/{project_id}/review":{"patch":{"tags":["Wedding Projects"],"summary":"Review","operationId":"review_v1_wedding_projects__project_id__review_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/gateway__api__v1__wedding_workflow__Review"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Wedding Projects"],"summary":"Review Summary","operationId":"review_summary_v1_wedding_projects__project_id__review_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wedding-projects/{project_id}/assets/{asset_id}/analyze":{"post":{"tags":["Wedding Projects"],"summary":"Analyze","operationId":"analyze_v1_wedding_projects__project_id__assets__asset_id__analyze_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","title":"Asset Id"}},{"name":"eyes","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Eyes"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wedding-projects/{project_id}/assets/{asset_id}/original":{"get":{"tags":["Wedding Projects"],"summary":"Original","operationId":"original_v1_wedding_projects__project_id__assets__asset_id__original_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","title":"Asset Id"}},{"name":"thumbnail","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Thumbnail"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wedding-projects/{project_id}/assets/{asset_id}/preview":{"get":{"tags":["Wedding Projects"],"summary":"Preview","operationId":"preview_v1_wedding_projects__project_id__assets__asset_id__preview_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"project_id","in":"path","required":true,"schema":{"type":"string","title":"Project Id"}},{"name":"asset_id","in":"path","required":true,"schema":{"type":"string","title":"Asset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invitation-video/presets":{"get":{"tags":["invitation-video"],"summary":"Get curated multicultural invitation presets and theme options","description":"Returns curated presets across cultures including Generic Celebration, Wedding, Birthday, etc.","operationId":"get_presets_v1_invitation_video_presets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/invitation-video/upload-photo":{"post":{"tags":["invitation-video"],"summary":"Upload photo for invitation video","description":"Uploads a portrait/couple/host photo to public storage and returns URL.","operationId":"upload_invitation_photo_v1_invitation_video_upload_photo_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_invitation_photo_v1_invitation_video_upload_photo_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/invitation-video/batch":{"post":{"tags":["invitation-video"],"summary":"Render bulk personalized invitation videos for multiple contacts","description":"Renders personalized motion invitation videos per contact in a guest list.\nEach recipient gets an individual video with their name rendered on the opening greeting slide.\nCosts 40 credits ($0.040 USD) per recipient.","operationId":"create_batch_invitations_v1_invitation_video_batch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchInvitationVideoRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/invitation-video/batch/{batch_id}/zip":{"get":{"tags":["invitation-video"],"summary":"Download all rendered batch videos in a single ZIP","description":"Packages all finished generation videos for a batch into a zip file.","operationId":"download_batch_zip_v1_invitation_video_batch__batch_id__zip_get","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"}}}}}}},"/v1/invitation-video/generate":{"post":{"tags":["invitation-video"],"summary":"Generate a luxury 1080x1920 motion video invitation","description":"Submits a video generation request. Costs 40 credits ($0.040 USD / ~???3.30).\nRenders high-definition motion cards with cinematic Ken Burns drift, auto-wrapping Indic/Arabic/Latin typography,\nand synchronized celebratory audio in ~16.5 seconds.","operationId":"generate_invitation_video_v1_invitation_video_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationVideoRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/invitation-video/{generation_id}":{"get":{"tags":["invitation-video"],"summary":"Poll invitation video status","description":"Checks the status of an invitation generation job and retrieves completed video.","operationId":"get_invitation_status_v1_invitation_video__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invitation-video/{generation_id}/dl":{"get":{"tags":["invitation-video"],"summary":"Direct signed download for invitation video","description":"Signed, owner-scoped download url that allows direct browser downloads.","operationId":"download_invitation_signed_v1_invitation_video__generation_id__dl_get","parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}},{"name":"exp","in":"query","required":true,"schema":{"type":"integer","description":"Timestamp expiry","title":"Exp"},"description":"Timestamp expiry"},{"name":"sig","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature","title":"Sig"},"description":"HMAC signature"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invitation-videos/presets":{"get":{"tags":["invitation-video"],"summary":"Get curated multicultural invitation presets and theme options","description":"Returns curated presets across cultures including Generic Celebration, Wedding, Birthday, etc.","operationId":"get_presets_v1_invitation_videos_presets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/invitation-videos/upload-photo":{"post":{"tags":["invitation-video"],"summary":"Upload photo for invitation video","description":"Uploads a portrait/couple/host photo to public storage and returns URL.","operationId":"upload_invitation_photo_v1_invitation_videos_upload_photo_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_invitation_photo_v1_invitation_videos_upload_photo_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/invitation-videos/batch":{"post":{"tags":["invitation-video"],"summary":"Render bulk personalized invitation videos for multiple contacts","description":"Renders personalized motion invitation videos per contact in a guest list.\nEach recipient gets an individual video with their name rendered on the opening greeting slide.\nCosts 40 credits ($0.040 USD) per recipient.","operationId":"create_batch_invitations_v1_invitation_videos_batch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchInvitationVideoRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/invitation-videos/batch/{batch_id}/zip":{"get":{"tags":["invitation-video"],"summary":"Download all rendered batch videos in a single ZIP","description":"Packages all finished generation videos for a batch into a zip file.","operationId":"download_batch_zip_v1_invitation_videos_batch__batch_id__zip_get","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"}}}}}}},"/v1/invitation-videos/generate":{"post":{"tags":["invitation-video"],"summary":"Generate a luxury 1080x1920 motion video invitation","description":"Submits a video generation request. Costs 40 credits ($0.040 USD / ~???3.30).\nRenders high-definition motion cards with cinematic Ken Burns drift, auto-wrapping Indic/Arabic/Latin typography,\nand synchronized celebratory audio in ~16.5 seconds.","operationId":"generate_invitation_video_v1_invitation_videos_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationVideoRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/invitation-videos/{generation_id}":{"get":{"tags":["invitation-video"],"summary":"Poll invitation video status","description":"Checks the status of an invitation generation job and retrieves completed video.","operationId":"get_invitation_status_v1_invitation_videos__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/invitation-videos/{generation_id}/dl":{"get":{"tags":["invitation-video"],"summary":"Direct signed download for invitation video","description":"Signed, owner-scoped download url that allows direct browser downloads.","operationId":"download_invitation_signed_v1_invitation_videos__generation_id__dl_get","parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}},{"name":"exp","in":"query","required":true,"schema":{"type":"integer","description":"Timestamp expiry","title":"Exp"},"description":"Timestamp expiry"},{"name":"sig","in":"query","required":true,"schema":{"type":"string","description":"HMAC signature","title":"Sig"},"description":"HMAC signature"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/moderation/classify":{"post":{"tags":["Moderation"],"summary":"Classify Content","description":"Classify image(s) for NSFW/adult content.\n\nUses Falconsai ViT classifier — GPU-accelerated, <50ms per image on LLM3.\n\n**Pricing:** 0.5 credits per image ($0.0005, 2x cheaper than AWS Rekognition $0.001)\n\n**Request:**\n- Upload up to 10 image files, OR\n- Provide up to 10 comma-separated image URLs\n\n**Response:**\n- `label`: \"nsfw\" or \"safe\"\n- `nsfw_score`: probability (0.0–1.0)\n- `safe_score`: probability (0.0–1.0)\n- `confidence`: how confident the model is (max of nsfw_score, safe_score)\n\n**Threshold:** label=\"nsfw\" when nsfw_score > 0.5","operationId":"classify_content_v1_moderation_classify_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_classify_content_v1_moderation_classify_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModerationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/moderation/classify/{moderation_id}":{"get":{"tags":["Moderation"],"summary":"Get Moderation Result","description":"Poll moderation result by ID.","operationId":"get_moderation_result_v1_moderation_classify__moderation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"moderation_id","in":"path","required":true,"schema":{"type":"string","title":"Moderation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Moderation Result V1 Moderation Classify  Moderation Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/portrait/studio":{"post":{"tags":["Portrait"],"summary":"Create Portrait","description":"Queue a portrait generation job. Returns generation_id to poll.\n\npulid_strength >= 1.8 engages identity-lock mode (post-process face-swap with\ninswapper_128) — guarantees the output face matches the input face.","operationId":"create_portrait_v1_portrait_studio_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_create_portrait_v1_portrait_studio_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/portrait/studio/{generation_id}":{"get":{"tags":["Portrait"],"summary":"Get Portrait Status","description":"Poll portrait generation status. Output URL is set when status='completed'.","operationId":"get_portrait_status_v1_portrait_studio__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/portrait/styles":{"get":{"tags":["Portrait"],"summary":"List Portrait Styles","description":"List available portrait styles.","operationId":"list_portrait_styles_v1_portrait_styles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/photo-restore/generate":{"post":{"tags":["photo-restore"],"summary":"Generate Photo Restore","operationId":"generate_photo_restore_v1_photo_restore_generate_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_generate_photo_restore_v1_photo_restore_generate_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhotoRestoreAsyncResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/photo-restore/{generation_id}":{"get":{"tags":["photo-restore"],"summary":"Get Photo Restore Status","operationId":"get_photo_restore_status_v1_photo_restore__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/real-estate/stage":{"post":{"tags":["Real Estate"],"summary":"Virtual Staging for Room Photo","description":"Virtual Staging using SDXL + ControlNet-Canny with local Vastu/Indian designs.\nCosts 6.5 credits.","operationId":"stage_v1_real_estate_stage_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_stage_v1_real_estate_stage_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/real-estate/cleanup":{"post":{"tags":["Real Estate"],"summary":"Real Estate Photo Cleanup (Declutter, Sky Replace, Day-to-Dusk, Perspective Correct)","description":"Runs property photo cleaning. Costs 5 credits.","operationId":"cleanup_v1_real_estate_cleanup_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_cleanup_v1_real_estate_cleanup_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/real-estate/floorplan-render":{"post":{"tags":["Real Estate"],"summary":"Extrude 2D Floorplan layout to 3D GLB model","description":"Extrude 2D Floorplan layouts into interactive 3D spaces with styled furniture.\nCosts 500 credits.","operationId":"floorplan_render_v1_real_estate_floorplan_render_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_floorplan_render_v1_real_estate_floorplan_render_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/real-estate/whatsapp-deliver":{"post":{"tags":["Real Estate"],"summary":"Send completed generation output to Telegram as a simulated WhatsApp business delivery","description":"Simulates sending the completed visual/3D layout link to the buyer's phone via WhatsApp.\nDelivers a message webhook payload to `@lensorabot_bot` for developer validation.","operationId":"whatsapp_deliver_v1_real_estate_whatsapp_deliver_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_whatsapp_deliver_v1_real_estate_whatsapp_deliver_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/multimodal/capabilities":{"get":{"tags":["Multimodal"],"summary":"Current multimodal availability","description":"Read-only service availability snapshot; no credits are charged and no job is submitted. Check the entry for the operation and, for describe-image, the quality tier you intend to use. This is not a reservation or a guarantee of successful generation. Account and concurrency limits still apply. Existing jobs can still be polled by ID.","operationId":"get_multimodal_capabilities_v1_multimodal_capabilities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultimodalCapabilities"}}}}}}},"/v1/multimodal/audio-to-image":{"post":{"tags":["Multimodal"],"summary":"Audio To Image","description":"Check GET /v1/multimodal/capabilities before uploading. When this capability is unavailable, valid requests return HTTP 503 with detail.error=model_unavailable before credit charges or job creation. Availability is checked again at submission; account and concurrency limits still apply.","operationId":"audio_to_image_v1_multimodal_audio_to_image_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_audio_to_image_v1_multimodal_audio_to_image_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"503":{"description":"Service unavailable. No job is accepted. A model_unavailable error is returned before credit charges.","content":{"application/json":{"example":{"detail":{"error":"model_unavailable","message":"This tool is temporarily unavailable. Please try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/multimodal/image-to-video":{"post":{"tags":["Multimodal"],"summary":"Image To Video","description":"Video generation has been discontinued. Valid authenticated requests return HTTP 403 with detail.error=service_discontinued before credit charges or job creation. Existing jobs can still be polled by ID.","operationId":"image_to_video_v1_multimodal_image_to_video_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_image_to_video_v1_multimodal_image_to_video_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"403":{"description":"Video generation has been discontinued. No job is accepted or credits charged.","content":{"application/json":{"example":{"detail":{"error":"service_discontinued","message":"You are not authorized to use this endpoint. PixelAPI video generation (text-to-video and image-to-video) has been discontinued."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"deprecated":true,"security":[{"HTTPBearer":[]}]}},"/v1/multimodal/refine-prompt":{"post":{"tags":["Multimodal"],"summary":"Refine Prompt","description":"Check GET /v1/multimodal/capabilities before uploading. When this capability is unavailable, valid requests return HTTP 503 with detail.error=model_unavailable before credit charges or job creation. Availability is checked again at submission; account and concurrency limits still apply.","operationId":"refine_prompt_v1_multimodal_refine_prompt_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_refine_prompt_v1_multimodal_refine_prompt_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"503":{"description":"Service unavailable. No job is accepted. A model_unavailable error is returned before credit charges.","content":{"application/json":{"example":{"detail":{"error":"model_unavailable","message":"This tool is temporarily unavailable. Please try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/multimodal/describe-image":{"post":{"tags":["Multimodal"],"summary":"Describe Image","description":"Use quality=fast (the default) for image captioning. quality=full uses a separate capability and may be unavailable even when fast is available. Check GET /v1/multimodal/capabilities for each tier before uploading. When the selected tier is unavailable, valid requests return HTTP 503 with detail.error=model_unavailable before credit charges or job creation. Account and concurrency limits still apply.","operationId":"describe_image_v1_multimodal_describe_image_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_describe_image_v1_multimodal_describe_image_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"503":{"description":"Service unavailable. No job is accepted. A model_unavailable error is returned before credit charges.","content":{"application/json":{"example":{"detail":{"error":"model_unavailable","message":"This tool is temporarily unavailable. Please try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/multimodal/describe-audio":{"post":{"tags":["Multimodal"],"summary":"Describe Audio","description":"Check GET /v1/multimodal/capabilities before uploading. When this capability is unavailable, valid requests return HTTP 503 with detail.error=model_unavailable before credit charges or job creation. Availability is checked again at submission; account and concurrency limits still apply.","operationId":"describe_audio_v1_multimodal_describe_audio_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_describe_audio_v1_multimodal_describe_audio_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"503":{"description":"Service unavailable. No job is accepted. A model_unavailable error is returned before credit charges.","content":{"application/json":{"example":{"detail":{"error":"model_unavailable","message":"This tool is temporarily unavailable. Please try again later."}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/multimodal/{generation_id}":{"get":{"tags":["Multimodal"],"summary":"Get Multimodal Status","operationId":"get_multimodal_status_v1_multimodal__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultimodalStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/tts/generate":{"post":{"tags":["tts"],"summary":"Generate Tts","operationId":"generate_tts_v1_tts_generate_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_generate_tts_v1_tts_generate_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/tts/languages":{"get":{"tags":["tts"],"summary":"List Languages","operationId":"list_languages_v1_tts_languages_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/tts/status/{generation_id}":{"get":{"tags":["tts"],"summary":"Get Tts Status","operationId":"get_tts_status_v1_tts_status__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/pixelforge/styles":{"get":{"tags":["PixelForge — Game Assets"],"summary":"Get Styles","operationId":"get_styles_v1_pixelforge_styles_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/pixelforge/generate":{"post":{"tags":["PixelForge — Game Assets"],"summary":"Generate Sprite","operationId":"generate_sprite_v1_pixelforge_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PixelForgeGenerateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/pixelforge/sketch":{"post":{"tags":["PixelForge — Game Assets"],"summary":"Sketch To Pixel","description":"Sketch-controlled pixel art. Customer supplies a line drawing (URL),\nControlNet-Scribble + pixel-art-xl LoRA generate a polished pixel-art\nrendering that follows the sketch's composition. This is the high-quality\npath for single-character / specific-pose sprites — the LoRA's spritesheet\nbias is bypassed because the sketch dictates the layout.","operationId":"sketch_to_pixel_v1_pixelforge_sketch_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PixelForgeSketchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/pixelforge/{generation_id}":{"get":{"tags":["PixelForge — Game Assets"],"summary":"Get Status","operationId":"get_status_v1_pixelforge__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/portal":{"head":{"tags":["Admin"],"summary":"Dashboard Page","operationId":"dashboard_page_admin_portal_head","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Dashboard Page","operationId":"dashboard_page_admin_portal_head","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/dashboard":{"head":{"tags":["Admin"],"summary":"Dashboard Page","operationId":"dashboard_page_admin_dashboard_head","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Dashboard Page","operationId":"dashboard_page_admin_dashboard_head","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/supervisor/{token}":{"head":{"tags":["Admin"],"summary":"Dashboard Page Path","operationId":"dashboard_page_path_admin_supervisor__token__head","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Dashboard Page Path","operationId":"dashboard_page_path_admin_supervisor__token__head","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/portal/{token}":{"head":{"tags":["Admin"],"summary":"Dashboard Page Path","operationId":"dashboard_page_path_admin_portal__token__head","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Dashboard Page Path","operationId":"dashboard_page_path_admin_portal__token__head","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/dashboard/{token}":{"head":{"tags":["Admin"],"summary":"Dashboard Page Path","operationId":"dashboard_page_path_admin_dashboard__token__head","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Admin"],"summary":"Dashboard Page Path","operationId":"dashboard_page_path_admin_dashboard__token__head","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/infra":{"get":{"tags":["Admin"],"summary":"Infra Dashboard","operationId":"infra_dashboard_admin_infra_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/wan-status":{"get":{"tags":["Admin"],"summary":"Wan Status","description":"Which ISP/WAN is serving pixelapi+geomind right now (published every 3 min\nby wan_cf_failover.py on .123). For the admin-portal ISP badge (Om 2026-07-08).","operationId":"wan_status_admin_api_wan_status_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/ac-sentry":{"get":{"tags":["Admin"],"summary":"Ac Sentry","description":"AC-SENTRY: office AC room temperature (sensor daemon on llm2:9191).\nOm's IoT temperature monitor (2026-10-02). Room must stay <35C.","operationId":"ac_sentry_admin_api_ac_sentry_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"mins","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Mins"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/workflow-status":{"get":{"tags":["Admin"],"summary":"Workflow Status","description":"Workflow client LAN snapshot (active PCs, NAS, network health).\nJSON is written by the office-.123 agent after a live probe; no secrets.","operationId":"workflow_status_admin_api_workflow_status_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/stats":{"get":{"tags":["Admin"],"summary":"Get Stats","operationId":"get_stats_admin_api_stats_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/feedback":{"get":{"tags":["Admin"],"summary":"Admin Feedback","operationId":"admin_feedback_admin_api_feedback_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"min_rating","in":"query","required":false,"schema":{"type":"integer","maximum":5,"minimum":0,"default":0,"title":"Min Rating"}},{"name":"max_rating","in":"query","required":false,"schema":{"type":"integer","maximum":5,"minimum":1,"default":5,"title":"Max Rating"}},{"name":"model","in":"query","required":false,"schema":{"type":"string","title":"Model"}},{"name":"category","in":"query","required":false,"schema":{"type":"string","title":"Category"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/recent":{"get":{"tags":["Admin"],"summary":"Recent Generations","operationId":"recent_generations_admin_api_recent_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"model","in":"query","required":false,"schema":{"type":"string","title":"Model"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","title":"Status"}},{"name":"email","in":"query","required":false,"schema":{"type":"string","title":"Email"}},{"name":"audience","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Audience"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/generations-by-user":{"get":{"tags":["Admin"],"summary":"Generations By User","description":"User-wise grouped generations for manual review and monitoring (Om 2026-10-08).","operationId":"generations_by_user_admin_api_generations_by_user_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":7,"title":"Days"}},{"name":"audience","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Audience"}},{"name":"health","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Health"}},{"name":"model","in":"query","required":false,"schema":{"type":"string","title":"Model"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","title":"Q"}},{"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"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/job-input":{"get":{"tags":["Admin"],"summary":"Job Input","description":"Full input images + params for ONE job (lazy-loaded by the admin QC view so the\nlist endpoint stays light).","operationId":"job_input_admin_api_job_input_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"id","in":"query","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/output-thumb":{"get":{"tags":["Admin"],"summary":"Output Thumb","description":"OUTPUT_THUMB_V1 (2026-09-15): small cached JPEG of a job's OUTPUT. File-backed outputs\n(https://api.pixelapi.dev/outputs/... -> /home/om/pixelapi-storage/...) were shown in the admin\nUI only as a bare link (no <img>), so the GEOmind app's admin view never displayed generated\nimages. 9 MB PNGs are also too heavy for the app; this serves a <=600px JPEG instead.","operationId":"output_thumb_admin_api_output_thumb_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"id","in":"query","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/output-media":{"get":{"tags":["Admin"],"summary":"Output Media","description":"ADMIN_QUARANTINE_OUTPUT_MEDIA_V1 (2026-10-09): Stream full-resolution output image for admin\nreview and app imgproxy. Falls back to ops quarantine if public copy was purged by 24h retention.","operationId":"output_media_admin_api_output_media_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"url","in":"query","required":false,"schema":{"type":"string","title":"Url"}},{"name":"id","in":"query","required":false,"schema":{"type":"string","title":"Id"}},{"name":"stem","in":"query","required":false,"schema":{"type":"string","title":"Stem"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/input-thumb":{"get":{"tags":["Admin"],"summary":"Input Thumb","description":"Small cached JPEG thumbnail of a job's primary source input, resolved wherever the\ntool stored it (data-URI / server file / URL). Cached to disk keyed by job id so the\nGenerations list can render every input inline without bloating the list payload.\nReturns 204 for prompt-only jobs (no source image).","operationId":"input_thumb_admin_api_input_thumb_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"id","in":"query","required":true,"schema":{"type":"string","title":"Id"}},{"name":"source_key","in":"query","required":false,"schema":{"type":"string","default":"","title":"Source Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/system":{"get":{"tags":["Admin"],"summary":"System Health","operationId":"system_health_admin_api_system_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/paid-inactive":{"get":{"tags":["Admin"],"summary":"Admin Paid Inactive","description":"Paying users who have run ZERO jobs — they paid but never used the product\n(onboarding leak + churn/refund risk; Om flagged juhliepro). Surfaced for QC.","operationId":"admin_paid_inactive_admin_api_paid_inactive_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/user-jobs":{"get":{"tags":["Admin"],"summary":"Admin User Jobs","description":"Every job a user has rendered/processed, for background QC. The generations table\npersists indefinitely (only the OUTPUT FILES expire at ~24h), so detail is available\nwell beyond the 1-week bar. Newest-first with status / error / credits / timing.","operationId":"admin_user_jobs_admin_api_user_jobs_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"user_id","in":"query","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","default":14,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/support-chats":{"get":{"tags":["Admin"],"summary":"Admin Support Chats","description":"List support-chat sessions (newest first) for QC review.","operationId":"admin_support_chats_admin_api_support_chats_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/translate":{"post":{"tags":["Admin"],"summary":"Admin Translate","description":"2026-07-05 (Om): translate a support-chat message to English for admin QC.\nPix chats with users in their own language; Om reviews in English. Uses the\nlocal gemma on llm2 (no external API, no data leaves the fleet).","operationId":"admin_translate_admin_api_translate_post","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/support-chat":{"get":{"tags":["Admin"],"summary":"Admin Support Chat","description":"Full transcript of one support-chat session.","operationId":"admin_support_chat_admin_api_support_chat_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"session_id","in":"query","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/users":{"get":{"tags":["Admin"],"summary":"Admin Users","operationId":"admin_users_admin_api_users_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","default":"created_at","title":"Sort By"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","default":"desc","title":"Order"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","default":"","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/user-detail":{"get":{"tags":["Admin"],"summary":"Admin User Detail","operationId":"admin_user_detail_admin_api_user_detail_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"user_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"}},{"name":"email","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"default":7,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/errors":{"get":{"tags":["Admin"],"summary":"Admin Errors","operationId":"admin_errors_admin_api_errors_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Hours"}},{"name":"minutes","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Minutes"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/metrics":{"get":{"tags":["Admin"],"summary":"Admin Metrics","operationId":"admin_metrics_admin_api_metrics_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","default":"24h","title":"Period"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/alerts":{"get":{"tags":["Admin"],"summary":"Admin Alerts","operationId":"admin_alerts_admin_api_alerts_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/block":{"post":{"tags":["Admin"],"summary":"Block User","description":"Block an email from signing up and disable existing account.","operationId":"block_user_admin_api_block_post","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/unblock":{"post":{"tags":["Admin"],"summary":"Unblock User","description":"Unblock an email and re-enable account.","operationId":"unblock_user_admin_api_unblock_post","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/revoke":{"post":{"tags":["Admin"],"summary":"Revoke Api Key","description":"Revoke a user's API key and generate a new disabled one.","operationId":"revoke_api_key_admin_api_revoke_post","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/set-credits":{"post":{"tags":["Admin"],"summary":"Set Credits","description":"Set a user's credit balance (admin override).","operationId":"set_credits_admin_api_set_credits_post","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/blocked":{"get":{"tags":["Admin"],"summary":"List Blocked","description":"List all blocked emails.","operationId":"list_blocked_admin_api_blocked_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/user/{user_id}":{"get":{"tags":["Admin"],"summary":"Get User Detail","description":"Get detailed info for a specific user.","operationId":"get_user_detail_admin_api_user__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"integer","title":"User Id"}},{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/churn-feedback":{"get":{"tags":["Admin"],"summary":"Admin Churn Feedback","operationId":"admin_churn_feedback_admin_api_churn_feedback_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/payments":{"get":{"tags":["Admin"],"summary":"Admin Get Payments","operationId":"admin_get_payments_admin_api_payments_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/supervisor":{"get":{"tags":["Admin"],"summary":"Supervisor Dashboard","operationId":"supervisor_dashboard_admin_api_supervisor_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/bridge_dispatch_register":{"post":{"tags":["Admin"],"summary":"Bridge Dispatch Register","operationId":"bridge_dispatch_register_admin_api_bridge_dispatch_register_post","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"note","in":"query","required":false,"schema":{"type":"string","default":"","title":"Note"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/qc-supervisor":{"get":{"tags":["Admin"],"summary":"Qc Supervisor State","description":"Live state of the autonomous QC + performance supervisor (Om 2026-08-26).\n\nRead-only: the supervisor publishes a JSON blob to Redis key\npixelapi:claude_qc:portal; this endpoint just serves it so a human can\nwatch current / ongoing / queued / completed / surrendered work.","operationId":"qc_supervisor_state_admin_api_qc_supervisor_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/qc-incident":{"get":{"tags":["Admin"],"summary":"Qc Incident","description":"Full incident detail with resolved pre/post image URLs.","operationId":"qc_incident_admin_api_qc_incident_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"id","in":"query","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/qc-media":{"get":{"tags":["Admin"],"summary":"Qc Media","description":"Bytes for one supervisor evidence / quarantine / job-input image.","operationId":"qc_media_admin_api_qc_media_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"incident","in":"query","required":true,"schema":{"type":"string","title":"Incident"}},{"name":"idx","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Idx"}},{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"","title":"Kind"}},{"name":"job","in":"query","required":false,"schema":{"type":"string","default":"","title":"Job"}},{"name":"key","in":"query","required":false,"schema":{"type":"string","default":"","title":"Key"}},{"name":"path","in":"query","required":false,"schema":{"type":"string","default":"","title":"Path"}},{"name":"stem","in":"query","required":false,"schema":{"type":"string","default":"","title":"Stem"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/qc-decide":{"post":{"tags":["Admin"],"summary":"Qc Decide","description":"Owner approve (resume with next AI) or reject (purge from queue).","operationId":"qc_decide_admin_api_qc_decide_post","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_QcDecision"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/mail-pending":{"get":{"tags":["Admin"],"summary":"Admin Mail Pending","description":"Approval queue: pending first, then recent decisions.","operationId":"admin_mail_pending_admin_api_mail_pending_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/mail-approve":{"post":{"tags":["Admin"],"summary":"Admin Mail Approve","description":"Approve a queued customer email; the 60s monitor loop sends it.","operationId":"admin_mail_approve_admin_api_mail_approve_post","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_MailDecision"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/mail-reject":{"post":{"tags":["Admin"],"summary":"Admin Mail Reject","description":"Reject a queued customer email; it will never be sent.","operationId":"admin_mail_reject_admin_api_mail_reject_post","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_MailDecision"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/supervisor-audit":{"get":{"tags":["Admin"],"summary":"Supervisor Audit","description":"Returns comprehensive supervisor task review history since inception:\n1. Overall inception metrics & tool statistics\n2. Evolved pipeline cases (autonomous remediation promoted to PASS)\n3. Surrendered & rejected tasks\n4. Tasks skipped during supervisor pre-qualification\n5. Paginated & filterable list of reviewed tasks","operationId":"supervisor_audit_admin_api_supervisor_audit_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}},{"name":"verdict","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verdict"}},{"name":"tool","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Search"}},{"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"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/coinswitch":{"get":{"tags":["Admin"],"summary":"Admin Coinswitch","description":"Live CoinSwitch paper/live report. No exchange credentials are returned.","operationId":"admin_coinswitch_admin_api_coinswitch_get","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/api/coinswitch/mode":{"post":{"tags":["Admin"],"summary":"Admin Coinswitch Mode","description":"Manual paper/live lock. confirm must be PAPER_MODE or GO_LIVE.","operationId":"admin_coinswitch_mode_admin_api_coinswitch_mode_post","parameters":[{"name":"token","in":"query","required":true,"schema":{"type":"string","title":"Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/_CoinSwitchMode"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/geomind/competitor/displacement":{"get":{"tags":["geomind"],"summary":"Get Competitor Displacement","operationId":"get_competitor_displacement_geomind_competitor_displacement_get","parameters":[{"name":"keyword","in":"query","required":true,"schema":{"type":"string","title":"Keyword"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/geomind/sentiment":{"get":{"tags":["geomind"],"summary":"Get Sentiment","operationId":"get_sentiment_geomind_sentiment_get","parameters":[{"name":"keyword","in":"query","required":true,"schema":{"type":"string","title":"Keyword"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/geomind/scan/history":{"get":{"tags":["geomind"],"summary":"Get Scan History","operationId":"get_scan_history_geomind_scan_history_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/geomind/scan/save":{"post":{"tags":["geomind"],"summary":"Save Scan","operationId":"save_scan_geomind_scan_save_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanSaveRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/geomind/agent/protocol":{"get":{"tags":["geomind"],"summary":"Get Agent Protocol","operationId":"get_agent_protocol_geomind_agent_protocol_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/geomind/agent/command":{"post":{"tags":["geomind"],"summary":"Post Agent Command","operationId":"post_agent_command_geomind_agent_command_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentCommandRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/geomind/citation/velocity":{"get":{"tags":["geomind"],"summary":"Get Citation Velocity","operationId":"get_citation_velocity_geomind_citation_velocity_get","parameters":[{"name":"keyword","in":"query","required":true,"schema":{"type":"string","title":"Keyword"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/geomind/alerts":{"get":{"tags":["geomind"],"summary":"Get Alerts","operationId":"get_alerts_geomind_alerts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/frontend-error":{"post":{"tags":["frontend"],"summary":"Log Frontend Error","operationId":"log_frontend_error_v1_frontend_error_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/oauth/ph-callback":{"get":{"summary":"Ph Callback","operationId":"ph_callback_oauth_ph_callback_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/":{"get":{"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/app/{path}":{"get":{"summary":"Serve App","operationId":"serve_app_app__path__get","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/app":{"get":{"summary":"Serve App","operationId":"serve_app_app_get","parameters":[{"name":"path","in":"query","required":false,"schema":{"type":"string","default":"","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/tools/{tool_name}":{"get":{"summary":"Serve Tool","operationId":"serve_tool_tools__tool_name__get","parameters":[{"name":"tool_name","in":"path","required":true,"schema":{"type":"string","title":"Tool Name"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/tutorialbot/{path}":{"post":{"summary":"Tutorial Bot Proxy","operationId":"tutorial_bot_proxy_admin_tutorialbot__path__post","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Tutorial Bot Proxy","operationId":"tutorial_bot_proxy_admin_tutorialbot__path__post","parameters":[{"name":"path","in":"path","required":true,"schema":{"type":"string","title":"Path"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dl/doomsday/{filename}":{"get":{"summary":"Download Doomsday","description":"Download doomsday backup archive. No auth required (filename is the secret).","operationId":"download_doomsday_dl_doomsday__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dl/{filename}":{"get":{"summary":"Download Generic","operationId":"download_generic_dl__filename__get","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"head":{"summary":"Download Generic","operationId":"download_generic_dl__filename__head","parameters":[{"name":"filename","in":"path","required":true,"schema":{"type":"string","title":"Filename"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wa-bridge/inbound":{"post":{"tags":["whatsapp"],"summary":"Inbound","operationId":"inbound_v1_wa_bridge_inbound_post","parameters":[{"name":"X-Bridge-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Bridge-Secret"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboundMsg"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wa-bridge/outbound-poll":{"get":{"tags":["whatsapp"],"summary":"Outbound Poll","description":"Bridge polls every 5s for queued replies. Returns + claims up to 20.","operationId":"outbound_poll_v1_wa_bridge_outbound_poll_get","parameters":[{"name":"X-Bridge-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Bridge-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundPollResp"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wa-bridge/sent/{outbound_id}":{"post":{"tags":["whatsapp"],"summary":"Ack Sent","operationId":"ack_sent_v1_wa_bridge_sent__outbound_id__post","parameters":[{"name":"outbound_id","in":"path","required":true,"schema":{"type":"integer","title":"Outbound Id"}},{"name":"X-Bridge-Secret","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Bridge-Secret"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wa-inbox/api/threads":{"get":{"tags":["whatsapp"],"summary":"List Threads","operationId":"list_threads_v1_wa_inbox_api_threads_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/wa-inbox/api/thread/{phone}":{"get":{"tags":["whatsapp"],"summary":"Thread Detail","operationId":"thread_detail_v1_wa_inbox_api_thread__phone__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"phone","in":"path","required":true,"schema":{"type":"string","title":"Phone"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wa-inbox/api/thread/{phone}/read":{"post":{"tags":["whatsapp"],"summary":"Mark Read","operationId":"mark_read_v1_wa_inbox_api_thread__phone__read_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"phone","in":"path","required":true,"schema":{"type":"string","title":"Phone"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/wa-inbox/api/recent":{"get":{"tags":["whatsapp"],"summary":"Recent","operationId":"recent_v1_wa_inbox_api_recent_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/wa-inbox/api/override":{"post":{"tags":["whatsapp"],"summary":"Set Override","operationId":"set_override_v1_wa_inbox_api_override_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverrideReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/wa-inbox/":{"get":{"tags":["whatsapp"],"summary":"Inbox Page","operationId":"inbox_page_v1_wa_inbox__get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/v1/vfx/hybrid-callback":{"post":{"tags":["VFX Studio"],"summary":"Vfx Hybrid Callback","description":"Authenticated completion endpoint for the .156 hybrid compositor worker.\n\nToken-gated (X-Hybrid-Token == PIXELAPI_VFX_HYBRID_TOKEN). On success the\nrendered file is moved into VIDEO_STORE and the generation is completed with\nthe same public-URL shape the provider paths produce; on failure the\ngeneration is marked failed (credits were never charged for admin submits).","operationId":"vfx_hybrid_callback_v1_vfx_hybrid_callback_post","parameters":[{"name":"x-hybrid-token","in":"header","required":false,"schema":{"type":"string","default":"","title":"X-Hybrid-Token"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_vfx_hybrid_callback_v1_vfx_hybrid_callback_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vfx/preflight":{"post":{"tags":["VFX Studio"],"summary":"Vfx Preflight","description":"Text-only check: no provider submission, media upload, or credit charge.","operationId":"vfx_preflight_v1_vfx_preflight_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreflightRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/vfx/edit-shot":{"post":{"tags":["VFX Studio"],"summary":"Edit Shot","description":"Upload a video + describe the VFX you want. Returns a generation_id.\nPoll GET /v1/vfx/{generation_id} for status/output_url.","operationId":"edit_shot_v1_vfx_edit_shot_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_edit_shot_v1_vfx_edit_shot_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VfxGenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/vfx/{generation_id}/approve":{"post":{"tags":["VFX Studio"],"summary":"Approve Generation","operationId":"approve_generation_v1_vfx__generation_id__approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vfx/{generation_id}/reject":{"post":{"tags":["VFX Studio"],"summary":"Reject Generation","operationId":"reject_generation_v1_vfx__generation_id__reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vfx/reference-media-config":{"get":{"tags":["VFX Studio"],"summary":"Reference Media Config","description":"Capabilities and exact cost estimate for secondary reference media.","operationId":"reference_media_config_v1_vfx_reference_media_config_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"type":"string","default":"runway-reference","title":"Kind"}},{"name":"resolution","in":"query","required":false,"schema":{"type":"string","default":"720p","title":"Resolution"}},{"name":"duration","in":"query","required":false,"schema":{"type":"number","default":5.0,"title":"Duration"}},{"name":"source_seconds","in":"query","required":false,"schema":{"type":"number","default":5.0,"title":"Source Seconds"}},{"name":"reference_video_seconds","in":"query","required":false,"schema":{"type":"number","default":0.0,"title":"Reference Video Seconds"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vfx/v2v-config":{"get":{"tags":["VFX Studio"],"summary":"Vfx V2V Config","description":"Live Seedance V2V capabilities for the client (Lensora VFX).\n\nReturns supported resolutions (monthly-refreshed), min/max clip seconds, a per-\nresolution credit cost for the requested ``duration``, and upload routing hints so the\napp can (2a) push >100MB clips straight to the origin, (2b) cap the trim window to the\nmodel max, and (2f) show a live price next to each resolution.","operationId":"vfx_v2v_config_v1_vfx_v2v_config_get","parameters":[{"name":"duration","in":"query","required":false,"schema":{"type":"integer","default":5,"title":"Duration"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vfx/{generation_id}":{"get":{"tags":["VFX Studio"],"summary":"Vfx Status","operationId":"vfx_status_v1_vfx__generation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"generation_id","in":"path","required":true,"schema":{"type":"string","title":"Generation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VfxStatus"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/vfx/add-music":{"post":{"tags":["VFX Studio"],"summary":"Add Vfx Music","description":"Add a music bed to a finished VFX clip (Lensora VFX 2e).\n\nFree post-process on an already-paid render: the music is trimmed from ``music_start``\nfor the clip length, faded + loudness-normalised, and muxed over the video. Accepts an\nuploaded file OR a YouTube link (audio extracted, user owns the rights). Returns the\nnew output_url so the client just refreshes the result.","operationId":"add_vfx_music_v1_vfx_add_music_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_add_vfx_music_v1_vfx_add_music_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}}},"components":{"schemas":{"AIShadowRequest":{"properties":{"image_url":{"type":"string","title":"Image Url","description":"URL of the image to add shadow to"},"shadow_type":{"type":"string","pattern":"^(soft|hard|natural|floating)$","title":"Shadow Type","default":"soft"},"shadow_opacity":{"type":"number","maximum":1.0,"minimum":0.1,"title":"Shadow Opacity","default":0.5},"shadow_blur":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Shadow Blur","default":25},"shadow_offset_x":{"type":"integer","maximum":100.0,"minimum":-100.0,"title":"Shadow Offset X","default":0},"shadow_offset_y":{"type":"integer","maximum":100.0,"minimum":-100.0,"title":"Shadow Offset Y","default":20},"background_color":{"items":{"type":"integer"},"type":"array","maxItems":3,"minItems":3,"title":"Background Color","default":[255,255,255]}},"type":"object","required":["image_url"],"title":"AIShadowRequest"},"AIShadowResponse":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"status":{"type":"string","title":"Status"},"credits_used":{"type":"number","title":"Credits Used"}},"type":"object","required":["generation_id","status","credits_used"],"title":"AIShadowResponse"},"AgentCommandRequest":{"properties":{"action":{"type":"string","title":"Action","default":""},"params":{"additionalProperties":true,"type":"object","title":"Params","default":{}}},"type":"object","title":"AgentCommandRequest"},"AppleMobileAuthRequest":{"properties":{"identity_token":{"type":"string","minLength":20,"title":"Identity Token"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"nonce":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nonce"}},"type":"object","required":["identity_token"],"title":"AppleMobileAuthRequest"},"AppleMobileAuthResponse":{"properties":{"api_key":{"type":"string","title":"Api Key"},"token":{"type":"string","title":"Token"},"email":{"type":"string","title":"Email"},"credits":{"type":"number","title":"Credits"},"plan":{"type":"string","title":"Plan"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"is_new":{"type":"boolean","title":"Is New","default":false}},"type":"object","required":["api_key","token","email","credits","plan"],"title":"AppleMobileAuthResponse"},"AppleVerifyRequest":{"properties":{"product_id":{"type":"string","title":"Product Id"},"signed_transaction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signed Transaction"},"receipt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt"}},"type":"object","required":["product_id"],"title":"AppleVerifyRequest"},"ApproveRequest":{"properties":{"job_id":{"type":"string","title":"Job Id"},"deliverables":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Deliverables"}},"type":"object","required":["job_id"],"title":"ApproveRequest"},"AuthResponse":{"properties":{"api_key":{"type":"string","title":"Api Key"},"token":{"type":"string","title":"Token"},"email":{"type":"string","title":"Email"},"credits":{"type":"number","title":"Credits"}},"type":"object","required":["api_key","token","email","credits"],"title":"AuthResponse"},"BackgroundChoice":{"properties":{"type":{"type":"string","title":"Type"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"}},"type":"object","required":["type"],"title":"BackgroundChoice"},"BalanceResponse":{"properties":{"credits_remaining":{"type":"number","title":"Credits Remaining"},"plan":{"type":"string","title":"Plan"},"email":{"type":"string","title":"Email"},"in_trial":{"type":"boolean","title":"In Trial","default":false},"trial_credits_left":{"type":"number","title":"Trial Credits Left","default":0.0},"trial_credits_used":{"type":"number","title":"Trial Credits Used","default":0.0},"trial_credits_ceiling":{"type":"number","title":"Trial Credits Ceiling","default":0.0},"trial_seconds_left":{"type":"integer","title":"Trial Seconds Left","default":0},"trial_expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trial Expires At"},"api_trial_seconds_left":{"type":"integer","title":"Api Trial Seconds Left","default":0},"api_trial_expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api Trial Expires At"},"nudge":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nudge"}},"type":"object","required":["credits_remaining","plan","email"],"title":"BalanceResponse"},"BatchInvitationVideoRequest":{"properties":{"base_request":{"$ref":"#/components/schemas/InvitationVideoRequest"},"recipient_names":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Recipient Names"}},"type":"object","required":["base_request","recipient_names"],"title":"BatchInvitationVideoRequest"},"BatchJobItem":{"properties":{"operation":{"type":"string","pattern":"^(remove-background|add-shadow|upscale|restore-face)$","title":"Operation"},"image_url":{"type":"string","title":"Image Url"},"params":{"additionalProperties":true,"type":"object","title":"Params"}},"type":"object","required":["operation","image_url"],"title":"BatchJobItem"},"BatchJobStatus":{"properties":{"index":{"type":"integer","title":"Index"},"generation_id":{"type":"string","title":"Generation Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["index","generation_id","status"],"title":"BatchJobStatus"},"BatchRequest":{"properties":{"jobs":{"items":{"$ref":"#/components/schemas/BatchJobItem"},"type":"array","maxItems":100,"minItems":1,"title":"Jobs"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url"}},"type":"object","required":["jobs"],"title":"BatchRequest"},"BatchResponse":{"properties":{"batch_id":{"type":"string","title":"Batch Id"},"total_jobs":{"type":"integer","title":"Total Jobs"},"total_credits":{"type":"number","title":"Total Credits"},"jobs":{"items":{"$ref":"#/components/schemas/BatchJobStatus"},"type":"array","title":"Jobs"}},"type":"object","required":["batch_id","total_jobs","total_credits","jobs"],"title":"BatchResponse"},"BillingAddressUpdate":{"properties":{"billing_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Name"},"billing_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Address"},"billing_city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing City"},"billing_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing State"},"billing_pincode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Pincode"},"billing_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Country"},"billing_gstin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Gstin"}},"type":"object","title":"BillingAddressUpdate"},"BlockRequest":{"properties":{"email":{"type":"string","title":"Email"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","default":""}},"type":"object","required":["email"],"title":"BlockRequest"},"Body_add_vfx_music_v1_vfx_add_music_post":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"music_mode":{"type":"string","title":"Music Mode","default":"none"},"music_youtube_url":{"type":"string","title":"Music Youtube Url","default":""},"music_start":{"type":"number","title":"Music Start","default":0.0},"music_file":{"type":"string","format":"binary","title":"Music File"}},"type":"object","required":["generation_id"],"title":"Body_add_vfx_music_v1_vfx_add_music_post"},"Body_ai_fashion_model_v1_image_ai_fashion_model_post":{"properties":{"garment":{"type":"string","format":"binary","title":"Garment","description":"Garment product photo (flat-lay preferred)"},"model_preset":{"type":"string","title":"Model Preset","description":"Curated model preset: female-1, female-deep-front, female-olive-mature, female-curvy-warm, female-fair-petite, male-1, male-deep-front, male-olive-mature, male-broad-warm, male-fair-slim","default":"female-1"},"pose":{"type":"string","title":"Pose","description":"Pose plate: front, three-quarter, side, hand-on-hip, walking, relaxed, editorial, seated","default":"front"},"background":{"type":"string","title":"Background","description":"Background plate: studio-soft-gray, studio-pure-white, studio-charcoal, studio-warm-beige, soft-blush-gradient, cool-slate-gradient, sunset-warm-gradient, concrete-loft, marble-showroom, boutique-cream","default":"studio-soft-gray"},"category":{"type":"string","title":"Category","description":"upperbody | lowerbody | dress","default":"upperbody"},"person":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Person","description":"Optional own person photo; overrides model_preset/pose"}},"type":"object","required":["garment"],"title":"Body_ai_fashion_model_v1_image_ai_fashion_model_post"},"Body_apple_callback_v1_auth_apple_callback_post":{"properties":{"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"id_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Token"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"user":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","title":"Body_apple_callback_v1_auth_apple_callback_post"},"Body_audio_to_image_v1_multimodal_audio_to_image_post":{"properties":{"audio":{"type":"string","format":"binary","title":"Audio","description":"Audio input clip"},"prompt":{"type":"string","title":"Prompt","description":"Optional text description of the image to generate","default":""},"width":{"type":"integer","maximum":1920.0,"minimum":256.0,"title":"Width","default":1024},"height":{"type":"integer","maximum":1920.0,"minimum":256.0,"title":"Height","default":1024}},"type":"object","required":["audio"],"title":"Body_audio_to_image_v1_multimodal_audio_to_image_post"},"Body_auto_reel_v1_video_auto_reel_post":{"properties":{"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url","description":"Source video URL (YouTube / mp4). Use EITHER source_url OR upload source file."},"source":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Source","description":"Source video file (max 100 MB). Use EITHER source_url OR upload."},"sources":{"anyOf":[{"items":{"type":"string","format":"binary"},"type":"array"},{"type":"null"}],"title":"Sources","description":"Ordered source video files (max 10, 100 MB each, 500 MB total)."},"aspect":{"type":"string","title":"Aspect","description":"Output aspect ratio: 16:9, 9:16, or 1:1","default":"16:9"},"bgm":{"type":"string","title":"Bgm","description":"Preset background music style: calm, epic, none (used when music_mode=preset)","default":"calm"},"music_mode":{"type":"string","title":"Music Mode","description":"Background music source: 'preset' (built-in style via bgm), 'prompt' (AI-generate instrumental from music_prompt), or 'upload' (use uploaded music file)","default":"preset"},"music_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Music Prompt","description":"When music_mode=prompt: describe the background track (e.g. 'calm uplifting lo-fi piano'). Instrumental, auto-ducked under voice."},"music":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Music","description":"When music_mode=upload: a music file (mp3/wav/m4a, max 20 MB) to use as the background track."},"music_youtube_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Music Youtube Url","description":"When music_mode=youtube: a YouTube link — we extract the audio as the background track (you must own the rights)."},"music_start":{"type":"number","title":"Music Start","description":"When music_mode=youtube: start the music at this many seconds into the track.","default":0.0},"language":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Language","description":"Source language hint (e.g. 'en', 'hi') — leave blank to auto-detect"},"include_logo":{"type":"boolean","title":"Include Logo","description":"Append PixelAPI logo bumper at the end (off by default)","default":false},"target_seconds":{"type":"integer","title":"Target Seconds","description":"Desired reel length in seconds (15-180; capped at the source video's length).","default":60},"resolution":{"type":"string","title":"Resolution","description":"Output resolution: 1080p or 720p.","default":"1080p"},"original_audio":{"type":"string","title":"Original Audio","description":"keep | mute — whether the original footage audio stays in the mix.","default":"keep"},"original_audio_volume":{"type":"integer","title":"Original Audio Volume","description":"0-100%% — how audible the original footage audio is in the final mix (ignored when original_audio=mute).","default":100},"edit_mode":{"type":"string","title":"Edit Mode","description":"auto | highlights | preserve; auto avoids cuts for eligible equal-length single-clip music edits.","default":"auto"},"captions":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Captions","description":"Burn animated captions (bold white, outlined, from the transcript) into the reel. Default: ON for 9:16, OFF for 16:9/1:1. Reels with no speech skip captions automatically."}},"type":"object","title":"Body_auto_reel_v1_video_auto_reel_post"},"Body_caption_image_v1_image_caption_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image","description":"Image to analyze (JPG/PNG/WEBP)"},"mode":{"type":"string","title":"Mode","description":"full | caption | tags | alt_text","default":"full"},"style":{"type":"string","title":"Style","description":"product | creative | seo | technical","default":"product"},"max_tags":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"Max Tags","description":"Maximum number of tags to generate","default":10}},"type":"object","required":["image"],"title":"Body_caption_image_v1_image_caption_post"},"Body_classify_content_v1_moderation_classify_post":{"properties":{"images":{"items":{"type":"string","format":"binary"},"type":"array","title":"Images","description":"Image files (max 10 per request)","default":[]},"image_urls":{"type":"string","title":"Image Urls","description":"Comma-separated public image URLs (max 10 total)","default":""},"strict":{"type":"boolean","title":"Strict","description":"If True, return detailed per-class scores","default":false}},"type":"object","title":"Body_classify_content_v1_moderation_classify_post"},"Body_cleanup_v1_real_estate_cleanup_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image","description":"Source image (JPG/PNG/WEBP, max 20MB)"},"cleanup_type":{"type":"string","title":"Cleanup Type","description":"Operation: declutter, sky_replace, day_to_dusk, perspective_correct"},"mask":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Mask","description":"Optional mask image for decluttering (JPG/PNG, max 20MB)"}},"type":"object","required":["image","cleanup_type"],"title":"Body_cleanup_v1_real_estate_cleanup_post"},"Body_color_grade_image_v1_image_color_grade_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image"},"preset":{"type":"string","title":"Preset"}},"type":"object","required":["image","preset"],"title":"Body_color_grade_image_v1_image_color_grade_post"},"Body_controlnet_generate_v1_image_controlnet_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image","description":"Reference image (edges auto-detected)"},"prompt":{"type":"string","title":"Prompt","description":"What to generate following the image structure"},"negative_prompt":{"type":"string","title":"Negative Prompt","default":""},"width":{"type":"integer","maximum":1536.0,"minimum":512.0,"title":"Width","default":1024},"height":{"type":"integer","maximum":1536.0,"minimum":512.0,"title":"Height","default":1024},"conditioning_scale":{"type":"number","maximum":1.5,"minimum":0.1,"title":"Conditioning Scale","default":0.5},"steps":{"type":"integer","maximum":50.0,"minimum":10.0,"title":"Steps","default":30},"guidance_scale":{"type":"number","maximum":20.0,"minimum":1.0,"title":"Guidance Scale","default":7.5},"seed":{"type":"integer","title":"Seed"},"enhance":{"type":"boolean","title":"Enhance","default":true}},"type":"object","required":["image","prompt"],"title":"Body_controlnet_generate_v1_image_controlnet_post"},"Body_create_portrait_v1_portrait_studio_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image","description":"Source face photo (JPEG/PNG, <10MB)"},"style":{"type":"string","title":"Style","default":"professional-linkedin"},"prompt":{"type":"string","title":"Prompt","default":""},"pulid_strength":{"type":"number","maximum":2.0,"minimum":0.5,"title":"Pulid Strength","default":1.8},"gender":{"type":"string","title":"Gender","description":"male | female | auto (auto lets the style prompt decide, but may gender-swap on conflicting prompts)","default":"auto"},"skin_tone":{"type":"string","title":"Skin Tone","description":"auto | deep | medium-deep | medium | fair — auto matches the source photo's complexion (colour sources); presets override","default":"auto"},"attire":{"type":"string","title":"Attire","description":"PASSPORT_ATTIRE_V2 (style=passport-visa only): existing | white_shirt | white_tshirt | banarsi_saree | suit. 'existing' keeps the clothes in the uploaded photo. Empty = the classic plain collared shirt/top.","default":""}},"type":"object","required":["image"],"title":"Body_create_portrait_v1_portrait_studio_post"},"Body_create_product_photo_catalogue_clean_v1_image_product_photo_catalogue_clean_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image","description":"Product catalogue image (JPG/PNG/WEBP, max 20MB)"},"art_no":{"type":"string","title":"Art No","description":"Catalogue/article number text","default":"Art no. 1595"},"size_text":{"type":"string","title":"Size Text","description":"Size/range text","default":"M to 4XL"},"footer":{"type":"string","title":"Footer","description":"Footer caption","default":"Premium polo catalogue image"},"output_format":{"type":"string","title":"Output Format","description":"Output format: jpeg | png | webp","default":"jpeg"},"bg_mode":{"type":"string","title":"Bg Mode","description":"Background mode: white | transparent | solid_color | gradient_linear | gradient_radial","default":"white"},"bg_color":{"type":"string","title":"Bg Color","description":"Solid background color (hex)","default":"#FFFFFF"},"bg_gradient_start":{"type":"string","title":"Bg Gradient Start","description":"Gradient start color (hex)","default":"#F8FAFC"},"bg_gradient_end":{"type":"string","title":"Bg Gradient End","description":"Gradient end color (hex)","default":"#E2E8F0"},"shadow_type":{"type":"string","title":"Shadow Type","description":"Shadow style: none | soft | hard | natural | reflection","default":"soft"},"shadow_opacity":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Shadow Opacity","description":"Shadow opacity","default":0.35},"shadow_blur":{"type":"integer","maximum":100.0,"minimum":0.0,"title":"Shadow Blur","description":"Shadow blur radius","default":25},"shadow_offset_x":{"type":"integer","maximum":200.0,"minimum":-200.0,"title":"Shadow Offset X","description":"Shadow horizontal offset","default":0},"shadow_offset_y":{"type":"integer","maximum":200.0,"minimum":-200.0,"title":"Shadow Offset Y","description":"Shadow vertical offset","default":20},"shadow_color":{"type":"string","title":"Shadow Color","description":"Shadow color (hex)","default":"#000000"},"output_ratio":{"type":"string","title":"Output Ratio","description":"Output ratio: original | 1:1 | 4:5 | 3:2 | 16:9 | amazon | flipkart | meesho","default":"16:9"},"product_fit":{"type":"string","title":"Product Fit","description":"Product fit: tight | normal | padded","default":"normal"},"auto_enhance":{"type":"boolean","title":"Auto Enhance","description":"Auto-brightness/contrast/saturation/sharpness","default":false},"badge_text":{"type":"string","title":"Badge Text","description":"Optional badge text","default":""},"badge_position":{"type":"string","title":"Badge Position","description":"Badge position: top-left | top-right | bottom-left | bottom-right","default":"top-left"},"badge_text_color":{"type":"string","title":"Badge Text Color","description":"Badge text color (hex)","default":"#FFFFFF"},"badge_bg_color":{"type":"string","title":"Badge Bg Color","description":"Badge background color (hex)","default":"#EF4444"},"quality":{"type":"integer","maximum":100.0,"minimum":70.0,"title":"Quality","description":"JPEG/WebP quality","default":94}},"type":"object","required":["image"],"title":"Body_create_product_photo_catalogue_clean_v1_image_product_photo_catalogue_clean_post"},"Body_create_showroom_v1_showroom_post":{"properties":{"garment":{"type":"string","format":"binary","title":"Garment","description":"Garment photo (JPG/PNG/WEBP, max 10MB) — folded is fine"},"category":{"type":"string","title":"Category","description":"upperbody | lowerbody | dress","default":"upperbody"},"tryon_mode":{"type":"string","title":"Tryon Mode","description":"ai-model | own-photo | own-video","default":"ai-model"},"model_preset":{"type":"string","title":"Model Preset","description":"AI model base for ai-model mode: ('female-1', 'female-deep-front', 'female-olive-mature', 'female-curvy-warm', 'female-fair-petite', 'male-1', 'male-deep-front', 'male-olive-mature', 'male-broad-warm', 'male-fair-slim')","default":"female-1"},"force_unfold":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Force Unfold","description":"Override auto-detect: true=always unfold, false=never"},"person_photo":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Person Photo","description":"Your photo (required for tryon_mode=own-photo)"},"person_video":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Person Video","description":"Your short video (required for tryon_mode=own-video)"}},"type":"object","required":["garment"],"title":"Body_create_showroom_v1_showroom_post"},"Body_describe_audio_v1_multimodal_describe_audio_post":{"properties":{"audio":{"type":"string","format":"binary","title":"Audio","description":"Required audio to describe"}},"type":"object","required":["audio"],"title":"Body_describe_audio_v1_multimodal_describe_audio_post"},"Body_describe_image_v1_multimodal_describe_image_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image","description":"Required image to describe"},"quality":{"type":"string","title":"Quality","description":"fast: image captioning (default); full: separate description capability. Check /v1/multimodal/capabilities for each tier. Legacy full aliases: quality, gemma, vlm, detailed.","default":"fast"}},"type":"object","required":["image"],"title":"Body_describe_image_v1_multimodal_describe_image_post"},"Body_detect_faces_v1_image_detect_faces_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image"}},"type":"object","required":["image"],"title":"Body_detect_faces_v1_image_detect_faces_post"},"Body_edit_shot_v1_vfx_edit_shot_post":{"properties":{"video":{"type":"string","format":"binary","title":"Video"},"reference_media":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Reference Media","description":"Optional image or video reference for a reference-capable model"},"prompt":{"type":"string","maxLength":5000,"minLength":1,"title":"Prompt"},"resolution":{"type":"string","title":"Resolution","default":"1080p"},"duration":{"type":"integer","title":"Duration","default":5},"frame_at_seconds":{"type":"number","title":"Frame At Seconds","default":0.5},"kind":{"type":"string","title":"Kind","default":"v1.5"},"seed":{"type":"integer","title":"Seed","description":"Fixed seed for reproducible output. 0 (default) = auto-random. Reuse the returned seed to get the same VFX on a re-run.","default":0},"auto_trim":{"type":"integer","title":"Auto Trim","description":"1 = system auto-picks the best `duration`-second moment (reel-director-style) — upload the full video and skip manual trimming.","default":0},"rights_confirmed":{"type":"boolean","title":"Rights Confirmed","description":"Confirm permission to use footage and reference media","default":false}},"type":"object","required":["video","prompt"],"title":"Body_edit_shot_v1_vfx_edit_shot_post"},"Body_enhance_image_v1_image_enhance_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image"},"image_url":{"type":"string","title":"Image Url"},"scale":{"type":"integer","maximum":4.0,"minimum":2.0,"title":"Scale","default":4},"face_enhance":{"type":"boolean","title":"Face Enhance","default":true}},"type":"object","title":"Body_enhance_image_v1_image_enhance_post"},"Body_flat_lay_v1_image_flat_lay_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image","description":"Garment photo (folded OK)"},"garment_type":{"type":"string","title":"Garment Type","description":"Optional hint, e.g. 'polo shirt', 'saree', 'jeans'","default":""}},"type":"object","required":["image"],"title":"Body_flat_lay_v1_image_flat_lay_post"},"Body_floorplan_render_v1_real_estate_floorplan_render_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image","description":"Floorplan image (JPG/PNG/WEBP, max 20MB)"},"interiors":{"type":"boolean","title":"Interiors","description":"Procedurally place Vastu-compliant furniture inside layout","default":true}},"type":"object","required":["image"],"title":"Body_floorplan_render_v1_real_estate_floorplan_render_post"},"Body_generate_memorial_video_v1_memorial_video_generate_post":{"properties":{"photos":{"items":{"type":"string","format":"binary"},"type":"array","title":"Photos","description":"1-100 real photos to preserve exactly"},"prompt":{"type":"string","title":"Prompt","description":"Optional mood/caption guidance; not used to alter identity or scene","default":""},"duration_seconds":{"type":"integer","maximum":600.0,"minimum":5.0,"title":"Duration Seconds","default":60},"music_mode":{"type":"string","title":"Music Mode","description":"inhouse, upload, youtube, seedance, or none","default":"inhouse"},"video_engine":{"type":"string","title":"Video Engine","description":"auto, inhouse, or seedance","default":"auto"},"music":{"type":"string","format":"binary","title":"Music"},"music_youtube_url":{"type":"string","title":"Music Youtube Url","description":"YouTube link; audio track only is extracted as the music bed","default":""},"transition_style":{"type":"string","title":"Transition Style","description":"mixed, fade, kenburns, or slide","default":"mixed"},"title_text":{"type":"string","title":"Title Text","description":"Optional opening title card text","default":""},"watermark_text":{"type":"string","title":"Watermark Text","description":"Optional persistent bottom watermark text","default":""},"ending_text":{"type":"string","title":"Ending Text","description":"Optional closing card text","default":""}},"type":"object","required":["photos"],"title":"Body_generate_memorial_video_v1_memorial_video_generate_post"},"Body_generate_photo_restore_v1_photo_restore_generate_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"mode":{"type":"string","title":"Mode","default":"full"},"restore_faces":{"type":"boolean","title":"Restore Faces","default":true}},"type":"object","required":["file"],"title":"Body_generate_photo_restore_v1_photo_restore_generate_post"},"Body_generate_tts_v1_tts_generate_post":{"properties":{"text":{"type":"string","title":"Text","description":"Text to synthesize"},"language":{"type":"string","title":"Language","description":"Language code","default":"auto"},"voice_description":{"type":"string","title":"Voice Description","description":"Voice design prompt e.g. 'young woman, warm voice'"},"voice_ref":{"type":"string","format":"binary","title":"Voice Ref","description":"Reference audio for voice cloning (WAV/MP3, 16kHz+)"},"cfg_value":{"type":"number","maximum":5.0,"minimum":0.5,"title":"Cfg Value","default":2.0},"inference_timesteps":{"type":"integer","maximum":20.0,"minimum":4.0,"title":"Inference Timesteps","default":10},"model":{"type":"string","title":"Model","default":"voxcpm-2"}},"type":"object","required":["text"],"title":"Body_generate_tts_v1_tts_generate_post"},"Body_ghost_mannequin_v1_image_ghost_mannequin_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image","description":"Apparel product photo (mannequin, model, or hanging)"},"background":{"type":"string","title":"Background","description":"white | transparent | light-gray | solid_color | gradient_linear | gradient_radial","default":"white"},"bg_color":{"type":"string","title":"Bg Color","description":"Background colour for solid/gradient modes","default":"#FFFFFF"},"bg_gradient_start":{"type":"string","title":"Bg Gradient Start","description":"Gradient start colour","default":"#F8FAFC"},"bg_gradient_end":{"type":"string","title":"Bg Gradient End","description":"Gradient end colour","default":"#E2E8F0"},"output_ratio":{"type":"string","title":"Output Ratio","description":"original | 1:1 | 4:5 | 3:2 | 16:9 | 21:9 | amazon | flipkart | meesho","default":"original"},"product_fit":{"type":"string","title":"Product Fit","description":"tight | normal | padded","default":"normal"},"shadow_type":{"type":"string","title":"Shadow Type","description":"none | soft | hard | natural | reflection","default":"soft"},"shadow_opacity":{"type":"number","title":"Shadow Opacity","description":"0.0-1.0","default":0.35},"shadow_blur":{"type":"integer","title":"Shadow Blur","description":"Shadow blur radius in px","default":25},"shadow_offset_x":{"type":"integer","title":"Shadow Offset X","description":"Shadow horizontal offset in px","default":0},"shadow_offset_y":{"type":"integer","title":"Shadow Offset Y","description":"Shadow vertical offset in px","default":20},"shadow_color":{"type":"string","title":"Shadow Color","description":"Shadow colour","default":"#000000"},"output_format":{"type":"string","title":"Output Format","description":"jpeg | png | webp","default":"jpeg"},"quality":{"type":"integer","title":"Quality","description":"JPEG/WEBP quality 70-100","default":94},"canvas_w":{"type":"integer","title":"Canvas W","description":"Canvas width 800-2400","default":1600},"canvas_h":{"type":"integer","title":"Canvas H","description":"Canvas height 600-1800","default":900}},"type":"object","required":["image"],"title":"Body_ghost_mannequin_v1_image_ghost_mannequin_post"},"Body_image_to_video_v1_multimodal_image_to_video_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image","description":"Reference input image to animate"},"prompt":{"type":"string","maxLength":2000,"minLength":1,"title":"Prompt","description":"Description of the video movement/style"},"duration":{"type":"number","maximum":10.0,"minimum":1.0,"title":"Duration","default":3.0},"fps":{"type":"integer","maximum":30.0,"minimum":1.0,"title":"Fps","default":8}},"type":"object","required":["image","prompt"],"title":"Body_image_to_video_v1_multimodal_image_to_video_post"},"Body_interior_design_v1_image_interior_design_post":{"properties":{"room_image":{"type":"string","format":"binary","title":"Room Image","description":"Room photo (JPG/PNG/WEBP, max 20MB)"},"room_type":{"type":"string","title":"Room Type","description":"Room type: living_room, bedroom, kitchen, bathroom, office, dining_room","default":"living_room"},"design_style":{"type":"string","title":"Design Style","description":"Design style: modern_indian, vastu_compliant, minimalist, scandinavian, industrial, bohemian, traditional_indian, kerala_style, rajasthani_luxury, contemporary","default":"modern_indian"},"color_scheme":{"type":"string","title":"Color Scheme","description":"Optional color preference (e.g., 'warm neutrals', 'blue accents')","default":""},"user_prompt":{"type":"string","title":"User Prompt","description":"Optional free-form description of what the user wants changed / added / kept (e.g., 'add a tall plant in the corner, keep the existing rug, warmer wall colors'). Moderated by gemma4 before reaching the model. Max 600 chars.","default":""},"source_width":{"type":"integer","title":"Source Width","description":"Original client-side image width; used to preserve displayed aspect/geometry.","default":0},"source_height":{"type":"integer","title":"Source Height","description":"Original client-side image height; used to preserve displayed aspect/geometry.","default":0},"preserve_geometry":{"type":"string","title":"Preserve Geometry","description":"Keep room dimensions, camera view, walls, windows and openings stable.","default":"true"}},"type":"object","required":["room_image"],"title":"Body_interior_design_v1_image_interior_design_post"},"Body_outpaint_from_upload_v1_image_outpaint_from_upload_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image"},"direction":{"type":"string","title":"Direction","default":"all"},"extend_pixels":{"type":"integer","title":"Extend Pixels","default":256},"prompt":{"type":"string","title":"Prompt","default":""}},"type":"object","required":["image"],"title":"Body_outpaint_from_upload_v1_image_outpaint_from_upload_post"},"Body_product_staging_v1_image_product_staging_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image","description":"Product photo"},"scene":{"type":"string","title":"Scene","description":"marble | wood | outdoor | minimal-studio | kitchen | bathroom | custom","default":"marble"},"custom_prompt":{"type":"string","title":"Custom Prompt","description":"Used when scene=custom","default":""}},"type":"object","required":["image"],"title":"Body_product_staging_v1_image_product_staging_post"},"Body_recolor_clothing_v1_image_recolor_clothing_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image","description":"Clothing product photo"},"target_color":{"type":"string","title":"Target Color","description":"Target colour, e.g. 'navy blue', '#1a237e', 'forest green'"},"preserve_details":{"type":"boolean","title":"Preserve Details","description":"Keep logos/prints when recoloring","default":true}},"type":"object","required":["image","target_color"],"title":"Body_recolor_clothing_v1_image_recolor_clothing_post"},"Body_refine_prompt_v1_multimodal_refine_prompt_post":{"properties":{"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Prompt to refine"},"image":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Image","description":"Optional image input"},"audio":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Audio","description":"Optional audio input"}},"type":"object","title":"Body_refine_prompt_v1_multimodal_refine_prompt_post"},"Body_remove_background_v1_image_remove_background_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image"},"image_url":{"type":"string","title":"Image Url","description":"Public URL of image (alternative to file upload)"},"face_bbox":{"type":"string","title":"Face Bbox","description":"Optional 'x1,y1,x2,y2' — if provided, isolate just the person whose face matches this bbox and remove other people + background. Web-frontend only; standard API clients pass full image for whole-foreground extraction.","default":""}},"type":"object","title":"Body_remove_background_v1_image_remove_background_post"},"Body_remove_object_v1_image_remove_object_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image"},"prompt":{"type":"string","title":"Prompt","description":"Describe the object to remove (or upload a mask)","default":""},"mask":{"type":"string","format":"binary","title":"Mask","description":"Optional mask image (white = area to remove)"}},"type":"object","required":["image"],"title":"Body_remove_object_v1_image_remove_object_post"},"Body_remove_text_v1_image_remove_text_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image"},"languages":{"type":"string","title":"Languages","description":"Comma-separated OCR language codes. Chinese accepts zh/zh-cn -> ch_sim and zh-tw/zh-hk -> ch_tra.","default":"en"},"prompt":{"type":"string","title":"Prompt","description":"Optional: name the watermark/text to remove (quoted, e.g. Cho Tot). Clamps the mask to that mark.","default":""}},"type":"object","required":["image"],"title":"Body_remove_text_v1_image_remove_text_post"},"Body_replace_background_v1_image_replace_background_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image"},"prompt":{"type":"string","title":"Prompt","description":"Text description of desired background (e.g. 'white', 'gradient blue to purple', 'studio lighting on marble table')"},"background_color":{"type":"string","title":"Background Color","description":"Optional explicit color: hex (#FF0000), rgb(255,0,0), or name (white, navy). Overrides prompt for solid colors."},"mask":{"type":"string","format":"binary","title":"Mask","description":"Optional foreground mask (white=keep, black=replace). If omitted, uses the image's alpha channel when present, otherwise falls back to auto-segmentation via BiRefNet."}},"type":"object","required":["image","prompt"],"title":"Body_replace_background_v1_image_replace_background_post"},"Body_rerender_memorial_video_v1_memorial_video__generation_id__rerender_post":{"properties":{"prompt":{"type":"string","title":"Prompt"},"duration_seconds":{"type":"integer","title":"Duration Seconds"},"music_mode":{"type":"string","title":"Music Mode"},"video_engine":{"type":"string","title":"Video Engine"},"music":{"type":"string","format":"binary","title":"Music"},"music_youtube_url":{"type":"string","title":"Music Youtube Url"},"transition_style":{"type":"string","title":"Transition Style"},"title_text":{"type":"string","title":"Title Text"},"watermark_text":{"type":"string","title":"Watermark Text"},"ending_text":{"type":"string","title":"Ending Text"}},"type":"object","title":"Body_rerender_memorial_video_v1_memorial_video__generation_id__rerender_post"},"Body_restore_face_v1_image_restore_face_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image"}},"type":"object","required":["image"],"title":"Body_restore_face_v1_image_restore_face_post"},"Body_restore_face_v2_v1_image_restore_face_v2_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image"}},"type":"object","required":["image"],"title":"Body_restore_face_v2_v1_image_restore_face_v2_post"},"Body_stage_v1_real_estate_stage_post":{"properties":{"room_image":{"type":"string","format":"binary","title":"Room Image","description":"Room photo (JPG/PNG/WEBP, max 20MB)"},"room_type":{"type":"string","title":"Room Type","description":"Room type: living_room, bedroom, kitchen, bathroom, office, dining_room","default":"living_room"},"design_style":{"type":"string","title":"Design Style","description":"Design style: modern_indian, vastu_compliant, minimalist, scandinavian, industrial, bohemian, traditional_indian, kerala_style, rajasthani_luxury, contemporary","default":"modern_indian"},"color_scheme":{"type":"string","title":"Color Scheme","description":"Optional color preference (e.g., 'warm neutrals')","default":""}},"type":"object","required":["room_image"],"title":"Body_stage_v1_real_estate_stage_post"},"Body_studio_init_v1_studio_init_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image"},"max_objects":{"type":"integer","title":"Max Objects","default":6}},"type":"object","required":["image"],"title":"Body_studio_init_v1_studio_init_post"},"Body_unwrinkle_v1_image_unwrinkle_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image","description":"Clothing product photo"},"intensity":{"type":"string","title":"Intensity","description":"light | medium | strong","default":"medium"}},"type":"object","required":["image"],"title":"Body_unwrinkle_v1_image_unwrinkle_post"},"Body_upload_asset_v1_wedding_projects__project_id__assets_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"client_asset_id":{"type":"string","title":"Client Asset Id"},"sort_order":{"type":"integer","title":"Sort Order","default":0},"role":{"type":"string","enum":["source","reference"],"title":"Role","default":"source"}},"type":"object","required":["file","client_asset_id"],"title":"Body_upload_asset_v1_wedding_projects__project_id__assets_post"},"Body_upload_file_internal_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"path":{"type":"string","title":"Path"},"job_id":{"type":"string","title":"Job Id","default":""}},"type":"object","required":["file","path"],"title":"Body_upload_file_internal_upload_post"},"Body_upload_invitation_photo_v1_invitation_video_upload_photo_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_invitation_photo_v1_invitation_video_upload_photo_post"},"Body_upload_invitation_photo_v1_invitation_videos_upload_photo_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_invitation_photo_v1_invitation_videos_upload_photo_post"},"Body_upload_training_images_v1_tunes__job_id__upload_post":{"properties":{"images":{"items":{"type":"string","format":"binary"},"type":"array","title":"Images"}},"type":"object","required":["images"],"title":"Body_upload_training_images_v1_tunes__job_id__upload_post"},"Body_upscale_image_v1_image_upscale_post":{"properties":{"image":{"type":"string","format":"binary","title":"Image"},"image_url":{"type":"string","title":"Image Url"},"scale":{"type":"integer","maximum":16.0,"minimum":2.0,"title":"Scale","description":"Upscale factor. 2-4 = single ESRGAN pass. 5-16 = multi-pass (2 passes, UPSCALE16X_V1): e.g. 1254px input -> 10000px+ print output.","default":4},"target_width":{"anyOf":[{"type":"integer","maximum":16384.0,"minimum":64.0},{"type":"null"}],"title":"Target Width","description":"Optional exact output width (px). If set with target_height, output is resized to exactly that."},"target_height":{"anyOf":[{"type":"integer","maximum":16384.0,"minimum":64.0},{"type":"null"}],"title":"Target Height","description":"Optional exact output height (px)."},"fit_mode":{"type":"string","title":"Fit Mode","description":"When custom dims have a different aspect ratio than input: 'stretch' (exact target, may squeeze), 'pad_white' (preserve aspect, pad white), 'pad_transparent' (preserve aspect, pad transparent PNG).","default":"stretch"}},"type":"object","title":"Body_upscale_image_v1_image_upscale_post"},"Body_vastu_parse_dwg_v1_vastu_parse_dwg_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"plot_w_ft":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Plot W Ft"},"plot_d_ft":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Plot D Ft"},"facing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Facing"}},"type":"object","required":["file"],"title":"Body_vastu_parse_dwg_v1_vastu_parse_dwg_post"},"Body_vastu_parse_dxf_v1_vastu_parse_dxf_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"plot_w_ft":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Plot W Ft"},"plot_d_ft":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Plot D Ft"},"facing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Facing"}},"type":"object","required":["file"],"title":"Body_vastu_parse_dxf_v1_vastu_parse_dxf_post"},"Body_vastu_parse_ifc_v1_vastu_parse_ifc_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"plot_w_ft":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Plot W Ft"},"plot_d_ft":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Plot D Ft"},"facing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Facing"}},"type":"object","required":["file"],"title":"Body_vastu_parse_ifc_v1_vastu_parse_ifc_post"},"Body_vastu_parse_image_v1_vastu_parse_image_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"plot_w_ft":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Plot W Ft"},"plot_d_ft":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Plot D Ft"},"facing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Facing"}},"type":"object","required":["file"],"title":"Body_vastu_parse_image_v1_vastu_parse_image_post"},"Body_vastu_parse_pdf_v1_vastu_parse_pdf_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"},"plot_w_ft":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Plot W Ft"},"plot_d_ft":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Plot D Ft"},"facing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Facing"}},"type":"object","required":["file"],"title":"Body_vastu_parse_pdf_v1_vastu_parse_pdf_post"},"Body_vfx_comp_v1_vfx_comp_post":{"properties":{"plate":{"type":"string","format":"binary","title":"Plate"},"effect":{"type":"string","title":"Effect","default":"fire"},"track":{"type":"string","title":"Track","default":"none"},"fps":{"type":"number","title":"Fps","default":24.0},"cover":{"type":"number","title":"Cover","default":2.2},"ignite":{"type":"integer","title":"Ignite","default":14},"subject_matte":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"Subject Matte"}},"type":"object","required":["plate"],"title":"Body_vfx_comp_v1_vfx_comp_post"},"Body_vfx_compose_prepare_v1_image_vfx_compose_prepare_post":{"properties":{"foreground":{"type":"string","format":"binary","title":"Foreground","description":"Subject image (portrait, product, etc.)"},"background":{"type":"string","format":"binary","title":"Background","description":"Optional. If omitted, a background is generated from `prompt` (or `bg_prompt` if provided)."},"prompt":{"type":"string","title":"Prompt","description":"Required. Describes what the user is trying to compose. Doubles as the BG-generation prompt when no background is uploaded."},"bg_prompt":{"type":"string","title":"Bg Prompt","description":"Optional. Overrides the BG-generation prompt when no background image is uploaded.","default":""}},"type":"object","required":["foreground","prompt"],"title":"Body_vfx_compose_prepare_v1_image_vfx_compose_prepare_post"},"Body_vfx_hybrid_callback_v1_vfx_hybrid_callback_post":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"user_id":{"type":"string","title":"User Id"},"meta":{"type":"string","title":"Meta","default":"{}"},"file":{"anyOf":[{"type":"string","format":"binary"},{"type":"null"}],"title":"File"}},"type":"object","required":["generation_id","user_id"],"title":"Body_vfx_hybrid_callback_v1_vfx_hybrid_callback_post"},"Body_video_merge_v1_video_merge_post":{"properties":{"video1":{"type":"string","format":"binary","title":"Video1"},"video2":{"type":"string","format":"binary","title":"Video2"},"layout":{"type":"string","title":"Layout","default":"sidebyside"},"mute_audio":{"type":"string","title":"Mute Audio","default":"false"}},"type":"object","required":["video1","video2"],"title":"Body_video_merge_v1_video_merge_post"},"Body_video_upscale_v1_video_upscale_post":{"properties":{"video":{"type":"string","format":"binary","title":"Video"},"video_url":{"type":"string","title":"Video Url"}},"type":"object","title":"Body_video_upscale_v1_video_upscale_post"},"Body_void_removal_v1_video_void_removal_post":{"properties":{"video":{"type":"string","format":"binary","title":"Video"},"prompt":{"type":"string","title":"Prompt"},"engine":{"type":"string","title":"Engine","description":"Removal engine: 'propainter' (quality-preserving, keeps original resolution) or 'netflix-void' (physics-aware, handles interactions but downscales to 672x384)","default":"diffueraser"}},"type":"object","required":["video","prompt"],"title":"Body_void_removal_v1_video_void_removal_post"},"Body_whatsapp_deliver_v1_real_estate_whatsapp_deliver_post":{"properties":{"generation_id":{"type":"string","title":"Generation Id","description":"The completed generation ID"},"phone_number":{"type":"string","title":"Phone Number","description":"Customer phone number (e.g. +91XXXXXXXXXX)"}},"type":"object","required":["generation_id","phone_number"],"title":"Body_whatsapp_deliver_v1_real_estate_whatsapp_deliver_post"},"BulkDeleteRequest":{"properties":{"ids":{"items":{"type":"string"},"type":"array","maxItems":200,"minItems":1,"title":"Ids"}},"type":"object","required":["ids"],"title":"BulkDeleteRequest"},"CancelSubscriptionResponse":{"properties":{"message":{"type":"string","title":"Message"},"plan_expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Expires At"}},"type":"object","required":["message","plan_expires_at"],"title":"CancelSubscriptionResponse"},"CaptionResponse":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"status":{"type":"string","title":"Status"},"credits_used":{"type":"number","title":"Credits Used"}},"type":"object","required":["generation_id","status","credits_used"],"title":"CaptionResponse"},"CatalogToolResponse":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"status":{"type":"string","title":"Status","default":"queued"},"tool":{"type":"string","title":"Tool"},"credits_used":{"type":"number","title":"Credits Used"},"engine":{"type":"string","title":"Engine","default":""},"eta_seconds":{"type":"integer","title":"Eta Seconds","default":120},"message":{"type":"string","title":"Message","default":""},"poll_url":{"type":"string","title":"Poll Url","default":""}},"type":"object","required":["generation_id","tool","credits_used"],"title":"CatalogToolResponse"},"ChurnFeedbackRequest":{"properties":{"token":{"type":"string","title":"Token"},"reason":{"type":"string","pattern":"^(too_expensive|missing_features|quality_issues|hard_failures|too_slow|too_complicated|billing_confusing|credits_expired|found_alternative|support_issue|just_testing|project_ended|privacy_concern|other)$","title":"Reason"},"score":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Score"},"comment":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Comment"},"would_return":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Would Return"},"competitor":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Competitor"},"last_tool":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Last Tool"},"biggest_problem":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Biggest Problem"},"contact_allowed":{"type":"boolean","title":"Contact Allowed","default":false}},"type":"object","required":["token","reason","score"],"title":"ChurnFeedbackRequest"},"ColorGradeResponse":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"status":{"type":"string","title":"Status"},"output_url":{"type":"string","title":"Output Url"},"preset":{"type":"string","title":"Preset"},"credits_used":{"type":"number","title":"Credits Used"}},"type":"object","required":["generation_id","status","output_url","preset","credits_used"],"title":"ColorGradeResponse"},"ContentReport":{"properties":{"request_id":{"type":"string","format":"uuid","title":"Request Id"},"generation_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Generation Id"},"tool_id":{"type":"string","maxLength":100,"minLength":1,"pattern":"^[a-zA-Z0-9_-]+$","title":"Tool Id","default":"general"},"content_url":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Content Url"},"reason":{"type":"string","enum":["sexual_content","child_safety","hate_harassment","violence","self_harm","deceptive_content","other"],"title":"Reason"},"details":{"type":"string","maxLength":2000,"title":"Details","default":""},"app_version":{"type":"string","maxLength":40,"title":"App Version","default":""}},"type":"object","required":["request_id","reason"],"title":"ContentReport"},"CreateOrderRequest":{"properties":{"product":{"type":"string","title":"Product","description":"Plan key (starter/pro/scale) or pack key (pack_200/pack_500/pack_1000/pack_5000)"},"topup_ack":{"type":"boolean","title":"Topup Ack","default":false}},"type":"object","required":["product"],"title":"CreateOrderRequest"},"CreateOrderUSDRequest":{"properties":{"product":{"type":"string","title":"Product","description":"Plan key (starter/pro/scale) or pack key (pack_1000/pack_5000/pack_10000/pack_50000)"}},"type":"object","required":["product"],"title":"CreateOrderUSDRequest"},"CreatePaymentLinkUSDRequest":{"properties":{"product":{"type":"string","title":"Product","description":"Plan (starter/pro/scale) or USD pack (usd_1k/usd_5k/usd_10k/usd_50k)"},"contact":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact"},"topup_ack":{"type":"boolean","title":"Topup Ack","default":false}},"type":"object","required":["product"],"title":"CreatePaymentLinkUSDRequest"},"CreateProjectRequest":{"properties":{"name":{"type":"string","title":"Name","default":"Wedding project"},"preset":{"type":"string","enum":["natural_warm","true_color","cinematic_soft","reference_match","ai_enhance"],"title":"Preset","default":"natural_warm"},"idempotency_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency Key"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url"},"preserve_resolution":{"type":"boolean","title":"Preserve Resolution","default":true},"jpeg_quality":{"type":"integer","title":"Jpeg Quality","default":94},"fix_closed_eyes":{"type":"boolean","title":"Fix Closed Eyes","default":false},"workflow_version":{"type":"integer","title":"Workflow Version","default":1}},"type":"object","title":"CreateProjectRequest"},"CreateSubscriptionRequest":{"properties":{"plan":{"type":"string","title":"Plan"}},"type":"object","required":["plan"],"title":"CreateSubscriptionRequest"},"CreateSubscriptionResponse":{"properties":{"subscription_id":{"type":"string","title":"Subscription Id"},"approval_url":{"type":"string","title":"Approval Url"}},"type":"object","required":["subscription_id","approval_url"],"title":"CreateSubscriptionResponse"},"CreditsRequest":{"properties":{"user_id":{"type":"integer","title":"User Id"},"credits":{"type":"number","title":"Credits"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","default":""}},"type":"object","required":["user_id","credits"],"title":"CreditsRequest"},"EntitlementResponse":{"properties":{"pro":{"type":"boolean","title":"Pro"},"sources":{"items":{"type":"string"},"type":"array","title":"Sources"},"expiries":{"additionalProperties":{"type":"string"},"type":"object","title":"Expiries"},"plan_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Name"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["pro","sources","expiries"],"title":"EntitlementResponse"},"FeedbackRequest":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"rating":{"type":"integer","maximum":5.0,"minimum":1.0,"title":"Rating","description":"1-5 star rating"},"category":{"anyOf":[{"type":"string","pattern":"^(quality|speed|prompt_accuracy|artifact|nsfw_false_positive|other)$"},{"type":"null"}],"title":"Category","description":"Feedback category"},"comment":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Comment"}},"type":"object","required":["generation_id","rating"],"title":"FeedbackRequest"},"FeedbackResponse":{"properties":{"id":{"type":"integer","title":"Id"},"generation_id":{"type":"string","title":"Generation Id"},"rating":{"type":"integer","title":"Rating"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Comment"},"message":{"type":"string","title":"Message","default":"Feedback submitted. Thank you!"}},"type":"object","required":["id","generation_id","rating","category","comment"],"title":"FeedbackResponse"},"GenRequest":{"properties":{"prompt":{"type":"string","maxLength":1000,"title":"Prompt","description":"What the element should look like (optional with a type)","default":""},"type":{"type":"string","title":"Type","description":"Element preset; see /v1/vfx/element/types","default":"fire"},"resolution":{"type":"string","title":"Resolution","default":"1080p"},"duration":{"type":"integer","maximum":10.0,"minimum":4.0,"title":"Duration","description":"Snapped to a supported value (4/5/8/10)","default":5},"seed":{"type":"integer","minimum":0.0,"title":"Seed","default":3},"ref_video_url":{"type":"string","maxLength":2000,"title":"Ref Video Url","description":"Optional public URL of YOUR footage. If set: V2V 'isolate' mode — keep the described subject/effect, black out everything else, key to a shot-matched element.","default":""},"subject_image":{"type":"string","maxLength":12000000,"title":"Subject Image","description":"Optional PERSON image (http(s) URL or data URI). If set: render the effect ON the subject via i2v — tracked to the body, full-resolution, correct colour — instead of a detached centred element (use this for 'burning man' / fire-on-a-person shots).","default":""}},"type":"object","title":"GenRequest"},"GenerationStatus":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"status":{"type":"string","title":"Status"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"output_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Url"},"processing_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Processing Ms"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"friendly_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Friendly Message"},"retry_hint":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Retry Hint"},"watermarked":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Watermarked"},"guidance":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Guidance"},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["generation_id","status"],"title":"GenerationStatus"},"GoogleMobileAuthRequest":{"properties":{"id_token":{"type":"string","minLength":20,"title":"Id Token"}},"type":"object","required":["id_token"],"title":"GoogleMobileAuthRequest"},"GoogleMobileAuthResponse":{"properties":{"api_key":{"type":"string","title":"Api Key"},"token":{"type":"string","title":"Token"},"email":{"type":"string","title":"Email"},"credits":{"type":"number","title":"Credits"},"plan":{"type":"string","title":"Plan"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"is_new":{"type":"boolean","title":"Is New"}},"type":"object","required":["api_key","token","email","credits","plan","is_new"],"title":"GoogleMobileAuthResponse"},"GoogleVerifyRequest":{"properties":{"purchase_token":{"type":"string","title":"Purchase Token"},"product_id":{"type":"string","title":"Product Id"}},"type":"object","required":["purchase_token","product_id"],"title":"GoogleVerifyRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ImageEditRequest":{"properties":{"image":{"type":"string","title":"Image","description":"Input image as URL (http/https) or base64 data URI (data:image/...;base64,...)"},"structured_edit":{"type":"boolean","title":"Structured Edit","description":"STRUCTURED_EDIT_STEPS_V1: opt this edit into the fused-transformer honored step budget (drape-heal lane). Internal/advanced callers only.","default":false},"reference_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference Image","description":"Optional SECOND image (URL or base64 data URI) used as a visual reference the edit should apply — e.g. the garment/saree to drape onto the person in `image`. When set, refer to it in the prompt as 'the second image'. Output keeps the primary image's size/aspect."},"prompt":{"type":"string","maxLength":2000,"minLength":1,"title":"Prompt","description":"Edit instruction, e.g. 'make the background a sunset beach scene'"},"model":{"type":"string","title":"Model","description":"Model to use for editing. Currently supports: firered-edit","default":"firered-edit"},"negative_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Negative Prompt","description":"Optional negative prompt","default":" "},"steps":{"anyOf":[{"type":"integer","maximum":80.0,"minimum":10.0},{"type":"null"}],"title":"Steps","description":"Number of inference steps (default: 40)","default":40},"cfg_scale":{"anyOf":[{"type":"number","maximum":10.0,"minimum":1.0},{"type":"null"}],"title":"Cfg Scale","description":"True CFG scale (default: 4.0)","default":4.0},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed for reproducibility"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url","description":"Optional webhook URL for completion notification"},"operation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operation","description":"Edit operation type: product-photo (AI product photography pipeline)"},"quality_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quality Tier","description":"Tier B6: fast|balanced|quality — maps to steps/cfg when set.  # TIER_B6_WIRED"}},"type":"object","required":["image","prompt"],"title":"ImageEditRequest","description":"Request body for POST /v1/image/edit"},"ImageEditResponse":{"properties":{"id":{"type":"string","title":"Id"},"status":{"type":"string","title":"Status"},"credits_used":{"type":"integer","title":"Credits Used"},"message":{"type":"string","title":"Message"},"eta_seconds":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Eta Seconds"},"suggestion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suggestion"}},"type":"object","required":["id","status","credits_used","message"],"title":"ImageEditResponse"},"InboundMsg":{"properties":{"wa_msg_id":{"type":"string","title":"Wa Msg Id"},"sender_phone":{"type":"string","title":"Sender Phone"},"sender_name":{"type":"string","title":"Sender Name","default":""},"body":{"type":"string","title":"Body","default":""},"timestamp_unix":{"type":"integer","title":"Timestamp Unix","default":0}},"type":"object","required":["wa_msg_id","sender_phone"],"title":"InboundMsg"},"InferRequest":{"properties":{"tune_id":{"type":"string","title":"Tune Id","description":"ID of trained LoRA model"},"prompt":{"type":"string","title":"Prompt","description":"Prompt (include trigger word)"},"negative_prompt":{"type":"string","title":"Negative Prompt","description":"Negative prompt","default":""},"width":{"type":"integer","maximum":2048.0,"minimum":256.0,"title":"Width","default":1024},"height":{"type":"integer","maximum":2048.0,"minimum":256.0,"title":"Height","default":1024},"num_images":{"type":"integer","maximum":4.0,"minimum":1.0,"title":"Num Images","default":1},"guidance_scale":{"type":"number","maximum":20.0,"minimum":1.0,"title":"Guidance Scale","default":7.5},"steps":{"type":"integer","maximum":100.0,"minimum":10.0,"title":"Steps","default":30},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed for reproducibility"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url","description":"URL to POST when inference completes"}},"type":"object","required":["tune_id","prompt"],"title":"InferRequest"},"InferResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"credits_cost":{"type":"integer","title":"Credits Cost"},"credits_remaining":{"type":"number","title":"Credits Remaining"}},"type":"object","required":["job_id","status","credits_cost","credits_remaining"],"title":"InferResponse"},"InitRequest":{"properties":{"shot_name":{"type":"string","title":"Shot Name"},"frame_count":{"type":"integer","title":"Frame Count"},"frame_start":{"type":"integer","title":"Frame Start","default":1},"sprintf_pattern":{"type":"string","title":"Sprintf Pattern","default":""},"prompt":{"type":"string","title":"Prompt","default":""},"content_hash":{"type":"string","title":"Content Hash","default":""}},"type":"object","required":["shot_name","frame_count"],"title":"InitRequest"},"InitResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"upload_url":{"type":"string","title":"Upload Url"},"upload_hosts":{"items":{},"type":"array","title":"Upload Hosts","default":[]},"sprintf_pattern":{"type":"string","title":"Sprintf Pattern"},"expected_frames":{"type":"integer","title":"Expected Frames"},"credits_reserved":{"type":"number","title":"Credits Reserved"},"message":{"type":"string","title":"Message"},"reused":{"type":"boolean","title":"Reused","default":false},"uploaded_frames":{"type":"integer","title":"Uploaded Frames","default":0}},"type":"object","required":["job_id","upload_url","sprintf_pattern","expected_frames","credits_reserved","message"],"title":"InitResponse"},"InvitationVideoRequest":{"properties":{"event_type":{"type":"string","title":"Event Type","description":"wedding, birthday, housewarming, anniversary, ceremony, generic, party","default":"wedding"},"title_english":{"type":"string","maxLength":200,"title":"Title English","description":"English header/title","default":""},"title_vernacular":{"type":"string","maxLength":200,"title":"Title Vernacular","description":"Vernacular header (Telugu, Devanagari, Arabic, etc.)","default":""},"invocation_vernacular":{"type":"string","maxLength":250,"title":"Invocation Vernacular","description":"Sacred invocation, tagline, or blessing","default":""},"primary_name_english":{"type":"string","maxLength":150,"title":"Primary Name English","description":"Primary subject in English","default":""},"secondary_name_english":{"type":"string","maxLength":150,"title":"Secondary Name English","description":"Secondary subject in English","default":""},"primary_name_vernacular":{"type":"string","maxLength":150,"title":"Primary Name Vernacular","description":"Primary subject in native script","default":""},"secondary_name_vernacular":{"type":"string","maxLength":150,"title":"Secondary Name Vernacular","description":"Secondary subject in native script","default":""},"event_date":{"type":"string","maxLength":100,"minLength":1,"title":"Event Date","description":"Date string for the event"},"muhurtham":{"type":"string","maxLength":150,"title":"Muhurtham","description":"Auspicious time / ceremony schedule","default":""},"venue_name":{"type":"string","maxLength":250,"minLength":1,"title":"Venue Name","description":"Venue name"},"venue_address":{"type":"string","maxLength":300,"title":"Venue Address","description":"Venue street/city address","default":""},"sub_events":{"items":{"$ref":"#/components/schemas/SubEventModel"},"type":"array","maxItems":10,"title":"Sub Events"},"host_blessing":{"type":"string","maxLength":300,"title":"Host Blessing","default":"Soliciting your gracious presence and blessings"},"rsvp_contacts":{"type":"string","maxLength":300,"title":"Rsvp Contacts","default":"With Best Compliments from Family and Friends"},"theme_name":{"type":"string","title":"Theme Name","description":"Theme key or 'custom'","default":"royal_indigo"},"theme_prompt":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Theme Prompt","description":"Dynamic background and theme requirements (e.g. colors, mood, motifs, aesthetic)"},"bg_style":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Bg Style","description":"Motif style: auto, mandala, arabesque, floral, minimalist, confetti"},"music_url":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Music Url","description":"Custom background music URL"},"youtube_url":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Youtube Url","description":"Optional YouTube URL for custom background score extraction"},"photo_url":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Photo Url","description":"Optional portrait photo URL"},"recipient_name":{"anyOf":[{"type":"string","maxLength":150},{"type":"null"}],"title":"Recipient Name","description":"Optional recipient name for personalized greeting slide"}},"type":"object","required":["event_date","venue_name"],"title":"InvitationVideoRequest"},"JobStatusResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"progress":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Progress"},"result_urls":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Result Urls"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"created_at":{"type":"string","title":"Created At"},"completed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Completed At"}},"type":"object","required":["job_id","status","created_at"],"title":"JobStatusResponse"},"LoginRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest"},"MobileCodeExchangeRequest":{"properties":{"code":{"type":"string","maxLength":64,"minLength":32,"title":"Code"},"code_verifier":{"type":"string","maxLength":128,"minLength":43,"title":"Code Verifier"},"state":{"type":"string","maxLength":128,"minLength":16,"title":"State"}},"type":"object","required":["code","code_verifier","state"],"title":"MobileCodeExchangeRequest"},"ModerationResponse":{"properties":{"moderation_id":{"type":"string","title":"Moderation Id"},"credits_used":{"type":"number","title":"Credits Used"},"results":{"items":{"$ref":"#/components/schemas/ModerationResult"},"type":"array","title":"Results"},"total_images":{"type":"integer","title":"Total Images"},"output_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Url"}},"type":"object","required":["moderation_id","credits_used","results","total_images"],"title":"ModerationResponse"},"ModerationResult":{"properties":{"label":{"type":"string","title":"Label"},"nsfw_score":{"type":"number","title":"Nsfw Score"},"safe_score":{"type":"number","title":"Safe Score"},"confidence":{"type":"number","title":"Confidence"}},"type":"object","required":["label","nsfw_score","safe_score","confidence"],"title":"ModerationResult"},"MovRequest":{"properties":{"job_id":{"type":"string","title":"Job Id"}},"type":"object","required":["job_id"],"title":"MovRequest"},"MultimodalCapabilities":{"properties":{"capabilities":{"items":{"$ref":"#/components/schemas/MultimodalCapability"},"type":"array","title":"Capabilities"}},"type":"object","required":["capabilities"],"title":"MultimodalCapabilities"},"MultimodalCapability":{"properties":{"operation":{"type":"string","enum":["audio-to-image","image-to-video","refine-prompt","describe-image","describe-audio"],"title":"Operation"},"quality":{"anyOf":[{"type":"string","enum":["fast","full"]},{"type":"null"}],"title":"Quality"},"available":{"type":"boolean","title":"Available"}},"type":"object","required":["operation","available"],"title":"MultimodalCapability"},"MultimodalStatus":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"status":{"type":"string","title":"Status"},"model":{"type":"string","title":"Model"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"credits_used":{"type":"number","title":"Credits Used"},"output_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Url"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"},"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":["generation_id","status","model","credits_used"],"title":"MultimodalStatus"},"OutboundMsg":{"properties":{"outbound_id":{"type":"integer","title":"Outbound Id"},"recipient_phone":{"type":"string","title":"Recipient Phone"},"body":{"type":"string","title":"Body"}},"type":"object","required":["outbound_id","recipient_phone","body"],"title":"OutboundMsg"},"OutboundPollResp":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/OutboundMsg"},"type":"array","title":"Messages"}},"type":"object","required":["messages"],"title":"OutboundPollResp"},"OutpaintRequest":{"properties":{"image_url":{"type":"string","title":"Image Url","description":"URL of the image to extend"},"direction":{"type":"string","pattern":"^(all|left|right|top|bottom)$","title":"Direction","default":"all"},"extend_pixels":{"type":"integer","maximum":512.0,"minimum":64.0,"title":"Extend Pixels","default":256},"prompt":{"type":"string","maxLength":500,"title":"Prompt","default":""}},"type":"object","required":["image_url"],"title":"OutpaintRequest"},"OutpaintResponse":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"status":{"type":"string","title":"Status"},"credits_used":{"type":"number","title":"Credits Used"}},"type":"object","required":["generation_id","status","credits_used"],"title":"OutpaintResponse"},"OverrideReq":{"properties":{"phone":{"type":"string","title":"Phone"},"mode":{"type":"string","title":"Mode"},"reason":{"type":"string","title":"Reason","default":""}},"type":"object","required":["phone","mode"],"title":"OverrideReq"},"PhotoRestoreAsyncResponse":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"status":{"type":"string","title":"Status"},"credits_used":{"type":"number","title":"Credits Used"},"poll_url":{"type":"string","title":"Poll Url"},"estimated_seconds":{"type":"integer","title":"Estimated Seconds"}},"type":"object","required":["generation_id","status","credits_used","poll_url","estimated_seconds"],"title":"PhotoRestoreAsyncResponse"},"PixelForgeGenerateRequest":{"properties":{"prompt":{"type":"string","maxLength":500,"minLength":3,"title":"Prompt"},"style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Style","description":"Preset: warrior, monster, item, tile, ui, background"},"mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode","description":"'spritesheet' (default) — uses nerijs/pixel-art-xl LoRA at 512x512. Best for tilesets, multi-character sheets, varied game assets. 7-8/10. OR 'single' — uses our custom LPC-trained LoRA at 768x768. Best for ISOLATED CHARACTER prompts (knight, monster, hero). 7-8/10 on characters, but only 4-5/10 on items (chest, potion, bottle) because the LPC training set was character-heavy. For 10/10 isolated single-asset output regardless of subject, use POST /v1/pixelforge/sketch with a stick-figure / line-drawing control image — that path uses ControlNet-Scribble + LoRA and consistently delivers production-grade single-character pixel art.","default":"spritesheet"},"seed":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Seed"},"webhook_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Webhook Url"}},"type":"object","required":["prompt"],"title":"PixelForgeGenerateRequest"},"PixelForgeSketchRequest":{"properties":{"image_url":{"type":"string","title":"Image Url","description":"URL of the sketch / line drawing to use as a control image"},"prompt":{"type":"string","maxLength":500,"minLength":3,"title":"Prompt"},"style":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Style","description":"Preset: warrior, monster, item, tile, ui, background"},"controlnet_strength":{"anyOf":[{"type":"number","maximum":1.5,"minimum":0.0},{"type":"null"}],"title":"Controlnet Strength","description":"How tightly the output follows the sketch. 0.5 = loose, 0.7 = balanced, 1.0+ = strict.","default":0.7},"seed":{"anyOf":[{"type":"integer","minimum":0.0},{"type":"null"}],"title":"Seed"},"webhook_url":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Webhook Url"}},"type":"object","required":["image_url","prompt"],"title":"PixelForgeSketchRequest"},"PolishStatus":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"status":{"type":"string","title":"Status"},"output_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Url"},"processing_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Processing Ms"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"credits_used":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Credits Used"}},"type":"object","required":["generation_id","status"],"title":"PolishStatus"},"PreflightRequest":{"properties":{"prompt":{"type":"string","maxLength":5000,"minLength":1,"title":"Prompt"},"kind":{"type":"string","maxLength":80,"title":"Kind","default":"v1.5"},"resolution":{"type":"string","enum":["480p","720p","1080p","4k"],"title":"Resolution","default":"1080p"},"duration":{"type":"integer","maximum":30.0,"minimum":1.0,"title":"Duration","default":5},"reference_kind":{"type":"string","enum":["none","image","video"],"title":"Reference Kind","default":"none"},"rights_confirmed":{"type":"boolean","title":"Rights Confirmed","default":false},"auto_adapt":{"type":"boolean","title":"Auto Adapt","default":false}},"type":"object","required":["prompt"],"title":"PreflightRequest"},"ProductPhotoCatalogueResponse":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"status":{"type":"string","title":"Status"},"credits_used":{"type":"number","title":"Credits Used"},"pipeline":{"items":{},"type":"array","title":"Pipeline","default":["remove-background","catalogue-clean-layout"]},"estimated_seconds":{"type":"integer","title":"Estimated Seconds","default":20}},"type":"object","required":["generation_id","status","credits_used"],"title":"ProductPhotoCatalogueResponse"},"Recipe":{"properties":{"preset":{"type":"string","title":"Preset","default":"true_color"},"strength":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Strength","default":1},"exposure":{"type":"number","maximum":1.5,"minimum":-1.5,"title":"Exposure","default":0},"warmth":{"type":"number","maximum":30.0,"minimum":-30.0,"title":"Warmth","default":0},"contrast":{"type":"number","maximum":1.2,"minimum":0.8,"title":"Contrast","default":1},"saturation":{"type":"number","maximum":1.3,"minimum":0.7,"title":"Saturation","default":1},"jpeg_quality":{"type":"integer","maximum":98.0,"minimum":80.0,"title":"Jpeg Quality","default":94}},"type":"object","title":"Recipe"},"RefundRequest":{"properties":{"user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"User Id"},"payment_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Payment Id"},"reason":{"type":"string","title":"Reason","default":"Customer request"}},"type":"object","title":"RefundRequest"},"RetryRequest":{"properties":{"asset_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Asset Ids"}},"type":"object","title":"RetryRequest"},"RevokeRequest":{"properties":{"user_id":{"type":"integer","title":"User Id"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason","default":""}},"type":"object","required":["user_id"],"title":"RevokeRequest"},"SareeRequest":{"properties":{"person":{"type":"string","title":"Person","description":"Person photo as URL (http/https) or base64 data URI. For best results use a clear, well-lit, FRONT-FACING, FULL-BODY photo (head to below the knee)."},"garment":{"type":"string","title":"Garment","description":"Saree (or lehenga) image as URL or base64 data URI. Flat-lay or on-model both work."},"type":{"type":"string","title":"Type","description":"Drape type: 'saree' (default), 'lehenga', or 'attire' (garment-faithful outfit swap — keeps the garment's type/colour exactly; works on upper-body/headshot photos).","default":"saree"},"notes":{"type":"string","title":"Notes","description":"Optional styling notes appended to the drape, e.g. 'pallu over the right shoulder', 'neat tucked pleats', 'contrast gold blouse', 'half-saree style'. Leave blank for the standard drape.","default":""},"webhook_url":{"type":"string","title":"Webhook Url","description":"Optional webhook URL for completion notification."}},"type":"object","required":["person","garment"],"title":"SareeRequest"},"ScanSaveRequest":{"properties":{"url":{"type":"string","title":"Url","default":""},"keyword":{"type":"string","title":"Keyword","default":""},"score":{"type":"number","title":"Score","default":0},"grade":{"type":"string","title":"Grade","default":""}},"type":"object","title":"ScanSaveRequest"},"SignupRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","maxLength":128,"minLength":8,"title":"Password"}},"type":"object","required":["email","password"],"title":"SignupRequest"},"StartRequest":{"properties":{"job_id":{"type":"string","title":"Job Id"},"prompt":{"type":"string","maxLength":5000,"title":"Prompt","default":""},"v2v_model":{"type":"string","title":"V2V Model","default":"passthrough"},"rights_confirmed":{"type":"boolean","title":"Rights Confirmed","default":false},"deliverables":{"items":{"type":"string"},"type":"array","title":"Deliverables","description":"List of ['composited', 'rgba_matte', 'alpha_only']","default":["composited"]},"reprocess":{"type":"boolean","title":"Reprocess","default":false}},"type":"object","required":["job_id"],"title":"StartRequest"},"StatusResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"stage":{"type":"string","title":"Stage"},"progress":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Progress"},"shot_info":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Shot Info"},"preview_mp4_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preview Mp4 Url"},"download_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Download Url"},"matte_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Matte Url"},"alpha_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alpha Url"},"share_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Token"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"created_at":{"type":"integer","title":"Created At"},"updated_at":{"type":"integer","title":"Updated At"}},"type":"object","required":["job_id","stage","created_at","updated_at"],"title":"StatusResponse"},"StemsRequest":{"properties":{"audio_url":{"type":"string","title":"Audio Url","description":"HTTPS URL of audio to separate (mp3/wav/m4a/flac/ogg)."},"two_stems":{"type":"boolean","title":"Two Stems","description":"If true, split only vocals vs accompaniment (2 stems). Else 4 stems.","default":false}},"type":"object","required":["audio_url"],"title":"StemsRequest"},"SubEventModel":{"properties":{"title_vernacular":{"type":"string","maxLength":150,"title":"Title Vernacular","default":""},"title_english":{"type":"string","maxLength":150,"title":"Title English","default":""},"datetime_str":{"type":"string","maxLength":100,"title":"Datetime Str","default":""},"venue":{"type":"string","maxLength":250,"title":"Venue","default":""},"description":{"type":"string","maxLength":300,"title":"Description","default":""}},"type":"object","title":"SubEventModel"},"SubscriptionStatusResponse":{"properties":{"plan":{"type":"string","title":"Plan"},"subscription_status":{"type":"string","title":"Subscription Status"},"paypal_subscription_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Paypal Subscription Id"},"plan_expires_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Expires At"},"credits_remaining":{"type":"number","title":"Credits Remaining"}},"type":"object","required":["plan","subscription_status","paypal_subscription_id","plan_expires_at","credits_remaining"],"title":"SubscriptionStatusResponse"},"SupportRequest":{"properties":{"session_id":{"type":"string","maxLength":64,"title":"Session Id"},"message":{"type":"string","maxLength":2000,"title":"Message"},"page_url":{"anyOf":[{"type":"string","maxLength":400},{"type":"null"}],"title":"Page Url"},"page_context":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Page Context"},"screenshot":{"anyOf":[{"type":"string","maxLength":900000},{"type":"null"}],"title":"Screenshot"},"surface":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Surface"}},"type":"object","required":["session_id","message"],"title":"SupportRequest"},"TelemetryEvent":{"properties":{"event_type":{"type":"string","maxLength":32,"minLength":2,"title":"Event Type"},"tool_id":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Tool Id"},"error_class":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}],"title":"Error Class"},"error_message":{"anyOf":[{"type":"string","maxLength":2048},{"type":"null"}],"title":"Error Message"},"first_frame":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}],"title":"First Frame"},"app_version":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"App Version"},"app_vc":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"App Vc"},"android_sdk":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Android Sdk"},"platform":{"anyOf":[{"type":"string","maxLength":16},{"type":"null"}],"title":"Platform","default":"android"},"os_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Os Version"},"device_model":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Device Model"},"device_id_hash":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Device Id Hash"},"payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Payload"}},"type":"object","required":["event_type"],"title":"TelemetryEvent","description":"Single telemetry event from the app. All fields optional except event_type."},"TrainRequest":{"properties":{"model":{"type":"string","title":"Model","description":"Base model: 'sdxl' or 'flux'"},"trigger_word":{"type":"string","title":"Trigger Word","description":"Unique trigger word for the LoRA (e.g., 'TOK', 'my-style')"},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url","description":"URL to POST when training completes"},"steps":{"type":"integer","maximum":5000.0,"minimum":100.0,"title":"Steps","description":"Training steps (100-5000)","default":1000},"learning_rate":{"type":"number","title":"Learning Rate","description":"Learning rate","default":0.0001},"rank":{"type":"integer","maximum":128.0,"minimum":4.0,"title":"Rank","description":"LoRA rank (4-128)","default":16}},"type":"object","required":["model","trigger_word"],"title":"TrainRequest"},"TrainResponse":{"properties":{"job_id":{"type":"string","title":"Job Id"},"status":{"type":"string","title":"Status"},"model":{"type":"string","title":"Model"},"estimated_time_seconds":{"type":"integer","title":"Estimated Time Seconds"},"credits_cost":{"type":"integer","title":"Credits Cost"},"credits_remaining":{"type":"number","title":"Credits Remaining"},"upload_url":{"type":"string","title":"Upload Url"}},"type":"object","required":["job_id","status","model","estimated_time_seconds","credits_cost","credits_remaining","upload_url"],"title":"TrainResponse"},"TransformRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"},"object_index":{"type":"integer","title":"Object Index","default":0},"background":{"$ref":"#/components/schemas/BackgroundChoice"},"camera_preset":{"type":"string","title":"Camera Preset","default":"turntable"}},"type":"object","required":["session_id","background"],"title":"TransformRequest"},"TuneModel":{"properties":{"tune_id":{"type":"string","title":"Tune Id"},"trigger_word":{"type":"string","title":"Trigger Word"},"base_model":{"type":"string","title":"Base Model"},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","title":"Created At"},"file_size_mb":{"type":"number","title":"File Size Mb"}},"type":"object","required":["tune_id","trigger_word","base_model","status","created_at","file_size_mb"],"title":"TuneModel"},"UpscaleStatus":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"status":{"type":"string","title":"Status"},"output_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Url"},"processing_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Processing Ms"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"}},"type":"object","required":["generation_id","status"],"title":"UpscaleStatus"},"VTONOutfitRequest":{"properties":{"person_image":{"type":"string","title":"Person Image","description":"Base64-encoded person image (JPEG/PNG/WebP)"},"upperbody_garment":{"type":"string","title":"Upperbody Garment","description":"Base64-encoded top/shirt garment"},"lowerbody_garment":{"type":"string","title":"Lowerbody Garment","description":"Base64-encoded bottom/pants/skirt garment"},"n_steps":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"N Steps","default":40},"image_scale":{"type":"number","maximum":10.0,"minimum":0.1,"title":"Image Scale","default":2.0},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url"}},"type":"object","required":["person_image","upperbody_garment","lowerbody_garment"],"title":"VTONOutfitRequest"},"VTONRequest":{"properties":{"garment_image":{"type":"string","title":"Garment Image","description":"Base64-encoded garment image (JPEG/PNG/WebP)"},"person_image":{"type":"string","title":"Person Image","description":"Base64-encoded person/model image (JPEG/PNG/WebP)"},"category":{"type":"string","title":"Category","description":"upperbody | lowerbody | dress | saree | lehenga | kurti | sherwani","default":"upperbody"},"n_samples":{"type":"integer","maximum":1.0,"minimum":1.0,"title":"N Samples","description":"One result per request. Submit a separate request for each additional result.","default":1},"n_steps":{"type":"integer","maximum":50.0,"minimum":1.0,"title":"N Steps","default":40},"image_scale":{"type":"number","maximum":10.0,"minimum":0.1,"title":"Image Scale","default":2.0},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url"}},"type":"object","required":["garment_image","person_image"],"title":"VTONRequest"},"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"},"VastuRequest":{"properties":{"facing":{"type":"string","title":"Facing","examples":["north","north-east","east"]},"plot":{"$ref":"#/components/schemas/_Plot"},"rooms":{"items":{"$ref":"#/components/schemas/_Room"},"type":"array","title":"Rooms"},"main_entrance":{"anyOf":[{"$ref":"#/components/schemas/_Point"},{"type":"null"}]},"features":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/_Point"},"type":"object"},{"type":"null"}],"title":"Features"}},"type":"object","required":["facing","plot"],"title":"VastuRequest"},"VerifyPaymentRequest":{"properties":{"razorpay_order_id":{"type":"string","title":"Razorpay Order Id"},"razorpay_payment_id":{"type":"string","title":"Razorpay Payment Id"},"razorpay_signature":{"type":"string","title":"Razorpay Signature"},"product":{"type":"string","title":"Product"}},"type":"object","required":["razorpay_order_id","razorpay_payment_id","razorpay_signature","product"],"title":"VerifyPaymentRequest"},"VfxFinalizeRequest":{"properties":{"prepare_id":{"type":"string","title":"Prepare Id"},"bbox":{"additionalProperties":true,"type":"object","title":"Bbox"},"shadow_opacity":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shadow Opacity"},"light_angle_deg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Light Angle Deg"},"subject_angle_deg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Subject Angle Deg","default":0.0},"tone_match_strength":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tone Match Strength","default":0.5},"harmonize":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Harmonize","default":false}},"type":"object","required":["prepare_id","bbox"],"title":"VfxFinalizeRequest"},"VfxGenerateResponse":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"model":{"type":"string","title":"Model"},"kind":{"type":"string","title":"Kind"},"duration":{"type":"integer","title":"Duration"},"seed":{"type":"integer","title":"Seed","default":0},"credits_used":{"type":"integer","title":"Credits Used"}},"type":"object","required":["generation_id","model","kind","duration","credits_used"],"title":"VfxGenerateResponse"},"VfxStatus":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"status":{"type":"string","title":"Status"},"output_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Url"},"direct_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Direct Url"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"},"native_resolution":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Native Resolution"}},"type":"object","required":["generation_id","status"],"title":"VfxStatus"},"VideoStatus":{"properties":{"generation_id":{"type":"string","title":"Generation Id"},"status":{"type":"string","title":"Status"},"output_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Url"},"processing_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Processing Ms"},"error_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Message"},"estimated_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Estimated Seconds"},"elapsed_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Elapsed Seconds"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"}},"type":"object","required":["generation_id","status"],"title":"VideoStatus"},"VideoTryonRequest":{"properties":{"person_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Person Image","description":"A full-body, front-facing photo of the PERSON (http(s) URL or base64 data URI). Required unless you pass a pre-dressed `look_image`."},"garment_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Garment Image","description":"The GARMENT/cloth to put on the person (http(s) URL or base64 data URI). A saree/lehenga flat photo, or a t-shirt/shirt/jeans/dress product image."},"garment_type":{"type":"string","title":"Garment Type","description":"What kind of garment: one of ['blouse', 'dress', 'frock', 'fullbody', 'fullbodydress', 'gown', 'hoodie', 'jacket', 'jeans', 'jumpsuit', 'kurta', 'kurti', 'leggings', 'lehenga', 'lehenga-choli', 'lehenga_choli', 'lehengacholi', 'lowerbody', 'pants', 'saree', 'sari', 'shirt', 'shorts', 'skirt', 'sweater', 'sweatshirt', 't-shirt', 'top', 'trousers', 'tshirt', 'upperbody', 'western']. 'saree'/'lehenga' use the drape engine; everything else uses the western virtual try-on.","default":"tshirt"},"template":{"type":"string","title":"Template","description":"Motion template the user selects: one of ('female_turn', 'female_walk', 'female_pose', 'female_sit', 'male_turn', 'male_walk', 'male_pose', 'male_sit'). 'turn'/'walk' are most reliable; match the gender to the person.","default":"female_turn"},"look_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Look Image","description":"ADVANCED / backward-compat: a person ALREADY wearing the outfit (full-body). If given, Stage A (try-on) is skipped and this look is animated directly."},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Optional scene/style hint, e.g. 'runway, studio lighting'."},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment","description":"Optional VIRTUAL ENVIRONMENT: describe a scene to place yourself in (e.g. 'a sunlit Paris boulevard', 'a luxury boutique', 'a beach at sunset'). Your photo and garment are preserved; only the background scene is generated. Costs +200 credits on top of the base try-on."},"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url"}},"type":"object","title":"VideoTryonRequest"},"WebhookConfigRequest":{"properties":{"webhook_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Url"},"regenerate_secret":{"type":"boolean","title":"Regenerate Secret","default":false}},"type":"object","title":"WebhookConfigRequest"},"_CoinSwitchMode":{"properties":{"target_mode":{"type":"string","title":"Target Mode"},"confirm":{"type":"string","title":"Confirm"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","default":"pixelapi-admin"}},"type":"object","required":["target_mode","confirm"],"title":"_CoinSwitchMode"},"_MailDecision":{"properties":{"mail_id":{"type":"integer","title":"Mail Id"}},"type":"object","required":["mail_id"],"title":"_MailDecision"},"_Plot":{"properties":{"width_ft":{"type":"number","maximum":2000.0,"exclusiveMinimum":0.0,"title":"Width Ft"},"depth_ft":{"type":"number","maximum":2000.0,"exclusiveMinimum":0.0,"title":"Depth Ft"}},"type":"object","required":["width_ft","depth_ft"],"title":"_Plot"},"_Point":{"properties":{"x":{"type":"number","title":"X"},"y":{"type":"number","title":"Y"}},"type":"object","required":["x","y"],"title":"_Point"},"_QcDecision":{"properties":{"incident_id":{"type":"string","title":"Incident Id"},"decision":{"type":"string","title":"Decision"},"note":{"type":"string","title":"Note","default":""},"action_id":{"type":"string","title":"Action Id","default":""}},"type":"object","required":["incident_id","decision"],"title":"_QcDecision"},"_Room":{"properties":{"name":{"type":"string","title":"Name"},"x":{"type":"number","title":"X"},"y":{"type":"number","title":"Y"},"w":{"type":"number","exclusiveMinimum":0.0,"title":"W"},"h":{"type":"number","exclusiveMinimum":0.0,"title":"H"}},"type":"object","required":["name","x","y","w","h"],"title":"_Room"},"gateway__api__v1__wedding_workflow__Review":{"properties":{"asset_ids":{"items":{"type":"string","format":"uuid"},"type":"array","maxItems":5000,"minItems":1,"title":"Asset Ids"},"selected":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Selected"},"rating":{"anyOf":[{"type":"integer","maximum":5.0,"minimum":0.0},{"type":"null"}],"title":"Rating"}},"type":"object","required":["asset_ids"],"title":"Review"},"gateway__dashboard__deletion_review__Review":{"properties":{"decision":{"type":"string","title":"Decision"},"reviewer":{"type":"string","maxLength":120,"minLength":1,"title":"Reviewer"},"reason":{"type":"string","maxLength":4000,"minLength":10,"title":"Reason"},"severity":{"type":"string","title":"Severity"},"legal_hold":{"type":"boolean","title":"Legal Hold","default":false}},"type":"object","required":["decision","reviewer","reason","severity"],"title":"Review"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}