YouCam for Beauty & Personal Care
Ce que fait ce MCP
Offers image-based beauty and personal-care analysis and virtual try-on tools for makeup, hair, facial features, body reshaping, skin, and styling.
Outils
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_url'], 'properties': {'mode': {'anyOf': [{'enum': ['Six-pack', 'Vest-line'], 'type': 'string'}, {'type': 'null'}], 'default': 'Six-pack', 'examples': ['Six-pack'], 'description': 'The abs effect user to choose.\n'}, 'intensity': {'anyOf': [{'enum': [1, 2], 'type': 'integer'}, {'type': 'null'}], 'default': 1, 'examples': [1], 'description': 'The intensity the users wish to adjust their abs, 2 is the stronger intensity.\n'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id'], 'properties': {'mode': {'anyOf': [{'enum': ['Six-pack', 'Vest-line'], 'type': 'string'}, {'type': 'null'}], 'default': 'Six-pack', 'examples': ['Six-pack'], 'description': 'The abs effect user to choose.\n'}, 'intensity': {'anyOf': [{'enum': [1, 2], 'type': 'integer'}, {'type': 'null'}], 'default': 1, 'examples': [1], 'description': 'The intensity the users wish to adjust their abs, 2 is the stronger intensity.\n'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_url'], 'properties': {'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['template_id', 'src_file_url'], 'properties': {'template_id': {'type': 'string', 'examples': ['good_template_001'], 'description': 'ID of the template. List predefined templates first, and use the id of a template.'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['template_id', 'src_file_id'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'template_id': {'type': 'string', 'examples': ['good_template_001'], 'description': 'ID of the template. List predefined templates first, and use the id of a template.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['template_id', 'src_file_url'], 'properties': {'template_id': {'type': 'string', 'examples': ['good_template_001'], 'description': 'ID of the template. List predefined templates first, and use the id of a template.'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['template_id', 'src_file_id'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'template_id': {'type': 'string', 'examples': ['good_template_001'], 'description': 'ID of the template. List predefined templates first, and use the id of a template.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['version', 'features', 'src_file_url'], 'properties': {'index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'examples': [0], 'description': 'The index of the person from detection task result.'}, 'version': {'type': 'string', 'examples': ['1.0'], 'description': 'Version of the features specification. Defaults to `"1.0"` unless otherwise specified.\n'}, 'features': {'type': 'object', 'properties': {'arm': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'hip': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'leg': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'neck': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0], 'description': 'Applies to both sides. A per-side key (`neck_left` / `neck_right`) overrides this value for that side; a per-side `0` means that side is left unchanged.'}, 'slim': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'belly': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'waist': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'breast': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0], 'description': 'Applies to both sides. A per-side key (`breast_left` / `breast_right`) overrides this value for that side; a per-side `0` means that side is left unchanged.'}, 'taller': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'hip_lift': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'shoulder': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0], 'description': 'Applies to both sides. A per-side key (`shoulder_left` / `shoulder_right`) overrides this value for that side; a per-side `0` means that side is left unchanged.'}, 'neck_left': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'neck_right': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'breast_left': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'breast_right': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'shoulder_left': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'shoulder_right': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'squared_shoulder': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0], 'description': 'Applies to both sides. A per-side key (`squared_shoulder_left` / `squared_shoulder_right`) overrides this value for that side; a per-side `0` means that side is left unchanged.'}, 'squared_shoulder_left': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'squared_shoulder_right': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}}, 'description': 'Cannot be all zero'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['version', 'features', 'src_file_id'], 'properties': {'index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'examples': [0], 'description': 'The index of the person from detection task result.'}, 'version': {'type': 'string', 'examples': ['1.0'], 'description': 'Version of the features specification. Defaults to `"1.0"` unless otherwise specified.\n'}, 'features': {'type': 'object', 'properties': {'arm': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'hip': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'leg': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'neck': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0], 'description': 'Applies to both sides. A per-side key (`neck_left` / `neck_right`) overrides this value for that side; a per-side `0` means that side is left unchanged.'}, 'slim': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'belly': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'waist': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'breast': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0], 'description': 'Applies to both sides. A per-side key (`breast_left` / `breast_right`) overrides this value for that side; a per-side `0` means that side is left unchanged.'}, 'taller': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'hip_lift': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'shoulder': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0], 'description': 'Applies to both sides. A per-side key (`shoulder_left` / `shoulder_right`) overrides this value for that side; a per-side `0` means that side is left unchanged.'}, 'neck_left': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'neck_right': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'breast_left': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'breast_right': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'shoulder_left': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'shoulder_right': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'squared_shoulder': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0], 'description': 'Applies to both sides. A per-side key (`squared_shoulder_left` / `squared_shoulder_right`) overrides this value for that side; a per-side `0` means that side is left unchanged.'}, 'squared_shoulder_left': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}, 'squared_shoulder_right': {'anyOf': [{'type': 'number', 'maximum': 100.0, 'minimum': -100.0}, {'type': 'null'}], 'default': None, 'examples': [0]}}, 'description': 'Cannot be all zero'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_url'], 'properties': {'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_url'], 'properties': {'intensity': {'anyOf': [{'enum': [1, 2, 3], 'type': 'integer'}, {'type': 'null'}], 'default': 2, 'examples': [2], 'description': 'The intensity the users wish to adjust their breast, 3 is the strongest intensity.\n'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id'], 'properties': {'intensity': {'anyOf': [{'enum': [1, 2, 3], 'type': 'integer'}, {'type': 'null'}], 'default': 2, 'examples': [2], 'description': 'The intensity the users wish to adjust their breast, 3 is the strongest intensity.\n'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['version', 'effect', 'src_file_url', 'ref_file_url'], 'properties': {'effect': {'type': 'object', 'required': ['intensity'], 'properties': {'intensity': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'enlargement': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'skin_smooth_strength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}, 'skin_smooth_color_intensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}}}, 'version': {'enum': ['1.0'], 'type': 'string'}, 'ref_file_url': {'type': 'string', 'examples': ['https://example.com/reference.jpg'], 'description': 'Url of the reference file to run task. The url should be publicly accessible.'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['version', 'effect', 'src_file_url', 'ref_file_id'], 'properties': {'effect': {'type': 'object', 'required': ['intensity'], 'properties': {'intensity': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'enlargement': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'skin_smooth_strength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}, 'skin_smooth_color_intensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}}}, 'version': {'enum': ['1.0'], 'type': 'string'}, 'ref_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of the reference file to run task. File ID from upload file API.'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['version', 'effect', 'src_file_id', 'ref_file_url'], 'properties': {'effect': {'type': 'object', 'required': ['intensity'], 'properties': {'intensity': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'enlargement': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'skin_smooth_strength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}, 'skin_smooth_color_intensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}}}, 'version': {'enum': ['1.0'], 'type': 'string'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'ref_file_url': {'type': 'string', 'examples': ['https://example.com/reference.jpg'], 'description': 'Url of the reference file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['version', 'effect', 'src_file_id', 'ref_file_id'], 'properties': {'effect': {'type': 'object', 'required': ['intensity'], 'properties': {'intensity': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'enlargement': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'skin_smooth_strength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}, 'skin_smooth_color_intensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}}}, 'version': {'enum': ['1.0'], 'type': 'string'}, 'ref_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of the reference file to run task. File ID from upload file API.'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['features', 'src_file_url'], 'properties': {'features': {'type': 'array', 'items': {'enum': ['eyeShape', 'eyeSize', 'eyeAngle', 'eyeDistance', 'eyelid', 'eyebrowShape', 'eyebrowThickness', 'eyebrowDistance', 'eyebrowShortness', 'cheekbones', 'faceShape', 'lipShape', 'noseWidth', 'noseLength', 'age', 'gender', 'eyeColor', 'lipColor', 'eyebrowColor', 'hairColor', 'horizontalThird', 'verticalFifth', 'faceAspectRatio', 'eyeAspectRatio', 'eyebrowPosition', 'eyebrowArch', 'eyeHeightToEyebrowDistance', 'noseAspectRatio', 'noseWidthToMouthWidth', 'noseToLipToChin', 'upperLipToLowerLip'], 'type': 'string'}, 'description': 'AI Face Analysis categories\n* Face Analysis\n - FACE: faceShape\n - EYES: eyeShape eyeSize eyeAngle eyeDistance eyelid\n - BROWS: eyebrowShape eyebrowThickness eyebrowDistance eyebrowShortness\n - LIPS: lipShape\n - NOSE: noseWidth noseLength\n - CHEEKBONES: cheekbones\n - AGE & GENDER: age gender\n - COLORS: eyeColor hairColor eyebrowColor lipColor\n\n* Facial Ratios\n - horizontalThird\n - verticalFifth\n - faceAspectRatio\n - eyeAspectRatio\n - eyebrowPosition\n - eyebrowArch\n - eyeHeightToEyebrowDistance\n - noseAspectRatio\n - noseWidthToMouthWidth\n - noseToLipToChin\n - upperLipToLowerLip\n'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}, 'face_angle_strictness_level': {'anyOf': [{'enum': ['strict', 'high', 'medium', 'low', 'flexible'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['high'], 'description': "The strictness level of face angle detection (pitch, yaw, roll).\nA stricter level ensures more accurate face attribute results.\nDefault is 'high'.\noptoins:\n - strict: pitch <= 4 degrees, yaw <= 6 degrees, roll <= 4 degrees\n - high: pitch, yaw, roll <= 10 degrees\n - medium: pitch, yaw, roll <= 15 degrees\n - low: pitch, yaw, roll <= 20 degrees\n - flexible: pitch, yaw, roll <= 30 degrees\n"}}}, {'type': 'object', 'required': ['features', 'src_file_id'], 'properties': {'features': {'type': 'array', 'items': {'enum': ['eyeShape', 'eyeSize', 'eyeAngle', 'eyeDistance', 'eyelid', 'eyebrowShape', 'eyebrowThickness', 'eyebrowDistance', 'eyebrowShortness', 'cheekbones', 'faceShape', 'lipShape', 'noseWidth', 'noseLength', 'age', 'gender', 'eyeColor', 'lipColor', 'eyebrowColor', 'hairColor', 'horizontalThird', 'verticalFifth', 'faceAspectRatio', 'eyeAspectRatio', 'eyebrowPosition', 'eyebrowArch', 'eyeHeightToEyebrowDistance', 'noseAspectRatio', 'noseWidthToMouthWidth', 'noseToLipToChin', 'upperLipToLowerLip'], 'type': 'string'}, 'description': 'AI Face Analysis categories\n* Face Analysis\n - FACE: faceShape\n - EYES: eyeShape eyeSize eyeAngle eyeDistance eyelid\n - BROWS: eyebrowShape eyebrowThickness eyebrowDistance eyebrowShortness\n - LIPS: lipShape\n - NOSE: noseWidth noseLength\n - CHEEKBONES: cheekbones\n - AGE & GENDER: age gender\n - COLORS: eyeColor hairColor eyebrowColor lipColor\n\n* Facial Ratios\n - horizontalThird\n - verticalFifth\n - faceAspectRatio\n - eyeAspectRatio\n - eyebrowPosition\n - eyebrowArch\n - eyeHeightToEyebrowDistance\n - noseAspectRatio\n - noseWidthToMouthWidth\n - noseToLipToChin\n - upperLipToLowerLip\n'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'face_angle_strictness_level': {'anyOf': [{'enum': ['strict', 'high', 'medium', 'low', 'flexible'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['high'], 'description': "The strictness level of face angle detection (pitch, yaw, roll).\nA stricter level ensures more accurate face attribute results.\nDefault is 'high'.\noptoins:\n - strict: pitch <= 4 degrees, yaw <= 6 degrees, roll <= 4 degrees\n - high: pitch, yaw, roll <= 10 degrees\n - medium: pitch, yaw, roll <= 15 degrees\n - low: pitch, yaw, roll <= 20 degrees\n - flexible: pitch, yaw, roll <= 30 degrees\n"}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['version', 'src_file_url'], 'properties': {'type': {'anyOf': [{'enum': ['auto'], 'type': 'string'}, {'type': 'null'}], 'default': 'custom'}, 'index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 0, 'examples': [0], 'description': 'The index of the person from detection task result.'}, 'global': {'anyOf': [{'type': 'object', 'properties': {'skin_smooth_strength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}, 'skin_smooth_color_intensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}}}, {'type': 'null'}], 'default': None}, 'version': {'type': 'string', 'examples': ['1.0'], 'description': 'Version of the features specification. Defaults to `"1.0"` unless otherwise specified.\n'}, 'features': {'anyOf': [{'type': 'object', 'properties': {'cheek': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'mouth': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'shape': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'eye_bag': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'forehead': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}}, 'additionalProperties': False}, {'type': 'null'}], 'default': None, 'description': "Cannot be all zero when using 'custom' type."}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['version', 'features', 'src_file_url'], 'properties': {'type': {'anyOf': [{'enum': ['custom'], 'type': 'string'}, {'type': 'null'}], 'default': 'custom'}, 'index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 0, 'examples': [0], 'description': 'The index of the person from detection task result.'}, 'global': {'anyOf': [{'type': 'object', 'properties': {'skin_smooth_strength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}, 'skin_smooth_color_intensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}}}, {'type': 'null'}], 'default': None}, 'version': {'type': 'string', 'examples': ['1.0'], 'description': 'Version of the features specification. Defaults to `"1.0"` unless otherwise specified.\n'}, 'features': {'type': 'object', 'properties': {'cheek': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'mouth': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'shape': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'eye_bag': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'forehead': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}}, 'description': "Cannot be all zero when using 'custom' type.", 'additionalProperties': False}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['version', 'src_file_id'], 'properties': {'type': {'anyOf': [{'enum': ['auto'], 'type': 'string'}, {'type': 'null'}], 'default': 'custom'}, 'index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 0, 'examples': [0], 'description': 'The index of the person from detection task result.'}, 'global': {'anyOf': [{'type': 'object', 'properties': {'skin_smooth_strength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}, 'skin_smooth_color_intensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}}}, {'type': 'null'}], 'default': None}, 'version': {'type': 'string', 'examples': ['1.0'], 'description': 'Version of the features specification. Defaults to `"1.0"` unless otherwise specified.\n'}, 'features': {'anyOf': [{'type': 'object', 'properties': {'cheek': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'mouth': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'shape': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'eye_bag': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'forehead': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}}, 'additionalProperties': False}, {'type': 'null'}], 'default': None, 'description': "Cannot be all zero when using 'custom' type."}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}, {'type': 'object', 'required': ['version', 'features', 'src_file_id'], 'properties': {'type': {'anyOf': [{'enum': ['custom'], 'type': 'string'}, {'type': 'null'}], 'default': 'custom'}, 'index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 0, 'examples': [0], 'description': 'The index of the person from detection task result.'}, 'global': {'anyOf': [{'type': 'object', 'properties': {'skin_smooth_strength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}, 'skin_smooth_color_intensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}}}, {'type': 'null'}], 'default': None}, 'version': {'type': 'string', 'examples': ['1.0'], 'description': 'Version of the features specification. Defaults to `"1.0"` unless otherwise specified.\n'}, 'features': {'type': 'object', 'properties': {'cheek': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'mouth': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'shape': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'eye_bag': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}, 'forehead': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0}}, 'description': "Cannot be all zero when using 'custom' type.", 'additionalProperties': False}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_url'], 'properties': {'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['version', 'features', 'global', 'src_file_url'], 'properties': {'index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 0, 'examples': [0], 'description': 'The index of the person from detection task result.'}, 'global': {'type': 'object', 'properties': {'skin_smooth_strength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'examples': [50]}, 'skin_smooth_color_intensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'examples': [50]}}}, 'version': {'type': 'string', 'examples': ['1.0'], 'description': 'Version of the features specification. Defaults to `"1.0"` unless otherwise specified.\n'}, 'features': {'type': 'object', 'examples': [{'jaw': 0, 'cheekbones': 0, 'face_width': 0, 'chin_length': 0, 'chin_reshape': 0, 'face_reshape': 0, 'chin_reshape_left': 0, 'face_reshape_left': 0, 'chin_reshape_right': 0, 'face_reshape_right': 0}], 'properties': {'jaw': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None}, 'eye_size': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None, 'description': 'Applies to both eyes. A per-side key (`eye_size_left` / `eye_size_right`) overrides this value for that side; a per-side `0` means that side is left unchanged.'}, 'lip_peak': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'lip_size': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'nose_tip': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'eye_angle': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'eye_width': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'lip_width': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'nose_lift': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'nose_size': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'nose_wing': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'cheekbones': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None}, 'eye_height': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'face_width': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'chin_length': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'chin_reshape': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None, 'description': 'Applies to both sides of the chin. A per-side key (`chin_reshape_left` / `chin_reshape_right`) overrides this value for that side; a per-side `0` means that side is left unchanged.'}, 'eye_distance': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'face_reshape': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None, 'description': 'Applies to both sides of the face. A per-side key (`face_reshape_left` / `face_reshape_right`) overrides this value for that side; a per-side `0` means that side is left unchanged.'}, 'eye_size_left': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'eye_size_right': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'lip_height_top': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'nose_tip_width': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'chin_reshape_left': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'face_reshape_left': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'lip_height_bottom': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'nose_bridge_width': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'chin_reshape_right': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'face_reshape_right': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}}, 'description': 'Cannot be all zero'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['version', 'features', 'global', 'src_file_id'], 'properties': {'index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 0, 'examples': [0], 'description': 'The index of the person from detection task result.'}, 'global': {'type': 'object', 'properties': {'skin_smooth_strength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'examples': [50]}, 'skin_smooth_color_intensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'examples': [50]}}}, 'version': {'type': 'string', 'examples': ['1.0'], 'description': 'Version of the features specification. Defaults to `"1.0"` unless otherwise specified.\n'}, 'features': {'type': 'object', 'examples': [{'jaw': 0, 'cheekbones': 0, 'face_width': 0, 'chin_length': 0, 'chin_reshape': 0, 'face_reshape': 0, 'chin_reshape_left': 0, 'face_reshape_left': 0, 'chin_reshape_right': 0, 'face_reshape_right': 0}], 'properties': {'jaw': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None}, 'eye_size': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None, 'description': 'Applies to both eyes. A per-side key (`eye_size_left` / `eye_size_right`) overrides this value for that side; a per-side `0` means that side is left unchanged.'}, 'lip_peak': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'lip_size': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'nose_tip': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'eye_angle': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'eye_width': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'lip_width': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'nose_lift': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'nose_size': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'nose_wing': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'cheekbones': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None}, 'eye_height': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'face_width': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'chin_length': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'chin_reshape': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None, 'description': 'Applies to both sides of the chin. A per-side key (`chin_reshape_left` / `chin_reshape_right`) overrides this value for that side; a per-side `0` means that side is left unchanged.'}, 'eye_distance': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'face_reshape': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None, 'description': 'Applies to both sides of the face. A per-side key (`face_reshape_left` / `face_reshape_right`) overrides this value for that side; a per-side `0` means that side is left unchanged.'}, 'eye_size_left': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'eye_size_right': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'lip_height_top': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'nose_tip_width': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'chin_reshape_left': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'face_reshape_left': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'lip_height_bottom': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'nose_bridge_width': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'chin_reshape_right': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}, 'face_reshape_right': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None}}, 'description': 'Cannot be all zero'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_url'], 'properties': {'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_url'], 'properties': {'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}, 'face_angle_strictness_level': {'anyOf': [{'enum': ['strict', 'high', 'medium', 'low', 'flexible'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['high'], 'description': "The strictness level of face angle detection (pitch, yaw, roll).\nA stricter level ensures more accurate face attribute results.\nDefault is 'high'.\noptoins:\n - strict: pitch <= 4 degrees, yaw <= 6 degrees, roll <= 4 degrees\n - high: pitch, yaw, roll <= 10 degrees\n - medium: pitch, yaw, roll <= 15 degrees\n - low: pitch, yaw, roll <= 20 degrees\n - flexible: pitch, yaw, roll <= 30 degrees\n"}}}, {'type': 'object', 'required': ['src_file_id'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'face_angle_strictness_level': {'anyOf': [{'enum': ['strict', 'high', 'medium', 'low', 'flexible'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['high'], 'description': "The strictness level of face angle detection (pitch, yaw, roll).\nA stricter level ensures more accurate face attribute results.\nDefault is 'high'.\noptoins:\n - strict: pitch <= 4 degrees, yaw <= 6 degrees, roll <= 4 degrees\n - high: pitch, yaw, roll <= 10 degrees\n - medium: pitch, yaw, roll <= 15 degrees\n - low: pitch, yaw, roll <= 20 degrees\n - flexible: pitch, yaw, roll <= 30 degrees\n"}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['version', 'src_file_url'], 'properties': {'index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 0, 'examples': [0], 'description': 'The index of the person from detection task result.'}, 'version': {'enum': ['1.0'], 'type': 'string', 'examples': ['1.0'], 'description': 'Version of the features specification. Defaults to `"1.0"` unless otherwise specified.\n'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['version', 'src_file_id'], 'properties': {'index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 0, 'examples': [0], 'description': 'The index of the person from detection task result.'}, 'version': {'enum': ['1.0'], 'type': 'string', 'examples': ['1.0'], 'description': 'Version of the features specification. Defaults to `"1.0"` unless otherwise specified.\n'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_url'], 'properties': {'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_url'], 'properties': {'preset': {'anyOf': [{'enum': ['Jet Black', 'Chocolate Brown', 'Honey Blonde', 'Platinum Blonde', 'Ash Gray', 'Rose Gold', 'Burgundy', 'Copper Red', 'Lavender', 'Teal Blue', 'Dark Brown/Caramel Blonde', 'Jet Black/Silver Gray', 'Ash Brown/Lavender', 'Rose Gold/Peach Blonde', 'Burgundy/Magenta Pink', 'Deep Blue/Teal Green', 'Plum Purple/Pastel Lilac', 'Copper Red/Golden Blonde', 'Dark Gray/Ice Blonde', 'Midnight Blue/Denim Blue'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': '(optional; required if neither "pattern" nor "palettes" is provided) Default hair color preset. Available for full mode: [\'Jet Black\', \'Chocolate Brown\', \'Honey Blonde\', \'Platinum Blonde\', \'Ash Gray\', \'Rose Gold\', \'Burgundy\', \'Copper Red\', \'Lavender\', \'Teal Blue\'] Available for ombre mode: [\'Dark Brown/Caramel Blonde\', \'Jet Black/Silver Gray\', \'Ash Brown/Lavender\', \'Rose Gold/Peach Blonde\', \'Burgundy/Magenta Pink\', \'Deep Blue/Teal Green\', \'Plum Purple/Pastel Lilac\', \'Copper Red/Golden Blonde\', \'Dark Gray/Ice Blonde\', \'Midnight Blue/Denim Blue\']\n'}, 'pattern': {'anyOf': [{'type': 'object', 'required': ['name'], 'properties': {'name': {'enum': ['ombre', 'full'], 'type': 'string', 'description': 'Pattern type (required)'}, 'line_offset': {'anyOf': [{'type': 'number', 'maximum': 0.99, 'minimum': -0.99}, {'type': 'null'}], 'default': None, 'description': '(optional; required for ombre) Vertical offset (â\x80\x930.99 to 0.99). 0.99: top color covers 99% of bottom half; â\x80\x930.99: bottom color covers 99% of top half\n'}, 'blend_strength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': '(optional; required for ombre) Blend strength (0â\x80\x93100)'}, 'coloring_section': {'anyOf': [{'enum': ['top'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': '(optional; required for ombre) Section to color'}}}, {'type': 'null'}], 'default': None, 'description': '(optional; required if "preset" is not provided)'}, 'palettes': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['color'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$', 'description': 'Hex color code'}, 'color_intensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Color intensity (0â\x80\x93100)'}, 'shine_intensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Shine intensity (0â\x80\x93100)'}}}, 'maxItems': 2, 'minItems': 1}, {'type': 'null'}], 'default': None, 'description': '(optional; required if "preset" is not provided) Array length 1 for full mode, 2 for ombre mode\n'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id'], 'properties': {'preset': {'anyOf': [{'enum': ['Jet Black', 'Chocolate Brown', 'Honey Blonde', 'Platinum Blonde', 'Ash Gray', 'Rose Gold', 'Burgundy', 'Copper Red', 'Lavender', 'Teal Blue', 'Dark Brown/Caramel Blonde', 'Jet Black/Silver Gray', 'Ash Brown/Lavender', 'Rose Gold/Peach Blonde', 'Burgundy/Magenta Pink', 'Deep Blue/Teal Green', 'Plum Purple/Pastel Lilac', 'Copper Red/Golden Blonde', 'Dark Gray/Ice Blonde', 'Midnight Blue/Denim Blue'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': '(optional; required if neither "pattern" nor "palettes" is provided) Default hair color preset. Available for full mode: [\'Jet Black\', \'Chocolate Brown\', \'Honey Blonde\', \'Platinum Blonde\', \'Ash Gray\', \'Rose Gold\', \'Burgundy\', \'Copper Red\', \'Lavender\', \'Teal Blue\'] Available for ombre mode: [\'Dark Brown/Caramel Blonde\', \'Jet Black/Silver Gray\', \'Ash Brown/Lavender\', \'Rose Gold/Peach Blonde\', \'Burgundy/Magenta Pink\', \'Deep Blue/Teal Green\', \'Plum Purple/Pastel Lilac\', \'Copper Red/Golden Blonde\', \'Dark Gray/Ice Blonde\', \'Midnight Blue/Denim Blue\']\n'}, 'pattern': {'anyOf': [{'type': 'object', 'required': ['name'], 'properties': {'name': {'enum': ['ombre', 'full'], 'type': 'string', 'description': 'Pattern type (required)'}, 'line_offset': {'anyOf': [{'type': 'number', 'maximum': 0.99, 'minimum': -0.99}, {'type': 'null'}], 'default': None, 'description': '(optional; required for ombre) Vertical offset (â\x80\x930.99 to 0.99). 0.99: top color covers 99% of bottom half; â\x80\x930.99: bottom color covers 99% of top half\n'}, 'blend_strength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': '(optional; required for ombre) Blend strength (0â\x80\x93100)'}, 'coloring_section': {'anyOf': [{'enum': ['top'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': '(optional; required for ombre) Section to color'}}}, {'type': 'null'}], 'default': None, 'description': '(optional; required if "preset" is not provided)'}, 'palettes': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['color'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$', 'description': 'Hex color code'}, 'color_intensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Color intensity (0â\x80\x93100)'}, 'shine_intensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Shine intensity (0â\x80\x93100)'}}}, 'maxItems': 2, 'minItems': 1}, {'type': 'null'}], 'default': None, 'description': '(optional; required if "preset" is not provided) Array length 1 for full mode, 2 for ombre mode\n'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}], 'description': 'This object represents a run AI Hair Color Virtual Try-On task.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_url'], 'properties': {'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['template_id', 'src_file_url'], 'properties': {'template_id': {'type': 'string', 'examples': ['good_template_001'], 'description': 'ID of the template. List predefined templates first, and use the id of a template.'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['template_id', 'src_file_id'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'template_id': {'type': 'string', 'examples': ['good_template_001'], 'description': 'ID of the template. List predefined templates first, and use the id of a template.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_urls'], 'properties': {'src_file_urls': {'type': 'array', 'items': {'type': 'string'}, 'examples': [['https://example.com/selfie.jpg', 'https://example.com/selfie.jpg', 'https://example.com/selfie.jpg']], 'maxItems': 3, 'minItems': 3, 'description': "The file URLs from upload file API. The file IDs for the sequence of source images are 'frontFace', 'rightFace', and 'leftFace'. Should provide either 'src_file_urls' or 'src_file_ids'."}}}, {'type': 'object', 'required': ['src_file_ids'], 'properties': {'src_file_ids': {'type': 'array', 'items': {'type': 'string'}, 'examples': [['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE=', 'pkVzplMv8Y1QPgHbqtKfyJmg+xJDUbTP16YijZ3qARNf', 'B5LNohvvO+7d/78Ymuhp6vMiSooN/5DX9oVuupzkKctf']], 'maxItems': 3, 'minItems': 3, 'description': "The file IDs from upload file API. The file IDs for the sequence of source images are 'frontFace', 'rightFace', and 'leftFace'. Should provide either 'src_file_urls' or 'src_file_ids'."}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_url'], 'properties': {'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_url', 'ref_file_url'], 'properties': {'ref_file_url': {'type': 'string', 'examples': ['https://example.com/reference.jpg'], 'description': 'Url of the reference file to run task. The url should be publicly accessible.'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_url', 'ref_file_id'], 'properties': {'ref_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of the reference file to run task. File ID from upload file API.'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id', 'ref_file_url'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'ref_file_url': {'type': 'string', 'examples': ['https://example.com/reference.jpg'], 'description': 'Url of the reference file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id', 'ref_file_id'], 'properties': {'ref_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of the reference file to run task. File ID from upload file API.'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}, {'type': 'object', 'required': ['src_file_url', 'template_id'], 'properties': {'hair_color': {'anyOf': [{'enum': ['ref', 'src'], 'type': 'string'}, {'type': 'null'}], 'default': 'ref', 'description': 'Specifies the hair color of the output image (source/reference), default reference color. <br><b>*only support when using template, custom reference image is always using reference hair color.</b>'}, 'template_id': {'type': 'string', 'examples': ['good_template_001'], 'description': 'ID of the template. List predefined templates first, and use the id of a template.'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id', 'template_id'], 'properties': {'hair_color': {'anyOf': [{'enum': ['ref', 'src'], 'type': 'string'}, {'type': 'null'}], 'default': 'ref', 'description': 'Specifies the hair color of the output image (source/reference), default reference color. <br><b>*only support when using template, custom reference image is always using reference hair color.</b>'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'template_id': {'type': 'string', 'examples': ['good_template_001'], 'description': 'ID of the template. List predefined templates first, and use the id of a template.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_urls'], 'properties': {'src_file_urls': {'type': 'array', 'items': {'type': 'string'}, 'examples': [['https://example.com/selfie.jpg', 'https://example.com/selfie.jpg', 'https://example.com/selfie.jpg']], 'maxItems': 3, 'minItems': 3, 'description': "The file URLs from upload file API. The file IDs for the sequence of source images are 'frontFace', 'rightFace', and 'leftFace'. Should provide either 'src_file_urls' or 'src_file_ids'."}}}, {'type': 'object', 'required': ['src_file_ids'], 'properties': {'src_file_ids': {'type': 'array', 'items': {'type': 'string'}, 'examples': [['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE=', 'pkVzplMv8Y1QPgHbqtKfyJmg+xJDUbTP16YijZ3qARNf', 'B5LNohvvO+7d/78Ymuhp6vMiSooN/5DX9oVuupzkKctf']], 'maxItems': 3, 'minItems': 3, 'description': "The file IDs from upload file API. The file IDs for the sequence of source images are 'frontFace', 'rightFace', and 'leftFace'. Should provide either 'src_file_urls' or 'src_file_ids'."}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['template_id', 'src_file_url'], 'properties': {'template_id': {'type': 'string', 'examples': ['good_template_001'], 'description': 'ID of the template. List predefined templates first, and use the id of a template.'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['template_id', 'src_file_id'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'template_id': {'type': 'string', 'examples': ['good_template_001'], 'description': 'ID of the template. List predefined templates first, and use the id of a template.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['template_id', 'src_file_url'], 'properties': {'template_id': {'type': 'string', 'examples': ['good_template_001'], 'description': 'ID of the template. List predefined templates first, and use the id of a template.'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['template_id', 'src_file_id'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'template_id': {'type': 'string', 'examples': ['good_template_001'], 'description': 'ID of the template. List predefined templates first, and use the id of a template.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_url', 'ref_file_url'], 'properties': {'ref_file_url': {'type': 'string', 'examples': ['https://example.com/reference.jpg'], 'description': 'Url of the reference file to run task. The url should be publicly accessible.'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_url', 'ref_file_id'], 'properties': {'ref_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of the reference file to run task. File ID from upload file API.'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id', 'ref_file_url'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'ref_file_url': {'type': 'string', 'examples': ['https://example.com/reference.jpg'], 'description': 'Url of the reference file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id', 'ref_file_id'], 'properties': {'ref_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of the reference file to run task. File ID from upload file API.'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['effects', 'src_file_url'], 'properties': {'effects': {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['category'], 'properties': {'category': {'enum': ['skin_smooth'], 'type': 'string', 'description': 'Identifies this effect as a skin smoothing effect. Must always be "skin_smooth".\n'}, 'skinSmoothStrength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50, 'description': 'Strength of smoothing applied to overall skin texture. Higher values result in softer, more airbrushed skin appearance.\n'}, 'skinSmoothColorIntensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50, 'description': 'Intensity of color blending applied during smoothing. Helps unify skin tones and reduce color inconsistency.\n'}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['1color1'], 'description': 'Name of the blush pattern. Must be equal to a `label` from the blush.json pattern catalog.\n'}}, 'description': 'Defines how the blush is placed on the face. Each pattern corresponds to a face shape and layout from blush.json.\n'}, 'category': {'enum': ['blush'], 'type': 'string', 'description': 'Identifies this effect as a blush effect. Must always be "blush".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'texture', 'colorIntensity'], 'properties': {'color': {'type': 'string', 'pattern': '^#?[0-9A-Fa-f]{6}$', 'description': 'Primary blush color in hex format (#RRGGBB). Used as the dominant pigment for the blush application.\n'}, 'texture': {'enum': ['matte', 'satin', 'shimmer'], 'type': 'string', 'description': 'Texture of the blush:\n - matte: pure pigment, no shine\n - satin: soft glow, requires glowStrength\n - shimmer: sparkly or luminous, requires shimmer parameters\n'}, 'glowStrength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Glow intensity for satin blush textures. Required when texture = "satin" or "shimmer".\n'}, 'shimmerColor': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Color of shimmer particles. Required when texture = "shimmer".\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Strength of the blush color relative to the base pigment.\n'}, 'shimmerDensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Density of shimmer particles in the blush application. Required when texture = "shimmer".\n'}}}, 'minItems': 1, 'description': 'List of color palette entries. The number of palettes required depends on the `colorNum` field defined in the selected blush pattern.\n'}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['Bronzer1'], 'description': 'Name of the bronzer pattern from the bronzer.json catalog.\n'}}, 'description': 'Defines the bronzer application layout. Pattern name must match a `label` in bronzer.json.\n'}, 'category': {'enum': ['bronzer'], 'type': 'string', 'description': 'Identifies this effect as a bronzer effect. Must always be "bronzer".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'colorIntensity'], 'properties': {'color': {'type': 'string', 'description': 'Bronzer color in hex format (#RRGGBB).\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Intensity of bronzer pigmentation.\n'}}}, 'description': 'The bronzer palette contains pigment color and intensity controls.\n'}}}, {'type': 'object', 'required': ['category', 'palettes'], 'properties': {'category': {'enum': ['concealer'], 'type': 'string', 'description': 'Identifies this effect as a concealer effect. Must always be "concealer".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'colorIntensity', 'colorUnderEyeIntensity', 'coverageLevel'], 'properties': {'color': {'type': 'string', 'description': 'Concealer shade in hex RGB format (#RRGGBB). Should typically match or slightly brighten the skin tone.\n'}, 'coverageLevel': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Determines opacity of concealer coverage. Higher values hide more discoloration or blemishes.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'General concealer pigmentation strength applied across the face.\n'}, 'colorUnderEyeIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Specific pigmentation control for the under-eye region. Helps brighten dark circles without over-applying to other zones.\n'}}}, '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'}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['OvalFace6'], 'description': 'Name of the contour pattern. Must be equal to a `label` from contour.json.\n'}}, 'description': 'Defines where contour shadowing is applied on the face. Must use a pattern name defined in contour.json (e.g., HeartFace2, OvalFace6).\n'}, 'category': {'enum': ['contour'], 'type': 'string', 'description': 'Identifies this effect as a contour effect. Must always be "contour".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'colorIntensity'], 'properties': {'color': {'type': 'string', 'description': 'Contour pigment color in #RRGGBB hex format.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Strength of contour pigmentation. Higher values result in deeper shadows.\n'}}}, 'minItems': 1, 'description': 'Defines the pigment used for contouring. Usually a cool-tone or neutral shade darker than foundation.\n'}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'anyOf': [{'type': 'object', 'required': ['type', 'name'], 'properties': {'name': {'type': 'string', 'examples': ['SoftArch1'], 'description': 'Name of the eyebrow shape pattern. Must match a `label` from eyebrows.json.\n'}, 'type': {'enum': ['shape'], 'type': 'string', 'description': 'Use customized eyebrow pattern shape'}, 'curvature': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None, 'description': 'Adjusts how curved the brow is. Negative = flatter / straighter, positive = more curved.\n'}, 'thickness': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None, 'description': 'Controls eyebrow thickness adjustment relative to the detected brow. Positive = thicker, negative = thinner.\n'}, 'definition': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Sharpness and clarity of the brows. Higher values increase brow edge definition for a cleaner look.\n'}}}, {'type': 'object', 'required': ['type'], 'properties': {'type': {'enum': ['color'], 'type': 'string', 'description': "Use user's original eyebrow shape"}}}], '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'}, 'category': {'enum': ['eyebrows'], 'type': 'string', 'description': 'Identifies this effect as an eyebrow styling effect. Must always be "eyebrows".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'colorIntensity', 'texture'], 'properties': {'color': {'type': 'string', 'description': 'Eyebrow pigment color in #RRGGBB format.\n'}, 'texture': {'enum': ['matte', 'shimmer'], 'type': 'string', 'description': 'Brow pigment texture style. Shimmer adds reflective highlights to brow hairs.\n'}, 'shimmerSize': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Size of shimmer particles. Required for shimmer textures.\n'}, 'shimmerColor': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Shimmer color applied when texture = shimmer.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Pigmentation strength used when applying eyebrow color.\n'}, 'shimmerDensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Density of shimmer particles in the brow. Required for shimmer textures.\n'}, 'shimmerIntensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Strength of shimmer glow. Required only if texture = shimmer.\n'}}}, 'minItems': 1, 'description': 'Eyebrow color palettes. Each palette controls pigment and optional shimmer effects (for shimmer textures only).\n'}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['Arabic3'], 'description': 'Name of the eyeliner pattern. Must be equal to a label from eyeliner.json.\n'}}, 'description': 'Defines the eyeliner shape and placement. Pattern names must match labels from eyeliner.json.\n'}, 'category': {'enum': ['eye_liner'], 'type': 'string', 'description': 'Identifies this effect as an eyeliner effect. Must always be "eye_liner".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'texture', 'colorIntensity'], 'properties': {'color': {'type': 'string', 'description': 'Eyeliner pigment color in #RRGGBB format.\n'}, 'texture': {'enum': ['matte', 'shimmer', 'metallic'], 'type': 'string', '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': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Color used for shimmer or metallic reflective particles. Required if texture is shimmer or metallic.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Pigmentation strength for the eyeliner color.\n'}, 'shimmerIntensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Strength of reflective sparkle. Required when texture is shimmer or metallic.\n'}, 'metallicIntensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Metallic reflectivity level. Required when texture = metallic.\n'}}}, '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'}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['2colors1'], 'description': 'Pattern name from eyeshadow.json determining number of colors and shadow placement zones.\n'}}, 'description': 'Defines the eyeshadow placement pattern. Must match a `label` in eyeshadow.json (e.g., 1color1, 2colors1, etc.).\n'}, 'category': {'enum': ['eye_shadow'], 'type': 'string', 'description': 'Identifies this effect as an eyeshadow effect. Must always be "eye_shadow".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'texture', 'colorIntensity'], 'properties': {'color': {'type': 'string', 'description': 'Eyeshadow pigment color in HEX format (#RRGGBB).\n'}, 'texture': {'enum': ['matte', 'shimmer', 'metallic'], 'type': 'string', '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': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Color of shimmer particles. Required if texture = shimmer or metallic.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Overall pigmentation level of each shadow color.\n'}, 'shimmerIntensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Reflective sparkle strength for shimmer or metallic textures.\n'}, 'metallicIntensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Metallic reflectivity level; required for metallic textures.\n'}}}, 'minItems': 1, 'description': "One or more pigment palette entries. The number of palettes required depends on the pattern's `colorNum`. Each palette defines a specific layer/color in the eyeshadow pattern.\n"}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['Upper1'], 'description': 'Name of the eyelash pattern from eyelashes.json.\n'}}, 'description': 'Defines which eyelash style is applied (natural, artistic, winged, upper/lower, etc.). Must match a `label` from eyelashes.json.\n'}, 'category': {'enum': ['eyelashes'], 'type': 'string', 'description': 'Identifies this effect as an eyelashes effect. Must always be "eyelashes".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'colorIntensity'], 'properties': {'color': {'type': 'string', 'description': 'Eyelash color in HEX format (#RRGGBB).\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Darkness/pigment strength applied to the lashes.\n'}}}, 'minItems': 1, 'description': 'Eyelash color palettes. Eyelashes do not support shimmer/metallic effects â\x80\x94 only color and intensity.\n'}}}, {'type': 'object', 'required': ['category', 'palettes'], 'properties': {'category': {'enum': ['foundation'], 'type': 'string', 'description': 'Identifies this effect as a foundation effect. Must always be "foundation".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'colorIntensity', 'glowIntensity', 'coverageIntensity'], 'properties': {'color': {'type': 'string', 'description': 'Foundation shade in #RRGGBB format. Typically close to natural skin tone.\n'}, 'glowIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Adds luminosity to the skin finish. Higher values produce a radiant or dewy effect.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Intensity of foundation coloration.\n'}, 'coverageIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Controls opacity of foundation coverage. Higher values hide more imperfections.\n'}}}, 'minItems': 1, 'description': 'Foundation palette entries controlling tone, coverage, glow, and color intensity.\n'}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['SquareFace3'], 'description': 'Name of the highlight pattern from the highlighter.json catalog.\n'}}, 'description': 'Highlight placement pattern. Must match a `label` from highlighter.json (e.g., HeartFace4, Oblong11, OvalFace2).\n'}, 'category': {'enum': ['highlighter'], 'type': 'string', 'description': 'Identifies this effect as a highlighter effect. Must always be "highlighter".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'glowIntensity', 'shimmerIntensity', 'shimmerDensity', 'shimmerSize', 'colorIntensity'], 'properties': {'color': {'type': 'string', 'description': 'Highlighter pigment color in #RRGGBB HEX format. Usually white, champagne, gold, or pink tones.\n'}, 'shimmerSize': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Size of shimmer particles. Larger particles create a glitter-like effect; small = fine shimmer.\n'}, 'glowIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Amount of non-shimmer glow added to the skin. Higher values result in a more luminous, radiant finish.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Strength of the highlighter color pigment.\n'}, 'shimmerDensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Number of shimmer particles per area. Higher density creates a more glittery effect.\n'}, 'shimmerIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Strength of shimmer reflections. Higher values = more sparkle.\n'}}}, 'minItems': 1, 'description': 'Highlighter palette entries defining shimmer, glow, density, and color.\n'}}}, {'type': 'object', 'required': ['category', 'shape', 'palettes', 'style'], 'properties': {'shape': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['plump'], 'description': 'Lip shape style used to modify the lip edges and silhouette. Must be equal to a `label` from lipshape.json.\n'}}, 'description': 'Defines the lip boundary and shape modification. Pattern names must match lipshape.json (e.g., plump, original, pouty).\n'}, 'style': {'type': 'object', 'required': ['type'], 'properties': {'type': {'enum': ['full', 'ombre', 'twoTone'], 'type': 'string', 'description': 'Style of lip coloration.\n'}, 'blendStrength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Blending softness between colors. Required if type = ombre.\n'}, 'innerColorRatio': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Determines how far inward the secondary color extends (ombre only). Required if type = ombre.\n'}}, '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"}, 'category': {'enum': ['lip_color'], 'type': 'string', 'description': 'Identifies this effect as a lipstick/lip color effect. Must always be "lip_color".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'texture', 'colorIntensity'], 'properties': {'color': {'type': 'string', 'description': 'Lipstick color in HEX format (#RRGGBB).\n'}, 'gloss': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Glossiness level for gloss/holographic/metallic/sheer/shimmer textures.\n'}, 'texture': {'enum': ['matte', 'gloss', 'holographic', 'metallic', 'satin', 'sheer', 'shimmer'], 'type': 'string', '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"}, 'shimmerSize': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Size of shimmer particles.\n'}, 'shimmerColor': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Color of shimmer particles for shimmer, metallic, or holographic textures.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Intensity of lipstick pigmentation.\n'}, 'shimmerDensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Density of shimmer particles.\n'}, 'shimmerIntensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Strength of shimmer reflectivity.\n'}, 'transparencyIntensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Transparency effect strength. Used for sheer, shimmer, or gloss textures.\n'}}}, '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'}, 'morphology': {'anyOf': [{'type': 'object', 'properties': {'fullness': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0, 'description': 'Controls how plump or full the lips appear. Higher values = larger, more voluminous lips.\n'}, 'wrinkless': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0, 'description': 'Smooths wrinkles and texture on the lips. Higher values result in smoother lip appearance.\n'}}}, {'type': 'null'}], 'default': None, 'description': 'Optional morphological adjustments to lips. Enhances fullness and reduces lip wrinkles.\n'}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['Natural1'], 'description': 'Name of lip liner pattern (e.g., Natural1, LargerUpper1).\n'}}, 'description': 'Defines lip liner placement based on pattern from lipliner.json.\n'}, 'category': {'enum': ['lip_liner'], 'type': 'string', 'description': 'Identifies this effect as a lip liner effect. Must always be "lip_liner".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'texture', 'colorIntensity', 'thickness', 'smoothness'], 'properties': {'color': {'type': 'string', 'description': 'Lip liner pigment color in HEX format.\n'}, 'texture': {'enum': ['matte', 'satin'], 'type': 'string', 'description': 'Lip liner finish type.\n'}, 'thickness': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Thickness of the lip liner stroke â\x80\x94 higher values create bolder outlines.\n'}, 'smoothness': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Smoothness of the stroke edges. Higher values produce softer, blended lines.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Intensity of lip liner pigmentation.\n'}}}, 'minItems': 1, 'description': 'Lip liner palette entries defining color, thickness, and smoothness.\n'}}}]}, 'examples': [[{'category': 'skin_smooth', 'skinSmoothStrength': 55, 'skinSmoothColorIntensity': 45}, {'pattern': {'name': '2colors1'}, 'category': 'blush', 'palettes': [{'color': '#e19f9f', 'texture': 'matte', 'colorIntensity': 60}, {'color': '#c98a8a', 'texture': 'satin', 'glowStrength': 40, 'colorIntensity': 70}]}, {'shape': {'name': 'plump'}, 'style': {'type': 'full'}, 'category': 'lip_color', 'palettes': [{'color': '#e11c43', 'gloss': 75, 'texture': 'gloss', 'colorIntensity': 80}], 'morphology': {'fullness': 30, 'wrinkless': 25}}]], 'description': 'Array of makeup effects to apply. Each effect object MUST specify a `category` and match the schema for that makeup type.\n'}, 'version': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': '1.0', 'examples': ['1.0'], 'description': 'Version of the makeup effect specification. Defaults to `"1.0"` unless otherwise specified.\n'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['effects', 'src_file_id'], 'properties': {'effects': {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['category'], 'properties': {'category': {'enum': ['skin_smooth'], 'type': 'string', 'description': 'Identifies this effect as a skin smoothing effect. Must always be "skin_smooth".\n'}, 'skinSmoothStrength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50, 'description': 'Strength of smoothing applied to overall skin texture. Higher values result in softer, more airbrushed skin appearance.\n'}, 'skinSmoothColorIntensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50, 'description': 'Intensity of color blending applied during smoothing. Helps unify skin tones and reduce color inconsistency.\n'}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['1color1'], 'description': 'Name of the blush pattern. Must be equal to a `label` from the blush.json pattern catalog.\n'}}, 'description': 'Defines how the blush is placed on the face. Each pattern corresponds to a face shape and layout from blush.json.\n'}, 'category': {'enum': ['blush'], 'type': 'string', 'description': 'Identifies this effect as a blush effect. Must always be "blush".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'texture', 'colorIntensity'], 'properties': {'color': {'type': 'string', 'pattern': '^#?[0-9A-Fa-f]{6}$', 'description': 'Primary blush color in hex format (#RRGGBB). Used as the dominant pigment for the blush application.\n'}, 'texture': {'enum': ['matte', 'satin', 'shimmer'], 'type': 'string', 'description': 'Texture of the blush:\n - matte: pure pigment, no shine\n - satin: soft glow, requires glowStrength\n - shimmer: sparkly or luminous, requires shimmer parameters\n'}, 'glowStrength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Glow intensity for satin blush textures. Required when texture = "satin" or "shimmer".\n'}, 'shimmerColor': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Color of shimmer particles. Required when texture = "shimmer".\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Strength of the blush color relative to the base pigment.\n'}, 'shimmerDensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Density of shimmer particles in the blush application. Required when texture = "shimmer".\n'}}}, 'minItems': 1, 'description': 'List of color palette entries. The number of palettes required depends on the `colorNum` field defined in the selected blush pattern.\n'}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['Bronzer1'], 'description': 'Name of the bronzer pattern from the bronzer.json catalog.\n'}}, 'description': 'Defines the bronzer application layout. Pattern name must match a `label` in bronzer.json.\n'}, 'category': {'enum': ['bronzer'], 'type': 'string', 'description': 'Identifies this effect as a bronzer effect. Must always be "bronzer".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'colorIntensity'], 'properties': {'color': {'type': 'string', 'description': 'Bronzer color in hex format (#RRGGBB).\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Intensity of bronzer pigmentation.\n'}}}, 'description': 'The bronzer palette contains pigment color and intensity controls.\n'}}}, {'type': 'object', 'required': ['category', 'palettes'], 'properties': {'category': {'enum': ['concealer'], 'type': 'string', 'description': 'Identifies this effect as a concealer effect. Must always be "concealer".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'colorIntensity', 'colorUnderEyeIntensity', 'coverageLevel'], 'properties': {'color': {'type': 'string', 'description': 'Concealer shade in hex RGB format (#RRGGBB). Should typically match or slightly brighten the skin tone.\n'}, 'coverageLevel': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Determines opacity of concealer coverage. Higher values hide more discoloration or blemishes.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'General concealer pigmentation strength applied across the face.\n'}, 'colorUnderEyeIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Specific pigmentation control for the under-eye region. Helps brighten dark circles without over-applying to other zones.\n'}}}, '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'}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['OvalFace6'], 'description': 'Name of the contour pattern. Must be equal to a `label` from contour.json.\n'}}, 'description': 'Defines where contour shadowing is applied on the face. Must use a pattern name defined in contour.json (e.g., HeartFace2, OvalFace6).\n'}, 'category': {'enum': ['contour'], 'type': 'string', 'description': 'Identifies this effect as a contour effect. Must always be "contour".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'colorIntensity'], 'properties': {'color': {'type': 'string', 'description': 'Contour pigment color in #RRGGBB hex format.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Strength of contour pigmentation. Higher values result in deeper shadows.\n'}}}, 'minItems': 1, 'description': 'Defines the pigment used for contouring. Usually a cool-tone or neutral shade darker than foundation.\n'}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'anyOf': [{'type': 'object', 'required': ['type', 'name'], 'properties': {'name': {'type': 'string', 'examples': ['SoftArch1'], 'description': 'Name of the eyebrow shape pattern. Must match a `label` from eyebrows.json.\n'}, 'type': {'enum': ['shape'], 'type': 'string', 'description': 'Use customized eyebrow pattern shape'}, 'curvature': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None, 'description': 'Adjusts how curved the brow is. Negative = flatter / straighter, positive = more curved.\n'}, 'thickness': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': -100}, {'type': 'null'}], 'default': None, 'description': 'Controls eyebrow thickness adjustment relative to the detected brow. Positive = thicker, negative = thinner.\n'}, 'definition': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Sharpness and clarity of the brows. Higher values increase brow edge definition for a cleaner look.\n'}}}, {'type': 'object', 'required': ['type'], 'properties': {'type': {'enum': ['color'], 'type': 'string', 'description': "Use user's original eyebrow shape"}}}], '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'}, 'category': {'enum': ['eyebrows'], 'type': 'string', 'description': 'Identifies this effect as an eyebrow styling effect. Must always be "eyebrows".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'colorIntensity', 'texture'], 'properties': {'color': {'type': 'string', 'description': 'Eyebrow pigment color in #RRGGBB format.\n'}, 'texture': {'enum': ['matte', 'shimmer'], 'type': 'string', 'description': 'Brow pigment texture style. Shimmer adds reflective highlights to brow hairs.\n'}, 'shimmerSize': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Size of shimmer particles. Required for shimmer textures.\n'}, 'shimmerColor': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Shimmer color applied when texture = shimmer.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Pigmentation strength used when applying eyebrow color.\n'}, 'shimmerDensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Density of shimmer particles in the brow. Required for shimmer textures.\n'}, 'shimmerIntensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Strength of shimmer glow. Required only if texture = shimmer.\n'}}}, 'minItems': 1, 'description': 'Eyebrow color palettes. Each palette controls pigment and optional shimmer effects (for shimmer textures only).\n'}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['Arabic3'], 'description': 'Name of the eyeliner pattern. Must be equal to a label from eyeliner.json.\n'}}, 'description': 'Defines the eyeliner shape and placement. Pattern names must match labels from eyeliner.json.\n'}, 'category': {'enum': ['eye_liner'], 'type': 'string', 'description': 'Identifies this effect as an eyeliner effect. Must always be "eye_liner".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'texture', 'colorIntensity'], 'properties': {'color': {'type': 'string', 'description': 'Eyeliner pigment color in #RRGGBB format.\n'}, 'texture': {'enum': ['matte', 'shimmer', 'metallic'], 'type': 'string', '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': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Color used for shimmer or metallic reflective particles. Required if texture is shimmer or metallic.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Pigmentation strength for the eyeliner color.\n'}, 'shimmerIntensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Strength of reflective sparkle. Required when texture is shimmer or metallic.\n'}, 'metallicIntensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Metallic reflectivity level. Required when texture = metallic.\n'}}}, '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'}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['2colors1'], 'description': 'Pattern name from eyeshadow.json determining number of colors and shadow placement zones.\n'}}, 'description': 'Defines the eyeshadow placement pattern. Must match a `label` in eyeshadow.json (e.g., 1color1, 2colors1, etc.).\n'}, 'category': {'enum': ['eye_shadow'], 'type': 'string', 'description': 'Identifies this effect as an eyeshadow effect. Must always be "eye_shadow".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'texture', 'colorIntensity'], 'properties': {'color': {'type': 'string', 'description': 'Eyeshadow pigment color in HEX format (#RRGGBB).\n'}, 'texture': {'enum': ['matte', 'shimmer', 'metallic'], 'type': 'string', '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': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Color of shimmer particles. Required if texture = shimmer or metallic.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Overall pigmentation level of each shadow color.\n'}, 'shimmerIntensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Reflective sparkle strength for shimmer or metallic textures.\n'}, 'metallicIntensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Metallic reflectivity level; required for metallic textures.\n'}}}, 'minItems': 1, 'description': "One or more pigment palette entries. The number of palettes required depends on the pattern's `colorNum`. Each palette defines a specific layer/color in the eyeshadow pattern.\n"}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['Upper1'], 'description': 'Name of the eyelash pattern from eyelashes.json.\n'}}, 'description': 'Defines which eyelash style is applied (natural, artistic, winged, upper/lower, etc.). Must match a `label` from eyelashes.json.\n'}, 'category': {'enum': ['eyelashes'], 'type': 'string', 'description': 'Identifies this effect as an eyelashes effect. Must always be "eyelashes".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'colorIntensity'], 'properties': {'color': {'type': 'string', 'description': 'Eyelash color in HEX format (#RRGGBB).\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Darkness/pigment strength applied to the lashes.\n'}}}, 'minItems': 1, 'description': 'Eyelash color palettes. Eyelashes do not support shimmer/metallic effects â\x80\x94 only color and intensity.\n'}}}, {'type': 'object', 'required': ['category', 'palettes'], 'properties': {'category': {'enum': ['foundation'], 'type': 'string', 'description': 'Identifies this effect as a foundation effect. Must always be "foundation".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'colorIntensity', 'glowIntensity', 'coverageIntensity'], 'properties': {'color': {'type': 'string', 'description': 'Foundation shade in #RRGGBB format. Typically close to natural skin tone.\n'}, 'glowIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Adds luminosity to the skin finish. Higher values produce a radiant or dewy effect.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Intensity of foundation coloration.\n'}, 'coverageIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Controls opacity of foundation coverage. Higher values hide more imperfections.\n'}}}, 'minItems': 1, 'description': 'Foundation palette entries controlling tone, coverage, glow, and color intensity.\n'}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['SquareFace3'], 'description': 'Name of the highlight pattern from the highlighter.json catalog.\n'}}, 'description': 'Highlight placement pattern. Must match a `label` from highlighter.json (e.g., HeartFace4, Oblong11, OvalFace2).\n'}, 'category': {'enum': ['highlighter'], 'type': 'string', 'description': 'Identifies this effect as a highlighter effect. Must always be "highlighter".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'glowIntensity', 'shimmerIntensity', 'shimmerDensity', 'shimmerSize', 'colorIntensity'], 'properties': {'color': {'type': 'string', 'description': 'Highlighter pigment color in #RRGGBB HEX format. Usually white, champagne, gold, or pink tones.\n'}, 'shimmerSize': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Size of shimmer particles. Larger particles create a glitter-like effect; small = fine shimmer.\n'}, 'glowIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Amount of non-shimmer glow added to the skin. Higher values result in a more luminous, radiant finish.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Strength of the highlighter color pigment.\n'}, 'shimmerDensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Number of shimmer particles per area. Higher density creates a more glittery effect.\n'}, 'shimmerIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Strength of shimmer reflections. Higher values = more sparkle.\n'}}}, 'minItems': 1, 'description': 'Highlighter palette entries defining shimmer, glow, density, and color.\n'}}}, {'type': 'object', 'required': ['category', 'shape', 'palettes', 'style'], 'properties': {'shape': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['plump'], 'description': 'Lip shape style used to modify the lip edges and silhouette. Must be equal to a `label` from lipshape.json.\n'}}, 'description': 'Defines the lip boundary and shape modification. Pattern names must match lipshape.json (e.g., plump, original, pouty).\n'}, 'style': {'type': 'object', 'required': ['type'], 'properties': {'type': {'enum': ['full', 'ombre', 'twoTone'], 'type': 'string', 'description': 'Style of lip coloration.\n'}, 'blendStrength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Blending softness between colors. Required if type = ombre.\n'}, 'innerColorRatio': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Determines how far inward the secondary color extends (ombre only). Required if type = ombre.\n'}}, '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"}, 'category': {'enum': ['lip_color'], 'type': 'string', 'description': 'Identifies this effect as a lipstick/lip color effect. Must always be "lip_color".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'texture', 'colorIntensity'], 'properties': {'color': {'type': 'string', 'description': 'Lipstick color in HEX format (#RRGGBB).\n'}, 'gloss': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Glossiness level for gloss/holographic/metallic/sheer/shimmer textures.\n'}, 'texture': {'enum': ['matte', 'gloss', 'holographic', 'metallic', 'satin', 'sheer', 'shimmer'], 'type': 'string', '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"}, 'shimmerSize': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Size of shimmer particles.\n'}, 'shimmerColor': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Color of shimmer particles for shimmer, metallic, or holographic textures.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Intensity of lipstick pigmentation.\n'}, 'shimmerDensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Density of shimmer particles.\n'}, 'shimmerIntensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Strength of shimmer reflectivity.\n'}, 'transparencyIntensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': None, 'description': 'Transparency effect strength. Used for sheer, shimmer, or gloss textures.\n'}}}, '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'}, 'morphology': {'anyOf': [{'type': 'object', 'properties': {'fullness': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0, 'description': 'Controls how plump or full the lips appear. Higher values = larger, more voluminous lips.\n'}, 'wrinkless': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 0, 'description': 'Smooths wrinkles and texture on the lips. Higher values result in smoother lip appearance.\n'}}}, {'type': 'null'}], 'default': None, 'description': 'Optional morphological adjustments to lips. Enhances fullness and reduces lip wrinkles.\n'}}}, {'type': 'object', 'required': ['category', 'pattern', 'palettes'], 'properties': {'pattern': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'examples': ['Natural1'], 'description': 'Name of lip liner pattern (e.g., Natural1, LargerUpper1).\n'}}, 'description': 'Defines lip liner placement based on pattern from lipliner.json.\n'}, 'category': {'enum': ['lip_liner'], 'type': 'string', 'description': 'Identifies this effect as a lip liner effect. Must always be "lip_liner".\n'}, 'palettes': {'type': 'array', 'items': {'type': 'object', 'required': ['color', 'texture', 'colorIntensity', 'thickness', 'smoothness'], 'properties': {'color': {'type': 'string', 'description': 'Lip liner pigment color in HEX format.\n'}, 'texture': {'enum': ['matte', 'satin'], 'type': 'string', 'description': 'Lip liner finish type.\n'}, 'thickness': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Thickness of the lip liner stroke â\x80\x94 higher values create bolder outlines.\n'}, 'smoothness': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Smoothness of the stroke edges. Higher values produce softer, blended lines.\n'}, 'colorIntensity': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Intensity of lip liner pigmentation.\n'}}}, 'minItems': 1, 'description': 'Lip liner palette entries defining color, thickness, and smoothness.\n'}}}]}, 'examples': [[{'category': 'skin_smooth', 'skinSmoothStrength': 55, 'skinSmoothColorIntensity': 45}, {'pattern': {'name': '2colors1'}, 'category': 'blush', 'palettes': [{'color': '#e19f9f', 'texture': 'matte', 'colorIntensity': 60}, {'color': '#c98a8a', 'texture': 'satin', 'glowStrength': 40, 'colorIntensity': 70}]}, {'shape': {'name': 'plump'}, 'style': {'type': 'full'}, 'category': 'lip_color', 'palettes': [{'color': '#e11c43', 'gloss': 75, 'texture': 'gloss', 'colorIntensity': 80}], 'morphology': {'fullness': 30, 'wrinkless': 25}}]], 'description': 'Array of makeup effects to apply. Each effect object MUST specify a `category` and match the schema for that makeup type.\n'}, 'version': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': '1.0', 'examples': ['1.0'], 'description': 'Version of the makeup effect specification. Defaults to `"1.0"` unless otherwise specified.\n'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_url', 'ref_file_url'], 'properties': {'ref_file_url': {'type': 'string', 'examples': ['https://example.com/reference.jpg'], 'description': 'Url of the reference file to run task. The url should be publicly accessible.'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_url', 'ref_file_id'], 'properties': {'ref_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of the reference file to run task. File ID from upload file API.'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id', 'ref_file_url'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'ref_file_url': {'type': 'string', 'examples': ['https://example.com/reference.jpg'], 'description': 'Url of the reference file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id', 'ref_file_id'], 'properties': {'ref_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of the reference file to run task. File ID from upload file API.'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['version', 'effect_type', 'effects', 'src_file_url'], 'properties': {'effects': {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness', 'transparency'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['matte', 'cream', 'jelly', 'sheer'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['metallic'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness', 'transparency', 'shimmer_opacity'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['pearl'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'shimmer_opacity': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness', 'transparency', 'shimmer_size'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['shimmer_coarse', 'shimmer_fine'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'shimmer_size': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness', 'transparency', 'textured_size'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['textured'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'textured_size': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness', 'transparency'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['matte', 'cream', 'jelly', 'sheer'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only for textures except metallic'}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['metallic'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness', 'shimmer_opacity', 'transparency'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['pearl'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only for textures except metallic'}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}, 'shimmer_opacity': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness', 'shimmer_size', 'transparency'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['shimmer_coarse', 'shimmer_fine'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'shimmer_size': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only for textures except metallic'}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness', 'textured_size', 'transparency'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['textured'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only for textures except metallic'}, 'textured_size': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'shape', 'length', 'color', 'texture', 'reflection', 'contrast', 'roughness'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'shape': {'enum': ['square_oval', 'square_square', 'square_squoval', 'squoval_oval', 'squoval_square', 'squoval_squoval', 'oval_oval', 'oval_square', 'oval_squoval', 'almond_oval', 'almond_square', 'almond_squoval', 'stiletto_oval', 'stiletto_square', 'stiletto_squoval'], 'type': 'string'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'length': {'type': 'number', 'maximum': 2.15, 'minimum': 0.8}, 'texture': {'enum': ['matte', 'cream', 'metallic'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['matte', 'cream', 'metallic'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Either 'ref_file_id' or 'ref_file_url' must be filled, but only one can be selected."}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "This field is optional unless uploading is selected. Index corresponding to 'ref_file_ids' under the root node"}}}]}}, 'version': {'type': 'string', 'examples': ['1.0'], 'description': 'Version of the nail effect specification. Defaults to `"1.0"` unless otherwise specified.\n'}, 'effect_type': {'enum': ['nail_polish', 'press_on_nails'], 'type': 'string', 'examples': ['nail_polish']}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}, 'ref_file_urls': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}, {'type': 'null'}], 'default': None}}}, {'type': 'object', 'required': ['version', 'effect_type', 'effects', 'src_file_url'], 'properties': {'effects': {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness', 'transparency'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['matte', 'cream', 'jelly', 'sheer'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['metallic'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness', 'transparency', 'shimmer_opacity'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['pearl'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'shimmer_opacity': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness', 'transparency', 'shimmer_size'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['shimmer_coarse', 'shimmer_fine'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'shimmer_size': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness', 'transparency', 'textured_size'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['textured'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'textured_size': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness', 'transparency'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['matte', 'cream', 'jelly', 'sheer'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only for textures except metallic'}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['metallic'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness', 'shimmer_opacity', 'transparency'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['pearl'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only for textures except metallic'}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}, 'shimmer_opacity': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness', 'shimmer_size', 'transparency'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['shimmer_coarse', 'shimmer_fine'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'shimmer_size': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only for textures except metallic'}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness', 'textured_size', 'transparency'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['textured'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only for textures except metallic'}, 'textured_size': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'shape', 'length', 'color', 'texture', 'reflection', 'contrast', 'roughness'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'shape': {'enum': ['square_oval', 'square_square', 'square_squoval', 'squoval_oval', 'squoval_square', 'squoval_squoval', 'oval_oval', 'oval_square', 'oval_squoval', 'almond_oval', 'almond_square', 'almond_squoval', 'stiletto_oval', 'stiletto_square', 'stiletto_squoval'], 'type': 'string'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'length': {'type': 'number', 'maximum': 2.15, 'minimum': 0.8}, 'texture': {'enum': ['matte', 'cream', 'metallic'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['matte', 'cream', 'metallic'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Either 'ref_file_id' or 'ref_file_url' must be filled, but only one can be selected."}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "This field is optional unless uploading is selected. Index corresponding to 'ref_file_ids' under the root node"}}}]}}, 'version': {'type': 'string', 'examples': ['1.0'], 'description': 'Version of the nail effect specification. Defaults to `"1.0"` unless otherwise specified.\n'}, 'effect_type': {'enum': ['nail_polish', 'press_on_nails'], 'type': 'string', 'examples': ['nail_polish']}, 'ref_file_ids': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}, {'type': 'null'}], 'default': None}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['version', 'effect_type', 'effects', 'src_file_id'], 'properties': {'effects': {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness', 'transparency'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['matte', 'cream', 'jelly', 'sheer'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['metallic'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness', 'transparency', 'shimmer_opacity'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['pearl'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'shimmer_opacity': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness', 'transparency', 'shimmer_size'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['shimmer_coarse', 'shimmer_fine'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'shimmer_size': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness', 'transparency', 'textured_size'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['textured'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'textured_size': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness', 'transparency'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['matte', 'cream', 'jelly', 'sheer'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only for textures except metallic'}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['metallic'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness', 'shimmer_opacity', 'transparency'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['pearl'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only for textures except metallic'}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}, 'shimmer_opacity': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness', 'shimmer_size', 'transparency'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['shimmer_coarse', 'shimmer_fine'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'shimmer_size': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only for textures except metallic'}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness', 'textured_size', 'transparency'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['textured'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only for textures except metallic'}, 'textured_size': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'shape', 'length', 'color', 'texture', 'reflection', 'contrast', 'roughness'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'shape': {'enum': ['square_oval', 'square_square', 'square_squoval', 'squoval_oval', 'squoval_square', 'squoval_squoval', 'oval_oval', 'oval_square', 'oval_squoval', 'almond_oval', 'almond_square', 'almond_squoval', 'stiletto_oval', 'stiletto_square', 'stiletto_squoval'], 'type': 'string'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'length': {'type': 'number', 'maximum': 2.15, 'minimum': 0.8}, 'texture': {'enum': ['matte', 'cream', 'metallic'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['matte', 'cream', 'metallic'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Either 'ref_file_id' or 'ref_file_url' must be filled, but only one can be selected."}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "This field is optional unless uploading is selected. Index corresponding to 'ref_file_ids' under the root node"}}}]}}, 'version': {'type': 'string', 'examples': ['1.0'], 'description': 'Version of the nail effect specification. Defaults to `"1.0"` unless otherwise specified.\n'}, 'effect_type': {'enum': ['nail_polish', 'press_on_nails'], 'type': 'string', 'examples': ['nail_polish']}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'ref_file_urls': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}, {'type': 'null'}], 'default': None}}}, {'type': 'object', 'required': ['version', 'effect_type', 'effects', 'src_file_id'], 'properties': {'effects': {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness', 'transparency'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['matte', 'cream', 'jelly', 'sheer'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['metallic'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness', 'transparency', 'shimmer_opacity'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['pearl'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'shimmer_opacity': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness', 'transparency', 'shimmer_size'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['shimmer_coarse', 'shimmer_fine'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'shimmer_size': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'color', 'texture', 'reflection', 'contrast', 'roughness', 'transparency', 'textured_size'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['textured'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'textured_size': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness', 'transparency'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['matte', 'cream', 'jelly', 'sheer'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only for textures except metallic'}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['metallic'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness', 'shimmer_opacity', 'transparency'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['pearl'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only for textures except metallic'}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}, 'shimmer_opacity': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness', 'shimmer_size', 'transparency'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['shimmer_coarse', 'shimmer_fine'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'shimmer_size': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only for textures except metallic'}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness', 'textured_size', 'transparency'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['textured'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "To achieve the Nail Polish - Design or Press on Nails - Design effect, you need to use a specific design image. You can provide either a direct URL to the image file (ref_file_url) or an index (ref_file_index) that corresponds to 'ref_file_ids' under the root node in your system. You are required to provide either 'ref_file_url' or 'ref_file_index'. However, only one option can be selected at a time."}, 'transparency': {'type': 'integer', 'maximum': 100, 'minimum': 0, 'description': 'Only for textures except metallic'}, 'textured_size': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "If you wish to upload a design image by the File API for a Nail Polish - Design or Press on Nails - Design effect, you should use the File API to upload your image. After uploading, retrieve its file ID and add it to the `ref_file_ids` array, specifying the index using `ref_file_index`. Index corresponding to 'ref_file_ids' under the root node"}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'shape', 'length', 'color', 'texture', 'reflection', 'contrast', 'roughness'], 'properties': {'color': {'type': 'string', 'pattern': '^#([A-Fa-f0-9]{6})$'}, 'shape': {'enum': ['square_oval', 'square_square', 'square_squoval', 'squoval_oval', 'squoval_square', 'squoval_squoval', 'oval_oval', 'oval_square', 'oval_squoval', 'almond_oval', 'almond_square', 'almond_squoval', 'stiletto_oval', 'stiletto_square', 'stiletto_squoval'], 'type': 'string'}, 'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'length': {'type': 'number', 'maximum': 2.15, 'minimum': 0.8}, 'texture': {'enum': ['matte', 'cream', 'metallic'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['color'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}}}, {'type': 'object', 'required': ['sub_type', 'finger', 'texture', 'reflection', 'contrast', 'roughness'], 'properties': {'finger': {'enum': ['thumb', 'index', 'middle', 'ring', 'pinky'], 'type': 'string'}, 'texture': {'enum': ['matte', 'cream', 'metallic'], 'type': 'string'}, 'contrast': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'sub_type': {'enum': ['design'], 'type': 'string'}, 'roughness': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'reflection': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'ref_file_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Either 'ref_file_id' or 'ref_file_url' must be filled, but only one can be selected."}, 'ref_file_index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': None, 'description': "This field is optional unless uploading is selected. Index corresponding to 'ref_file_ids' under the root node"}}}]}}, 'version': {'type': 'string', 'examples': ['1.0'], 'description': 'Version of the nail effect specification. Defaults to `"1.0"` unless otherwise specified.\n'}, 'effect_type': {'enum': ['nail_polish', 'press_on_nails'], 'type': 'string', 'examples': ['nail_polish']}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'ref_file_ids': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}, 'minItems': 1}, {'type': 'null'}], 'default': None}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['dst_actions', 'src_file_url'], 'properties': {'format': {'anyOf': [{'enum': ['json', 'zip'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['zip'], 'description': "Response format of the analysis results. Default is 'zip'. - `zip`: Results will be packaged as a downloadable ZIP file containing a skinanalysisResult folder with score_info.json and all detection result images. The response will include a URL to download the ZIP file. - `json`: Results will be returned directly in the response body as JSON format. Note: The response schema differs between format=json and format=zip.\n"}, 'dst_actions': {'type': 'array', 'items': {'enum': ['hd_wrinkle', 'hd_pore', 'hd_texture', 'hd_acne', 'hd_oiliness', 'hd_radiance', 'hd_eye_bag', 'hd_age_spot', 'hd_dark_circle', 'hd_droopy_upper_eyelid', 'hd_droopy_lower_eyelid', 'hd_firmness', 'hd_moisture', 'hd_redness', 'hd_tear_trough', 'hd_skin_type', 'wrinkle', 'pore', 'texture', 'acne', 'oiliness', 'radiance', 'eye_bag', 'age_spot', 'dark_circle_v2', 'droopy_upper_eyelid', 'droopy_lower_eyelid', 'firmness', 'moisture', 'redness', 'tear_trough', 'skin_type'], 'type': 'string'}, 'examples': [['hd_wrinkle', 'hd_pore', 'hd_texture', 'hd_acne']], 'description': 'The actions for Skin Analysis.\nThere are 2 types of features: HD and SD.\nYou can choose one or more features, either all in SD or all in HD.\nNote: HD and SD features cannot be mixed.\nHD features:\n - hd_redness: Measures skin redness severity.\n - hd_oiliness: Determines skin oiliness level.\n - hd_age_spot: Detects age spots and pigmentation.\n - hd_radiance: Evaluates skin radiance.\n - hd_moisture: Assesses skin hydration levels.\n - hd_dark_circle: Analyzes the presence of dark circles under the eyes.\n - hd_eye_bag: Detects eye bags.\n - hd_droopy_upper_eyelid: Measures upper eyelid drooping severity.\n - hd_droopy_lower_eyelid: Measures lower eyelid drooping severity.\n - hd_firmness: Evaluates skin firmness and elasticity.\n - hd_texture: Analyzes overall skin texture.\n - hd_acne: Detects acne presence.\n - hd_pore: Detects and evaluates pores in different facial regions (forehead, nose, cheek, whole).\n - hd_wrinkle: Measures the severity of wrinkles in various facial areas (forehead, glabellar, crowfeet, periocular, nasolabial, marionette, whole).\n - hd_tear_trough: Detects tear trough.\n - hd_skin_type: Evalutate skin type.\n\nSD features:\n - wrinkle: General wrinkle analysis.\n - droopy_upper_eyelid: Measures upper eyelid drooping severity.\n - droopy_lower_eyelid: Measures lower eyelid drooping severity.\n - firmness: Evaluates skin firmness and elasticity.\n - acne: Evaluates acne presence.\n - moisture: Measures skin hydration.\n - eye_bag: Detects eye bags.\n - dark_circle_v2: Analyzes dark circles.\n - age_spot: Detects age spots.\n - radiance: Evaluates skin brightness.\n - redness: Measures skin redness.\n - oiliness: Determines skin oiliness.\n - pore: Measures pore visibility.\n - texture: Analyzes overall skin texture.\n - tear_trough: Detects tear trough.\n - skin_type: Evalutate skin type.\n'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}, 'pf_camera_kit': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'examples': [True]}, 'miniserver_args': {'anyOf': [{'type': 'object', 'properties': {'enable_mask_overlay': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Controls whether the mask is blended onto the image. True returns the overlaid image as a .jpg. False returns the raw mask as a .png. Default is false.'}, 'color_dark_background_hd_acne': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['3D3D3D'], 'description': 'Color for HD acne dark background visualization (hex format)'}, 'color_dark_background_hd_pore': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['3D3D3D'], 'description': 'Color for HD pore dark background visualization (hex format)'}, 'enable_dark_background_hd_acne': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable dark background for HD acne visualization'}, 'enable_dark_background_hd_pore': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable dark background for HD pore visualization'}, 'opacity_dark_background_hd_acne': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0.4], 'description': 'Opacity for HD acne dark background visualization'}, 'opacity_dark_background_hd_pore': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0.4], 'description': 'Opacity for HD pore dark background visualization'}, 'color_dark_background_hd_redness': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['3D3D3D'], 'description': 'Color for HD redness dark background visualization (hex format)'}, 'color_dark_background_hd_texture': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['3D3D3D'], 'description': 'Color for HD texture dark background visualization (hex format)'}, 'color_dark_background_hd_wrinkle': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['3D3D3D'], 'description': 'Color for HD wrinkle dark background visualization (hex format)'}, 'color_dark_background_hd_age_spot': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['3D3D3D'], 'description': 'Color for HD age spot dark background visualization (hex format)'}, 'color_dark_background_hd_firmness': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['3D3D3D'], 'description': 'Color for HD firmness dark background visualization (hex format)'}, 'color_dark_background_hd_oiliness': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['3D3D3D'], 'description': 'Color for HD oiliness dark background visualization (hex format)'}, 'enable_dark_background_hd_redness': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable dark background for HD redness visualization'}, 'enable_dark_background_hd_texture': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable dark background for HD texture visualization'}, 'enable_dark_background_hd_wrinkle': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable dark background for HD wrinkle visualization'}, 'enable_dark_background_hd_age_spot': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable dark background for HD age spot visualization'}, 'enable_dark_background_hd_firmness': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable dark background for HD firmness visualization'}, 'enable_dark_background_hd_oiliness': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable dark background for HD oiliness visualization'}, 'opacity_dark_background_hd_redness': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0.2], 'description': 'Opacity for HD redness dark background visualization'}, 'opacity_dark_background_hd_texture': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0.4], 'description': 'Opacity for HD texture dark background visualization'}, 'opacity_dark_background_hd_wrinkle': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0.4], 'description': 'Opacity for HD wrinkle dark background visualization'}, 'opacity_dark_background_hd_age_spot': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0.2], 'description': 'Opacity for HD age spot dark background visualization'}, 'opacity_dark_background_hd_firmness': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0.1], 'description': 'Opacity for HD firmness dark background visualization'}, 'opacity_dark_background_hd_oiliness': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0.2], 'description': 'Opacity for HD oiliness dark background visualization'}}}, {'type': 'null'}], 'default': None}}}, {'type': 'object', 'required': ['dst_actions', 'src_file_id'], 'properties': {'format': {'anyOf': [{'enum': ['json', 'zip'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['zip'], 'description': "Response format of the analysis results. Default is 'zip'. - `zip`: Results will be packaged as a downloadable ZIP file containing a skinanalysisResult folder with score_info.json and all detection result images. The response will include a URL to download the ZIP file. - `json`: Results will be returned directly in the response body as JSON format. Note: The response schema differs between format=json and format=zip.\n"}, 'dst_actions': {'type': 'array', 'items': {'enum': ['hd_wrinkle', 'hd_pore', 'hd_texture', 'hd_acne', 'hd_oiliness', 'hd_radiance', 'hd_eye_bag', 'hd_age_spot', 'hd_dark_circle', 'hd_droopy_upper_eyelid', 'hd_droopy_lower_eyelid', 'hd_firmness', 'hd_moisture', 'hd_redness', 'hd_tear_trough', 'hd_skin_type', 'wrinkle', 'pore', 'texture', 'acne', 'oiliness', 'radiance', 'eye_bag', 'age_spot', 'dark_circle_v2', 'droopy_upper_eyelid', 'droopy_lower_eyelid', 'firmness', 'moisture', 'redness', 'tear_trough', 'skin_type'], 'type': 'string'}, 'examples': [['hd_wrinkle', 'hd_pore', 'hd_texture', 'hd_acne']], 'description': 'The actions for Skin Analysis.\nThere are 2 types of features: HD and SD.\nYou can choose one or more features, either all in SD or all in HD.\nNote: HD and SD features cannot be mixed.\nHD features:\n - hd_redness: Measures skin redness severity.\n - hd_oiliness: Determines skin oiliness level.\n - hd_age_spot: Detects age spots and pigmentation.\n - hd_radiance: Evaluates skin radiance.\n - hd_moisture: Assesses skin hydration levels.\n - hd_dark_circle: Analyzes the presence of dark circles under the eyes.\n - hd_eye_bag: Detects eye bags.\n - hd_droopy_upper_eyelid: Measures upper eyelid drooping severity.\n - hd_droopy_lower_eyelid: Measures lower eyelid drooping severity.\n - hd_firmness: Evaluates skin firmness and elasticity.\n - hd_texture: Analyzes overall skin texture.\n - hd_acne: Detects acne presence.\n - hd_pore: Detects and evaluates pores in different facial regions (forehead, nose, cheek, whole).\n - hd_wrinkle: Measures the severity of wrinkles in various facial areas (forehead, glabellar, crowfeet, periocular, nasolabial, marionette, whole).\n - hd_tear_trough: Detects tear trough.\n - hd_skin_type: Evalutate skin type.\n\nSD features:\n - wrinkle: General wrinkle analysis.\n - droopy_upper_eyelid: Measures upper eyelid drooping severity.\n - droopy_lower_eyelid: Measures lower eyelid drooping severity.\n - firmness: Evaluates skin firmness and elasticity.\n - acne: Evaluates acne presence.\n - moisture: Measures skin hydration.\n - eye_bag: Detects eye bags.\n - dark_circle_v2: Analyzes dark circles.\n - age_spot: Detects age spots.\n - radiance: Evaluates skin brightness.\n - redness: Measures skin redness.\n - oiliness: Determines skin oiliness.\n - pore: Measures pore visibility.\n - texture: Analyzes overall skin texture.\n - tear_trough: Detects tear trough.\n - skin_type: Evalutate skin type.\n'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'pf_camera_kit': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'examples': [True]}, 'miniserver_args': {'anyOf': [{'type': 'object', 'properties': {'enable_mask_overlay': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Controls whether the mask is blended onto the image. True returns the overlaid image as a .jpg. False returns the raw mask as a .png. Default is false.'}, 'color_dark_background_hd_acne': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['3D3D3D'], 'description': 'Color for HD acne dark background visualization (hex format)'}, 'color_dark_background_hd_pore': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['3D3D3D'], 'description': 'Color for HD pore dark background visualization (hex format)'}, 'enable_dark_background_hd_acne': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable dark background for HD acne visualization'}, 'enable_dark_background_hd_pore': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable dark background for HD pore visualization'}, 'opacity_dark_background_hd_acne': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0.4], 'description': 'Opacity for HD acne dark background visualization'}, 'opacity_dark_background_hd_pore': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0.4], 'description': 'Opacity for HD pore dark background visualization'}, 'color_dark_background_hd_redness': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['3D3D3D'], 'description': 'Color for HD redness dark background visualization (hex format)'}, 'color_dark_background_hd_texture': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['3D3D3D'], 'description': 'Color for HD texture dark background visualization (hex format)'}, 'color_dark_background_hd_wrinkle': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['3D3D3D'], 'description': 'Color for HD wrinkle dark background visualization (hex format)'}, 'color_dark_background_hd_age_spot': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['3D3D3D'], 'description': 'Color for HD age spot dark background visualization (hex format)'}, 'color_dark_background_hd_firmness': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['3D3D3D'], 'description': 'Color for HD firmness dark background visualization (hex format)'}, 'color_dark_background_hd_oiliness': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['3D3D3D'], 'description': 'Color for HD oiliness dark background visualization (hex format)'}, 'enable_dark_background_hd_redness': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable dark background for HD redness visualization'}, 'enable_dark_background_hd_texture': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable dark background for HD texture visualization'}, 'enable_dark_background_hd_wrinkle': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable dark background for HD wrinkle visualization'}, 'enable_dark_background_hd_age_spot': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable dark background for HD age spot visualization'}, 'enable_dark_background_hd_firmness': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable dark background for HD firmness visualization'}, 'enable_dark_background_hd_oiliness': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'default': None, 'description': 'Enable dark background for HD oiliness visualization'}, 'opacity_dark_background_hd_redness': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0.2], 'description': 'Opacity for HD redness dark background visualization'}, 'opacity_dark_background_hd_texture': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0.4], 'description': 'Opacity for HD texture dark background visualization'}, 'opacity_dark_background_hd_wrinkle': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0.4], 'description': 'Opacity for HD wrinkle dark background visualization'}, 'opacity_dark_background_hd_age_spot': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0.2], 'description': 'Opacity for HD age spot dark background visualization'}, 'opacity_dark_background_hd_firmness': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0.1], 'description': 'Opacity for HD firmness dark background visualization'}, 'opacity_dark_background_hd_oiliness': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [0.2], 'description': 'Opacity for HD oiliness dark background visualization'}}}, {'type': 'null'}], 'default': None}}}], 'description': 'This object represents a run Skin Analysis task.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_url'], 'properties': {'acne': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original skin, 1.0 for most acne/pimples removed.\n'}, 'pores': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original pore visibility, 1.0 for most refined/invisible pores.\n'}, 'spots': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original skin, 1.0 for most age spots/blemishes removed.\n'}, 'redness': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original skin tone, 1.0 for most redness/irritation removed.\n'}, 'texture': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original skin texture, 1.0 for smoothest skin texture.\n'}, 'wrinkle': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original skin, 1.0 for most wrinkle removed skin.\n'}, 'eye_bags': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original under-eye appearance, 1.0 for most eye bags removed.\n'}, 'oiliness': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original skin, 1.0 for maximum oil/shine added to skin.\n'}, 'radiance': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original skin luminosity, 1.0 for maximum radiant/glowing skin.\n'}, 'dark_circle': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original under-eye color, 1.0 for most dark circles removed.\n'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id'], 'properties': {'acne': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original skin, 1.0 for most acne/pimples removed.\n'}, 'pores': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original pore visibility, 1.0 for most refined/invisible pores.\n'}, 'spots': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original skin, 1.0 for most age spots/blemishes removed.\n'}, 'redness': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original skin tone, 1.0 for most redness/irritation removed.\n'}, 'texture': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original skin texture, 1.0 for smoothest skin texture.\n'}, 'wrinkle': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original skin, 1.0 for most wrinkle removed skin.\n'}, 'eye_bags': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original under-eye appearance, 1.0 for most eye bags removed.\n'}, 'oiliness': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original skin, 1.0 for maximum oil/shine added to skin.\n'}, 'radiance': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original skin luminosity, 1.0 for maximum radiant/glowing skin.\n'}, 'dark_circle': {'anyOf': [{'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, {'type': 'null'}], 'default': None, 'examples': [1], 'description': '0.0 for original under-eye color, 1.0 for most dark circles removed.\n'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['expression_type', 'src_file_url'], 'properties': {'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}, 'expression_type': {'enum': ['smile_with_teeth_visible', 'closed_mouth_smile'], 'type': 'string'}}}, {'type': 'object', 'required': ['expression_type', 'src_file_id'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'expression_type': {'enum': ['smile_with_teeth_visible', 'closed_mouth_smile'], 'type': 'string'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['version', 'effect', 'src_file_url'], 'properties': {'index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 0, 'examples': [0], 'description': 'The index of the person from detection task result.'}, 'effect': {'type': 'object', 'required': ['whitening_intensity'], 'properties': {'whitening_intensity': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'skin_smooth_strength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}, 'skin_smooth_color_intensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}}}, 'version': {'enum': ['1.0'], 'type': 'string'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['version', 'effect', 'src_file_id'], 'properties': {'index': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'default': 0, 'examples': [0], 'description': 'The index of the person from detection task result.'}, 'effect': {'type': 'object', 'required': ['whitening_intensity'], 'properties': {'whitening_intensity': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'skin_smooth_strength': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}, 'skin_smooth_color_intensity': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}], 'default': 50}}}, 'version': {'enum': ['1.0'], 'type': 'string'}, 'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['src_file_url'], 'properties': {'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['src_file_id'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'request': {'anyOf': [{'type': 'object', 'required': ['template_id', 'src_file_url'], 'properties': {'template_id': {'type': 'string', 'examples': ['good_template_001'], 'description': 'ID of the template. List predefined templates first, and use the id of a template.'}, 'src_file_url': {'type': 'string', 'examples': ['https://example.com/selfie.jpg'], 'description': 'Url of the file to run task. The url should be publicly accessible.'}}}, {'type': 'object', 'required': ['template_id', 'src_file_id'], 'properties': {'src_file_id': {'type': 'string', 'examples': ['pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE='], 'description': 'ID of file to run task. File ID from upload file API.'}, 'template_id': {'type': 'string', 'examples': ['good_template_001'], 'description': 'ID of the template. List predefined templates first, and use the id of a template.'}}}]}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'properties': {'task_type': {'anyOf': [{'enum': ['AI-Bracelet-Virtual-Try-On', 'AI-Earrings-Virtual-Try-On', 'AI-Necklace-Virtual-Try-On', 'AI-Ring-Virtual-Try-On', 'AI-Watch-Virtual-Try-On', 'AI-Abs-Filter', 'AI-Aging-Simulation', 'AI-Avatar-Generator', 'AI-Nail-Transfer', 'AI-Smile', 'AI-Studio-Generator', 'AI-Bag-Virtual-Try-On', 'AI-Beard-Style-Generator', 'AI-Photo-Background-Blur', 'AI-Photo-Background-Change', 'AI-Video-Background-Replace', 'AI-Body-Reshape', 'AI-Breast-Augmentation-Simulator', 'AI-Clothes-Virtual-Try-On', 'AI-Photo-Colorize', 'AI-Color-Correction', 'AI-Photo-Enhance', 'AI-Eye-Color-Lens-Virtual-Try-On', 'AI-Fabric-Virtual-Try-On', 'AI-Face-Attributes-and-Ratio-Analyzer', 'AI-Face-Lift', 'AI-Face-Reshape', 'AI-Face-Swap', 'AI-Video-Face-Swap', 'AI-Fitzpatrick-Skin-Type-Analysis', 'AI-Object-Removal-Pro', 'AI-Bangs-Filter-Virtual-Try-On', 'AI-Hair-Color-Virtual-Try-On', 'AI-Wavy-Hair-Virtual-Try-On', 'AI-Hair-Density-Detection', 'AI-Hair-Extension-Virtual-Try-On', 'AI-Hair-Frizziness-Detection', 'AI-Hair-Length-Detection', 'AI-Hair-Style-Virtual-Try-On', 'AI-Hair-Type-Detection', 'AI-Hair-Volume-Virtual-Try-On', 'AI-Hat-Virtual-Try-On', 'AI-Headshot-Generator', 'AI-Image-Generator-Image-to-Image', 'AI-Video-Generator-Image-to-Video', 'AI-Photo-Lighting', 'AI-Look-Virtual-Try-On', 'AI-Makeup-Virtual-Try-On', 'AI-Makeup-Transfer', 'AI-Nail-Virtual-Try-On', 'AI-Video-Object-Removal', 'AI-Replace', 'AI-Image-Extender', 'AI-Scarf-Virtual-Try-On', 'AI-Shoes-Virtual-Try-On', 'AI-Skin-Analysis', 'AI-Skin-simulation', 'AI-Facial-Color-Tones-Analyzer', 'AI-Photo-Background-Removal', 'AI-Teeth-Whitening', 'AI-Image-Generator-Text-to-Image', 'AI-Video-Generator-Text-to-Video', 'AI-Video-Enhancer', 'AI-Video-Style-Transfer'], 'type': 'string'}, {'type': 'null'}], 'default': None, 'description': 'Pre-select a task type. If omitted, the user picks one from the dropdown.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['request'], 'properties': {'request': {'type': 'object', 'properties': {'page_size': {'anyOf': [{'type': 'integer', 'maximum': 20, 'minimum': 1}, {'type': 'null'}], 'default': None, 'examples': [20]}, 'starting_token': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'examples': ['MjA']}}}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['task_id', 'task_type'], 'properties': {'polling': {'type': 'boolean', 'default': True, 'description': 'If true (default), keep polling until the task finishes, returning the final result. If false, return immediately without waiting for the task to finish.'}, 'task_id': {'type': 'string', 'description': 'ID of this task.'}, 'task_type': {'enum': ['AI-Bracelet-Virtual-Try-On', 'AI-Earrings-Virtual-Try-On', 'AI-Necklace-Virtual-Try-On', 'AI-Ring-Virtual-Try-On', 'AI-Watch-Virtual-Try-On', 'AI-Abs-Filter', 'AI-Aging-Simulation', 'AI-Avatar-Generator', 'AI-Nail-Transfer', 'AI-Smile', 'AI-Studio-Generator', 'AI-Bag-Virtual-Try-On', 'AI-Beard-Style-Generator', 'AI-Photo-Background-Blur', 'AI-Photo-Background-Change', 'AI-Video-Background-Replace', 'AI-Body-Reshape', 'AI-Breast-Augmentation-Simulator', 'AI-Clothes-Virtual-Try-On', 'AI-Photo-Colorize', 'AI-Color-Correction', 'AI-Photo-Enhance', 'AI-Eye-Color-Lens-Virtual-Try-On', 'AI-Fabric-Virtual-Try-On', 'AI-Face-Attributes-and-Ratio-Analyzer', 'AI-Face-Lift', 'AI-Face-Reshape', 'AI-Face-Swap', 'AI-Video-Face-Swap', 'AI-Fitzpatrick-Skin-Type-Analysis', 'AI-Object-Removal-Pro', 'AI-Bangs-Filter-Virtual-Try-On', 'AI-Hair-Color-Virtual-Try-On', 'AI-Wavy-Hair-Virtual-Try-On', 'AI-Hair-Density-Detection', 'AI-Hair-Extension-Virtual-Try-On', 'AI-Hair-Frizziness-Detection', 'AI-Hair-Length-Detection', 'AI-Hair-Style-Virtual-Try-On', 'AI-Hair-Type-Detection', 'AI-Hair-Volume-Virtual-Try-On', 'AI-Hat-Virtual-Try-On', 'AI-Headshot-Generator', 'AI-Image-Generator-Image-to-Image', 'AI-Video-Generator-Image-to-Video', 'AI-Photo-Lighting', 'AI-Look-Virtual-Try-On', 'AI-Makeup-Virtual-Try-On', 'AI-Makeup-Transfer', 'AI-Nail-Virtual-Try-On', 'AI-Video-Object-Removal', 'AI-Replace', 'AI-Image-Extender', 'AI-Scarf-Virtual-Try-On', 'AI-Shoes-Virtual-Try-On', 'AI-Skin-Analysis', 'AI-Skin-simulation', 'AI-Facial-Color-Tones-Analyzer', 'AI-Photo-Background-Removal', 'AI-Teeth-Whitening', 'AI-Image-Generator-Text-to-Image', 'AI-Video-Generator-Text-to-Video', 'AI-Video-Enhancer', 'AI-Video-Style-Transfer'], 'type': 'string', 'description': 'The type of the task.'}, 'is_preprocess': {'type': 'boolean', 'default': False, 'description': 'Whether this is called from preprocess tool.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['task_type'], 'properties': {'task_type': {'enum': ['AI-Bracelet-Virtual-Try-On', 'AI-Earrings-Virtual-Try-On', 'AI-Necklace-Virtual-Try-On', 'AI-Ring-Virtual-Try-On', 'AI-Watch-Virtual-Try-On', 'AI-Abs-Filter', 'AI-Aging-Simulation', 'AI-Avatar-Generator', 'AI-Nail-Transfer', 'AI-Smile', 'AI-Studio-Generator', 'AI-Bag-Virtual-Try-On', 'AI-Beard-Style-Generator', 'AI-Photo-Background-Blur', 'AI-Photo-Background-Change', 'AI-Video-Background-Replace', 'AI-Body-Reshape', 'AI-Breast-Augmentation-Simulator', 'AI-Clothes-Virtual-Try-On', 'AI-Photo-Colorize', 'AI-Color-Correction', 'AI-Photo-Enhance', 'AI-Eye-Color-Lens-Virtual-Try-On', 'AI-Fabric-Virtual-Try-On', 'AI-Face-Attributes-and-Ratio-Analyzer', 'AI-Face-Lift', 'AI-Face-Reshape', 'AI-Face-Swap', 'AI-Video-Face-Swap', 'AI-Fitzpatrick-Skin-Type-Analysis', 'AI-Object-Removal-Pro', 'AI-Bangs-Filter-Virtual-Try-On', 'AI-Hair-Color-Virtual-Try-On', 'AI-Wavy-Hair-Virtual-Try-On', 'AI-Hair-Density-Detection', 'AI-Hair-Extension-Virtual-Try-On', 'AI-Hair-Frizziness-Detection', 'AI-Hair-Length-Detection', 'AI-Hair-Style-Virtual-Try-On', 'AI-Hair-Type-Detection', 'AI-Hair-Volume-Virtual-Try-On', 'AI-Hat-Virtual-Try-On', 'AI-Headshot-Generator', 'AI-Image-Generator-Image-to-Image', 'AI-Video-Generator-Image-to-Video', 'AI-Photo-Lighting', 'AI-Look-Virtual-Try-On', 'AI-Makeup-Virtual-Try-On', 'AI-Makeup-Transfer', 'AI-Nail-Virtual-Try-On', 'AI-Video-Object-Removal', 'AI-Replace', 'AI-Image-Extender', 'AI-Scarf-Virtual-Try-On', 'AI-Shoes-Virtual-Try-On', 'AI-Skin-Analysis', 'AI-Skin-simulation', 'AI-Facial-Color-Tones-Analyzer', 'AI-Photo-Background-Removal', 'AI-Teeth-Whitening', 'AI-Image-Generator-Text-to-Image', 'AI-Video-Generator-Text-to-Video', 'AI-Video-Enhancer', 'AI-Video-Style-Transfer'], 'type': 'string', 'description': 'The type of the AI task to upload file for.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'object', 'required': ['error_message'], 'properties': {'request_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'error_message': {'type': 'string', 'description': 'Detailed description of error'}}}]}}, 'x-fastmcp-wrap-result': True}
Schéma d’entrée
{'type': 'object', 'required': ['files', 'task_type'], 'properties': {'files': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'task_type': {'type': 'string'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'required': ['result'], 'properties': {'result': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}}, 'x-fastmcp-wrap-result': True}
Modifications récentes des outils
Serveurs MCP similaires
roastify-mcp
Supports a coffee commerce workflow with product and blend catalogs, inventory, coupons, packaging design editing, artwork genera…
agentee
Searches and purchases all-over print apparel, manages carts, promotions, shipping, checkout, orders, and user-submitted designs.
mu
Supports AI-assisted print-on-demand product design, storefronts, manufacturing quotes, orders, fulfillment, shipping, sales, and…
studiomcphub
Provides image enhancement, background removal, vectorization, color and print preparation, artwork search and analysis, product …
Capucine
Provides sourced personal styling guidance, weather-aware outfit recommendations, apparel shopping criteria, and links to verifie…
YouCam for Fashion & Retail
Provides image-based virtual try-on experiences for clothing, accessories, jewelry, watches, makeup, fabric, hats, scarves, and s…
R3PLICA AI Connector
Searches and presents premium design-brand products, collections, finishes, specifications, comparisons, images, and catalog link…
uxgen
Audits and assembles ecommerce pages, generates product imagery and packshots, supports Shopify sections, and provides SEO and co…