Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/perfect-corp-v2-1-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Perfect Corp V2.1 API
version: ''
contact:
email: YouCamOnlineEditor_API@perfectcorp.com
license:
name: Privacy policy
url: https://www.makeupar.com/perfectbeauty/youcam/privacy-policy-api
termsOfService: https://www.makeupar.com/perfectbeauty/youcam/terms-of-service-api
description: 'Operations tagged V2.1 across 3 of this provider''s published API definitions: perfect-corp-ai_hairstyle-openapi.yml, perfect-corp-ai_skin_analysis-openapi.yml, perfect-corp-ai_video_object_removal-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://yce-api-01.makeupar.com
tags:
- name: V2.1
description: Powered by updated AI technology and new style templates, the platform can create new hairstyles, apply specific template‑based looks, and transfer styles from user‑provided reference images.
paths:
/s2s/v2.1/task/template/hair-transfer:
get:
summary: List predefined templates v2.1
tags:
- V2.1
security:
- BearerAuthenticationV2: []
parameters:
- name: page_size
in: query
schema:
type: integer
example: 20
description: Number of results to return in this page. Valid value should be between 1 and 20. Default 20.
- name: starting_token
in: query
schema:
type: string
example: 73a3c9e69b89
description: Token for current page. Start with `null` for the first page, and use `next_token` from the previous response to start next page
responses:
'200':
$ref: '#/components/responses/TemplateResponse'
'400':
$ref: '#/components/responses/InvalidParameters'
'401':
$ref: '#/components/responses/InvalidApiKey'
operationId: getS2sV21TaskTemplateHairTransfer
x-operation-id-source: derived
servers:
- url: https://yce-api-01.makeupar.com
/s2s/v2.1/task/hair-transfer:
post:
summary: Run an AI Hairstyle Generator v2.1 task
description: 'AI tasks are asynchronous. Prefer webhook-based completion handling when the feature supports webhooks. Configure your webhook endpoint, verify webhook signatures, and use the received `task_id` to query the task result after a `success` or `error` notification. See the webhook integration guide for setup and verification details.
If webhooks are not supported for the feature, or if your integration cannot use webhooks, implement polling. After starting an AI task, keep polling the task status endpoint at the given `polling_interval` until the task status is either `success` or `error`.
Do not stop polling a running task for longer than the allowed polling window. If the task is not polled in time, the task may expire; a later status check can return `InvalidTaskId` even if processing finished, and the consumed units may still be charged.'
tags:
- V2.1
security:
- BearerAuthenticationV2: []
requestBody:
required: true
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/RunHairTransferTaskV2.1'
responses:
'200':
description: Successful execution of the task
content:
application/json:
schema:
$ref: '#/components/schemas/BasicRunTaskResponseV2'
'400':
description: Failed execution of task
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/RunError'
'401':
$ref: '#/components/responses/InvalidApiKey'
'429':
$ref: '#/components/responses/TooManyRequests'
operationId: postS2sV21TaskHairTransfer
x-operation-id-source: derived
servers:
- url: https://yce-api-01.makeupar.com
/s2s/v2.1/task/hair-transfer/{task_id}:
get:
summary: Check the status of a AI Hairstyle Generator v2.1 task
tags:
- V2.1
security:
- BearerAuthenticationV2: []
parameters:
- name: task_id
in: path
required: true
schema:
type: string
example: grH0CvsgXuAIHLUzD0V1Ol34hoet3R1tvdbtiVHrDb6_UqCLKIejAIajwxrhOAfe
description: ID of task to check
responses:
'200':
description: Successful check of the task status
content:
application/json:
schema:
$ref: '#/components/schemas/TaskStatusResponseV2'
'400':
$ref: '#/components/responses/InvalidTaskId'
'401':
$ref: '#/components/responses/InvalidApiKey'
'500':
$ref: '#/components/responses/TaskTimeout'
operationId: getS2sV21TaskHairTransferByTaskId
x-operation-id-source: derived
servers:
- url: https://yce-api-01.makeupar.com
/s2s/v2.1/task/skin-analysis:
post:
summary: Run a Skin Analysis V2.1 task
description: 'AI tasks are asynchronous. Prefer webhook-based completion handling when the feature supports webhooks. Configure your webhook endpoint, verify webhook signatures, and use the received `task_id` to query the task result after a `success` or `error` notification. See the webhook integration guide for setup and verification details.
If webhooks are not supported for the feature, or if your integration cannot use webhooks, implement polling. After starting an AI task, keep polling the task status endpoint at the given `polling_interval` until the task status is either `success` or `error`.
Do not stop polling a running task for longer than the allowed polling window. If the task is not polled in time, the task may expire; a later status check can return `InvalidTaskId` even if processing finished, and the consumed units may still be charged.'
tags:
- V2.1
security:
- BearerAuthenticationV2: []
requestBody:
required: true
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/RunSkincareTaskV2'
- type: object
properties:
pf_camera_kit:
type: boolean
example: true
responses:
'200':
description: Successful execution of Skin Analysis task
content:
application/json:
schema:
$ref: '#/components/schemas/BasicRunTaskResponseV2'
'400':
$ref: '#/components/responses/RunError'
'401':
$ref: '#/components/responses/InvalidApiKey'
'429':
$ref: '#/components/responses/TooManyRequests'
operationId: postS2sV21TaskSkinAnalysis
x-operation-id-source: derived
servers:
- url: https://yce-api-01.makeupar.com
/s2s/v2.1/task/skin-analysis/{task_id}:
get:
summary: Check a Skin Analysis V2.1 task status
description: 'AI tasks are asynchronous. Prefer webhook-based completion handling when the feature supports webhooks. Configure your webhook endpoint, verify webhook signatures, and use the received `task_id` to query the task result after a `success` or `error` notification. See the webhook integration guide for setup and verification details.
If webhooks are not supported for the feature, or if your integration cannot use webhooks, implement polling. After starting an AI task, keep polling the task status endpoint at the given `polling_interval` until the task status is either `success` or `error`.
Do not stop polling a running task for longer than the allowed polling window. If the task is not polled in time, the task may expire; a later status check can return `InvalidTaskId` even if processing finished, and the consumed units may still be charged.'
tags:
- V2.1
security:
- BearerAuthenticationV2: []
parameters:
- name: task_id
in: path
required: true
schema:
type: string
example: grH0CvsgXuAIHLUzD0V1Ol34hoet3R1tvdbtiVHrDb6_UqCLKIejAIajwxrhOAfe
description: ID of task to check
responses:
'200':
$ref: '#/components/responses/SkinAnalysisResponse'
'400':
$ref: '#/components/responses/InvalidTaskId'
'401':
$ref: '#/components/responses/InvalidApiKey'
'500':
$ref: '#/components/responses/TaskTimeout'
operationId: getS2sV21TaskSkinAnalysisByTaskId
x-operation-id-source: derived
servers:
- url: https://yce-api-01.makeupar.com
/s2s/v2.0/file/obj-rem-vid:
post:
summary: Create a new file
description: To upload a new file, you'll first need to use the File API. It will give you a URL – use that URL to upload your file. Once the upload is finished, you can use the file_id from the same response to start using our AI features.
tags:
- V2.1
security:
- BearerAuthenticationV2: []
requestBody:
required: true
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/VideoFileV1.1'
responses:
'200':
description: Successful retrieval of file upload information
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/VideoFileResponseV2'
'400':
$ref: '#/components/responses/InvalidParameters'
'401':
$ref: '#/components/responses/InvalidApiKey'
operationId: postS2sV20FileObjRemVid
x-operation-id-source: derived
servers:
- url: https://yce-api-01.makeupar.com
/s2s/v2.0/task/obj-rem-vid:
post:
summary: Run an AI Video Object Removal task
description: 'AI tasks are asynchronous. Prefer webhook-based completion handling when the feature supports webhooks. Configure your webhook endpoint, verify webhook signatures, and use the received `task_id` to query the task result after a `success` or `error` notification. See the webhook integration guide for setup and verification details.
If webhooks are not supported for the feature, or if your integration cannot use webhooks, implement polling. After starting an AI task, keep polling the task status endpoint at the given `polling_interval` until the task status is either `success` or `error`.
Do not stop polling a running task for longer than the allowed polling window. If the task is not polled in time, the task may expire; a later status check can return `InvalidTaskId` even if processing finished, and the consumed units may still be charged.'
tags:
- V2.1
security:
- BearerAuthenticationV2: []
requestBody:
required: true
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/BasicRunVidTaskV2WithRequiredMsk'
- type: object
required:
- frame_idx
properties:
frame_idx:
type: integer
description: Specifies the frame index in the input video that corresponds to the provided mask image, ranging from 0 to the total frame count minus 1.
example: 0
responses:
'200':
description: Successful execution of the task
content:
application/json:
schema:
$ref: '#/components/schemas/BasicRunTaskResponseV2'
'400':
description: Failed execution of task
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/RunError'
'401':
$ref: '#/components/responses/InvalidApiKey'
'429':
$ref: '#/components/responses/TooManyRequests'
operationId: postS2sV20TaskObjRemVid
x-operation-id-source: derived
servers:
- url: https://yce-api-01.makeupar.com
/s2s/v2.0/task/obj-rem-vid/{task_id}:
get:
summary: Check the status of a AI Video Object Removal task
tags:
- V2.1
security:
- BearerAuthenticationV2: []
parameters:
- name: task_id
in: path
required: true
schema:
type: string
example: grH0CvsgXuAIHLUzD0V1Ol34hoet3R1tvdbtiVHrDb6_UqCLKIejAIajwxrhOAfe
description: ID of task to check
responses:
'200':
description: Successful check of the task status
content:
application/json:
schema:
$ref: '#/components/schemas/VidTaskStatusResponseV2'
'400':
$ref: '#/components/responses/InvalidTaskId'
'401':
$ref: '#/components/responses/InvalidApiKey'
'500':
$ref: '#/components/responses/TaskTimeout'
operationId: getS2sV20TaskObjRemVidByTaskId
x-operation-id-source: derived
servers:
- url: https://yce-api-01.makeupar.com
components:
schemas:
BasicRunTaskV2RefFileId:
type: object
properties:
ref_file_id:
type: string
description: ID of the reference file to run task. File ID from upload file API.
example: pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE=
Template:
type: object
properties:
id:
type: string
description: The ID of the template. Use this as \`template_id\` when run task.
example: good_template_001
thumb:
type: string
description: The thumbnail of style.
title:
type: string
description: The title of the template.
category_name:
type: string
description: The category name of the template.
keep_users_color:
type: boolean
description: Indicates whether the template supports preserving the user's original hair color instead of applying only the template's predefined color.
RunHairTransferTaskV2.1:
allOf:
- title: Provide exactly one of ref_file_id, ref_file_url, or template_id
not:
required:
- ref_file_url
- template_id
- title: Provide exactly one of ref_file_id, ref_file_url, or template_id
not:
required:
- ref_file_id
- template_id
- anyOf:
- allOf:
- title: Run task with src file url & ref file url
required:
- ref_file_url
- $ref: '#/components/schemas/BasicRunTaskV2SrcFileUrl'
- $ref: '#/components/schemas/BasicRunTaskV2RefFileUrl'
- allOf:
- title: Run task with src file url & ref file ID
required:
- ref_file_id
- $ref: '#/components/schemas/BasicRunTaskV2SrcFileUrl'
- $ref: '#/components/schemas/BasicRunTaskV2RefFileId'
- allOf:
- title: Run task with src file ID & ref file url
required:
- ref_file_url
- $ref: '#/components/schemas/BasicRunTaskV2SrcFileId'
- $ref: '#/components/schemas/BasicRunTaskV2RefFileUrl'
- allOf:
- title: Run task with src file ID & ref file ID
required:
- ref_file_id
- $ref: '#/components/schemas/BasicRunTaskV2SrcFileId'
- $ref: '#/components/schemas/BasicRunTaskV2RefFileId'
- allOf:
- title: Run task with src file url and template
- $ref: '#/components/schemas/BasicRunTaskV2SrcFileUrl'
- $ref: '#/components/schemas/RunHairTransferTaskV2.1Template'
- allOf:
- title: Run task with src file ID and template
- $ref: '#/components/schemas/BasicRunTaskV2SrcFileId'
- $ref: '#/components/schemas/RunHairTransferTaskV2.1Template'
BasicRunTaskV2SrcFileId:
type: object
required:
- src_file_id
properties:
src_file_id:
type: string
description: ID of file to run task. File ID from upload file API.
example: pfNK5PuRe0MrwLHcGA3DOmB1ahwfXTbYHjv+KoBIxbE=
TaskStatusResponseBodySingleUrlResultsV2:
type: object
properties:
url:
type: string
description: URL to download this result. Valid for 2 hours
example: https://example.com/sample-result-url
BasicRunTaskV2SrcFileUrl:
type: object
required:
- src_file_url
properties:
src_file_url:
type: string
description: Url of the file to run task. The url should be publicly accessible.
example: https://example.com/selfie.jpg
TaskStatusResponseV2:
type: object
properties:
status:
type: integer
description: Response status
example: 200
data:
type: object
properties:
task_status:
type: string
enum:
- running
- success
- error
description: Status of this task
error:
$ref: '#/components/schemas/EngineErrorCode'
error_message:
type: string
description: Detailed description of error
results: null
$ref: '#/components/schemas/TaskStatusResponseBodySingleUrlResultsV2'
BasicRunTaskResponseV2:
type: object
properties:
status:
type: integer
description: Response status
example: 200
data:
type: object
properties:
task_id:
type: string
description: ID of this task. Task result is valid to query by this ID for 24 hours.
example: grH0CvsgXuAIHLUzD0V1Ol34hoet3R1tvdbtiVHrDb6_UqCLKIejAIajwxrhOAfe
RunError:
type: object
properties:
status:
type: integer
description: Response status
example: 400
error:
type: string
description: Error message
example: The operation could not be completed
error_code:
type: string
enum:
- InvalidParameters
- CreditInsufficiency
- InvalidStyleGroup
- InvalidStyle
- BadRequest
description: "Error code:\n * InvalidParameters - Invalid request parameters\n * CreditInsufficiency - Insufficient unit to run\n * BadRequest - Unexpected request parameter\n * InvalidStyleGroup - Invalid style group id\n * InvalidStyle - Invalid style id\n"
BasicRunTaskV2RefFileUrl:
type: object
properties:
ref_file_url:
type: string
description: Url of the reference file to run task. The url should be publicly accessible.
example: https://example.com/accessory.jpg
RunHairTransferTaskV2.1Template:
required:
- template_id
properties:
template_id:
type: string
description: ID of the template. List predefined templates first, and use the id of a template.
example: good_template_001
hair_color:
type: string
enum:
- ref
- src
default: ref
description: Specifies the hair color of the output image (source/reference), default reference color. <br><b>*Applies only to templates where the keep_user_color parameter is true, meaning the user’s original hair color is preserved. When the parameter is false, the template’s predefined color overrides the user’s hair color. Custom reference images always use the hair color from the reference image.</b>
EngineErrorCode:
type:
- string
- 'null'
enum:
- error_exceed_max_image_size
- exceed_max_filesize
- invalid_parameter
- error_download_image
- error_download_mask
- error_decode_image
- error_decode_mask
- error_nsfw_content_detected
- error_no_face
- error_pose
- error_face_parsing
- error_inference
- exceed_nsfw_retry_limits
- error_upload
- unknown_internal_error
description: 'Errors:
- \`error_exceed_max_image_size\` - Input image size exceeds the maximum limit
- \`exceed_max_filesize\` - Input file size exceeds the maximum limit
- \`invalid_parameter\` - Invalid parameter value
- \`error_download_image\` - Download source image error
- \`error_download_mask\` - Download mask image error
- \`error_decode_image\` - Decode source image error
- \`error_decode_mask\` - Decode mask image error
- \`error_nsfw_content_detected\` - NSFW content detected in source image
- \`error_no_face\` - No face detected on source image
- \`error_pose\` - Failed to detect pose on source image
- \`error_face_parsing\` - Failed to do face segmentation on source image
- \`error_inference\` - Inference pipeline error
- \`exceed_nsfw_retry_limits\` - Exceed the retry limits to avoid generated NSFW image
- \`error_upload\` - Upload result image error
- \`unknown_internal_error\` - Others
'
BasicRunTaskV2:
title: BasicRunTaskV2
anyOf:
- title: Run task with src file url
allOf:
- $ref: '#/components/schemas/BasicRunTaskV2SrcFileUrl'
- title: Run task with src file ID
allOf:
- $ref: '#/components/schemas/BasicRunTaskV2SrcFileId'
SkinAnalysisResultsV2Zip:
type: object
required:
- url
properties:
url:
type: string
description: URL to download this result. Valid for 2 hours. The returned ZIP file contains a skinanalysisResult folder of a score_info.json file with all detection result scores and images of all detection results. Only available when format is `zip`.
example: https://example.com/sample-result-url
SkinAnalysisResultsV2Json:
type: object
required:
- output
properties:
output:
type: array
description: The analysis result returned directly in the response body as JSON format. Only available when format is `json`.
items:
type: object
properties:
type:
type: string
description: The action of Skin Analysis
example: hd_skin_type
region:
type: string
description: The region of the face where the analysis is focused
example: whole
raw_score:
type: number
description: A floating-point value ranging from 1 to 100. The raw_score refers to the score directly predicted by the AI model
example: 98.5
ui_score:
type: integer
description: An integer ranging from 1 to 100. The ui_score is the adjusted score based on the raw score
example: 97
score:
type: number
description: A floating-point value between 1 and 100 representing the general skin condition.
example: 97.66
mask_urls:
type: array
description: The URLs of the mask images or resized images generated during analysis
items:
type: string
example: https://example.com/mask_image_1.png
RunSkincareTaskMiniserverArgs:
type: object
properties:
enable_mask_overlay:
type: boolean
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. <br> All output images are limited to a maximum long-side resolution of 2560 pixels. If enable_mask_overlay is not enabled, you must verify whether the input resolution exceeds 2560 and handle the mask overlay accordingly on your side. When the input image has a long side below 2560 pixels, use the original image resolution. Otherwise, use 2560 pixels to configure your display.
enable_dark_background_hd_pore:
type: boolean
description: Enable dark background for HD pore visualization
color_dark_background_hd_pore:
type: string
description: Color for HD pore dark background visualization (hex format)
example: 3D3D3D
opacity_dark_background_hd_pore:
type: number
minimum: 0
maximum: 1
description: Opacity for HD pore dark background visualization
example: 0.4
enable_dark_background_hd_wrinkle:
type: boolean
description: Enable dark background for HD wrinkle visualization
color_dark_background_hd_wrinkle:
type: string
description: Color for HD wrinkle dark background visualization (hex format)
example: 3D3D3D
opacity_dark_background_hd_wrinkle:
type: number
minimum: 0
maximum: 1
description: Opacity for HD wrinkle dark background visualization
example: 0.4
SkinAnalysisResponseV2:
description: RE
type: object
properties:
status:
type: integer
description: Response status
example: 200
data:
type: object
properties:
task_status:
type: string
enum:
- running
- success
- error
description: Status of this task
error:
$ref: '#/components/schemas/EngineErrorCode'
error_message:
type: string
description: Detailed description of error
results:
oneOf:
- $ref: '#/components/schemas/SkinAnalysisResultsV2Zip'
- $ref: '#/components/schemas/SkinAnalysisResultsV2Json'
RunSkincareTaskV2:
allOf:
- $ref: '#/components/schemas/BasicRunTaskV2'
- title: RunSkincareTaskV2
description: This object represents a run Skin Analysis task.
type: object
properties:
dst_actions:
$ref: '#/components/schemas/RunSkincareTaskDstActions'
miniserver_args:
$ref: '#/components/schemas/RunSkincareTaskMiniserverArgs'
format:
type: string
enum:
- json
- 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.
'
example: zip
required:
- dst_actions
RunSkincareTaskDstActions:
type: array
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: Subcategories (whole, T-zone, U-zone) evaluate skin type as Normal, Oily, Dry, Combination, Redness, Dry and Redness, Oily and Redness, or Combination and Redness.\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: Subcategories (whole, T-zone, U-zone) evaluate skin type as Normal, Oily, Dry, Combination, Redness, Dry and Redness, Oily and Redness, or Combination and Redness.\n"
items:
type: string
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
example:
- hd_wrinkle
- hd_pore
- hd_texture
- hd_acne
VideoFileResponseV2:
type: object
properties:
status:
type: integer
example: 200
description: Response status
data: null
$ref: '#/components/schemas/BasicVideoFileResponse'
VidTaskStatusResponseV2:
type: object
properties:
status:
type: integer
description: Response status
example: 200
data:
type: object
properties:
task_status:
type: string
enum:
- running
- success
- error
description: Status of this task
error:
$ref: '#/components/schemas/EngineErrorCode'
error_message:
type: string
description: Detailed description of error
results: null
$ref: '#/components/schemas/VidTaskStatusResponseBodySingleUrlResultsV2'
VideoFileV1.1:
title: VideoFile V1.1
description: This object represents a video file.
type: object
required:
- files
properties:
files:
type: array
items:
type: object
required:
- content_type
- file_name
- file_size
properties:
content_type:
type: string
example: video/mp4
description: Content MIME type for this file. Currently available values are listed in the enum.
file_name:
type: string
example: my-selfie.mp4
description: Name of this file
file_size:
type: integer
example: 50000
description: Content length for this file in bytes. Should not be larger than 100MB.
VidTaskStatusResponseBodySingleUrlResultsV2:
type: object
properties:
url:
type: string
description: URL to download this result. Valid for 2 hours
example: https://example.com/sample-result-url
BasicRunTaskV2VidSrcFileUrl:
type: object
required:
- src_file_url
properties:
src_file_url:
type: string
description: Url of the file to run task. The url should be publicly accessible.
example: https://example.com/cat_video
# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/perfect-corp/refs/heads/main/openapi/perfect-corp-v2-1-api-openapi.yml