{"items":[{"type":"link","label":"AI Makeup Virtual Try-On","link":"/reference/makeup_vto","routeSlug":"/reference/makeup_vto","content":{"contentType":"overview","meta":{"name":"AI Makeup Virtual Try-On"},"children":[{"nodeType":"container","panels":[{"title":"Download OpenAPI description","titleTranslationKey":"download.description.title","children":[{"kind":"download","label":"makeup_vto.json","url":"/_bundle/reference/makeup_vto.json?download"},{"kind":"download","label":"makeup_vto.yaml","url":"/_bundle/reference/makeup_vto.yaml?download"}]},{"title":"Overview","titleTranslationKey":"info.title","children":[{"kind":"email","title":"E-mail","titleTranslationKey":"info.contact.name","email":"YouCamOnlineEditor_API@perfectcorp.com","label":"YouCamOnlineEditor_API@perfectcorp.com","withCopyButton":true,"copyContent":"YouCamOnlineEditor_API@perfectcorp.com"},{"kind":"externallink","title":"License","titleTranslationKey":"info.license","label":"Privacy policy","url":"https://www.makeupar.com/perfectbeauty/youcam/privacy-policy-api"},{"kind":"externallink","label":"Terms of Service","labelTranslationKey":"info.termsOfService","url":"https://www.makeupar.com/perfectbeauty/youcam/terms-of-service-api"}]},{"title":"Languages","titleTranslationKey":"languages.title","children":[{"kind":"languages","options":[{"key":"curl","title":"curl","lang":"curl"},{"key":"javascript","title":"JavaScript","lang":"JavaScript"},{"key":"node","title":"Node.js","lang":"Node.js"},{"key":"python","title":"Python","lang":"Python"},{"key":"java","title":"Java","lang":"Java"},{"key":"csharp","title":"C#","lang":"C#"},{"key":"php","title":"PHP","lang":"PHP"},{"key":"go","title":"Go","lang":"Go"},{"key":"ruby","title":"Ruby","lang":"Ruby"},{"key":"r","title":"R","lang":"R"},{"key":"payload","title":"Payload","lang":"Payload"}]}]},{"title":"Servers","titleTranslationKey":"servers.title","children":[{"kind":"servers","servers":[{"url":"https://yce-api-01.makeupar.com"}],"mode":"default"}]}],"children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"header","level":1,"label":"AI Makeup Virtual Try-On","showPageActions":true},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[]}],"sectionId":"/reference/makeup_vto"}],"sectionId":"/reference/makeup_vto"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":1,"id":"section/overview"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Overview"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The AI Makeup API provides a powerful, hyper-realistic virtual makeover experience powered by our patented face-analyzing technology. This service enables your applications to apply true-to-life makeup effects onto user-provided selfie images with unprecedented customization capabilities."},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Key Features:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Hyper-realistic Rendering:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Leverages revolutionary 3D face AI technology for the most realistic makeovers."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Patented Technology:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Powered by jitter-free, lag-free deep learning algorithms optimized for all ages and ethnicities."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Real-time Precision:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Ultra-precise facial tracking that adapts to various lighting conditions."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"True-to-life Matching:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Accurately matches real-world product colors, textures (from matte to metallic), and finishes."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Core Concepts"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Color Blending"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Our AI accurately matches the color of real-life makeup products using deep learning. This ensures consumers are confident that the virtual color they see is the true color of the product they intend to purchase."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Texture & Finish Matching"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The technology simulates realistic textures and finishes, providing a highly accurate makeover experience. From matte to metallic, shimmer to satin, the AI taps into advanced algorithms to render these effects seamlessly in real-time."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Light Balancing"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The smart 3D AI engine detects lighting conditions in the user's photo or video feed. It corrects images for true-to-life makeup application, ensuring a consistent and high-quality result regardless of the environment."},"children":[]}]}]}]}]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/reference/makeup_vto/section/overview"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/overview/integration-guide"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Integration Guide"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The Makeup Virtual Try-On service operates as an asynchronous task. You must first initiate a makeup processing task by providing the image URL and a list of desired effects. The server responds with a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"task_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". You then periodically poll a status endpoint to retrieve the final result or any errors."},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Endpoint:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"/v2.0/task/makeup-vto"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authentication:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" All requests require an "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Authorization: Bearer <TOKEN>"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Workflow:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Prepare a selfie:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Upload an image or use existing file url of a face image."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Start Task ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"):"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Submit your image id/URL and makeup configuration."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Retrieve Task ID:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Capture the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"task_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from the response."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Poll Status ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"):"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Use the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"task_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" to check the status of the task. Continue polling until "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"task_status"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"success\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" or "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"error\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Playground"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Interactively explore and test the API using our official playground:"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"API Playground:"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"http://yce.makeupar.com/api-console/en/api-playground/ai-makeup-virtual-try-on/"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"http://yce.makeupar.com/api-console/en/api-playground/ai-makeup-virtual-try-on/"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authentication"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Include your API key in the request header using "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bearer Token"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":":"},"children":[]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"Authorization: Bearer <API Key>\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"Authorization: Bearer <API Key>\n"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You can find your API Key at https://yce.makeupar.com/api-console/en/api-keys/."},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Upload a Selfie"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"You can provide the source image in one of two ways:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use an Existing Public Image URL"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Instead of uploading, you may supply a publicly accessible image URL directly when initiating the AI task."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Upload via File API"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use the endpoint:"},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"POST /s2s/v2.0/file\n"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"POST /s2s/v2.0/file\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This returns a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"file_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for subsequent task execution."},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Important"},"children":[]}]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": Simply calling the File API does not upload your file. You must "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"manually upload"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" the file to the "},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"URL provided in the File API response"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". That URL is your upload destination, make sure the file is successfully transferred there before proceeding."},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Before calling the AI API, ensure your file has been successfully uploaded. Use the File API to retrieve an upload URL, then upload your file to that location. Once the upload is complete, you'll receive a "},"children":[]},{"$$mdtype":"Node","type":"em","inline":true,"attributes":{"marker":"*"},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"file_id"},"children":[]}]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in the response, this ID is what you'll use to access AI features related to that file."},"children":[]}]}]},{"$$mdtype":"Node","type":"blockquote","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Warning:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" Please note that, you will get an 500 Server Error / unknown_internal_error or 404 Not Found error when using AI APIs if you do not upload the file to the URL provided in the File API response."},"children":[]}]}]}]}]}]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"start":2,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Start Makeup Task"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"POST /s2s/v2.0/task/makeup-vto"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Initiates a new virtual makeup task on the provided image. This endpoint is asynchronous and returns with a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"task_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Request Headers"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Header"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Value"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Content-Type"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"application/json"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authorization"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Bearer YOUR_API_KEY"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example Request Body"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"src_file_url\": \"https://plugins-media.makeupar.com/strapi/assets/sample_Image_1_202b6bf6e6.jpg\",\n  \"effects\": [\n    {\n      \"category\": \"blush\",\n      \"pattern\": { \"name\": \"2colors6\" },\n      \"palettes\": [\n        { \"color\": \"#FF0000\", \"texture\": \"matte\", \"colorIntensity\": 50 },\n        { \"color\": \"#F2A53E\", \"texture\": \"matte\", \"colorIntensity\": 50 }\n      ]\n    },\n    {\n      \"category\": \"eye_liner\",\n      \"pattern\": { \"name\": \"3colors5\" },\n      \"palettes\": [\n        { \"color\": \"#000000\", \"texture\": \"matte\", \"colorIntensity\": 50 },\n        { \"color\": \"#BA0656\", \"texture\": \"matte\", \"colorIntensity\": 50 },\n        { \"color\": \"#089085\", \"texture\": \"matte\", \"colorIntensity\": 50 }\n      ]\n    }\n  ],\n  \"version\": \"1.0\"\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"src_file_url\": \"https://plugins-media.makeupar.com/strapi/assets/sample_Image_1_202b6bf6e6.jpg\",\n  \"effects\": [\n    {\n      \"category\": \"blush\",\n      \"pattern\": { \"name\": \"2colors6\" },\n      \"palettes\": [\n        { \"color\": \"#FF0000\", \"texture\": \"matte\", \"colorIntensity\": 50 },\n        { \"color\": \"#F2A53E\", \"texture\": \"matte\", \"colorIntensity\": 50 }\n      ]\n    },\n    {\n      \"category\": \"eye_liner\",\n      \"pattern\": { \"name\": \"3colors5\" },\n      \"palettes\": [\n        { \"color\": \"#000000\", \"texture\": \"matte\", \"colorIntensity\": 50 },\n        { \"color\": \"#BA0656\", \"texture\": \"matte\", \"colorIntensity\": 50 },\n        { \"color\": \"#089085\", \"texture\": \"matte\", \"colorIntensity\": 50 }\n      ]\n    }\n  ],\n  \"version\": \"1.0\"\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Request Body Schema"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Field"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Type"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Description"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"src_file_url"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"string (URL)"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A publicly accessible URL to the selfie image to be processed."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"effects"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"array of Effect"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"An array of makeup effects objects to apply. See "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"#makeup-effect-schemas"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Makeup Effect Schemas"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" for details."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"version"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"string"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The API version of the effect payload structure. Use "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"1.0\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Successful Response ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200 OK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Returns a JSON object containing the task identifier."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response Body Schema:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"status\": 200,\n  \"data\": {\n    \"task_id\": \"<string>\"\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"status\": 200,\n  \"data\": {\n    \"task_id\": \"<string>\"\n  }\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example Response:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"status\": 200,\n  \"data\": {\n    \"task_id\": \"grH0CvsgXuAIHLUzD0V1Ol34hoet3R1tvdbtiVHrDb6_UqCLKIejAIajwxrhOAfe\"\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"status\": 200,\n  \"data\": {\n    \"task_id\": \"grH0CvsgXuAIHLUzD0V1Ol34hoet3R1tvdbtiVHrDb6_UqCLKIejAIajwxrhOAfe\"\n  }\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Error Responses ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"400 Bad Request"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"401 InvalidApiKey"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", etc.)"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A standard error object will be returned with a message describing the failure."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example Error Response:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"status\": 400,\n  \"error\": \"The operation could not be completed\",\n  \"error_code\": \"CreditInsufficiency\"\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"status\": 400,\n  \"error\": \"The operation could not be completed\",\n  \"error_code\": \"CreditInsufficiency\"\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"list","attributes":{"ordered":true,"start":3,"marker":"."},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Get Task Status & Results"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"GET /s2s/v2.0/task/makeup-vto/<task_id>"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Retrieves the current status and results of an in-progress or completed task."},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Request Headers"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Header"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Value"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Authorization"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Bearer YOUR_API_KEY"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Path Parameters"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Parameter"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Type"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Description"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"task_id"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"string"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The identifier returned from the start-task endpoint."},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Successful Response ("},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"200 OK"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":")"},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A JSON object containing the status and, if completed, the results."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Response Body Schema:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"data\": {\n    \"task_status\": \"<string>\", // 'success', 'error', or a processing state (e.g., 'queued', 'processing')\n    \"results\": [ // present only when task_status is 'success'\n      {\n        \"download_url\": \"<string>\" // URL to download the processed image\n      }\n    ],\n    \"failure_reason\": \"<string>\" // present only when task_status is 'error'\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"data\": {\n    \"task_status\": \"<string>\", // 'success', 'error', or a processing state (e.g., 'queued', 'processing')\n    \"results\": [ // present only when task_status is 'success'\n      {\n        \"download_url\": \"<string>\" // URL to download the processed image\n      }\n    ],\n    \"failure_reason\": \"<string>\" // present only when task_status is 'error'\n  }\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example Success Response:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"status\": 200,\n  \"data\": {\n    \"task_status\": \"success\",\n    \"results\": {\n      \"url\": \"https://s3.storage.prod/processed/image_123.jpg?token=...\"\n    }\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"status\": 200,\n  \"data\": {\n    \"task_status\": \"success\",\n    \"results\": {\n      \"url\": \"https://s3.storage.prod/processed/image_123.jpg?token=...\"\n    }\n  }\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example Engine Error Response:"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The API query was sent successfully; however, an error occurred while executing the AI task."},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"status\": 200,\n  \"data\": {\n    \"task_status\": \"error\",\n    \"error\": \"exceed_max_filesize\",\n    \"error_message\": \"string\",\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"status\": 200,\n  \"data\": {\n    \"task_status\": \"error\",\n    \"error\": \"exceed_max_filesize\",\n    \"error_message\": \"string\",\n  }\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"blockquote","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Please note that no units will be consumed if an error occurs, whether it is a query error or an engine error."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example In-Progress Response:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"status\": 200,\n  \"data\": {\n    \"task_status\": \"running\"\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"status\": 200,\n  \"data\": {\n    \"task_status\": \"running\"\n  }\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Error Responses"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"404 InvalidTaskId"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"task_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" does not exist or is invalid."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"401 InvalidApiKey"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": The API key is invalid or missing."},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"500 TaskTimeout"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": The task has either completed successfully or failed and has exceeded the retention period."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example Query Error Response:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"status\": 401,\n  \"error_code\": \"InvalidApiKey\"\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"status\": 401,\n  \"error_code\": \"InvalidApiKey\"\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"blockquote","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Please note that no units will be consumed if an error occurs, whether it is a query error or an engine error."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/reference/makeup_vto/section/overview/integration-guide"}],"sectionId":"/reference/makeup_vto/section/overview/integration-guide"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/overview/inputs-and-outputs"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Inputs & Outputs"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Makeup Effect Schema"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This section defines the complete structure and constraints for the request body of an AI Makeup task. Each effect is an object in the top-level "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"effects"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" array."},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Effect Container (Top Level)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"version\": \"1.0\",\n  \"effects\": []                    // array<Effect> — Contains makeup effect objects\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"version\": \"1.0\",\n  \"effects\": []                    // array<Effect> — Contains makeup effect objects\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Makeup Effect Categories"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"skin_smooth"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"category\": \"skin_smooth\",           // string, const \"skin_smooth\"\n  \"skinSmoothStrength\": 50,            // integer, range: 0..100\n  \"skinSmoothColorIntensity\": 50       // integer, range: 0..100\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"category\": \"skin_smooth\",           // string, const \"skin_smooth\"\n  \"skinSmoothStrength\": 50,            // integer, range: 0..100\n  \"skinSmoothColorIntensity\": 50       // integer, range: 0..100\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"blockquote","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Note!"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" If no "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"skin_smooth"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" effect is included in the request, the AI Makeup Engine will automatically apply a default Skin Smooth value of 50."},"children":[]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Set all "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"skinSmoothStrength"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"skinSmoothColorIntensity"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" parameters to 0 if you want makeup applied with no skin smoothing. However, for best results and highest-quality blending, it is recommended to leave the default skin smoothing enabled."},"children":[]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"blush"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"category\": \"blush\",                 // string, const \"blush\"\n  \"pattern\": {                         // object\n    \"name\": \"\"                         // string — MUST equal a `label` from blush.json\n  },\n  \"palettes\": [                        // array<BlushPalette>, minItems: (see colorNum in pattern)\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"satin\",\"shimmer\"]\n      \"glowStrength\": 50,              // integer, range: 0..100 — REQUIRED if texture=\"satin\"\n      \"shimmerColor\": \"#fc288f\",       // string, hex color \"#RRGGBB\" — REQUIRED if texture=\"shimmer\"\n      \"shimmerDensity\": 50,            // integer, range: 0..100 — REQUIRED if texture=\"shimmer\"\n      \"colorIntensity\": 50             // integer, range: 0..100\n    }\n  ]\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"category\": \"blush\",                 // string, const \"blush\"\n  \"pattern\": {                         // object\n    \"name\": \"\"                         // string — MUST equal a `label` from blush.json\n  },\n  \"palettes\": [                        // array<BlushPalette>, minItems: (see colorNum in pattern)\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"satin\",\"shimmer\"]\n      \"glowStrength\": 50,              // integer, range: 0..100 — REQUIRED if texture=\"satin\"\n      \"shimmerColor\": \"#fc288f\",       // string, hex color \"#RRGGBB\" — REQUIRED if texture=\"shimmer\"\n      \"shimmerDensity\": 50,            // integer, range: 0..100 — REQUIRED if texture=\"shimmer\"\n      \"colorIntensity\": 50             // integer, range: 0..100\n    }\n  ]\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Full Pattern Catalog:"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"https://plugins-media.makeupar.com/wcm-saas/patterns/blush.json"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Distinct Makeup Pattern Categories:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"[\n  {\n    \"category\": \"1 color\",\n    \"label\": \"1color1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/483/a53cd4f4-43b6-4e19-b85a-ec7a95c6a47f.jpg\",\n    \"tags\": [\n      { \"id\": 100, \"name\": \"Blush 3D\" },\n      { \"id\": 103, \"name\": \"Oblong\" }\n    ],\n    \"colorNum\": 1\n  },\n  {\n    \"category\": \"2 colors\",\n    \"label\": \"2colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/147/a8d86a4b-8aa0-48d7-a716-63ec78dfb30b.jpg\",\n    \"tags\": [\n      { \"id\": 100, \"name\": \"Blush 3D\" }\n    ],\n    \"colorNum\": 2\n  },\n  {\n    \"category\": \"3 colors\",\n    \"label\": \"3colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/734/af8b625b-ae3a-4211-9413-f22c16a5f174.jpg\",\n    \"tags\": [\n      { \"id\": 100, \"name\": \"Blush 3D\" },\n      { \"id\": 104, \"name\": \"Round\" }\n    ],\n    \"colorNum\": 3\n  }\n]\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"[\n  {\n    \"category\": \"1 color\",\n    \"label\": \"1color1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/483/a53cd4f4-43b6-4e19-b85a-ec7a95c6a47f.jpg\",\n    \"tags\": [\n      { \"id\": 100, \"name\": \"Blush 3D\" },\n      { \"id\": 103, \"name\": \"Oblong\" }\n    ],\n    \"colorNum\": 1\n  },\n  {\n    \"category\": \"2 colors\",\n    \"label\": \"2colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/147/a8d86a4b-8aa0-48d7-a716-63ec78dfb30b.jpg\",\n    \"tags\": [\n      { \"id\": 100, \"name\": \"Blush 3D\" }\n    ],\n    \"colorNum\": 2\n  },\n  {\n    \"category\": \"3 colors\",\n    \"label\": \"3colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/734/af8b625b-ae3a-4211-9413-f22c16a5f174.jpg\",\n    \"tags\": [\n      { \"id\": 100, \"name\": \"Blush 3D\" },\n      { \"id\": 104, \"name\": \"Round\" }\n    ],\n    \"colorNum\": 3\n  }\n]\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"bronzer"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"category\": \"bronzer\",               // string, const \"bronzer\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a `label` from bronzer.json\n  \"palettes\": [\n    { \"color\": \"#ff0000\", \"colorIntensity\": 50 }  // hex color, int range: 0..100\n  ]\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"category\": \"bronzer\",               // string, const \"bronzer\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a `label` from bronzer.json\n  \"palettes\": [\n    { \"color\": \"#ff0000\", \"colorIntensity\": 50 }  // hex color, int range: 0..100\n  ]\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Full Pattern Catalog:"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"https://plugins-media.makeupar.com/wcm-saas/patterns/bronzer.json"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Distinct Makeup Pattern Categories:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"[\n  {\n    \"category\": \"Bronzer\",\n    \"label\": \"Bronzer1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/973/22ff2c07-d584-4ae6-8281-c095cd121a52.jpg\",\n    \"tags\": [],\n    \"colorNum\": 1\n  }\n]\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"[\n  {\n    \"category\": \"Bronzer\",\n    \"label\": \"Bronzer1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/973/22ff2c07-d584-4ae6-8281-c095cd121a52.jpg\",\n    \"tags\": [],\n    \"colorNum\": 1\n  }\n]\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"concealer"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"category\": \"concealer\",             // string, const \"concealer\"\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"colorIntensity\": 50,            // integer, range: 0..100\n      \"colorUnderEyeIntensity\": 50,    // integer, range: 0..100\n      \"coverageLevel\": 50              // integer, range: 0..100\n    }\n  ]\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"category\": \"concealer\",             // string, const \"concealer\"\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"colorIntensity\": 50,            // integer, range: 0..100\n      \"colorUnderEyeIntensity\": 50,    // integer, range: 0..100\n      \"coverageLevel\": 50              // integer, range: 0..100\n    }\n  ]\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"contour"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"category\": \"contour\",               // string, const \"contour\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a `label` from contour.json\n  \"palettes\": [\n    { \"color\": \"#ff0000\", \"colorIntensity\": 50 }  // hex color, int range: 0..100\n  ]\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"category\": \"contour\",               // string, const \"contour\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a `label` from contour.json\n  \"palettes\": [\n    { \"color\": \"#ff0000\", \"colorIntensity\": 50 }  // hex color, int range: 0..100\n  ]\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Full Pattern Catalog:"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"https://plugins-media.makeupar.com/wcm-saas/patterns/contour.json"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Distinct Makeup Pattern Categories:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"[\n  {\n    \"category\": \"Heart face\",\n    \"label\": \"HeartFace2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/731/49a1b3b9-b393-4bf4-b486-1493fe468436.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Invtriangle\",\n    \"label\": \"Invtriangle1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/858/a94c8cca-5f8c-4b8b-a02d-94edb6a4ad7f.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Oval face\",\n    \"label\": \"OvalFace6\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/906/644368a3-7eee-4ad9-829e-e2b3d4320fec.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Round face\",\n    \"label\": \"RoundFace4\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/106/3e455b5f-7e2d-46f7-8627-dc137051c144.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Triangle face\",\n    \"label\": \"TriangleFace2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/528/18765180-c254-4411-a25c-c1d78f5c3d77.jpg\",\n    \"tags\": []\n  }\n]\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"[\n  {\n    \"category\": \"Heart face\",\n    \"label\": \"HeartFace2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/731/49a1b3b9-b393-4bf4-b486-1493fe468436.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Invtriangle\",\n    \"label\": \"Invtriangle1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/858/a94c8cca-5f8c-4b8b-a02d-94edb6a4ad7f.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Oval face\",\n    \"label\": \"OvalFace6\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/906/644368a3-7eee-4ad9-829e-e2b3d4320fec.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Round face\",\n    \"label\": \"RoundFace4\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/106/3e455b5f-7e2d-46f7-8627-dc137051c144.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Triangle face\",\n    \"label\": \"TriangleFace2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/528/18765180-c254-4411-a25c-c1d78f5c3d77.jpg\",\n    \"tags\": []\n  }\n]\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"eyebrows"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"category\": \"eyebrows\",              // string, const \"eyebrows\"\n  \"pattern\": {\n    \"type\": \"shape\",                   // string, enum [\"shape\",\"color\"], default: \"shape\"\n    \"name\": \"\",                        // string, required when type=\"shape\" — label from eyebrows.json\n    \"curvature\": 0,                    // integer, range: -100..100 (shape only)\n    \"thickness\": 0,                    // integer, range: -100..100 (shape only)\n    \"definition\": 0                    // integer, range: 0..100 (shape only)\n  },\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"colorIntensity\": 50,            // integer, range: 0..100\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"shimmer\"]\n      \"shimmerColor\": \"#fc288f\",       // string, hex color \"#RRGGBB\" — REQUIRED if texture=\"shimmer\"\n      \"shimmerIntensity\": 50,          // integer, range: 0..100 — REQUIRED if texture=\"shimmer\"\n      \"shimmerSize\": 50,               // integer, range: 0..100 — REQUIRED if texture=\"shimmer\"\n      \"shimmerDensity\": 50             // integer, range: 0..100 — REQUIRED if texture=\"shimmer\"\n    }\n  ]\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"category\": \"eyebrows\",              // string, const \"eyebrows\"\n  \"pattern\": {\n    \"type\": \"shape\",                   // string, enum [\"shape\",\"color\"], default: \"shape\"\n    \"name\": \"\",                        // string, required when type=\"shape\" — label from eyebrows.json\n    \"curvature\": 0,                    // integer, range: -100..100 (shape only)\n    \"thickness\": 0,                    // integer, range: -100..100 (shape only)\n    \"definition\": 0                    // integer, range: 0..100 (shape only)\n  },\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"colorIntensity\": 50,            // integer, range: 0..100\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"shimmer\"]\n      \"shimmerColor\": \"#fc288f\",       // string, hex color \"#RRGGBB\" — REQUIRED if texture=\"shimmer\"\n      \"shimmerIntensity\": 50,          // integer, range: 0..100 — REQUIRED if texture=\"shimmer\"\n      \"shimmerSize\": 50,               // integer, range: 0..100 — REQUIRED if texture=\"shimmer\"\n      \"shimmerDensity\": 50             // integer, range: 0..100 — REQUIRED if texture=\"shimmer\"\n    }\n  ]\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Full Pattern Catalog:"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"https://plugins-media.makeupar.com/wcm-saas/patterns/eyebrows.json"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Distinct Makeup Pattern Categories:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"[\n  {\n    \"category\": \"Arrow\",\n    \"label\": \"Arrow1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/490/1fb96bf9-979e-4327-a8c4-8c503f541f1a.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Curved\",\n    \"label\": \"Curved1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/389/1ccb300e-c7ed-4995-920e-7d1bf8da1fad.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Drama\",\n    \"label\": \"Drama2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/196/5fb14bec-553d-4841-bba7-ca7e5e27c12e.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"High Arch\",\n    \"label\": \"HighArch1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/609/7a8676dc-6f6a-4b12-aab0-c50328e448c5.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Original\",\n    \"label\": \"Original2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/300/123551e9-ca94-4732-89ed-5b3866678555.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Soft Arch\",\n    \"label\": \"SoftArch1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/121/2552ebf0-2705-43f7-b295-4fac21e18009.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Straight\",\n    \"label\": \"Straight1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/1/7734e777-8e51-41f1-abaf-205f0ed5e3b4.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Thin\",\n    \"label\": \"Thin1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/734/6ee10843-a251-4aa0-9183-db7f981d714d.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Upward\",\n    \"label\": \"Upward4\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/751/76578317-f475-49c7-bd96-910ccad617ef.jpg\",\n    \"tags\": []\n  }\n]\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"[\n  {\n    \"category\": \"Arrow\",\n    \"label\": \"Arrow1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/490/1fb96bf9-979e-4327-a8c4-8c503f541f1a.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Curved\",\n    \"label\": \"Curved1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/389/1ccb300e-c7ed-4995-920e-7d1bf8da1fad.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Drama\",\n    \"label\": \"Drama2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/196/5fb14bec-553d-4841-bba7-ca7e5e27c12e.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"High Arch\",\n    \"label\": \"HighArch1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/609/7a8676dc-6f6a-4b12-aab0-c50328e448c5.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Original\",\n    \"label\": \"Original2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/300/123551e9-ca94-4732-89ed-5b3866678555.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Soft Arch\",\n    \"label\": \"SoftArch1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/121/2552ebf0-2705-43f7-b295-4fac21e18009.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Straight\",\n    \"label\": \"Straight1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/1/7734e777-8e51-41f1-abaf-205f0ed5e3b4.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Thin\",\n    \"label\": \"Thin1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/734/6ee10843-a251-4aa0-9183-db7f981d714d.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Upward\",\n    \"label\": \"Upward4\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/751/76578317-f475-49c7-bd96-910ccad617ef.jpg\",\n    \"tags\": []\n  }\n]\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"eye_liner"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"category\": \"eye_liner\",             // string, const \"eye_liner\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a label from eyeliner.json\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"shimmer\",\"metallic\"]\n      \"shimmerColor\": \"#fc288f\",       // string, hex color \"#RRGGBB\" — REQUIRED if texture in [\"shimmer\",\"metallic\"]\n      \"shimmerIntensity\": 50,          // integer, range: 0..100 — REQUIRED if texture in [\"shimmer\",\"metallic\"]\n      \"metallicIntensity\": 50,         // integer, range: 0..100 — REQUIRED if texture=\"metallic\"\n      \"colorIntensity\": 50             // integer, range: 0..100\n    }\n  ]\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"category\": \"eye_liner\",             // string, const \"eye_liner\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a label from eyeliner.json\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"shimmer\",\"metallic\"]\n      \"shimmerColor\": \"#fc288f\",       // string, hex color \"#RRGGBB\" — REQUIRED if texture in [\"shimmer\",\"metallic\"]\n      \"shimmerIntensity\": 50,          // integer, range: 0..100 — REQUIRED if texture in [\"shimmer\",\"metallic\"]\n      \"metallicIntensity\": 50,         // integer, range: 0..100 — REQUIRED if texture=\"metallic\"\n      \"colorIntensity\": 50             // integer, range: 0..100\n    }\n  ]\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Full Pattern Catalog:"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"https://plugins-media.makeupar.com/wcm-saas/patterns/eyeliner.json"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Distinct Makeup Pattern Categories:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"[\n  {\n    \"category\": \"2 colors\",\n    \"label\": \"2colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/419/71d9429a-dc08-4e80-9c46-6e55631ef766.jpg\",\n    \"tags\": [\n      {\n        \"id\": 28,\n        \"name\": \"Drama\"\n      }\n    ],\n    \"colorNum\": 2\n  },\n  {\n    \"category\": \"3 colors\",\n    \"label\": \"3colors2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/208/056aa6cd-8678-470c-b111-b7653d7ddf93.jpg\",\n    \"tags\": [\n      {\n        \"id\": 28,\n        \"name\": \"Drama\"\n      }\n    ],\n    \"colorNum\": 3\n  },\n  {\n    \"category\": \"1 color\",\n    \"label\": \"Arabic3\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/726/1919aad4-21a2-493a-a5f8-48bc99a61ba5.jpg\",\n    \"tags\": [\n      {\n        \"id\": 26,\n        \"name\": \"Arabic\"\n      }\n    ],\n    \"colorNum\": 1\n  }\n]\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"[\n  {\n    \"category\": \"2 colors\",\n    \"label\": \"2colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/419/71d9429a-dc08-4e80-9c46-6e55631ef766.jpg\",\n    \"tags\": [\n      {\n        \"id\": 28,\n        \"name\": \"Drama\"\n      }\n    ],\n    \"colorNum\": 2\n  },\n  {\n    \"category\": \"3 colors\",\n    \"label\": \"3colors2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/208/056aa6cd-8678-470c-b111-b7653d7ddf93.jpg\",\n    \"tags\": [\n      {\n        \"id\": 28,\n        \"name\": \"Drama\"\n      }\n    ],\n    \"colorNum\": 3\n  },\n  {\n    \"category\": \"1 color\",\n    \"label\": \"Arabic3\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/726/1919aad4-21a2-493a-a5f8-48bc99a61ba5.jpg\",\n    \"tags\": [\n      {\n        \"id\": 26,\n        \"name\": \"Arabic\"\n      }\n    ],\n    \"colorNum\": 1\n  }\n]\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"eye_shadow"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"category\": \"eye_shadow\",            // string, const \"eye_shadow\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a label from eyeshadow.json\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"shimmer\",\"metallic\"]\n      \"shimmerColor\": \"#fc288f\",       // string, hex color \"#RRGGBB\" — REQUIRED if texture in [\"shimmer\",\"metallic\"]\n      \"shimmerIntensity\": 50,          // integer, range: 0..100 — REQUIRED if texture in [\"shimmer\",\"metallic\"]\n      \"metallicIntensity\": 50,         // integer, range: 0..100 — REQUIRED if texture=\"metallic\"\n      \"colorIntensity\": 50             // integer, range: 0..100\n    }\n  ]                                    // minItems: (see colorNum in pattern)\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"category\": \"eye_shadow\",            // string, const \"eye_shadow\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a label from eyeshadow.json\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"shimmer\",\"metallic\"]\n      \"shimmerColor\": \"#fc288f\",       // string, hex color \"#RRGGBB\" — REQUIRED if texture in [\"shimmer\",\"metallic\"]\n      \"shimmerIntensity\": 50,          // integer, range: 0..100 — REQUIRED if texture in [\"shimmer\",\"metallic\"]\n      \"metallicIntensity\": 50,         // integer, range: 0..100 — REQUIRED if texture=\"metallic\"\n      \"colorIntensity\": 50             // integer, range: 0..100\n    }\n  ]                                    // minItems: (see colorNum in pattern)\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Full Pattern Catalog:"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"https://plugins-media.makeupar.com/wcm-saas/patterns/eyeshadow.json"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Distinct Makeup Pattern Categories:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"[\n  {\n    \"category\": \"1 color\",\n    \"label\": \"1color1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/188/0322c4f9-e54d-4a6b-8072-6bb76560121a.jpg\",\n    \"tags\": [\n      {\n        \"id\": 12,\n        \"name\": \"Artistic\"\n      },\n      {\n        \"id\": 14,\n        \"name\": \"Dream\"\n      },\n      {\n        \"id\": 15,\n        \"name\": \"Trend\"\n      }\n    ],\n    \"colorNum\": 1\n  },\n  {\n    \"category\": \"2 colors\",\n    \"label\": \"2colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/938/3348211c-1b83-4ab2-9c6a-ce06e4aa3528.jpg\",\n    \"tags\": [\n      {\n        \"id\": 1,\n        \"name\": \"Fan shape\"\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Only upper lid\"\n      }\n    ],\n    \"colorNum\": 2\n  },\n  {\n    \"category\": \"3 colors\",\n    \"label\": \"3colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/542/55e1b0fd-b888-47ff-bd3a-3dc1af2a7b69.jpg\",\n    \"tags\": [\n      {\n        \"id\": 1,\n        \"name\": \"Fan shape\"\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Only upper lid\"\n      }\n    ],\n    \"colorNum\": 3\n  },\n  {\n    \"category\": \"4 colors\",\n    \"label\": \"4colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/429/29cd5839-464b-4a7a-a5c1-c7b40e9464d7.jpg\",\n    \"tags\": [\n      {\n        \"id\": 4,\n        \"name\": \"Closed banana\"\n      },\n      {\n        \"id\": 10,\n        \"name\": \"Whole eye\"\n      }\n    ],\n    \"colorNum\": 4\n  },\n  {\n    \"category\": \"5 colors\",\n    \"label\": \"5colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/2/824dcf7c-1273-4a30-8f1f-2137926057d6.jpg\",\n    \"tags\": [\n      {\n        \"id\": 4,\n        \"name\": \"Closed banana\"\n      },\n      {\n        \"id\": 10,\n        \"name\": \"Whole eye\"\n      }\n    ],\n    \"colorNum\": 5\n  }\n]\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"[\n  {\n    \"category\": \"1 color\",\n    \"label\": \"1color1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/188/0322c4f9-e54d-4a6b-8072-6bb76560121a.jpg\",\n    \"tags\": [\n      {\n        \"id\": 12,\n        \"name\": \"Artistic\"\n      },\n      {\n        \"id\": 14,\n        \"name\": \"Dream\"\n      },\n      {\n        \"id\": 15,\n        \"name\": \"Trend\"\n      }\n    ],\n    \"colorNum\": 1\n  },\n  {\n    \"category\": \"2 colors\",\n    \"label\": \"2colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/938/3348211c-1b83-4ab2-9c6a-ce06e4aa3528.jpg\",\n    \"tags\": [\n      {\n        \"id\": 1,\n        \"name\": \"Fan shape\"\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Only upper lid\"\n      }\n    ],\n    \"colorNum\": 2\n  },\n  {\n    \"category\": \"3 colors\",\n    \"label\": \"3colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/542/55e1b0fd-b888-47ff-bd3a-3dc1af2a7b69.jpg\",\n    \"tags\": [\n      {\n        \"id\": 1,\n        \"name\": \"Fan shape\"\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Only upper lid\"\n      }\n    ],\n    \"colorNum\": 3\n  },\n  {\n    \"category\": \"4 colors\",\n    \"label\": \"4colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/429/29cd5839-464b-4a7a-a5c1-c7b40e9464d7.jpg\",\n    \"tags\": [\n      {\n        \"id\": 4,\n        \"name\": \"Closed banana\"\n      },\n      {\n        \"id\": 10,\n        \"name\": \"Whole eye\"\n      }\n    ],\n    \"colorNum\": 4\n  },\n  {\n    \"category\": \"5 colors\",\n    \"label\": \"5colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/2/824dcf7c-1273-4a30-8f1f-2137926057d6.jpg\",\n    \"tags\": [\n      {\n        \"id\": 4,\n        \"name\": \"Closed banana\"\n      },\n      {\n        \"id\": 10,\n        \"name\": \"Whole eye\"\n      }\n    ],\n    \"colorNum\": 5\n  }\n]\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"eyelashes"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"category\": \"eyelashes\",             // string, const \"eyelashes\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a label from eyelashes.json\n  \"palettes\": [\n    { \"color\": \"#ff0000\", \"colorIntensity\": 50 }  // hex color, int range: 0..100\n  ]\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"category\": \"eyelashes\",             // string, const \"eyelashes\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a label from eyelashes.json\n  \"palettes\": [\n    { \"color\": \"#ff0000\", \"colorIntensity\": 50 }  // hex color, int range: 0..100\n  ]\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Full Pattern Catalog:"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"https://plugins-media.makeupar.com/wcm-saas/patterns/eyelashes.json"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Distinct Makeup Pattern Categories:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"[\n  {\n    \"category\": \"Artistic\",\n    \"label\": \"Artistic1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/146/7a8ed606-1c27-4d91-9320-c40a904f621f.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Natural\",\n    \"label\": \"Natural1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/287/cd5cae75-a1b3-48f8-8537-e6e259213901.png\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Upper&Lower\",\n    \"label\": \"Upper&Lower1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/18/2689ea2d-725e-4fa0-8563-df874ae1a83f.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Upper\",\n    \"label\": \"Upper1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/982/c99bf74e-545f-4da7-a314-f3bd84b82156.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"UpperDense\",\n    \"label\": \"UpperDense1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/888/452ec863-f0a8-40e7-aa33-31c0c39f57e2.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Winged\",\n    \"label\": \"Winged1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/825/36ab3859-eae5-49e4-9d97-161698bbb8bb.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Wispies\",\n    \"label\": \"Wispies1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/722/a2a727f6-748c-41e7-8ac0-c9c57c18c05a.png\",\n    \"tags\": []\n  }\n]\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"[\n  {\n    \"category\": \"Artistic\",\n    \"label\": \"Artistic1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/146/7a8ed606-1c27-4d91-9320-c40a904f621f.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Natural\",\n    \"label\": \"Natural1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/287/cd5cae75-a1b3-48f8-8537-e6e259213901.png\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Upper&Lower\",\n    \"label\": \"Upper&Lower1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/18/2689ea2d-725e-4fa0-8563-df874ae1a83f.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Upper\",\n    \"label\": \"Upper1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/982/c99bf74e-545f-4da7-a314-f3bd84b82156.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"UpperDense\",\n    \"label\": \"UpperDense1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/888/452ec863-f0a8-40e7-aa33-31c0c39f57e2.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Winged\",\n    \"label\": \"Winged1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/825/36ab3859-eae5-49e4-9d97-161698bbb8bb.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Wispies\",\n    \"label\": \"Wispies1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/722/a2a727f6-748c-41e7-8ac0-c9c57c18c05a.png\",\n    \"tags\": []\n  }\n]\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"foundation"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"category\": \"foundation\",            // string, const \"foundation\"\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"colorIntensity\": 50,            // integer, range: 0..100\n      \"glowIntensity\": 50,             // integer, range: 0..100\n      \"coverageIntensity\": 50          // integer, range: 0..100\n    }\n  ]\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"category\": \"foundation\",            // string, const \"foundation\"\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"colorIntensity\": 50,            // integer, range: 0..100\n      \"glowIntensity\": 50,             // integer, range: 0..100\n      \"coverageIntensity\": 50          // integer, range: 0..100\n    }\n  ]\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"highlighter"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"category\": \"highlighter\",           // string, const \"highlighter\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a label from highlighter.json\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"glowIntensity\": 50,             // integer, range: 0..100\n      \"shimmerIntensity\": 50,          // integer, range: 0..100\n      \"shimmerDensity\": 50,            // integer, range: 0..100\n      \"shimmerSize\": 50,               // integer, range: 0..100\n      \"colorIntensity\": 50             // integer, range: 0..100\n    }\n  ]\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"category\": \"highlighter\",           // string, const \"highlighter\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a label from highlighter.json\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"glowIntensity\": 50,             // integer, range: 0..100\n      \"shimmerIntensity\": 50,          // integer, range: 0..100\n      \"shimmerDensity\": 50,            // integer, range: 0..100\n      \"shimmerSize\": 50,               // integer, range: 0..100\n      \"colorIntensity\": 50             // integer, range: 0..100\n    }\n  ]\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Full Pattern Catalog:"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"https://plugins-media.makeupar.com/wcm-saas/patterns/highlighter.json"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Distinct Makeup Pattern Categories:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"[\n  {\n    \"category\": \"Heart face\",\n    \"label\": \"HeartFace4\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/246/6ca40279-79cc-4918-b48a-64306009b365.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Invtriangle\",\n    \"label\": \"Invtriangle2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/7/6b0b9760-612c-4319-bd81-855d262d8e89.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Oblong\",\n    \"label\": \"Oblong11\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/862/b7279f4e-edf2-43f3-8156-561fe5a52ec3.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Oval face\",\n    \"label\": \"OvalFace2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/369/91097a05-9fd2-43cb-82e9-dd45e72b613b.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Round face\",\n    \"label\": \"RoundFace3\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/520/2d3ccbe2-36c3-43df-9e78-4c2c931fa431.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Square face\",\n    \"label\": \"SquareFace3\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/989/2959777b-19ca-4f4a-a023-3c8927191497.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Triangle face\",\n    \"label\": \"TriangleFace3\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/765/221c1f12-c621-4567-a8ee-1433038ee8a2.jpg\",\n    \"tags\": []\n  }\n]\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"[\n  {\n    \"category\": \"Heart face\",\n    \"label\": \"HeartFace4\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/246/6ca40279-79cc-4918-b48a-64306009b365.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Invtriangle\",\n    \"label\": \"Invtriangle2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/7/6b0b9760-612c-4319-bd81-855d262d8e89.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Oblong\",\n    \"label\": \"Oblong11\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/862/b7279f4e-edf2-43f3-8156-561fe5a52ec3.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Oval face\",\n    \"label\": \"OvalFace2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/369/91097a05-9fd2-43cb-82e9-dd45e72b613b.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Round face\",\n    \"label\": \"RoundFace3\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/520/2d3ccbe2-36c3-43df-9e78-4c2c931fa431.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Square face\",\n    \"label\": \"SquareFace3\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/989/2959777b-19ca-4f4a-a023-3c8927191497.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Triangle face\",\n    \"label\": \"TriangleFace3\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/765/221c1f12-c621-4567-a8ee-1433038ee8a2.jpg\",\n    \"tags\": []\n  }\n]\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"lip_color"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"category\": \"lip_color\",             // string, const \"lip_color\"\n  \"shape\": {                           // object — driven by lipshape.json\n    \"name\": \"original\"                 // string — MUST equal a `label` from lipshape.json\n  },\n  \"morphology\": {                      // optional object\n    \"fullness\": 50,                    // integer, range: 0..100 (default: 0)\n    \"wrinkless\": 50                    // integer, range: 0..100 (default: 0)\n  },\n  \"palettes\": [                        // minItems depends on style; often ≥1\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"gloss\",\"holographic\",\"metallic\",\"satin\",\"sheer\",\"shimmer\"]\n      \"colorIntensity\": 50,            // integer, range: 0..100\n      \"gloss\": 50,                     // int, range: 0..100 — REQUIRED if texture in [\"gloss\",\"holographic\",\"metallic\",\"sheer\",\"shimmer\"]\n      \"shimmerColor\": \"#ff0000\",       // string, hex color \"#RRGGBB\" — REQUIRED if texture in [\"holographic\",\"metallic\",\"shimmer\"]\n      \"shimmerIntensity\": 50,          // integer, range: 0..100 — REQUIRED if texture in [\"holographic\",\"metallic\",\"shimmer\"]\n      \"shimmerDensity\": 50,            // integer, range: 0..100 — REQUIRED if texture in [\"holographic\",\"metallic\",\"shimmer\"]\n      \"shimmerSize\": 50,               // integer, range: 0..100 — REQUIRED if texture in [\"holographic\",\"metallic\",\"shimmer\"]\n      \"transparencyIntensity\": 50      // integer, range: 0..100 — REQUIRED if texture in [\"gloss\",\"sheer\",\"shimmer\"]\n    }\n  ],\n  \"style\": {\n    \"type\": \"full\",                    // string, enum [\"full\",\"ombre\",\"twoTone\"]\n    \"innerRatio\": 50,                  // int, range: 0..100 — REQUIRED if type=\"ombre\"\n    \"featherStrength\": 50              // int, range: 0..100 — REQUIRED if type=\"ombre\"\n  }\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"category\": \"lip_color\",             // string, const \"lip_color\"\n  \"shape\": {                           // object — driven by lipshape.json\n    \"name\": \"original\"                 // string — MUST equal a `label` from lipshape.json\n  },\n  \"morphology\": {                      // optional object\n    \"fullness\": 50,                    // integer, range: 0..100 (default: 0)\n    \"wrinkless\": 50                    // integer, range: 0..100 (default: 0)\n  },\n  \"palettes\": [                        // minItems depends on style; often ≥1\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"gloss\",\"holographic\",\"metallic\",\"satin\",\"sheer\",\"shimmer\"]\n      \"colorIntensity\": 50,            // integer, range: 0..100\n      \"gloss\": 50,                     // int, range: 0..100 — REQUIRED if texture in [\"gloss\",\"holographic\",\"metallic\",\"sheer\",\"shimmer\"]\n      \"shimmerColor\": \"#ff0000\",       // string, hex color \"#RRGGBB\" — REQUIRED if texture in [\"holographic\",\"metallic\",\"shimmer\"]\n      \"shimmerIntensity\": 50,          // integer, range: 0..100 — REQUIRED if texture in [\"holographic\",\"metallic\",\"shimmer\"]\n      \"shimmerDensity\": 50,            // integer, range: 0..100 — REQUIRED if texture in [\"holographic\",\"metallic\",\"shimmer\"]\n      \"shimmerSize\": 50,               // integer, range: 0..100 — REQUIRED if texture in [\"holographic\",\"metallic\",\"shimmer\"]\n      \"transparencyIntensity\": 50      // integer, range: 0..100 — REQUIRED if texture in [\"gloss\",\"sheer\",\"shimmer\"]\n    }\n  ],\n  \"style\": {\n    \"type\": \"full\",                    // string, enum [\"full\",\"ombre\",\"twoTone\"]\n    \"innerRatio\": 50,                  // int, range: 0..100 — REQUIRED if type=\"ombre\"\n    \"featherStrength\": 50              // int, range: 0..100 — REQUIRED if type=\"ombre\"\n  }\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Full Pattern Catalog:"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"https://plugins-media.makeupar.com/wcm-saas/shapes/lipshape.json"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Distinct Makeup Pattern Categories:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"[{\n        \"category\": \"general\",\n        \"label\": \"original\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/original.png\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"heart-shaped\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/heart-shaped.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"m-shaped\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/m-shaped.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"petal\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/petal.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"plump\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/plump.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"pouty\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/pouty.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"smile\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/smile.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"vintage\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/vintage.jpg\",\n        \"tags\": [\n        ]\n    }\n]\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"[{\n        \"category\": \"general\",\n        \"label\": \"original\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/original.png\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"heart-shaped\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/heart-shaped.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"m-shaped\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/m-shaped.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"petal\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/petal.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"plump\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/plump.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"pouty\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/pouty.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"smile\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/smile.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"vintage\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/vintage.jpg\",\n        \"tags\": [\n        ]\n    }\n]\n"},"children":[]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"lip_liner"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"category\": \"lip_liner\",             // string, const \"lip_liner\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a label from lipliner.json\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"satin\"]\n      \"colorIntensity\": 50,            // integer, range: 0..100\n      \"thickness\": 50,                 // integer, range: 0..100\n      \"smoothness\": 50                 // integer, range: 0..100\n    }\n  ]\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"category\": \"lip_liner\",             // string, const \"lip_liner\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a label from lipliner.json\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"satin\"]\n      \"colorIntensity\": 50,            // integer, range: 0..100\n      \"thickness\": 50,                 // integer, range: 0..100\n      \"smoothness\": 50                 // integer, range: 0..100\n    }\n  ]\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Full Pattern Catalog:"},"children":[]}]},{"$$mdtype":"Node","type":"softbreak","inline":true,"attributes":{},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"https://plugins-media.makeupar.com/wcm-saas/patterns/lipliner.json"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Distinct Makeup Pattern Categories:"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"[\n  {\n    \"category\": \"Large & Full\",\n    \"label\": \"Large&Full1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/417/7ac66cb2-2c7b-451c-8284-cc77791b7001.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Larger Lower\",\n    \"label\": \"LargerLower1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/878/84b2ef48-3af4-4851-86d2-b01d10db82b2.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Larger Upper\",\n    \"label\": \"LargerUpper1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/867/674f9f4c-7961-462e-8cc9-9a8acaad4168.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Natural\",\n    \"label\": \"Natural1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/258/7533c08a-cc9c-45ab-9294-5d5a8114037d.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Rosebud\",\n    \"label\": \"Rosebud1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/47/eb95e91f-6ef1-41f7-bc4f-aecd7d780c42.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Small\",\n    \"label\": \"Small1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/396/6b78e461-24a6-4c6d-afb4-88beb71f1732.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Wider\",\n    \"label\": \"Wider1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/867/21f92b70-72b5-4a57-b4d7-81c5cce757a6.jpg\",\n    \"tags\": []\n  }\n]\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"[\n  {\n    \"category\": \"Large & Full\",\n    \"label\": \"Large&Full1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/417/7ac66cb2-2c7b-451c-8284-cc77791b7001.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Larger Lower\",\n    \"label\": \"LargerLower1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/878/84b2ef48-3af4-4851-86d2-b01d10db82b2.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Larger Upper\",\n    \"label\": \"LargerUpper1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/867/674f9f4c-7961-462e-8cc9-9a8acaad4168.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Natural\",\n    \"label\": \"Natural1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/258/7533c08a-cc9c-45ab-9294-5d5a8114037d.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Rosebud\",\n    \"label\": \"Rosebud1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/47/eb95e91f-6ef1-41f7-bc4f-aecd7d780c42.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Small\",\n    \"label\": \"Small1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/396/6b78e461-24a6-4c6d-afb4-88beb71f1732.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Wider\",\n    \"label\": \"Wider1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/867/21f92b70-72b5-4a57-b4d7-81c5cce757a6.jpg\",\n    \"tags\": []\n  }\n]\n"},"children":[]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/reference/makeup_vto/section/overview/inputs-and-outputs"}],"sectionId":"/reference/makeup_vto/section/overview/inputs-and-outputs"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/overview/example-payload"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Example Payload"},"children":[]}]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Here is a full example of a valid "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"effectJson"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" payload applying multiple effects."},"children":[]}]}]},{"$$mdtype":"Node","type":"fence","attributes":{"content":"{\n  \"version\": \"1.0\",\n  \"effects\": [\n    {\n      \"category\": \"skin_smooth\",\n      \"skinSmoothStrength\": 55,\n      \"skinSmoothColorIntensity\": 45\n    },\n    {\n      \"category\": \"blush\",\n      \"pattern\": { \"name\": \"2colors1\" },\n      \"palettes\": [\n        {\n          \"color\": \"#e19f9f\",\n          \"texture\": \"matte\",\n          \"colorIntensity\": 60,\n          \"shimmerColor\": \"#d63252\",\n          \"shimmerDensity\": 50\n        },\n        {\n          \"color\": \"#c98a8a\",\n          \"texture\": \"satin\",\n          \"glowStrength\": 40,\n          \"colorIntensity\": 70\n        }\n      ]\n    },\n    {\n        \"category\": \"lip_color\",\n        \"shape\": { \"name\": \"plump\" },\n        \"morphology\": { \"fullness\": 30, \"wrinkless\": 25 },\n        \"style\": { \"type\": \"full\" },\n        \"palettes\": [\n            {\n                \"color\": \"#e11c43\",\n                \"texture\": \"gloss\",\n                \"colorIntensity\": 80,\n                \"gloss\": 75\n            }\n        ]\n    }\n  ]\n}\n","language":"json"},"children":[{"$$mdtype":"Node","type":"text","attributes":{"content":"{\n  \"version\": \"1.0\",\n  \"effects\": [\n    {\n      \"category\": \"skin_smooth\",\n      \"skinSmoothStrength\": 55,\n      \"skinSmoothColorIntensity\": 45\n    },\n    {\n      \"category\": \"blush\",\n      \"pattern\": { \"name\": \"2colors1\" },\n      \"palettes\": [\n        {\n          \"color\": \"#e19f9f\",\n          \"texture\": \"matte\",\n          \"colorIntensity\": 60,\n          \"shimmerColor\": \"#d63252\",\n          \"shimmerDensity\": 50\n        },\n        {\n          \"color\": \"#c98a8a\",\n          \"texture\": \"satin\",\n          \"glowStrength\": 40,\n          \"colorIntensity\": 70\n        }\n      ]\n    },\n    {\n        \"category\": \"lip_color\",\n        \"shape\": { \"name\": \"plump\" },\n        \"morphology\": { \"fullness\": 30, \"wrinkless\": 25 },\n        \"style\": { \"type\": \"full\" },\n        \"palettes\": [\n            {\n                \"color\": \"#e11c43\",\n                \"texture\": \"gloss\",\n                \"colorIntensity\": 80,\n                \"gloss\": 75\n            }\n        ]\n    }\n  ]\n}\n"},"children":[]}]},{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"In this example, "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"blush"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" uses the the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"2colors1"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" pattern from the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"blush.json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", which requires exactly two palettes. The "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"lip_color"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" effect uses the the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"plump"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" shape from "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"lipshape.json"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]}],"sectionId":"/reference/makeup_vto/section/overview/example-payload"}],"sectionId":"/reference/makeup_vto/section/overview/example-payload"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/overview/file-specs-and-errors"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"File Specs & Errors"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Supported Formats & Dimensions"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"AI Feature"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Supported Dimensions"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Supported File Size"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Supported Formats"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"AI Makeup Virtual Try-On"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"long side < 1920, face width >= 100"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"< 10MB"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"jpg/jpeg/png"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Error Codes"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Error Code"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Description"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"error_below_min_image_size"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the size of the source image is smaller than minimum (expect: width >= 100px, height >= 100px)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"error_exceed_max_image_size"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"the size of the source image is larger than maximum (expect: width < 1920px, height < 1080px)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"error_face_position_invalid"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Please ensure your entire face is fully visible within the image"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"error_face_position_too_small"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The detected face is too small. Move closer to the camera"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"error_face_position_out_of_boundary"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The face is too large or partially outside the image frame. Adjust your position"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"error_face_angle_invalid"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"The face angle is incorrect. For front-facing photos, keep your head within 10°. For side-facing photos, ensure more than 15°."},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"*"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Environment & Dependency"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Sample Code Language / Tool"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Recommended Runtime Versions"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"cURL"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"- bash >= 3.2"},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"   - curl >= 7.58 (modern TLS/HTTP support)"},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"   - jq >= 1.6 (robust JSON parsing)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Node.js (JavaScript)"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Node >= 18 (for global fetch)"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"JavaScript"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"- Chrome / Edge >= 80"},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"   - Firefox >= 74"},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"   - Safari >= 13.1"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PHP"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"PHP >= 7.4 (for modern TLS/compat), ext-curl (recommended) or allow_url_fopen=On + ext-openssl, ext-json"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Python"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Python >= 3.10 (for f-strings), requests >= 2.20.0"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Java"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Java 11+ (for HttpClient), Jackson Databind >= 2.12.0"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/reference/makeup_vto/section/overview/file-specs-and-errors"}],"sectionId":"/reference/makeup_vto/section/overview/file-specs-and-errors"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/overview/js-camera-kit"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"JS Camera Kit"},"children":[]}]}]},{"$$mdtype":"Node","type":"tag","tag":"partial","attributes":{"file":"_partials/js-camera-kit.md"},"children":[]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/reference/makeup_vto/section/overview/js-camera-kit"}],"sectionId":"/reference/makeup_vto/section/overview/js-camera-kit"},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"heading","attributes":{"level":2,"id":"section/overview/unit-consumption"},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unit Consumption"},"children":[]}]}]},{"$$mdtype":"Node","type":"table","attributes":{},"children":[{"$$mdtype":"Node","type":"thead","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"AI Feature"},"children":[]}]}]},{"$$mdtype":"Node","type":"th","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unit Consumed"},"children":[]}]}]}]}]},{"$$mdtype":"Node","type":"tbody","attributes":{},"children":[{"$$mdtype":"Node","type":"tr","attributes":{},"children":[{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"AI Makeup Virtual Try-On V1.0"},"children":[]}]}]},{"$$mdtype":"Node","type":"td","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"1"},"children":[]}]}]}]}]}]},{"$$mdtype":"Node","type":"hr","attributes":{},"children":[]}]}],"sectionId":"/reference/makeup_vto/section/overview/unit-consumption"}],"sectionId":"/reference/makeup_vto/section/overview/unit-consumption"}]}]}},{"type":"group","label":"Overview","link":"/reference/makeup_vto/section/overview","routeSlug":"/reference/makeup_vto/section/overview","items":[{"type":"link","label":"Integration Guide","link":"/reference/makeup_vto/section/overview/integration-guide","routeSlug":"/reference/makeup_vto/section/overview/integration-guide","content":null},{"type":"link","label":"Inputs & Outputs","link":"/reference/makeup_vto/section/overview/inputs-and-outputs","routeSlug":"/reference/makeup_vto/section/overview/inputs-and-outputs","content":null},{"type":"link","label":"Example Payload","link":"/reference/makeup_vto/section/overview/example-payload","routeSlug":"/reference/makeup_vto/section/overview/example-payload","content":null},{"type":"link","label":"File Specs & Errors","link":"/reference/makeup_vto/section/overview/file-specs-and-errors","routeSlug":"/reference/makeup_vto/section/overview/file-specs-and-errors","content":null},{"type":"link","label":"JS Camera Kit","link":"/reference/makeup_vto/section/overview/js-camera-kit","routeSlug":"/reference/makeup_vto/section/overview/js-camera-kit","content":null},{"type":"link","label":"Unit Consumption","link":"/reference/makeup_vto/section/overview/unit-consumption","routeSlug":"/reference/makeup_vto/section/overview/unit-consumption","content":null}],"content":null},{"type":"group","label":"V1.0","link":"/reference/makeup_vto/v1.0","routeSlug":"/reference/makeup_vto/v1.0","items":[{"label":"Run an AI Makeup Virtual Try On task.","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/reference/makeup_vto/v1.0/paths/~1s2s~1v2.0~1task~1makeup-vto/post","routeSlug":"/reference/makeup_vto/v1.0/paths/~1s2s~1v2.0~1task~1makeup-vto/post","metadata":{"seo":{"title":"Run an AI Makeup Virtual Try On task.","description":"This endpoint initiates the makeup virtual try-on process. You must provide a source file (via URL or File ID) and specify the effects to apply using the defined effect schemas. The task will be processed asynchronously, and you can check its status using the task_id returned in this response."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Run an AI Makeup Virtual Try On task.","isWebhook":false,"pointer":"/paths/~1s2s~1v2.0~1task~1makeup-vto/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Run an AI Makeup Virtual Try On task.","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"This endpoint initiates the makeup virtual try-on process. You must provide a source file (via URL or File ID) and specify the effects to apply using the defined effect schemas. The task will be processed asynchronously, and you can check its status using the task_id returned in this response."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuthenticationV2","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use the standard 'Bearer authentication'. Put your 'API Key' in header: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Authorization:Bearer YOUR_API_KEY"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Notice that there is ' ' a space between 'Bearer' and the 'YOUR_API_KEY'."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_1002"}},"schemaId":"schema_1002","pointer":"/paths/~1s2s~1v2.0~1task~1makeup-vto/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/s2s/v2.0/task/makeup-vto","servers":[{"url":"https://yce-api-01.makeupar.com"}],"parameters":{"path":[],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuthenticationV2","type":"http","scheme":"bearer"}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"schema_1002"}},"responseCodes":["200","400","401","429"],"pointer":"/s2s/v2.0/task/makeup-vto","href":"v1.0/paths/~1s2s~1v2.0~1task~1makeup-vto/post","summary":"Run an AI Makeup Virtual Try On task."},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://yce-api-01.makeupar.com"}],"schemaId":"schema_1002","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"schema_1002"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful execution of the task","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BasicRunTaskResponseV2"}},"schemaId":"components/schemas/BasicRunTaskResponseV2"},{"code":"400","description":"Failed execution of task","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_1003"}},"schemaId":"schema_1003"},{"code":"401","description":"Invalid API Key or Inactive API Key or Expired API Key","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_1004"}},"schemaId":"schema_1004"},{"code":"429","description":"Too many requests within a given amount of time"}],"pointer":"/paths/~1s2s~1v2.0~1task~1makeup-vto/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/BasicRunTaskResponseV2","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/BasicRunTaskResponseV2"}}},{"code":"400","schemaId":"schema_1003","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_1003"}}},{"code":"401","schemaId":"schema_1004","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_1004"}}},{"code":"429"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/v1.0/paths/~1s2s~1v2.0~1task~1makeup-vto/post"}],"panels":[]}]},"httpPath":"/s2s/v2.0/task/makeup-vto"},{"label":"Check the status of a AI Makeup Virtual Try On task.","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/reference/makeup_vto/v1.0/paths/~1s2s~1v2.0~1task~1makeup-vto~1{task_id}/get","routeSlug":"/reference/makeup_vto/v1.0/paths/~1s2s~1v2.0~1task~1makeup-vto~1{task_id}/get","metadata":{"seo":{"title":"Check the status of a AI Makeup Virtual Try On task.","description":"Check the status of a AI Makeup Virtual Try On task."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"name":"Check the status of a AI Makeup Virtual Try On task.","isWebhook":false,"pointer":"/paths/~1s2s~1v2.0~1task~1makeup-vto~1{task_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Check the status of a AI Makeup Virtual Try On task.","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"security","requirements":[{"schemes":[{"name":"BearerAuthenticationV2","scopes":[],"type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use the standard 'Bearer authentication'. Put your 'API Key' in header: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Authorization:Bearer YOUR_API_KEY"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Notice that there is ' ' a space between 'Bearer' and the 'YOUR_API_KEY'."},"children":[]}]}]}]}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"task_id","in":"path","schemaId":"schema_1005","description":"ID of task to check","required":true}],"pointer":"/paths/~1s2s~1v2.0~1task~1makeup-vto~1{task_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/s2s/v2.0/task/makeup-vto/{task_id}","servers":[{"url":"https://yce-api-01.makeupar.com"}],"parameters":{"path":[{"name":"task_id","in":"path","required":true,"example":"grH0CvsgXuAIHLUzD0V1Ol34hoet3R1tvdbtiVHrDb6_UqCLKIejAIajwxrhOAfe","schemaId":"schema_1005"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"BearerAuthenticationV2","type":"http","scheme":"bearer"}],"scopes":[]}],"responseCodes":["200","400","401","500"],"pointer":"/s2s/v2.0/task/makeup-vto/{task_id}","href":"v1.0/paths/~1s2s~1v2.0~1task~1makeup-vto~1{task_id}/get","summary":"Check the status of a AI Makeup Virtual Try On task."},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://yce-api-01.makeupar.com"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Successful check of the task status","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TaskStatusResponseV2"}},"schemaId":"components/schemas/TaskStatusResponseV2"},{"code":"400","description":"Invalid task id","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_1006"}},"schemaId":"schema_1006"},{"code":"401","description":"Invalid API Key or Inactive API Key or Expired API Key","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_1004"}},"schemaId":"schema_1004"},{"code":"500","description":"The task has no response in the expected time","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_1007"}},"schemaId":"schema_1007"}],"pointer":"/paths/~1s2s~1v2.0~1task~1makeup-vto~1{task_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/TaskStatusResponseV2","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/TaskStatusResponseV2"}}},{"code":"400","schemaId":"schema_1006","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_1006"}}},{"code":"401","schemaId":"schema_1004","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_1004"}}},{"code":"500","schemaId":"schema_1007","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_1007"}}}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"feedback","pageSlug":"/v1.0/paths/~1s2s~1v2.0~1task~1makeup-vto~1{task_id}/get"}],"panels":[]}]},"httpPath":"/s2s/v2.0/task/makeup-vto/{task_id}"}],"content":{"contentType":"group","meta":{"name":"V1.0"},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"V1.0","showPageActions":true}],"panels":[{"children":[{"kind":"group-items","title":"Operations","titleTranslationKey":"operations","items":[{"title":"/s2s/v2.0/task/makeup-vto","summary":"Run an AI Makeup Virtual Try On task.","prefix":{"name":"post","color":"post"},"badges":[],"link":"/v1.0/paths/~1s2s~1v2.0~1task~1makeup-vto/post","deprecated":false},{"title":"/s2s/v2.0/task/makeup-vto/{task_id}","summary":"Check the status of a AI Makeup Virtual Try On task.","prefix":{"name":"get","color":"get"},"badges":[],"link":"/v1.0/paths/~1s2s~1v2.0~1task~1makeup-vto~1{task_id}/get","deprecated":false}]}]}]}]}}],"store":{"schemaStore":{"components/schemas/EngineErrorCode":{"id":"components/schemas/EngineErrorCode","kind":"json-schema","title":"EngineErrorCode","data":{"type":"string","nullable":true,"enum":["exceed_max_filesize","invalid_parameter","error_download_image","error_decode_image","error_nsfw_content_detected","error_inference","unknown_internal_error"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Errors:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"exceed_max_filesize"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Input file size exceeds the maximum limit"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"invalid_parameter"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Invalid parameter value"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"error_download_image"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Download source image error"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"error_decode_image"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Decode source image error"},"children":[]}]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"unknown_internal_error"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" - Others"},"children":[]}]}]}]}]}]}},"components/schemas/FileV1.1":{"id":"components/schemas/FileV1.1","kind":"json-schema","title":"File V1.1","data":{"title":"File V1.1","description":"This object represents a file.","type":"object","required":["files"],"properties":{"files":{"type":"array","items":{"type":"object","required":["content_type","file_name","file_size"],"properties":{"content_type":{"type":"string","example":"image/jpg","description":"Content MIME type for this file. Currently available values are listed in the enum."},"file_name":{"type":"string","example":"my-selfie.jpg","description":"Name of this file"},"file_size":{"type":"integer","example":50000,"description":"Content length for this file in bytes. Should not be larger than 10MB."}}}}}}},"components/schemas/BasicFileResponse":{"id":"components/schemas/BasicFileResponse","kind":"json-schema","title":"BasicFileResponse","data":{"type":"object","properties":{"files":{"type":"array","items":{"type":"object","properties":{"content_type":{"type":"string","example":"image/jpg","description":"Content MIME type for this file."},"file_name":{"type":"string","example":"my-selfie.jpg","description":"Name of this file"},"file_id":{"type":"string","example":"U8aqJbsXGT537jtGnEDFHqxdDXqh8+oTF/cSkLimzuvVwMP+Jb1XbjPsf7ZgUgLY","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"ID of this file. Other run task API will need this "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"file_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},"requests":{"type":"array","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Using upload "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"url"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"headers"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"method"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" below to upload file. After completion, the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"file_id"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" is used to proceed with calling run task API."},"children":[]}]}]}],"items":{"type":"object","properties":{"headers":{"type":"object","example":{"Content-Type":"image/jpg","Content-Length":50000},"description":"Headers to include when uploading the file"},"url":{"type":"string","example":"https://example.com/presigned-upload-url","description":"URL to upload this file"},"method":{"type":"string","example":"PUT","description":"HTTP method to upload this file"}}}}}}}}}},"components/schemas/FileResponseV2":{"id":"components/schemas/FileResponseV2","kind":"json-schema","title":"FileResponseV2","data":{"type":"object","properties":{"status":{"type":"integer","example":200,"description":"Response status"},"data":{"$ref":"#/components/schemas/BasicFileResponse"}}}},"components/schemas/BasicRunTaskV2SrcFileUrl":{"id":"components/schemas/BasicRunTaskV2SrcFileUrl","kind":"json-schema","title":"Run task with src file url","data":{"title":"Run task with src file url","type":"object","required":["src_file_url"],"properties":{"src_file_url":{"type":"string","description":"Url of the file to run task. The url should be publicly accessible.","example":"https://example.com/selfie.jpg"}}}},"components/schemas/BasicRunTaskV2SrcFileId":{"id":"components/schemas/BasicRunTaskV2SrcFileId","kind":"json-schema","title":"Run task with src file ID","data":{"title":"Run task with src file ID","type":"object","required":["src_file_id"],"properties":{"src_file_id":{"type":"string","description":"ID of file to run task. File ID from upload file API.","example":"pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE="}}}},"components/schemas/BasicRunTaskV2":{"id":"components/schemas/BasicRunTaskV2","kind":"json-schema","title":"BasicRunTaskV2","data":{"title":"BasicRunTaskV2","anyOf":[{"$ref":"#/components/schemas/BasicRunTaskV2SrcFileUrl"},{"$ref":"#/components/schemas/BasicRunTaskV2SrcFileId"}]}},"components/schemas/BasicRunTaskResponseV2":{"id":"components/schemas/BasicRunTaskResponseV2","kind":"json-schema","title":"BasicRunTaskResponseV2","data":{"type":"object","properties":{"status":{"type":"integer","description":"Response status","example":200},"data":{"type":"object","properties":{"task_id":{"type":"string","description":"ID of this task. Task result is valid to query by this ID for 24 hours.","example":"grH0CvsgXuAIHLUzD0V1Ol34hoet3R1tvdbtiVHrDb6_UqCLKIejAIajwxrhOAfe"}}}}}},"components/schemas/TaskStatusResponseBodySingleUrlResultsV2":{"id":"components/schemas/TaskStatusResponseBodySingleUrlResultsV2","kind":"json-schema","title":"TaskStatusResponseBodySingleUrlResultsV2","data":{"type":"object","properties":{"url":{"type":"string","description":"URL to download this result. Valid for 2 hours","example":"https://example.com/sample-result-url"}}}},"components/schemas/TaskStatusResponseV2":{"id":"components/schemas/TaskStatusResponseV2","kind":"json-schema","title":"TaskStatusResponseV2","data":{"type":"object","properties":{"status":{"type":"integer","description":"Response status","example":200},"data":{"type":"object","properties":{"task_status":{"type":"string","enum":["running","success","error"],"description":"Status of this task"},"error":{"$ref":"#/components/schemas/EngineErrorCode"},"error_message":{"type":"string","description":"Detailed description of error"},"results":{"$ref":"#/components/schemas/TaskStatusResponseBodySingleUrlResultsV2"}}}}}},"components/schemas/SkinSmoothEffect":{"id":"components/schemas/SkinSmoothEffect","kind":"json-schema","title":"SkinSmoothEffect","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Controls the AI-generated smoothing applied to the skin. If no skin_smooth effect is provided, the system will automatically apply a smoothing strength of 50 for realistic blending."},"children":[]}]}]}],"required":["category"],"properties":{"category":{"type":"string","enum":["skin_smooth"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifies this effect as a skin smoothing effect. Must always be \"skin_smooth\"."},"children":[]}]}]}]},"skinSmoothStrength":{"type":"integer","minimum":0,"maximum":100,"default":50,"description":"Strength of smoothing applied to overall skin texture. Higher values result in softer, more airbrushed skin appearance.\n"},"skinSmoothColorIntensity":{"type":"integer","minimum":0,"maximum":100,"default":50,"description":"Intensity of color blending applied during smoothing. Helps unify skin tones and reduce color inconsistency.\n"}},"example":{"category":"skin_smooth","skinSmoothStrength":50,"skinSmoothColorIntensity":50}}},"components/schemas/BlushEffect":{"id":"components/schemas/BlushEffect","kind":"json-schema","title":"BlushEffect","data":{"type":"object","description":"Applies blush to the cheeks using predefined patterns and customizable color palettes. Pattern names must correspond to labels from the official blush.json pattern catalog.\n","required":["category","pattern","palettes"],"properties":{"category":{"type":"string","enum":["blush"],"description":"Identifies this effect as a blush effect. Must always be \"blush\".\n"},"pattern":{"type":"object","description":"Defines how the blush is placed on the face. Each pattern corresponds to a face shape and layout from blush.json.\n","required":["name"],"properties":{"name":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Name of the blush pattern. Must be equal to a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"label"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from the blush.json pattern catalog."},"children":[]}]}]}],"example":"1color1"}}},"palettes":{"type":"array","minItems":1,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"List of color palette entries. The number of palettes required depends on the "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"colorNum"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" field defined in the selected blush pattern."},"children":[]}]}]}],"items":{"type":"object","required":["color","texture","colorIntensity"],"properties":{"color":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Primary blush color in hex format (#RRGGBB). Used as the dominant pigment for the blush application."},"children":[]}]}]}],"pattern":"^#?[0-9A-Fa-f]{6}$"},"texture":{"type":"string","enum":["matte","satin","shimmer"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Texture of the blush:"},"children":[]}]}]},{"$$mdtype":"Node","type":"list","attributes":{"ordered":false,"marker":"-"},"children":[{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"matte: pure pigment, no shine"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"satin: soft glow, requires glowStrength"},"children":[]}]}]},{"$$mdtype":"Node","type":"item","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"shimmer: sparkly or luminous, requires shimmer parameters"},"children":[]}]}]}]}]},"glowStrength":{"type":"integer","minimum":0,"maximum":100,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Glow intensity for satin blush textures. Required when texture = \"satin\" or \"shimmer\"."},"children":[]}]}]}]},"shimmerColor":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Color of shimmer particles. Required when texture = \"shimmer\"."},"children":[]}]}]}]},"shimmerDensity":{"type":"integer","minimum":0,"maximum":100,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Density of shimmer particles in the blush application. Required when texture = \"shimmer\"."},"children":[]}]}]}]},"colorIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Strength of the blush color relative to the base pigment.\n"}}}}},"example":{"category":"blush","pattern":{"name":"1color1"},"palettes":[{"color":"#ff7777","texture":"matte","colorIntensity":60}]}}},"components/schemas/BronzerEffect":{"id":"components/schemas/BronzerEffect","kind":"json-schema","title":"BronzerEffect","data":{"type":"object","description":"Applies bronzer to warm up skin tone and add sun-kissed contours. Pattern names must match bronzer.json entries.\n","required":["category","pattern","palettes"],"properties":{"category":{"type":"string","enum":["bronzer"],"description":"Identifies this effect as a bronzer effect. Must always be \"bronzer\".\n"},"pattern":{"type":"object","required":["name"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Defines the bronzer application layout. Pattern name must match a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"label"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in bronzer.json."},"children":[]}]}]}],"properties":{"name":{"type":"string","example":"Bronzer1","description":"Name of the bronzer pattern from the bronzer.json catalog.\n"}}},"palettes":{"type":"array","description":"The bronzer palette contains pigment color and intensity controls.\n","items":{"type":"object","required":["color","colorIntensity"],"properties":{"color":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Bronzer color in hex format (#RRGGBB)."},"children":[]}]}]}]},"colorIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Intensity of bronzer pigmentation.\n"}}}}},"example":{"category":"bronzer","pattern":{"name":"Bronzer1"},"palettes":[{"color":"#c08050","colorIntensity":50}]}}},"components/schemas/ConcealerEffect":{"id":"components/schemas/ConcealerEffect","kind":"json-schema","title":"ConcealerEffect","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Adds concealer for neutralizing blemishes, evening skin tone, and brightening under-eye regions. Concealer does not use a pattern — only pigment and intensity controls. All palette fields are required to ensure consistent behavior across face zones."},"children":[]}]}]}],"required":["category","palettes"],"properties":{"category":{"type":"string","enum":["concealer"],"description":"Identifies this effect as a concealer effect. Must always be \"concealer\".\n"},"palettes":{"type":"array","minItems":1,"description":"One or more concealer palettes defining color and intensity properties. The same palette is applied to relevant facial areas, such as under-eye, forehead, and chin correction zones.\n","items":{"type":"object","required":["color","colorIntensity","colorUnderEyeIntensity","coverageLevel"],"properties":{"color":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Concealer shade in hex RGB format (#RRGGBB). Should typically match or slightly brighten the skin tone."},"children":[]}]}]}]},"colorIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"General concealer pigmentation strength applied across the face.\n"},"colorUnderEyeIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Specific pigmentation control for the under-eye region. Helps brighten dark circles without over-applying to other zones.\n"},"coverageLevel":{"type":"integer","minimum":0,"maximum":100,"description":"Determines opacity of concealer coverage. Higher values hide more discoloration or blemishes.\n"}}}}},"example":{"category":"concealer","palettes":[{"color":"#e6c7a8","colorIntensity":50,"colorUnderEyeIntensity":50,"coverageLevel":60}]}}},"components/schemas/ContourEffect":{"id":"components/schemas/ContourEffect","kind":"json-schema","title":"ContourEffect","data":{"type":"object","description":"Defines contouring for facial sculpting using patterns tailored to specific face shapes. Contour patterns determine highlight/shadow placement, while palettes control the contour shade.\n","required":["category","pattern","palettes"],"properties":{"category":{"type":"string","enum":["contour"],"description":"Identifies this effect as a contour effect. Must always be \"contour\".\n"},"pattern":{"type":"object","required":["name"],"description":"Defines where contour shadowing is applied on the face. Must use a pattern name defined in contour.json (e.g., HeartFace2, OvalFace6).\n","properties":{"name":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Name of the contour pattern. Must be equal to a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"label"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from contour.json."},"children":[]}]}]}],"example":"OvalFace6"}}},"palettes":{"type":"array","minItems":1,"description":"Defines the pigment used for contouring. Usually a cool-tone or neutral shade darker than foundation.\n","items":{"type":"object","required":["color","colorIntensity"],"properties":{"color":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Contour pigment color in #RRGGBB hex format."},"children":[]}]}]}]},"colorIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Strength of contour pigmentation. Higher values result in deeper shadows.\n"}}}}},"example":{"category":"contour","pattern":{"name":"OvalFace6"},"palettes":[{"color":"#8a5b3e","colorIntensity":55}]}}},"components/schemas/EyebrowsEffect":{"id":"components/schemas/EyebrowsEffect","kind":"json-schema","title":"EyebrowsEffect","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Shapes and colors the eyebrows using customizable geometry and color palettes. When "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"pattern.type = shape"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", the pattern defines the brow geometry (arch, curvature, thickness). When "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"pattern.type = color"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", only pigment changes are applied."},"children":[]}]}]}],"required":["category","pattern","palettes"],"properties":{"category":{"type":"string","enum":["eyebrows"],"description":"Identifies this effect as an eyebrow styling effect. Must always be \"eyebrows\".\n"},"pattern":{"type":"object","description":"This setting defines the eyebrow pattern mode, which can either adjust the shape or apply color only. Pattern names must match the labels in eyebrows.json when required.\n","required":["type"],"oneOf":[{"title":"ShapePattern","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Shape-based eyebrow styling (geometry + optional color)."},"children":[]}]}]}],"required":["name"],"properties":{"type":{"type":"string","enum":["shape"],"description":"Use customized eyebrow pattern shape"},"name":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Name of the eyebrow shape pattern. Must match a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"label"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from eyebrows.json."},"children":[]}]}]}],"example":"SoftArch1"},"curvature":{"type":"integer","minimum":-100,"maximum":100,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Adjusts how curved the brow is. Negative = flatter / straighter, positive = more curved."},"children":[]}]}]}]},"thickness":{"type":"integer","minimum":-100,"maximum":100,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Controls eyebrow thickness adjustment relative to the detected brow. Positive = thicker, negative = thinner."},"children":[]}]}]}]},"definition":{"type":"integer","minimum":0,"maximum":100,"description":"Sharpness and clarity of the brows. Higher values increase brow edge definition for a cleaner look.\n"}}},{"title":"ColorPattern","description":"Color-only eyebrow styling (no geometry change).","properties":{"type":{"type":"string","enum":["color"],"description":"Use user's original eyebrow shape"}}}]},"palettes":{"type":"array","minItems":1,"description":"Eyebrow color palettes. Each palette controls pigment and optional shimmer effects (for shimmer textures only).\n","items":{"type":"object","required":["color","colorIntensity","texture"],"properties":{"color":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Eyebrow pigment color in #RRGGBB format."},"children":[]}]}]}]},"colorIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Pigmentation strength used when applying eyebrow color.\n"},"texture":{"type":"string","enum":["matte","shimmer"],"description":"Brow pigment texture style. Shimmer adds reflective highlights to brow hairs.\n"},"shimmerColor":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Shimmer color applied when texture = shimmer."},"children":[]}]}]}]},"shimmerIntensity":{"type":"integer","minimum":0,"maximum":100,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Strength of shimmer glow. Required only if texture = shimmer."},"children":[]}]}]}]},"shimmerSize":{"type":"integer","minimum":0,"maximum":100,"description":"Size of shimmer particles. Required for shimmer textures.\n"},"shimmerDensity":{"type":"integer","minimum":0,"maximum":100,"description":"Density of shimmer particles in the brow. Required for shimmer textures.\n"}}}}},"example":{"category":"eyebrows","pattern":{"type":"shape","name":"SoftArch1","curvature":10,"thickness":5,"definition":50},"palettes":[{"color":"#3b2f2f","colorIntensity":70,"texture":"matte"}]}}},"components/schemas/EyelinerEffect":{"id":"components/schemas/EyelinerEffect","kind":"json-schema","title":"EyelinerEffect","data":{"type":"object","description":"Applies eyeliner using customizable patterns and pigment settings. Patterns define the eyeliner layout (e.g., Arabic shapes, winged styles), while palettes specify color, texture, shimmer/metallic effects, and intensity.\n","required":["category","pattern","palettes"],"properties":{"category":{"type":"string","enum":["eye_liner"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifies this effect as an eyeliner effect. Must always be \"eye_liner\"."},"children":[]}]}]}]},"pattern":{"type":"object","required":["name"],"description":"Defines the eyeliner shape and placement. Pattern names must match labels from eyeliner.json.\n","properties":{"name":{"type":"string","description":"Name of the eyeliner pattern. Must be equal to a label from eyeliner.json.\n","example":"Arabic3"}}},"palettes":{"type":"array","minItems":1,"description":"Eyeliner color palette entries. Each palette controls pigment color, shimmer/metallic effects, and overall intensity. More palettes are used when the selected eyeliner pattern requires multiple colors.\n","items":{"type":"object","required":["color","texture","colorIntensity"],"properties":{"color":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Eyeliner pigment color in #RRGGBB format."},"children":[]}]}]}]},"texture":{"type":"string","enum":["matte","shimmer","metallic"],"description":"Eyeliner texture finish specifies the look of the liner, whether it's matte for a flat opaque effect, shimmer for a sparkling reflective finish (with shimmer fields), or metallic for a glossy metallic sheen (requiring shimmer fields and metallic intensity).\n"},"shimmerColor":{"type":"string","description":"Color used for shimmer or metallic reflective particles. Required if texture is shimmer or metallic.\n"},"shimmerIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Strength of reflective sparkle. Required when texture is shimmer or metallic.\n"},"metallicIntensity":{"type":"integer","minimum":0,"maximum":100,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Metallic reflectivity level. Required when texture = metallic."},"children":[]}]}]}]},"colorIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Pigmentation strength for the eyeliner color.\n"}}}}},"example":{"category":"eye_liner","pattern":{"name":"Arabic3"},"palettes":[{"color":"#000000","texture":"matte","colorIntensity":80}]}}},"components/schemas/EyeshadowEffect":{"id":"components/schemas/EyeshadowEffect","kind":"json-schema","title":"EyeshadowEffect","data":{"type":"object","description":"Applies eyeshadow with customizable multi-color palettes and textures. Eyeshadow patterns define layout (e.g., 1 to 5 colors), while palettes specify pigmentation and shimmer/metallic properties.\n","required":["category","pattern","palettes"],"properties":{"category":{"type":"string","enum":["eye_shadow"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifies this effect as an eyeshadow effect. Must always be \"eye_shadow\"."},"children":[]}]}]}]},"pattern":{"type":"object","required":["name"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Defines the eyeshadow placement pattern. Must match a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"label"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" in eyeshadow.json (e.g., 1color1, 2colors1, etc.)."},"children":[]}]}]}],"properties":{"name":{"type":"string","description":"Pattern name from eyeshadow.json determining number of colors and shadow placement zones.\n","example":"2colors1"}}},"palettes":{"type":"array","minItems":1,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"One or more pigment palette entries. The number of palettes required depends on the pattern's "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"colorNum"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Each palette defines a specific layer/color in the eyeshadow pattern."},"children":[]}]}]}],"items":{"type":"object","required":["color","texture","colorIntensity"],"properties":{"color":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Eyeshadow pigment color in HEX format (#RRGGBB)."},"children":[]}]}]}]},"texture":{"type":"string","enum":["matte","shimmer","metallic"],"description":"Eyeshadow surface appearance determines whether the finish is matte for a smooth flat look, shimmer for a sparkling effect (requiring shimmer parameters), or metallic for a bold metallic sheen (requiring shimmer parameters and metallic intensity).\n"},"shimmerColor":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Color of shimmer particles. Required if texture = shimmer or metallic."},"children":[]}]}]}]},"shimmerIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Reflective sparkle strength for shimmer or metallic textures.\n"},"metallicIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Metallic reflectivity level; required for metallic textures.\n"},"colorIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Overall pigmentation level of each shadow color.\n"}}}}},"example":{"category":"eye_shadow","pattern":{"name":"2colors1"},"palettes":[{"color":"#b07baf","texture":"shimmer","shimmerColor":"#f2d3f5","shimmerIntensity":60,"colorIntensity":70},{"color":"#8e5c9c","texture":"matte","colorIntensity":65}]}}},"components/schemas/EyelashesEffect":{"id":"components/schemas/EyelashesEffect","kind":"json-schema","title":"EyelashesEffect","data":{"type":"object","description":"Enhances eyelashes by applying pigment to detected lash strands. Lash extensions or density enhancements depend on the selected pattern, while the palette controls lash color and intensity.\n","required":["category","pattern","palettes"],"properties":{"category":{"type":"string","enum":["eyelashes"],"description":"Identifies this effect as an eyelashes effect. Must always be \"eyelashes\".\n"},"pattern":{"type":"object","required":["name"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Defines which eyelash style is applied (natural, artistic, winged, upper/lower, etc.). Must match a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"label"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from eyelashes.json."},"children":[]}]}]}],"properties":{"name":{"type":"string","description":"Name of the eyelash pattern from eyelashes.json.\n","example":"Upper1"}}},"palettes":{"type":"array","minItems":1,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Eyelash color palettes. Eyelashes do not support shimmer/metallic effects — only color and intensity."},"children":[]}]}]}],"items":{"type":"object","required":["color","colorIntensity"],"properties":{"color":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Eyelash color in HEX format (#RRGGBB)."},"children":[]}]}]}]},"colorIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Darkness/pigment strength applied to the lashes.\n"}}}}},"example":{"category":"eyelashes","pattern":{"name":"Upper1"},"palettes":[{"color":"#000000","colorIntensity":80}]}}},"components/schemas/FoundationEffect":{"id":"components/schemas/FoundationEffect","kind":"json-schema","title":"FoundationEffect","data":{"type":"object","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Applies foundation to even skin tone using pigment, coverage, and glow controls. Unlike blush/contour, foundation has no pattern — it is applied globally based on skin segmentation."},"children":[]}]}]}],"required":["category","palettes"],"properties":{"category":{"type":"string","enum":["foundation"],"description":"Identifies this effect as a foundation effect. Must always be \"foundation\".\n"},"palettes":{"type":"array","minItems":1,"description":"Foundation palette entries controlling tone, coverage, glow, and color intensity.\n","items":{"type":"object","required":["color","colorIntensity","glowIntensity","coverageIntensity"],"properties":{"color":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Foundation shade in #RRGGBB format. Typically close to natural skin tone."},"children":[]}]}]}]},"colorIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Intensity of foundation coloration.\n"},"glowIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Adds luminosity to the skin finish. Higher values produce a radiant or dewy effect.\n"},"coverageIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Controls opacity of foundation coverage. Higher values hide more imperfections.\n"}}}}},"example":{"category":"foundation","palettes":[{"color":"#eac595","colorIntensity":50,"glowIntensity":10,"coverageIntensity":50}]}}},"components/schemas/HighlighterEffect":{"id":"components/schemas/HighlighterEffect","kind":"json-schema","title":"HighlighterEffect","data":{"type":"object","description":"Adds reflective highlights to the high points of the face (cheekbones, cupid's bow, nose bridge, etc.). Patterns determine highlight placement based on face shape. Palettes control shimmer, glow, density, particle size, and coloration.\n","required":["category","pattern","palettes"],"properties":{"category":{"type":"string","enum":["highlighter"],"description":"Identifies this effect as a highlighter effect. Must always be \"highlighter\".\n"},"pattern":{"type":"object","required":["name"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Highlight placement pattern. Must match a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"label"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from highlighter.json (e.g., HeartFace4, Oblong11, OvalFace2)."},"children":[]}]}]}],"properties":{"name":{"type":"string","description":"Name of the highlight pattern from the highlighter.json catalog.\n","example":"SquareFace3"}}},"palettes":{"type":"array","minItems":1,"description":"Highlighter palette entries defining shimmer, glow, density, and color.\n","items":{"type":"object","required":["color","glowIntensity","shimmerIntensity","shimmerDensity","shimmerSize","colorIntensity"],"properties":{"color":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Highlighter pigment color in #RRGGBB HEX format. Usually white, champagne, gold, or pink tones."},"children":[]}]}]}]},"glowIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Amount of non-shimmer glow added to the skin. Higher values result in a more luminous, radiant finish.\n"},"shimmerIntensity":{"type":"integer","minimum":0,"maximum":100,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Strength of shimmer reflections. Higher values = more sparkle."},"children":[]}]}]}]},"shimmerDensity":{"type":"integer","minimum":0,"maximum":100,"description":"Number of shimmer particles per area. Higher density creates a more glittery effect.\n"},"shimmerSize":{"type":"integer","minimum":0,"maximum":100,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Size of shimmer particles. Larger particles create a glitter-like effect; small = fine shimmer."},"children":[]}]}]}]},"colorIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Strength of the highlighter color pigment.\n"}}}}},"example":{"category":"highlighter","pattern":{"name":"SquareFace3"},"palettes":[{"color":"#FFF7F8","glowIntensity":60,"shimmerIntensity":50,"shimmerDensity":40,"shimmerSize":50,"colorIntensity":50}]}}},"components/schemas/LipColorEffect":{"id":"components/schemas/LipColorEffect","kind":"json-schema","title":"LipColorEffect","data":{"type":"object","description":"Applies lipstick in a variety of shapes, finishes, and artistic styles. Includes control over lip morphology (fullness, wrinkles), texture (matte, gloss, metallic, shimmer, sheer, etc.), shimmer/gloss parameters, multi-color patterns, and ombre/two-tone styles.\n","required":["category","shape","palettes","style"],"properties":{"category":{"type":"string","enum":["lip_color"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifies this effect as a lipstick/lip color effect. Must always be \"lip_color\"."},"children":[]}]}]}]},"shape":{"type":"object","description":"Defines the lip boundary and shape modification. Pattern names must match lipshape.json (e.g., plump, original, pouty).\n","required":["name"],"properties":{"name":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lip shape style used to modify the lip edges and silhouette. Must be equal to a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"label"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" from lipshape.json."},"children":[]}]}]}],"example":"plump"}}},"morphology":{"type":"object","description":"Optional morphological adjustments to lips. Enhances fullness and reduces lip wrinkles.\n","properties":{"fullness":{"type":"integer","default":0,"minimum":0,"maximum":100,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Controls how plump or full the lips appear. Higher values = larger, more voluminous lips."},"children":[]}]}]}]},"wrinkless":{"type":"integer","default":0,"minimum":0,"maximum":100,"description":"Smooths wrinkles and texture on the lips. Higher values result in smoother lip appearance.\n"}}},"palettes":{"type":"array","minItems":1,"description":"Lip color palette entries controlling pigment, texture, shimmer, and gloss. Multiple palettes can be used for ombre or two-tone styles.\n","items":{"type":"object","required":["color","texture","colorIntensity"],"properties":{"color":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Lipstick color in HEX format (#RRGGBB)."},"children":[]}]}]}]},"texture":{"type":"string","enum":["matte","gloss","holographic","metallic","satin","sheer","shimmer"],"description":"This setting tells you the texture of lip finish. If you choose gloss, make sure to include gloss properties. For shimmer, metallic or holographic finishes, add the shimmer-related fields. And if you go for sheer, shimmer or gloss, don't forget to include transparency intensity.\n"},"colorIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Intensity of lipstick pigmentation.\n"},"gloss":{"type":"integer","minimum":0,"maximum":100,"description":"Glossiness level for gloss/holographic/metallic/sheer/shimmer textures.\n"},"shimmerColor":{"type":"string","description":"Color of shimmer particles for shimmer, metallic, or holographic textures.\n"},"shimmerIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Strength of shimmer reflectivity.\n"},"shimmerDensity":{"type":"integer","minimum":0,"maximum":100,"description":"Density of shimmer particles.\n"},"shimmerSize":{"type":"integer","minimum":0,"maximum":100,"description":"Size of shimmer particles.\n"},"transparencyIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Transparency effect strength. Used for sheer, shimmer, or gloss textures.\n"}}}},"style":{"type":"object","description":"Styles describe the artistic look of lip colour, whether it's a full uniform shade, an ombre gradient blending tones, or a two-tone effect with contrasting colors on different parts of the lips.\n","required":["type"],"properties":{"type":{"type":"string","enum":["full","ombre","twoTone"],"description":"Style of lip coloration.\n"},"innerColorRatio":{"type":"integer","minimum":0,"maximum":100,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Determines how far inward the secondary color extends (ombre only). Required if type = ombre."},"children":[]}]}]}]},"blendStrength":{"type":"integer","minimum":0,"maximum":100,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Blending softness between colors. Required if type = ombre."},"children":[]}]}]}]}}}},"example":{"category":"lip_color","shape":{"name":"plump"},"morphology":{"fullness":20,"wrinkless":10},"style":{"type":"full"},"palettes":[{"color":"#C2185B","texture":"gloss","colorIntensity":80,"gloss":70,"transparencyIntensity":30}]}}},"components/schemas/LipLinerEffect":{"id":"components/schemas/LipLinerEffect","kind":"json-schema","title":"LipLinerEffect","data":{"type":"object","description":"Applies lip liner around the edges of the lips, enhancing shape definition. Useful for refining lip borders, adjusting symmetry, and supporting ombre/two-tone looks.\n","required":["category","pattern","palettes"],"properties":{"category":{"type":"string","enum":["lip_liner"],"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Identifies this effect as a lip liner effect. Must always be \"lip_liner\"."},"children":[]}]}]}]},"pattern":{"type":"object","required":["name"],"description":"Defines lip liner placement based on pattern from lipliner.json.\n","properties":{"name":{"type":"string","description":"Name of lip liner pattern (e.g., Natural1, LargerUpper1).\n","example":"Natural1"}}},"palettes":{"type":"array","minItems":1,"description":"Lip liner palette entries defining color, thickness, and smoothness.\n","items":{"type":"object","required":["color","texture","colorIntensity","thickness","smoothness"],"properties":{"color":{"type":"string","description":"Lip liner pigment color in HEX format.\n"},"texture":{"type":"string","enum":["matte","satin"],"description":"Lip liner finish type.\n"},"colorIntensity":{"type":"integer","minimum":0,"maximum":100,"description":"Intensity of lip liner pigmentation.\n"},"thickness":{"type":"integer","minimum":0,"maximum":100,"description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Thickness of the lip liner stroke — higher values create bolder outlines."},"children":[]}]}]}]},"smoothness":{"type":"integer","minimum":0,"maximum":100,"description":"Smoothness of the stroke edges. Higher values produce softer, blended lines.\n"}}}}},"example":{"category":"lip_liner","pattern":{"name":"Natural1"},"palettes":[{"color":"#A63A50","texture":"matte","colorIntensity":70,"thickness":40,"smoothness":50}]}}},"schema_1002":{"kind":"json-schema","data":{"allOf":[{"$ref":"#/components/schemas/BasicRunTaskV2"},{"type":"object","required":["effects"],"properties":{"version":{"type":"string","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Version of the makeup effect specification. Defaults to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"\"1.0\""},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" unless otherwise specified."},"children":[]}]}]}],"default":"1.0","example":"1.0"},"effects":{"type":"array","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Array of makeup effects to apply. Each effect object MUST specify a "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"category"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and match the schema for that makeup type."},"children":[]}]}]}],"items":{"anyOf":[{"$ref":"#/components/schemas/SkinSmoothEffect"},{"$ref":"#/components/schemas/BlushEffect"},{"$ref":"#/components/schemas/BronzerEffect"},{"$ref":"#/components/schemas/ConcealerEffect"},{"$ref":"#/components/schemas/ContourEffect"},{"$ref":"#/components/schemas/EyebrowsEffect"},{"$ref":"#/components/schemas/EyelinerEffect"},{"$ref":"#/components/schemas/EyeshadowEffect"},{"$ref":"#/components/schemas/EyelashesEffect"},{"$ref":"#/components/schemas/FoundationEffect"},{"$ref":"#/components/schemas/HighlighterEffect"},{"$ref":"#/components/schemas/LipColorEffect"},{"$ref":"#/components/schemas/LipLinerEffect"}]}}}}]},"id":"schema_1002"},"schema_1003":{"kind":"json-schema","data":{"allOf":[{"$ref":"#/components/responses/RunError"}]},"id":"schema_1003"},"schema_1004":{"kind":"json-schema","data":{"type":"object","properties":{"status":{"type":"integer","example":401,"description":"Response status"},"error_code":{"type":"string","enum":["InvalidApiKey","InactiveApiKey","ExpiredApiKey"]}}},"id":"schema_1004"},"schema_1005":{"kind":"json-schema","data":{"type":"string","example":"grH0CvsgXuAIHLUzD0V1Ol34hoet3R1tvdbtiVHrDb6_UqCLKIejAIajwxrhOAfe"},"id":"schema_1005"},"schema_1006":{"kind":"json-schema","data":{"type":"object","properties":{"status":{"type":"integer","description":"Response status","example":400},"error_code":{"type":"string","enum":["InvalidTaskId"]}}},"id":"schema_1006"},"schema_1007":{"kind":"json-schema","data":{"type":"object","properties":{"status":{"type":"integer","description":"Response status","example":500},"error_code":{"type":"string","enum":["TaskTimeout"]}}},"id":"schema_1007"}},"exampleStore":{},"securitySchemeStore":{"BearerAuthenticationV2":{"id":"BearerAuthenticationV2","type":"http","scheme":"bearer","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Use the standard 'Bearer authentication'. Put your 'API Key' in header: "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Authorization:Bearer YOUR_API_KEY"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". Notice that there is ' ' a space between 'Bearer' and the 'YOUR_API_KEY'."},"children":[]}]}]}]}},"servers":[{"url":"https://yce-api-01.makeupar.com"}]},"options":{"layout":"stacked","hideSidebar":true,"mockServer":{"off":true,"position":"off"},"disableRouter":true,"downloadUrls":[{"url":"/_bundle/reference/makeup_vto.json?download"},{"url":"/_bundle/reference/makeup_vto.yaml?download"}],"excludeFromSearch":false,"specType":"openapi","markdocOptions":{"tags":{},"nodes":{},"components":{}},"metadata":{"title":"AI Makeup Virtual Try-On","description":"# Overview\nThe AI Makeup API provides a powerful, hyper-realistic virtual makeover experience powered by our patented face-analyzing technology. This service enables your applications to apply true-to-life makeup effects onto user-provided selfie images with unprecedented customization capabilities.\n\n**Key Features:**\n*   **Hyper-realistic Rendering:** Leverages revolutionary 3D face AI technology for the most realistic makeovers.\n*   **Patented Technology:** Powered by jitter-free, lag-free deep learning algorithms optimized for all ages and ethnicities.\n*   **Real-time Precision:** Ultra-precise facial tracking that adapts to various lighting conditions.\n*   **True-to-life Matching:** Accurately matches real-world product colors, textures (from matte to metallic), and finishes.\n\n* Core Concepts\n\n   * Color Blending\nOur AI accurately matches the color of real-life makeup products using deep learning. This ensures consumers are confident that the virtual color they see is the true color of the product they intend to purchase.\n\n   * Texture & Finish Matching\nThe technology simulates realistic textures and finishes, providing a highly accurate makeover experience. From matte to metallic, shimmer to satin, the AI taps into advanced algorithms to render these effects seamlessly in real-time.\n\n   * Light Balancing\nThe smart 3D AI engine detects lighting conditions in the user's photo or video feed. It corrects images for true-to-life makeup application, ensuring a consistent and high-quality result regardless of the environment.\n\n---\n\n## Integration Guide\n\nThe Makeup Virtual Try-On service operates as an asynchronous task. You must first initiate a makeup processing task by providing the image URL and a list of desired effects. The server responds with a `task_id`. You then periodically poll a status endpoint to retrieve the final result or any errors.\n\n*   **Endpoint:** `/v2.0/task/makeup-vto`\n*   **Authentication:** All requests require an `Authorization: Bearer <TOKEN>`\n*   **Workflow:**\n    1.  **Prepare a selfie:** Upload an image or use existing file url of a face image.\n    1.  **Start Task (`POST`):** Submit your image id/URL and makeup configuration.\n    1.  **Retrieve Task ID:** Capture the `task_id` from the response.\n    1.  **Poll Status (`GET`):** Use the `task_id` to check the status of the task. Continue polling until `task_status` is `\"success\"` or `\"error\"`.\n\n\n* API Playground\n\nInteractively explore and test the API using our official playground:\n\n**API Playground:**\n[http://yce.makeupar.com/api-console/en/api-playground/ai-makeup-virtual-try-on/](http://yce.makeupar.com/api-console/en/api-playground/ai-makeup-virtual-try-on/)\n\n---\n\n* Authentication\n- Include your API key in the request header using **Bearer Token**:\n    ```\n    Authorization: Bearer <API Key>\n    ```\nYou can find your API Key at https://yce.makeupar.com/api-console/en/api-keys/.\n\n* 1. Upload a Selfie\n  You can provide the source image in one of two ways:\n\n  - **Use an Existing Public Image URL**\n    Instead of uploading, you may supply a publicly accessible image URL directly when initiating the AI task.\n\n  - **Upload via File API**\n    Use the endpoint:\n    ```\n    POST /s2s/v2.0/file\n    ```\n    This returns a `file_id` for subsequent task execution.\n\n    - ***Important***: Simply calling the File API does not upload your file. You must **manually upload** the file to the **URL provided in the File API response**. That URL is your upload destination, make sure the file is successfully transferred there before proceeding.<br></br>\n    Before calling the AI API, ensure your file has been successfully uploaded. Use the File API to retrieve an upload URL, then upload your file to that location. Once the upload is complete, you'll receive a ***file_id*** in the response, this ID is what you'll use to access AI features related to that file.\n\n      > **Warning:** Please note that, you will get an 500 Server Error / unknown_internal_error or 404 Not Found error when using AI APIs if you do not upload the file to the URL provided in the File API response.\n\n\n* 2. Start Makeup Task\n\n`POST /s2s/v2.0/task/makeup-vto`\n\nInitiates a new virtual makeup task on the provided image. This endpoint is asynchronous and returns with a `task_id`.\n\n   * Request Headers\n\n| Header | Value |\n|--------|-------|\n| Content-Type | `application/json` |\n| Authorization | `Bearer YOUR_API_KEY` |\n\n   * Example Request Body\n```json\n{\n  \"src_file_url\": \"https://plugins-media.makeupar.com/strapi/assets/sample_Image_1_202b6bf6e6.jpg\",\n  \"effects\": [\n    {\n      \"category\": \"blush\",\n      \"pattern\": { \"name\": \"2colors6\" },\n      \"palettes\": [\n        { \"color\": \"#FF0000\", \"texture\": \"matte\", \"colorIntensity\": 50 },\n        { \"color\": \"#F2A53E\", \"texture\": \"matte\", \"colorIntensity\": 50 }\n      ]\n    },\n    {\n      \"category\": \"eye_liner\",\n      \"pattern\": { \"name\": \"3colors5\" },\n      \"palettes\": [\n        { \"color\": \"#000000\", \"texture\": \"matte\", \"colorIntensity\": 50 },\n        { \"color\": \"#BA0656\", \"texture\": \"matte\", \"colorIntensity\": 50 },\n        { \"color\": \"#089085\", \"texture\": \"matte\", \"colorIntensity\": 50 }\n      ]\n    }\n  ],\n  \"version\": \"1.0\"\n}\n```\n\n   * Request Body Schema\n\n| Field | Type | Description |\n|-------|------|---------|\n| `src_file_url` | string (URL) | A publicly accessible URL to the selfie image to be processed. |\n| `effects` | array of Effect | An array of makeup effects objects to apply. See [Makeup Effect Schemas](#makeup-effect-schemas) for details. |\n| `version` | string | The API version of the effect payload structure. Use `\"1.0\"`. |\n\n   * Successful Response (`200 OK`)\nReturns a JSON object containing the task identifier.\n\n**Response Body Schema:**\n```json\n{\n  \"status\": 200,\n  \"data\": {\n    \"task_id\": \"<string>\"\n  }\n}\n```\n\n**Example Response:**\n```json\n{\n  \"status\": 200,\n  \"data\": {\n    \"task_id\": \"grH0CvsgXuAIHLUzD0V1Ol34hoet3R1tvdbtiVHrDb6_UqCLKIejAIajwxrhOAfe\"\n  }\n}\n```\n\n   * Error Responses (`400 Bad Request`, `401 InvalidApiKey`, etc.)\nA standard error object will be returned with a message describing the failure.\n\n**Example Error Response:**\n```json\n{\n  \"status\": 400,\n  \"error\": \"The operation could not be completed\",\n  \"error_code\": \"CreditInsufficiency\"\n}\n```\n\n---\n\n* 3. Get Task Status & Results\n\n`GET /s2s/v2.0/task/makeup-vto/<task_id>`\n\nRetrieves the current status and results of an in-progress or completed task.\n\n   * Request Headers\n\n| Header | Value |\n|--------|-------|\n| Authorization | `Bearer YOUR_API_KEY` |\n\n   * Path Parameters\n\n| Parameter | Type | Description |\n|-----------|------|---------|\n| task_id | string | The identifier returned from the start-task endpoint. |\n\n   * Successful Response (`200 OK`)\nA JSON object containing the status and, if completed, the results.\n\n**Response Body Schema:**\n```json\n{\n  \"data\": {\n    \"task_status\": \"<string>\", // 'success', 'error', or a processing state (e.g., 'queued', 'processing')\n    \"results\": [ // present only when task_status is 'success'\n      {\n        \"download_url\": \"<string>\" // URL to download the processed image\n      }\n    ],\n    \"failure_reason\": \"<string>\" // present only when task_status is 'error'\n  }\n}\n```\n\n**Example Success Response:**\n```json\n{\n  \"status\": 200,\n  \"data\": {\n    \"task_status\": \"success\",\n    \"results\": {\n      \"url\": \"https://s3.storage.prod/processed/image_123.jpg?token=...\"\n    }\n  }\n}\n```\n\n**Example Engine Error Response:**\nThe API query was sent successfully; however, an error occurred while executing the AI task.\n```json\n{\n  \"status\": 200,\n  \"data\": {\n    \"task_status\": \"error\",\n    \"error\": \"exceed_max_filesize\",\n    \"error_message\": \"string\",\n  }\n}\n```\n  > Please note that no units will be consumed if an error occurs, whether it is a query error or an engine error.\n\n**Example In-Progress Response:**\n```json\n{\n  \"status\": 200,\n  \"data\": {\n    \"task_status\": \"running\"\n  }\n}\n```\n\n   * Error Responses\n*   `404 InvalidTaskId`: The `task_id` does not exist or is invalid.\n*   `401 InvalidApiKey`: The API key is invalid or missing.\n*   `500 TaskTimeout`: The task has either completed successfully or failed and has exceeded the retention period.\n\n**Example Query Error Response:**\n```json\n{\n  \"status\": 401,\n  \"error_code\": \"InvalidApiKey\"\n}\n```\n  > Please note that no units will be consumed if an error occurs, whether it is a query error or an engine error.\n\n---\n\n## Inputs & Outputs\n* Makeup Effect Schema\n\nThis section defines the complete structure and constraints for the request body of an AI Makeup task. Each effect is an object in the top-level `effects` array.\n\n* Effect Container (Top Level)\n\n```json\n{\n  \"version\": \"1.0\",\n  \"effects\": []                    // array<Effect> — Contains makeup effect objects\n}\n```\n\n* Makeup Effect Categories\n\n   * `skin_smooth`\n```json\n{\n  \"category\": \"skin_smooth\",           // string, const \"skin_smooth\"\n  \"skinSmoothStrength\": 50,            // integer, range: 0..100\n  \"skinSmoothColorIntensity\": 50       // integer, range: 0..100\n}\n```\n  > **Note!** If no ``skin_smooth`` effect is included in the request, the AI Makeup Engine will automatically apply a default Skin Smooth value of 50.\n  Set all ``skinSmoothStrength`` and ``skinSmoothColorIntensity`` parameters to 0 if you want makeup applied with no skin smoothing. However, for best results and highest-quality blending, it is recommended to leave the default skin smoothing enabled.\n\n   * `blush`\n```json\n{\n  \"category\": \"blush\",                 // string, const \"blush\"\n  \"pattern\": {                         // object\n    \"name\": \"\"                         // string — MUST equal a `label` from blush.json\n  },\n  \"palettes\": [                        // array<BlushPalette>, minItems: (see colorNum in pattern)\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"satin\",\"shimmer\"]\n      \"glowStrength\": 50,              // integer, range: 0..100 — REQUIRED if texture=\"satin\"\n      \"shimmerColor\": \"#fc288f\",       // string, hex color \"#RRGGBB\" — REQUIRED if texture=\"shimmer\"\n      \"shimmerDensity\": 50,            // integer, range: 0..100 — REQUIRED if texture=\"shimmer\"\n      \"colorIntensity\": 50             // integer, range: 0..100\n    }\n  ]\n}\n```\n\n**Full Pattern Catalog:**\nhttps://plugins-media.makeupar.com/wcm-saas/patterns/blush.json\n\n**Distinct Makeup Pattern Categories:**\n```json\n[\n  {\n    \"category\": \"1 color\",\n    \"label\": \"1color1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/483/a53cd4f4-43b6-4e19-b85a-ec7a95c6a47f.jpg\",\n    \"tags\": [\n      { \"id\": 100, \"name\": \"Blush 3D\" },\n      { \"id\": 103, \"name\": \"Oblong\" }\n    ],\n    \"colorNum\": 1\n  },\n  {\n    \"category\": \"2 colors\",\n    \"label\": \"2colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/147/a8d86a4b-8aa0-48d7-a716-63ec78dfb30b.jpg\",\n    \"tags\": [\n      { \"id\": 100, \"name\": \"Blush 3D\" }\n    ],\n    \"colorNum\": 2\n  },\n  {\n    \"category\": \"3 colors\",\n    \"label\": \"3colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/734/af8b625b-ae3a-4211-9413-f22c16a5f174.jpg\",\n    \"tags\": [\n      { \"id\": 100, \"name\": \"Blush 3D\" },\n      { \"id\": 104, \"name\": \"Round\" }\n    ],\n    \"colorNum\": 3\n  }\n]\n```\n\n\n   * `bronzer`\n```json\n{\n  \"category\": \"bronzer\",               // string, const \"bronzer\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a `label` from bronzer.json\n  \"palettes\": [\n    { \"color\": \"#ff0000\", \"colorIntensity\": 50 }  // hex color, int range: 0..100\n  ]\n}\n```\n\n**Full Pattern Catalog:**\nhttps://plugins-media.makeupar.com/wcm-saas/patterns/bronzer.json\n\n**Distinct Makeup Pattern Categories:**\n```json\n[\n  {\n    \"category\": \"Bronzer\",\n    \"label\": \"Bronzer1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/973/22ff2c07-d584-4ae6-8281-c095cd121a52.jpg\",\n    \"tags\": [],\n    \"colorNum\": 1\n  }\n]\n```\n\n   * `concealer`\n```json\n{\n  \"category\": \"concealer\",             // string, const \"concealer\"\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"colorIntensity\": 50,            // integer, range: 0..100\n      \"colorUnderEyeIntensity\": 50,    // integer, range: 0..100\n      \"coverageLevel\": 50              // integer, range: 0..100\n    }\n  ]\n}\n```\n\n   * `contour`\n```json\n{\n  \"category\": \"contour\",               // string, const \"contour\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a `label` from contour.json\n  \"palettes\": [\n    { \"color\": \"#ff0000\", \"colorIntensity\": 50 }  // hex color, int range: 0..100\n  ]\n}\n```\n\n**Full Pattern Catalog:**\nhttps://plugins-media.makeupar.com/wcm-saas/patterns/contour.json\n\n**Distinct Makeup Pattern Categories:**\n```json\n[\n  {\n    \"category\": \"Heart face\",\n    \"label\": \"HeartFace2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/731/49a1b3b9-b393-4bf4-b486-1493fe468436.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Invtriangle\",\n    \"label\": \"Invtriangle1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/858/a94c8cca-5f8c-4b8b-a02d-94edb6a4ad7f.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Oval face\",\n    \"label\": \"OvalFace6\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/906/644368a3-7eee-4ad9-829e-e2b3d4320fec.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Round face\",\n    \"label\": \"RoundFace4\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/106/3e455b5f-7e2d-46f7-8627-dc137051c144.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Triangle face\",\n    \"label\": \"TriangleFace2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/528/18765180-c254-4411-a25c-c1d78f5c3d77.jpg\",\n    \"tags\": []\n  }\n]\n```\n\n   * `eyebrows`\n```json\n{\n  \"category\": \"eyebrows\",              // string, const \"eyebrows\"\n  \"pattern\": {\n    \"type\": \"shape\",                   // string, enum [\"shape\",\"color\"], default: \"shape\"\n    \"name\": \"\",                        // string, required when type=\"shape\" — label from eyebrows.json\n    \"curvature\": 0,                    // integer, range: -100..100 (shape only)\n    \"thickness\": 0,                    // integer, range: -100..100 (shape only)\n    \"definition\": 0                    // integer, range: 0..100 (shape only)\n  },\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"colorIntensity\": 50,            // integer, range: 0..100\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"shimmer\"]\n      \"shimmerColor\": \"#fc288f\",       // string, hex color \"#RRGGBB\" — REQUIRED if texture=\"shimmer\"\n      \"shimmerIntensity\": 50,          // integer, range: 0..100 — REQUIRED if texture=\"shimmer\"\n      \"shimmerSize\": 50,               // integer, range: 0..100 — REQUIRED if texture=\"shimmer\"\n      \"shimmerDensity\": 50             // integer, range: 0..100 — REQUIRED if texture=\"shimmer\"\n    }\n  ]\n}\n```\n\n**Full Pattern Catalog:**\nhttps://plugins-media.makeupar.com/wcm-saas/patterns/eyebrows.json\n\n**Distinct Makeup Pattern Categories:**\n```json\n[\n  {\n    \"category\": \"Arrow\",\n    \"label\": \"Arrow1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/490/1fb96bf9-979e-4327-a8c4-8c503f541f1a.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Curved\",\n    \"label\": \"Curved1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/389/1ccb300e-c7ed-4995-920e-7d1bf8da1fad.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Drama\",\n    \"label\": \"Drama2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/196/5fb14bec-553d-4841-bba7-ca7e5e27c12e.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"High Arch\",\n    \"label\": \"HighArch1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/609/7a8676dc-6f6a-4b12-aab0-c50328e448c5.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Original\",\n    \"label\": \"Original2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/300/123551e9-ca94-4732-89ed-5b3866678555.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Soft Arch\",\n    \"label\": \"SoftArch1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/121/2552ebf0-2705-43f7-b295-4fac21e18009.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Straight\",\n    \"label\": \"Straight1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/1/7734e777-8e51-41f1-abaf-205f0ed5e3b4.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Thin\",\n    \"label\": \"Thin1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/734/6ee10843-a251-4aa0-9183-db7f981d714d.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Upward\",\n    \"label\": \"Upward4\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/751/76578317-f475-49c7-bd96-910ccad617ef.jpg\",\n    \"tags\": []\n  }\n]\n```\n\n   * `eye_liner`\n```json\n{\n  \"category\": \"eye_liner\",             // string, const \"eye_liner\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a label from eyeliner.json\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"shimmer\",\"metallic\"]\n      \"shimmerColor\": \"#fc288f\",       // string, hex color \"#RRGGBB\" — REQUIRED if texture in [\"shimmer\",\"metallic\"]\n      \"shimmerIntensity\": 50,          // integer, range: 0..100 — REQUIRED if texture in [\"shimmer\",\"metallic\"]\n      \"metallicIntensity\": 50,         // integer, range: 0..100 — REQUIRED if texture=\"metallic\"\n      \"colorIntensity\": 50             // integer, range: 0..100\n    }\n  ]\n}\n```\n\n**Full Pattern Catalog:**\nhttps://plugins-media.makeupar.com/wcm-saas/patterns/eyeliner.json\n\n**Distinct Makeup Pattern Categories:**\n```json\n[\n  {\n    \"category\": \"2 colors\",\n    \"label\": \"2colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/419/71d9429a-dc08-4e80-9c46-6e55631ef766.jpg\",\n    \"tags\": [\n      {\n        \"id\": 28,\n        \"name\": \"Drama\"\n      }\n    ],\n    \"colorNum\": 2\n  },\n  {\n    \"category\": \"3 colors\",\n    \"label\": \"3colors2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/208/056aa6cd-8678-470c-b111-b7653d7ddf93.jpg\",\n    \"tags\": [\n      {\n        \"id\": 28,\n        \"name\": \"Drama\"\n      }\n    ],\n    \"colorNum\": 3\n  },\n  {\n    \"category\": \"1 color\",\n    \"label\": \"Arabic3\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/726/1919aad4-21a2-493a-a5f8-48bc99a61ba5.jpg\",\n    \"tags\": [\n      {\n        \"id\": 26,\n        \"name\": \"Arabic\"\n      }\n    ],\n    \"colorNum\": 1\n  }\n]\n```\n\n   * `eye_shadow`\n```json\n{\n  \"category\": \"eye_shadow\",            // string, const \"eye_shadow\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a label from eyeshadow.json\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"shimmer\",\"metallic\"]\n      \"shimmerColor\": \"#fc288f\",       // string, hex color \"#RRGGBB\" — REQUIRED if texture in [\"shimmer\",\"metallic\"]\n      \"shimmerIntensity\": 50,          // integer, range: 0..100 — REQUIRED if texture in [\"shimmer\",\"metallic\"]\n      \"metallicIntensity\": 50,         // integer, range: 0..100 — REQUIRED if texture=\"metallic\"\n      \"colorIntensity\": 50             // integer, range: 0..100\n    }\n  ]                                    // minItems: (see colorNum in pattern)\n}\n```\n\n**Full Pattern Catalog:**\nhttps://plugins-media.makeupar.com/wcm-saas/patterns/eyeshadow.json\n\n**Distinct Makeup Pattern Categories:**\n```json\n[\n  {\n    \"category\": \"1 color\",\n    \"label\": \"1color1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/188/0322c4f9-e54d-4a6b-8072-6bb76560121a.jpg\",\n    \"tags\": [\n      {\n        \"id\": 12,\n        \"name\": \"Artistic\"\n      },\n      {\n        \"id\": 14,\n        \"name\": \"Dream\"\n      },\n      {\n        \"id\": 15,\n        \"name\": \"Trend\"\n      }\n    ],\n    \"colorNum\": 1\n  },\n  {\n    \"category\": \"2 colors\",\n    \"label\": \"2colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/938/3348211c-1b83-4ab2-9c6a-ce06e4aa3528.jpg\",\n    \"tags\": [\n      {\n        \"id\": 1,\n        \"name\": \"Fan shape\"\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Only upper lid\"\n      }\n    ],\n    \"colorNum\": 2\n  },\n  {\n    \"category\": \"3 colors\",\n    \"label\": \"3colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/542/55e1b0fd-b888-47ff-bd3a-3dc1af2a7b69.jpg\",\n    \"tags\": [\n      {\n        \"id\": 1,\n        \"name\": \"Fan shape\"\n      },\n      {\n        \"id\": 8,\n        \"name\": \"Only upper lid\"\n      }\n    ],\n    \"colorNum\": 3\n  },\n  {\n    \"category\": \"4 colors\",\n    \"label\": \"4colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/429/29cd5839-464b-4a7a-a5c1-c7b40e9464d7.jpg\",\n    \"tags\": [\n      {\n        \"id\": 4,\n        \"name\": \"Closed banana\"\n      },\n      {\n        \"id\": 10,\n        \"name\": \"Whole eye\"\n      }\n    ],\n    \"colorNum\": 4\n  },\n  {\n    \"category\": \"5 colors\",\n    \"label\": \"5colors1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/2/824dcf7c-1273-4a30-8f1f-2137926057d6.jpg\",\n    \"tags\": [\n      {\n        \"id\": 4,\n        \"name\": \"Closed banana\"\n      },\n      {\n        \"id\": 10,\n        \"name\": \"Whole eye\"\n      }\n    ],\n    \"colorNum\": 5\n  }\n]\n```\n\n   * `eyelashes`\n```json\n{\n  \"category\": \"eyelashes\",             // string, const \"eyelashes\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a label from eyelashes.json\n  \"palettes\": [\n    { \"color\": \"#ff0000\", \"colorIntensity\": 50 }  // hex color, int range: 0..100\n  ]\n}\n```\n\n**Full Pattern Catalog:**\nhttps://plugins-media.makeupar.com/wcm-saas/patterns/eyelashes.json\n\n**Distinct Makeup Pattern Categories:**\n```json\n[\n  {\n    \"category\": \"Artistic\",\n    \"label\": \"Artistic1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/146/7a8ed606-1c27-4d91-9320-c40a904f621f.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Natural\",\n    \"label\": \"Natural1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/287/cd5cae75-a1b3-48f8-8537-e6e259213901.png\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Upper&Lower\",\n    \"label\": \"Upper&Lower1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/18/2689ea2d-725e-4fa0-8563-df874ae1a83f.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Upper\",\n    \"label\": \"Upper1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/982/c99bf74e-545f-4da7-a314-f3bd84b82156.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"UpperDense\",\n    \"label\": \"UpperDense1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/888/452ec863-f0a8-40e7-aa33-31c0c39f57e2.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Winged\",\n    \"label\": \"Winged1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/825/36ab3859-eae5-49e4-9d97-161698bbb8bb.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Wispies\",\n    \"label\": \"Wispies1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/722/a2a727f6-748c-41e7-8ac0-c9c57c18c05a.png\",\n    \"tags\": []\n  }\n]\n```\n\n   * `foundation`\n```json\n{\n  \"category\": \"foundation\",            // string, const \"foundation\"\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"colorIntensity\": 50,            // integer, range: 0..100\n      \"glowIntensity\": 50,             // integer, range: 0..100\n      \"coverageIntensity\": 50          // integer, range: 0..100\n    }\n  ]\n}\n```\n\n   * `highlighter`\n```json\n{\n  \"category\": \"highlighter\",           // string, const \"highlighter\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a label from highlighter.json\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"glowIntensity\": 50,             // integer, range: 0..100\n      \"shimmerIntensity\": 50,          // integer, range: 0..100\n      \"shimmerDensity\": 50,            // integer, range: 0..100\n      \"shimmerSize\": 50,               // integer, range: 0..100\n      \"colorIntensity\": 50             // integer, range: 0..100\n    }\n  ]\n}\n```\n\n**Full Pattern Catalog:**\nhttps://plugins-media.makeupar.com/wcm-saas/patterns/highlighter.json\n\n**Distinct Makeup Pattern Categories:**\n```json\n[\n  {\n    \"category\": \"Heart face\",\n    \"label\": \"HeartFace4\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/246/6ca40279-79cc-4918-b48a-64306009b365.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Invtriangle\",\n    \"label\": \"Invtriangle2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/7/6b0b9760-612c-4319-bd81-855d262d8e89.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Oblong\",\n    \"label\": \"Oblong11\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/862/b7279f4e-edf2-43f3-8156-561fe5a52ec3.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Oval face\",\n    \"label\": \"OvalFace2\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/369/91097a05-9fd2-43cb-82e9-dd45e72b613b.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Round face\",\n    \"label\": \"RoundFace3\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/520/2d3ccbe2-36c3-43df-9e78-4c2c931fa431.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Square face\",\n    \"label\": \"SquareFace3\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/989/2959777b-19ca-4f4a-a023-3c8927191497.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Triangle face\",\n    \"label\": \"TriangleFace3\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/customer/guest/SkuCustomImage/765/221c1f12-c621-4567-a8ee-1433038ee8a2.jpg\",\n    \"tags\": []\n  }\n]\n```\n\n   * `lip_color`\n```json\n{\n  \"category\": \"lip_color\",             // string, const \"lip_color\"\n  \"shape\": {                           // object — driven by lipshape.json\n    \"name\": \"original\"                 // string — MUST equal a `label` from lipshape.json\n  },\n  \"morphology\": {                      // optional object\n    \"fullness\": 50,                    // integer, range: 0..100 (default: 0)\n    \"wrinkless\": 50                    // integer, range: 0..100 (default: 0)\n  },\n  \"palettes\": [                        // minItems depends on style; often ≥1\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"gloss\",\"holographic\",\"metallic\",\"satin\",\"sheer\",\"shimmer\"]\n      \"colorIntensity\": 50,            // integer, range: 0..100\n      \"gloss\": 50,                     // int, range: 0..100 — REQUIRED if texture in [\"gloss\",\"holographic\",\"metallic\",\"sheer\",\"shimmer\"]\n      \"shimmerColor\": \"#ff0000\",       // string, hex color \"#RRGGBB\" — REQUIRED if texture in [\"holographic\",\"metallic\",\"shimmer\"]\n      \"shimmerIntensity\": 50,          // integer, range: 0..100 — REQUIRED if texture in [\"holographic\",\"metallic\",\"shimmer\"]\n      \"shimmerDensity\": 50,            // integer, range: 0..100 — REQUIRED if texture in [\"holographic\",\"metallic\",\"shimmer\"]\n      \"shimmerSize\": 50,               // integer, range: 0..100 — REQUIRED if texture in [\"holographic\",\"metallic\",\"shimmer\"]\n      \"transparencyIntensity\": 50      // integer, range: 0..100 — REQUIRED if texture in [\"gloss\",\"sheer\",\"shimmer\"]\n    }\n  ],\n  \"style\": {\n    \"type\": \"full\",                    // string, enum [\"full\",\"ombre\",\"twoTone\"]\n    \"innerRatio\": 50,                  // int, range: 0..100 — REQUIRED if type=\"ombre\"\n    \"featherStrength\": 50              // int, range: 0..100 — REQUIRED if type=\"ombre\"\n  }\n}\n```\n\n**Full Pattern Catalog:**\nhttps://plugins-media.makeupar.com/wcm-saas/shapes/lipshape.json\n\n**Distinct Makeup Pattern Categories:**\n```json\n[{\n        \"category\": \"general\",\n        \"label\": \"original\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/original.png\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"heart-shaped\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/heart-shaped.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"m-shaped\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/m-shaped.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"petal\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/petal.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"plump\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/plump.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"pouty\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/pouty.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"smile\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/smile.jpg\",\n        \"tags\": [\n        ]\n    }, {\n        \"category\": \"general\",\n        \"label\": \"vintage\",\n        \"thumbnail\": \"https://plugins-media.makeupar.com/wcm-saas/images/lipshapes/vintage.jpg\",\n        \"tags\": [\n        ]\n    }\n]\n```\n\n   * `lip_liner`\n```json\n{\n  \"category\": \"lip_liner\",             // string, const \"lip_liner\"\n  \"pattern\": { \"name\": \"\" },           // object — name MUST equal a label from lipliner.json\n  \"palettes\": [\n    {\n      \"color\": \"#ff0000\",              // string, hex color \"#RRGGBB\"\n      \"texture\": \"matte\",              // string, enum [\"matte\",\"satin\"]\n      \"colorIntensity\": 50,            // integer, range: 0..100\n      \"thickness\": 50,                 // integer, range: 0..100\n      \"smoothness\": 50                 // integer, range: 0..100\n    }\n  ]\n}\n```\n\n**Full Pattern Catalog:**\nhttps://plugins-media.makeupar.com/wcm-saas/patterns/lipliner.json\n\n**Distinct Makeup Pattern Categories:**\n```json\n[\n  {\n    \"category\": \"Large & Full\",\n    \"label\": \"Large&Full1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/417/7ac66cb2-2c7b-451c-8284-cc77791b7001.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Larger Lower\",\n    \"label\": \"LargerLower1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/878/84b2ef48-3af4-4851-86d2-b01d10db82b2.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Larger Upper\",\n    \"label\": \"LargerUpper1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/867/674f9f4c-7961-462e-8cc9-9a8acaad4168.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Natural\",\n    \"label\": \"Natural1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/258/7533c08a-cc9c-45ab-9294-5d5a8114037d.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Rosebud\",\n    \"label\": \"Rosebud1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/47/eb95e91f-6ef1-41f7-bc4f-aecd7d780c42.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Small\",\n    \"label\": \"Small1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/396/6b78e461-24a6-4c6d-afb4-88beb71f1732.jpg\",\n    \"tags\": []\n  },\n  {\n    \"category\": \"Wider\",\n    \"label\": \"Wider1\",\n    \"thumbnail\": \"https://app-cdn-01.makeupar.com/console/SkuCustomImage/guest/867/21f92b70-72b5-4a57-b4d7-81c5cce757a6.jpg\",\n    \"tags\": []\n  }\n]\n```\n\n---\n\n## Example Payload\n\nHere is a full example of a valid `effectJson` payload applying multiple effects.\n\n```json\n{\n  \"version\": \"1.0\",\n  \"effects\": [\n    {\n      \"category\": \"skin_smooth\",\n      \"skinSmoothStrength\": 55,\n      \"skinSmoothColorIntensity\": 45\n    },\n    {\n      \"category\": \"blush\",\n      \"pattern\": { \"name\": \"2colors1\" },\n      \"palettes\": [\n        {\n          \"color\": \"#e19f9f\",\n          \"texture\": \"matte\",\n          \"colorIntensity\": 60,\n          \"shimmerColor\": \"#d63252\",\n          \"shimmerDensity\": 50\n        },\n        {\n          \"color\": \"#c98a8a\",\n          \"texture\": \"satin\",\n          \"glowStrength\": 40,\n          \"colorIntensity\": 70\n        }\n      ]\n    },\n    {\n        \"category\": \"lip_color\",\n        \"shape\": { \"name\": \"plump\" },\n        \"morphology\": { \"fullness\": 30, \"wrinkless\": 25 },\n        \"style\": { \"type\": \"full\" },\n        \"palettes\": [\n            {\n                \"color\": \"#e11c43\",\n                \"texture\": \"gloss\",\n                \"colorIntensity\": 80,\n                \"gloss\": 75\n            }\n        ]\n    }\n  ]\n}\n```\nIn this example, `blush` uses the the `2colors1` pattern from the `blush.json`, which requires exactly two palettes. The `lip_color` effect uses the the `plump` shape from `lipshape.json`.\n\n## File Specs & Errors\n* Supported Formats & Dimensions\n\n|AI Feature|Supported Dimensions|Supported File Size|Supported Formats|\n|  ----  | ----  | ----  | ----  |\n|AI Makeup Virtual Try-On|long side < 1920, face width >= 100|< 10MB|jpg/jpeg/png|\n\n* Error Codes\n\n|Error Code|Description|\n|  ----  | ----  |\n|error_below_min_image_size|the size of the source image is smaller than minimum (expect: width >= 100px, height >= 100px)\n|error_exceed_max_image_size|the size of the source image is larger than maximum (expect: width < 1920px, height < 1080px)\n|error_face_position_invalid |Please ensure your entire face is fully visible within the image|\n|error_face_position_too_small|The detected face is too small. Move closer to the camera|\n|error_face_position_out_of_boundary|The face is too large or partially outside the image frame. Adjust your position|\n|error_face_angle_invalid|The face angle is incorrect. For front-facing photos, keep your head within 10°. For side-facing photos, ensure more than 15°.|\n\n* Environment & Dependency\n\n| Sample Code Language / Tool | Recommended Runtime Versions |\n|---|---|\n| cURL | - bash >= 3.2</br>   - curl >= 7.58 (modern TLS/HTTP support)</br>   - jq >= 1.6 (robust JSON parsing) |\n| Node.js (JavaScript) | Node >= 18 (for global fetch) |\n| JavaScript | - Chrome / Edge >= 80</br>   - Firefox >= 74</br>   - Safari >= 13.1 |\n| PHP | PHP >= 7.4 (for modern TLS/compat), ext-curl (recommended) or allow_url_fopen=On + ext-openssl, ext-json |\n| Python | Python >= 3.10 (for f-strings), requests >= 2.20.0 |\n| Java | Java 11+ (for HttpClient), Jackson Databind >= 2.12.0 |\n\n---\n\n## JS Camera Kit\n{% partial file=\"/_partials/js-camera-kit.md\" /%}\n\n---\n\n## Unit Consumption\n\n| AI Feature | Unit Consumed |\n|---|---|\n| AI Makeup Virtual Try-On V1.0 | 1 |\n\n---\n"}},"baseSlug":"/reference/makeup_vto","routesMapping":{}}