云修智能修图API_PRO

通过异步接口完成智能修图,支持预设 ID 和原始参数两种投递方式,可通过查询或回调获取处理结果。

公共参数

公共请求头

参数名称类型描述是否必填
Content-Typestringapplication/json是

权限

使用前需申请 AccessKey 和 SecretKey,并按照开放平台接口签名完成请求签名。

公共响应体

参数名称类型描述是否必填备注
reqidstring请求ID是
codeint响应码是
dataobject响应数据是

请求方法

POST

接口列表

为了满足不同业务场景下的修图需求,API 提供:预设ID和原始参数,两种投递方式。您可以根据团队的开发成本、使用场景自由选择其中一种。

预设ID投递

步骤 1:下载美图云修客户端 安装包下载地址:https://pan.baidu.com/s/1Ozs0-o8tH-2HSyKFLzWCNg 提取码: ib54

步骤 2:调试生成预设

在客户端界面上进行参数调优,而后将您的调整结果保存为预设,即可在调用接口时,传入预设ID进行修图 美图云修API PRO 版-预设ID获取 预设 code 参数查看器

步骤 3:选择您要使用的接口

美图云修API提供两种接口,处理的图片尺寸不同,对应的接口价格也不同,请您按需选择

接口类型原图投递接口小图投递接口
接口说明投递大尺寸图片投递小尺寸图片
请求方法POSTPOST
图片尺寸限制15000x150001500x1500
格式支持JPG、JPEG、PNGJPG、JPEG、PNG
接口地址https://openapi.meitu.com/yunxiu/openapi/chain.jsonhttps://openapi.meitu.com/yunxiu/openapi/preview_chain.json

步骤 4:投递参数

参数名称类型描述是否必填备注
repost_urlstring回调地址否-
media_codestring预设口令是预设 code,例如 MTyunxiu135edf4125
media_datastring待处理的图片地址是图片必须公网可访问,且不支持IP地址,不支持base64
export_formatstring结果图输出格式否可选 jpg、png,默认 jpg,需保留透明通道时使用 png

请求示例

{
    "repost_url": "https://www.example.com/callback.json",
    "media_code": "MTyunxiu1e3b3453a5",
    "media_data": "https://obs-open-platform-photo.obs.cn-north-4.myhuaweicloud.com/colorbyte_qt/photo/68760a99ed6616jv8vmfts2152.jpg"
}

响应参数

参数名称类型描述是否必填备注
chain_idstring任务ID是

响应示例

{
    "reqid": "3b290f9b-9f36-4733-b8a1-6d4911ab341a",
    "code": 0,
    "data": {
        "chain_id": "1837876704977174"
    }
}

原始参数投递

投递方式说明:该方式推荐有自研前端界面或需要实时动态调整参数的用户使用,可在请求时自由定义参数及属性值。灵活度高,修图参数逻辑动态可控。

注意: 【预设ID】和【原始参数】两个参数有且仅有一个,不能同时存在,并且必须存在一个。如果同时存在,会优先使用【预设ID】参数。

接口类型原图投递接口小图投递接口
接口说明投递大尺寸图片投递小尺寸图片
请求方法POSTPOST
图片尺寸限制15000x150001500x1500
格式支持JPG、JPEG、PNGJPG、JPEG、PNG
接口地址https://openapi.meitu.com/yunxiu/openapi/chain.jsonhttps://openapi.meitu.com/yunxiu/openapi/preview_chain.json

请求参数(Body参数):

参数名称类型描述是否必填备注
repost_urlstring回调地址否-
media_codestring预设口令否-
media_datastring待处理的图片地址是图片必须公网可访问,且不支持IP地址,不支持base64
export_formatstring结果图输出格式否可选 jpg、png,默认 jpg,需保留透明通道时使用 png
parameterobject待处理的图片参数是查看下文

parameter字段的格式:

参数名称类型描述是否必填备注
all_paramsobject待处理的图片参数是查看下文

详细参数

色彩调整
一级功能二级功能中文名称Pro参数(7.7.0版本)Pro参数类型取值范围说明
全局调色-AI滤镜-程度值aicolormatch_alphaint[0,100]-
全局调色-AI滤镜-类别aicolormatch_typeint[0,100]-
全局调色白平衡智能白平衡-常规背景awb_norm_coefint[0,100]-
全局调色白平衡智能白平衡-纯色背景awb_pure_coefint[0,100]-
全局调色绿原色-色相色相color_calibration_green_hue_alphaint[-100,100]-
全局调色绿原色-饱和度饱和度color_calibration_green_sat_alphaint[-100,100]-
全局调色红原色-色相色相color_calibration_red_hue_alphaint[-100,100]-
全局调色红原色-饱和度饱和度color_calibration_red_sat_alphaint[-100,100]-
全局调色蓝原色-色相色相color_calibration_blue_hue_alphaint[-100,100]-
全局调色蓝原色-饱和度饱和度color_calibration_blue_sat_alphaint[-100,100]-
全局调色颜色分级平衡color_grading_balanceint[-100,100]-
全局调色颜色分级混合color_grading_blendint[0,100]-
全局调色颜色分级全局-开关color_grading_global_enablebooltrue/false-
全局调色颜色分级全局-色相color_grading_global_hueint[0,359]-
全局调色颜色分级全局-明度color_grading_global_lightint[0,100]-
全局调色颜色分级全局-饱和度color_grading_global_satint[0,100]-
全局调色颜色分级高光-开关color_grading_hightlight_enablebooltrue/false-
全局调色颜色分级高光-色相color_grading_hightlight_hueint[0,359]-
全局调色颜色分级高光-明度color_grading_hightlight_lightint[0,100]-
全局调色颜色分级高光-饱和度color_grading_hightlight_satint[0,100]-
全局调色颜色分级中间调-开关color_grading_midtone_enablebooltrue/false-
全局调色颜色分级中间调-色相color_grading_midtone_hueint[0,359]-
全局调色颜色分级中间调-明度color_grading_midtone_lightint[0,100]-
全局调色颜色分级中间调-饱和度color_grading_midtone_satint[0,100]-
全局调色颜色分级阴影-开关color_grading_shadow_enablebooltrue/false-
全局调色颜色分级阴影-色相color_grading_shadow_hueint[0,359]-
全局调色颜色分级阴影-明度color_grading_shadow_lightint[0,100]-
全局调色颜色分级阴影-饱和度color_grading_shadow_satint[0,100]-
全局调色影调对比度constrastint[-100,100]-
全局调色影调曝光exposureint[-500,500]-
全局调色影调高光highlightint[-100,100]-
全局调色影调智能影调-程度exposure_alphaint[0,100]-
全局调色影调智能影调-开关exposure_flagint[0,1]-
全局调色影调饱和度saturabilityint[-100,100]-
全局调色影调阴影shadowint[-100,100]-
全局调色影调自然饱和度vibranceint[-100,100]-
全局调色影调黑色blacknessint[-100,100]-
全局调色影调白色whitenessint[-100,100]-
全局调色影调清晰度sharpnessint[-100,100]-
全局调色细节智能去雾dehaze_coefint[0,100]-
全局调色细节颗粒film_granularityint[0,100]-
全局调色细节背景锐化highpass_background_coefint[0,100]-
全局调色细节人像锐化highpass_body_coefint[0,100]-
全局调色细节中点调节midpoint_adjustmentint[0,100]-
全局调色细节暗角调节vignette_adjustmentint[-100,100]-
全局调色-滤镜filterdict请查看「滤镜字段信息」
全局调色HSL-色相浅绿色hsl_hue_aquaint[-100,100]-
全局调色HSL-色相蓝色hsl_hue_blueint[-100,100]-
全局调色HSL-色相绿色hsl_hue_greenint[-100,100]-
全局调色HSL-色相洋红色hsl_hue_magentaint[-100,100]-
全局调色HSL-色相橙色hsl_hue_orangeint[-100,100]-
全局调色HSL-色相红色hsl_hue_redint[-100,100]-
全局调色HSL-色相紫色hsl_hue_violetint[-100,100]-
全局调色HSL-色相黄色hsl_hue_yellowint[-100,100]-
全局调色HSL-明亮度浅绿色hsl_luma_aquaint[-100,100]-
全局调色HSL-明亮度蓝色hsl_luma_blueint[-100,100]-
全局调色HSL-明亮度绿色hsl_luma_greenint[-100,100]-
全局调色HSL-明亮度洋红色hsl_luma_magentaint[-100,100]-
全局调色HSL-明亮度橙色hsl_luma_orangeint[-100,100]-
全局调色HSL-明亮度红色hsl_luma_redint[-100,100]-
全局调色HSL-明亮度紫色hsl_luma_violetint[-100,100]-
全局调色HSL-明亮度黄色hsl_luma_yellowint[-100,100]-
全局调色HSL-饱和度浅绿色hsl_sat_aquaint[-100,100]-
全局调色HSL-饱和度蓝色hsl_sat_blueint[-100,100]-
全局调色HSL-饱和度绿色hsl_sat_greenint[-100,100]-
全局调色HSL-饱和度洋红色hsl_sat_magentaint[-100,100]-
全局调色HSL-饱和度橙色hsl_sat_orangeint[-100,100]-
全局调色HSL-饱和度红色hsl_sat_redint[-100,100]-
全局调色HSL-饱和度紫色hsl_sat_violetint[-100,100]-
全局调色HSL-饱和度黄色hsl_sat_yellowint[-100,100]-
全局调色白平衡色温temperatureint[-100,100]-
全局调色白平衡色调hueint[-100,100]-
全局调色曲线曲线-灰gray_pointlist[0,255]参考曲线传参
全局调色曲线曲线-红red_pointlist[0,255]参考曲线传参
全局调色曲线曲线-绿green_pointlist[0,255]参考曲线传参
全局调色曲线曲线-蓝blue_pointlist[0,255]参考曲线传参
人像美化
一级功能二级功能中文名称Pro参数(7.7.0版本)Pro参数类型取值范围说明
面部丰盈面部丰盈卧蚕aegyosal_filllist[0,100]-
面部丰盈面部丰盈嘴角angulus_oris_filllist[0,100]-
面部丰盈面部丰盈苹果肌apple_cheek_fillerslist[0,100]-
祛除瑕疵-祛妊娠纹0-1beauty_belly_alphalist[0,1]-
祛除瑕疵-祛双下巴double_chinlist[0,100]-
祛除瑕疵-面部跑焦修复face_restore_alphalist[0,100]-
祛除瑕疵-身体祛瑕疵flaw_clean_alphalist[0,100]-
祛除瑕疵-祛唇纹lip_remove_alphalist[0,100]-
祛除瑕疵-妆容保护makeup_protectlist[0,1]-
祛除瑕疵-祛痣(脸部)nevus_removal_flaglist[0,1]-
祛除瑕疵-祛副乳remove_axillary_breastlist[0,100]-
祛除瑕疵-祛黑眼圈remove_pouchlist[0,100]-
祛除瑕疵-祛油光shiny_clean_alphalist[0,100]-
祛除瑕疵-祛斑祛痘(脸部)fleck_clean_flaglist[0,100]
祛除瑕疵-祛斑祛痘(身体)skin_fleck_clean_flaglist[0,100]-
祛除瑕疵-祛面颊纹(含木偶纹)wrinkle_cheek_removal_alphalist[0,100]-
祛除瑕疵-祛抬头纹wrinkle_forehead_removal_alphalist[0,100]-
祛除瑕疵-祛法令纹wrinkle_nasolabial_removal_alphalist[0,100]-
祛除瑕疵-祛颈纹wrinkle_neck_removal_alphalist[0,100]-
祛除瑕疵-祛眼周纹wrinkle_periorbital_removal_alphalist[0,100]-
身体美型-丰胸body_shape_chest_enlargelist[-100,100]-
身体美型-AI增高body_shape_heightenlist[0,100]-
身体美型-驼背body_shape_hunch_backlist[0,100]-
身体美型-长腿body_shape_lengthenlist[0,100]-
身体美型-直角肩body_shape_right_shoulderlist[0,100]-
身体美型-小头body_shape_shrink_headlist[0,100]-
身体美型-瘦身body_shape_slimlist[-100,100]-
身体美型-瘦肚子body_shape_slim_bellylist[0,100]-
身体美型-瘦手臂body_shape_slim_handlist[-100,100]-
身体美型-美臀body_shape_slim_hiplist[-100,100]-
身体美型-瘦腿body_shape_slim_leglist[0,100]-
身体美型-瘦脖子-左body_shape_slim_neck_leftlist[0,100]-
身体美型-瘦脖子-右body_shape_slim_neck_rightlist[0,100]-
身体美型-美腰body_shape_slim_waistlist[0,100]-
身体美型-天鹅颈-左body_shape_swan_neck_leftlist[0,100]-
身体美型-天鹅颈-右body_shape_swan_neck_rightlist[0,100]-
身体美型-肩膀宽度body_shape_thin_shoulderslist[-100,100]-
身体美型-全身美型multibody_beautylist[0,100]-
面部重塑脸型小脸ai_shrink_headlist[0,100]-
面部重塑脸型对称性液化-上半身对称body_symmetrylist[0,100]-
面部重塑脸型下庭bottom_half_of_facelist[-100,100]-
面部重塑脸型颧骨cheekbonelist[-100,100]-
面部重塑脸型颧骨-左cheekbone_leftlist[-100,100]-
面部重塑脸型颧骨-右cheekbone_rightlist[-100,100]-
面部重塑眼睛眼距eye_distancelist[-100,100]-
面部重塑眼睛眼距-左eye_distance_leftlist[-100,100]-
面部重塑眼睛眼距-右eye_distance_rightlist[-100,100]-
面部重塑眼睛眼高eye_heightlist[-100,100]-
面部重塑眼睛眼高-左eye_height_leftlist[-100,100]-
面部重塑眼睛眼高-右eye_height_rightlist[-100,100]-
面部重塑眼睛眼睑-左eye_lid_leftlist[-100,100]-
面部重塑眼睛眼睑-右eye_lid_rightlist[-100,100]-
面部重塑鼻子鼻梁bridge_noselist[-100,100]-
眼睛增强-亮眼bright_eyelist[0,100]-
眼睛增强-亮眼-左bright_eye_leftlist[0,100]-
眼睛增强-亮眼-右bright_eye_rightlist[0,100]-
头发调整-发色加深black_hairlist[0,100]-
头发调整-发缝填充hairline_filllist[0,100]-
头发调整-发色选择hair_colorlist-每个item是对象,参看发色选择字段信息
头发调整-祛碎发broken_hairlist[0,100]-
头发调整祛碎发背景区域broken_hair_background_arealist[0,100]-
头发调整祛碎发人像区域broken_hair_hair_arealist[0,100]-
面部丰盈面部丰盈眉弓brow_arch_filllist[0,100]-
面部丰盈面部丰盈下巴chin_fillerslist[0,100]-
面部丰盈面部丰盈眼窝eye_socket_fillerslist[0,100]-
面部丰盈面部丰盈额头fore_head_fillerslist[0,100]-
面部丰盈面部丰盈鼻基底nose_fillerslist[0,100]-
面部丰盈面部丰盈泪沟tear_troughlist[0,100]-
面部丰盈面部丰盈面颊jowl_filllist[0,100]-
面部丰盈面部平整提拉额头fore_head_smoothlist[0,100]-
面部丰盈面部平整提拉口周perioral_smoothlist[0,100]-
面部丰盈面部平整提拉眼周periorbital_smoothlist[0,100]-
眼睛增强眼神光程度-左eye_light_alpha_leftlist[0,100]-
眼睛增强眼神光程度-右eye_light_alpha_rightlist[0,100]-
眼睛增强眼神光水平翻转-左eye_light_h_flip_leftlist[0,100]-
眼睛增强眼神光水平翻转-右eye_light_h_flip_rightlist[0,100]-
眼睛增强眼神光旋转-左eye_light_rotate_leftlist[0,100]-
眼睛增强眼神光旋转-右eye_light_rotate_rightlist[0,100]-
眼睛增强眼神光缩放-左eye_light_size_leftlist[0,100]-
眼睛增强眼神光缩放-右eye_light_size_rightlist[0,100]-
眼睛增强-眼神光eye_light_type_idlist-每个item是字符串,参看眼神光素材
眼睛增强眼神光水平位置-左eye_light_x_pos_leftlist[0,100]-
眼睛增强眼神光水平位置-右eye_light_x_pos_rightlist[0,100]-
眼睛增强眼神光垂直位置-左eye_light_y_pos_leftlist[0,100]-
眼睛增强眼神光垂直位置-右eye_light_y_pos_rightlist[0,100]-
面部重塑眼睛倾斜-左eye_tilt_leftlist[-100,100]-
面部重塑眼睛倾斜-右eye_tilt_rightlist[-100,100]-
面部重塑眼睛大小eye_translist[-100,100]-
面部重塑眼睛大小-左eye_trans_leftlist[-100,100]-
面部重塑眼睛大小-右eye_trans_rightlist[-100,100]-
面部重塑眼睛上下-左eye_up_down_leftlist[-100,100]-
面部重塑眼睛上下-右eye_up_down_rightlist[-100,100]-
面部重塑眼睛眼宽eye_widthlist[-100,100]-
面部重塑眼睛眼宽-左eye_width_leftlist[-100,100]-
面部重塑眼睛眼宽-右eye_width_rightlist[-100,100]-
面部重塑眉毛间距eyebrow_distancelist[-100,100]-
面部重塑眉毛间距-左eyebrow_distance_leftlist[-100,100]-
面部重塑眉毛间距-右eyebrow_distance_rightlist[-100,100]-
面部重塑眉毛上下eyebrow_heightlist[-100,100]-
面部重塑眉毛上下-左eyebrow_height_leftlist[-100,100]-
面部重塑眉毛上下-右eyebrow_height_rightlist[-100,100]-
面部重塑眉毛眉峰eyebrow_ridgelist[-100,100]-
面部重塑眉毛眉峰-左eyebrow_ridge_leftlist[-100,100]-
面部重塑眉毛眉峰-右eyebrow_ridge_rightlist[-100,100]-
面部重塑眉毛粗细eyebrow_sizelist[-100,100]-
面部重塑眉毛粗细-左eyebrow_size_leftlist[-100,100]-
面部重塑眉毛粗细-右eyebrow_size_rightlist[-100,100]-
面部重塑眉毛倾斜eyebrow_tiltlist[-100,100]-
面部重塑眉毛倾斜-左eyebrow_tilt_leftlist[-100,100]-
面部重塑眉毛倾斜-右eyebrow_tilt_rightlist[-100,100]-
妆容调整-眉毛增强eyebrow_deepenlist[0,100]-
妆容调整-高光立体highlight_alphalist[0,100]-
妆容调整-眼妆增强eyeshadow_deepenlist[0,100]-
妆容调整-腮红增强facial_deepenlist[0,100]-
妆容调整-唇妆增强lipstick_deepenlist[0,100]-
妆容调整-阴影立体shadow_lightlist[0,100]-
妆容调整-高光makeup_highlightlist请查看「妆容调整字段信息」
妆容调整-眼线eyelinerlist请查看「妆容调整字段信息」
妆容调整-唇彩mouthlist请查看「妆容调整字段信息」
妆容调整-妆饰facialdecalslist请查看「妆容调整字段信息」
妆容调整-修容featurelist请查看「妆容调整字段信息」
妆容调整-腮红blushlist请查看「妆容调整字段信息」
妆容调整-美瞳eyelist请查看「妆容调整字段信息」
妆容调整-眉毛eyebrowlist请查看「妆容调整字段信息」
妆容调整-睫毛eyelashlist请查看「妆容调整字段信息」
妆容调整-眼影eyeshadowlist请查看「妆容调整字段信息」
妆容调整-卧蚕eyesocketlist请查看「妆容调整字段信息」
肤色调整-质感磨皮face_balance_alphalist[0,100]-
肤色调整-AI美颜(脸部)face_beauty_alphalist[0,100]-
面部重塑脸型额头face_foreheadlist[-100,100]-
面部重塑脸型V脸face_translist[-100,100]-
面部重塑脸型脸部轮廓流畅facial_contourlist[0,100]-
头发调整-颅顶高度fluffy_hairlist[-100,100]-
面部重塑眼睛开眼角-左inner_eye_corner_leftlist[-100,100]-
面部重塑眼睛开眼角-右inner_eye_corner_rightlist[-100,100]-
面部重塑嘴巴上下high_mouthlist[-100,100]-
面部重塑嘴巴丰下唇lowerlip_enhancelist[-100,100]-
面部重塑嘴巴宽度mouth_breadthlist[-100,100]-
面部重塑嘴巴丰唇mouth_highlist[-100,100]-
面部重塑嘴巴嘴角调整mouth_smilelist[-100,100]-
面部重塑嘴巴倾斜mouth_tiltedlist[-100,100]-
面部重塑嘴巴大小mouth_translist[-100,100]-
面部重塑嘴巴丰上唇upperlip_enhancelist[-100,100]-
面部重塑鼻子山根nasal_rootlist[-100,100]-
面部重塑鼻子鼻尖nasal_tiplist[-100,100]-
面部重塑鼻子长短nose_longerlist[-100,100]-
面部重塑鼻子大小scale_noselist[-100,100]-
面部重塑鼻子鼻翼shrink_noselist[-100,100]-
面部重塑脸型下巴高度jaw_translist[-100,100]-
面部重塑脸型下颌mandiblelist[-100,100]-
面部重塑脸型下颌-左mandible_leftlist[-100,100]-
面部重塑脸型下颌-右mandible_rightlist[-100,100]-
面部重塑脸型中庭middle_half_of_facelist[-100,100]-
面部重塑脸型人中philtrum_warplist[-100,100]-
面部重塑脸型对称性液化run_symmetry_listlist[0,1]-
面部重塑脸型对称性液化-五官对称face_symmetrylist[0,100]-
面部重塑脸型脸部宽度narrow_facelist[-100,100]-
面部重塑脸型太阳穴templelist[-100,100]-
面部重塑脸型太阳穴-左temple_leftlist[-100,100]-
面部重塑脸型太阳穴-右temple_rightlist[-100,100]-
面部重塑3D塑颜左右threed_left_rightlist[-100,100]-
面部重塑3D塑颜上下threed_up_downlist[-100,100]-
-面部平整提拉面中malars_smoothlist[0,100]-
皮肤调整-中性灰立体neutral_gray_enhance_alphalist[0,100]-
皮肤调整-中性灰平整neutral_gray_smooth_alphalist[0,100]-
眼睛增强-眼镜祛反光reduce_glass_lightlist[0,100]-
眼睛增强-祛红血丝reduce_rednesslist[0,100]-
肤色调整-皮肤纹理(脸部)sharpen_alphalist[0,100]-
肤色调整-肤色偏好skin_color_hue_alphalist[-100,100]-
肤色调整-肤色选择-程度skin_color_lut_alphalist[0,100]-
肤色调整-肤色选择skin_color_lut_pathlist-肤色选择对应素材, ;原肤:"" ;冷调: "skin1.png" ;粉瓷 : "skin2.png" ;暖调: "skin3.png" ;小麦: "skin4.png" ;可可色: "skin5.png"
肤色调整-皮肤透亮skin_hdr_alphalist[0,100]-
肤色调整-皮肤红润skin_red_alphalist[0,100]-
肤色调整-肤色统一(身体)skin_tone_body_alphalist[0,100]-
肤色调整-肤色统一(脸部)skin_tone_face_alphalist[0,100]-
肤色调整-肤色统一(多人)skin_tone_multiple_alphalist[0,100]-
肤色调整-皮肤美白skin_white_alphalist[0,100]-
肤色调整-高低频(脸部)smooth_face_skin_alphalist[0,100]-
肤色调整-高低频(脸部)-高频增强smooth_face_skin_hight_alphalist[-100,100]-
肤色调整-高低频(脸部)-低频平整smooth_face_skin_low_alphalist[0,100]-
肤色调整-高低频(身体)smooth_not_face_skin_alphalist[0,100]-
肤色调整-高低频(身体)-高频增强smooth_not_face_skin_hight_alphalist[-100,100]-
肤色调整-高低频(身体)-低频平整smooth_not_face_skin_low_alphalist[0,100]-
牙齿美化-牙齿修复teeth_beautylist[0,1]-
牙齿美化-牙齿祛瑕疵teeth_clean_alphalist[0,100]-
牙齿美化-牙齿美白white_teethlist[0,100]-
牙齿美化牙齿美白明度white_teeth_luminancelist[0,100]-
牙齿美化牙齿美白祛黄white_teeth_remove_yellowlist[0,100]-
头发调整-头发柔顺smooth_hairlist[0,100]-
背景处理
二级功能三级功能中文名称Pro参数(7.7.0版本)Pro参数类型取值范围说明
背景调整背景美化背景增强radioint[0,100]-
背景调整背景美化纯色背景祛瑕疵background_detain_alphaint[0,100]-
背景调整背景美化纯色背景祛穿帮remove_background_mistakeint[0,1]-
证件照换背景证件照背景模式id_photo_bg_modeint[0,2]0 无,1 纯色
证件照换背景证件照颜色颜色/渐变色开始颜色(四通道的颜色数值)id_photo_bg_color[4]intrgba-[0,255]-
证件照换背景证件照颜色颜色/渐变色结束颜色(四通道的颜色数值)id_photo_bg_dst_color[4]intrgba-[0,255]-
证件照换背景证件照渐变色背景类型id_photo_gradient_typeint[0,1]0 上下渐变,1 中心点渐变
证件照换背景证件照填充方式id_photo_fill_typeint[0,1]0纯色 1渐变
换天空推荐背景换天空sky_backgrounddict[0,100]-
服饰美化
二级功能三级功能中文名称Pro参数(7.7.0版本)Pro参数类型取值范围说明
衣服-衣服祛褶皱rmw_rinkint[0,100]-
衣服-衣服边缘流畅cloth_edge_smoothint[0,100]-

特殊类型字段信息

妆容调整

妆容调整中部分字段的结构是list类型,其中每一个 item 是一个对象,对象结构如下:

一级功能二级功能中文名称Pro参数(7.2.0版本)数据类型
人像美化妆容调整唇彩mouthlist
人像美化妆容调整妆饰facialdecalslist
人像美化妆容调整修容featurelist
人像美化妆容调整腮红blushlist
人像美化妆容调整美瞳eyelist
人像美化妆容调整眉毛eyebrowlist
人像美化妆容调整睫毛eyelashlist
人像美化妆容调整眼影eyeshadowlist
人像美化妆容调整卧蚕eyesocketlist
{
    "mouth": [{
        "id": "luozhuang",
        "color": "0;0;0;255",
        "alpha": 50
    }, {
       "id": "shuimitao",
        "color": "0;0;0;255",
        "alpha": 50
    }, {
        "id": "yingtao",
        "color": "0;0;0;255",
        "alpha": 50
    }, {
        "id": "zhenghong",
        "color": "0;0;0;255",
        "alpha": 50
    }, {
        "id": "meigui",
        "color": "0;0;0;255",
        "alpha": 50
    }]
}
字段名称描述
id妆容ID
color颜色值
alpha程度值0-100
发色选择
字段名称描述
id发色选择素材ID
color颜色值
alpha程度值0-100
{
    "hair_color": [{
        "id": "shumeihong",
        "color": "0;0;0;255",
        "alpha": 50
    }, {
       "id": "shumeihong",
        "color": "0;0;0;255",
        "alpha": 50
    }, {
        "id": "shumeihong",
        "color": "0;0;0;255",
        "alpha": 50
    }, {
        "id": "shumeihong",
        "color": "0;0;0;255",
        "alpha": 50
    }, {
        "id": "shumeihong",
        "color": "0;0;0;255",
        "alpha": 50
    }]
}
换天空

sky_background 换天空的字段是一个结构体的类型,该结构体的字段结构如下:

字段名称类型
logic_id素材IDstring
params详细参数object

params参数数据结构:

参数名中文注释值范围
sky_wap_flag天空WAP标志1[1,1]
sky_shift_x_coef天空X轴偏移系数0[-100,100]
sky_shift_y_coef天空Y轴偏移系数0[-100,100]
sky_blip_flag天空闪烁标志0[0,1]
sky_edge_dilate_coef天空边缘膨胀系数0[-100,100]
sky_edge_blur_coef天空边缘模糊系数-10[-100,100]
blur_coef模糊系数0[-100,100]
sky_alpha_coef天空透明度系数100[0,100]
sky_exposure天空曝光0[-100,100]
sky_saturability天空饱和度0[-100,100]
sky_scale_coef天空缩放系数0[0,100]
sky_temperature天空色温0[-100,100]
滤镜

filter滤镜的字段是一个结构体的类型,该结构体的字段结构如下:

字段名称类型
filter_id滤镜ID,参考滤镜素材string
filters_lut_alpha程度值0-100int

AI滤镜参数示例:(AI滤镜仅支持json参数投递,不支持预设投递)

{
  "all_params": {
    "filter": {
      "filter_id": "AUTO_COMPOSITE",
      "filters_lut_alpha": 100
    }
  }
}
曲线

曲线参数由二维平面的多个点构成,不同点之间通过贝塞尔曲线拟合,参数传递需要对二维的点数据拍平为一维的,举例灰度曲线定义有 3 个点:

[
    [0, 0],
    [220, 188],
    [255, 255]
]

那么 gray_point 该字段的传参数为:

{
    "gray_point": [
        0,
        0,
        220,
        188,
        255,
        255
    ]
}

请求示例

{
    "repost_url": "https://www.example.com/callback.json",
    "media_data": "https://obs-open-platform-photo.obs.cn-north-4.myhuaweicloud.com/colorbyte_qt/photo/68760a99ed6616jv8vmfts2152.jpg",
    "parameter": {
        "all_params": {}
    }
}

响应参数

参数名称类型描述是否必填备注
chain_idstring任务ID是-

响应示例

{
    "reqid": "3b290f9b-9f36-4733-b8a1-6d4911ab341a",
    "code": 0,
    "data": {
        "chain_id": "1837876704977174"
    }
}

结果查询

轮询请求查询

注意: 异步任务的结果只保存 12 个小时,请及时查询并转存效果图图片,过期后该异步任务 ID 将无法查询到结果。请求之后切记要解析响应的 Body 来做结果判断。

接口地址: https://openapi.meitu.com/yunxiu/openapi/query.json

请求方法: POST

请求参数(Body参数):

参数名称类型描述是否必填备注
chain_idstring任务ID是-

请求示例:

{
    "chain_id": "1837860599903876"
}

响应参数:

参数名称类型描述是否必填备注
chain_idstring任务ID是-
after_urlstring效果图图片地址1是下载节点1
after_url_backupstring效果图图片地址2是下载节点2
statusstring任务状态是-
error_codeint错误码是-
error_msgstring错误信息是-

注:查询和回调的接口会返回 2 个下载节点的图片地址,2 个节点的图片是一模一样的,建议业务侧优先使用节点1,在节点 1 下载失败后使用节点 2 来下载。投递时指定 export_format=png 时,效果图 URL 后缀为 .png,可保留 PNG 透明通道

状态值描述
waiting等待处理
processing处理中
success处理成功
error处理失败

响应示例:

{
    "reqid": "0a8fa7c3-edf4-4ed4-90a8-6b75a45c5e17",
    "code": 0,
    "data": {
        "chain_id": "1837860599903876",
        "after_url": "https://beauty-public.zone1.meitudata.com/Marvel/1680141903114.jpg",
        "after_url_backup": "https://beauty-public.zone1.meitudata.com/Marvel/1680141903114.jpg",
        "status": "success",
        "error_code": 0,
        "error_msg": "success"
    }
}

结果回调通知

当异步的任务处理完成后,会通过业务侧请求中的 repost_url 参数来回调通知。业务侧在处理完成后,需响应一个状态码为 200 的响应,响应体不做要求。

注意1: 目前回调请求只会回调一次,业务方需做好服务保障,如在一段时间没有接收到回调请求后,可以通过主动查询来获取结果。

注意2: 同样的通知可能会多次回调给业务方,业务方的系统必须能够正确处理重复的通知。 推荐的做法是收到通知进行处理时,先检查对应业务数据的状态,并判断该通知是否已经处理。如果未处理,则再进行处理;如果已处理,则直接返回结果成功。

注意3: 处理回调的时候切记要判断回调内容是否正确后,再进行后续的业务逻辑处理,避免损失

通知地址: 业务方提供的 repost_url 参数

请求方法: POST

请求头: Content-Type:application/json

请求参数(Body参数):

参数名称类型描述是否必填备注
chain_idstring任务ID是-
media_datastring效果图图片地址1是图片下载节点1
media_data_backupstring效果图图片地址2是图片下载节点2
statusstring任务状态是-
error_codeint错误码是-
error_msgstring错误信息是-

请求示例:

curl --location --request POST 'https://www.example.com/callback.json' \
--header 'Content-Type: application/json' \
--data-raw '{
    "chain_id": "1837860599903876",
    "media_data": "https://beauty-public.zone1.meitudata.com/Marvel/1680141903114.jpg",
    "status": "success",
    "error_code": 0,
    "error_msg": ""
}'

错误码

在请求的时候,需要先判断请求的状态码是否成功,如果HTTP状态码不是200那么表示请求失败了,需要提取响应体中的 code 来做进一步处理。具体的错误码如下:

业务错误码(code字段)

错误码描述
11001请求参数解析失败
11002系统异常
25001预设口令错误
25002修图参数格式化错误

修图错误码(error_code字段)

该字段在轮询接口中,当图片修图失败的时候,会返回该字段

错误码备注
20001修图失败,需要重试
29900任务超过24小时,查询结果失败
29901正在修图中
29902修图任务超时
90024QPS超限制
10015服务故障
10007图片编解码失败
21101资源下载解析失败
21002资源数据为空
21003解析请求参数失败
21205下载原图失败
21206下载算法结果失败
21207zip包格式错误
20601设置效果参数错误
20602渲染失败
20603获取结果图失败
20604获取mask任务为空
20605图像编码失败
20606图像类型不支持

常见问题

图片是否会处理失败?

会。目前处理图片的过程中,会偶发出现失败的情况,目前整体的成功率是控制在 99.95%+ 的,业务代码也建议可以多做一步容错处理。

什么是 QPS?

QPS 就是限制每秒能请求的次数,假如设置为 10 的话,那么表示每秒可以发起 10 个请求,每个请求可以提交一张图片处理,后端图片的处理是并行的。

素材列表

以下保留素材编号及配置值,素材效果图可点击「查看预览」在原文档中查看。

妆容素材

眉毛(eyebrow)

ID名称颜色图片
biaozhunmei自然BK01 0;0;0;255;BR01 108;66;24;255;LB01 137;100;41;255;RB01 156;58;39;255查看预览
yizimei直眉BK01 0;0;0;255;BR01 108;66;24;255;LB01 137;100;41;255;RB01 156;58;39;255查看预览
yingqimei英气BK01 0;0;0;255;BR01 108;66;24;255;LB01 137;100;41;255;RB01 156;58;39;255查看预览
wanyuemei弯月BK01 0;0;0;255;BR01 108;66;24;255;LB01 137;100;41;255;RB01 156;58;39;255查看预览
gaotiaomei高挑BK01 0;0;0;255;BR01 108;66;24;255;LB01 137;100;41;255;RB01 156;58;39;255查看预览
jianmei浓密BK01 0;0;0;255;BR01 108;66;24;255;LB01 137;100;41;255;RB01 156;58;39;255查看预览
yeshengmei小挑眉BK01 0;0;0;255;BR01 108;66;24;255;LB01 137;100;41;255;RB01 156;58;39;255查看预览
shuliumei野生BK01 0;0;0;255;BR01 108;66;24;255;LB01 137;100;41;255;RB01 156;58;39;255查看预览
hengliumei原生BK01 0;0;0;255;BR01 108;66;24;255;LB01 137;100;41;255;RB01 156;58;39;255查看预览
Mi0000yD1mozSrdF古典BK01 0;0;0;255;BR01 108;66;24;255;LB01 137;100;41;255;RB01 156;58;39;255查看预览
Mi0000hGArIjPKqE丝雾BK01 0;0;0;255;BR01 108;66;24;255;LB01 137;100;41;255;RB01 156;58;39;255查看预览
Mi0000OlZZZLg427棕雾BK01 0;0;0;255;BR01 108;66;24;255;LB01 137;100;41;255;RB01 156;58;39;255查看预览
Mi0000JJ4k5NOuI9毛绒BK01 0;0;0;255;BR01 108;66;24;255;LB01 137;100;41;255;RB01 156;58;39;255查看预览

美瞳(eye)

ID名称图片
qiaokeli琥珀查看预览
fugulv橄榄绿查看预览
taojihui混血灰查看预览
ganmeigui灰粉查看预览
yanhuazi烟花紫查看预览
xingyunzong摩卡棕查看预览
Mi0000YPyxa4tVJZ亚麻灰查看预览
Mi0000KkQwKms79a金星棕查看预览
Mi0000ctJWSsKeyV黑瞳查看预览
Mi0000j9sVvEjCkG黑边查看预览
Mi0000ILJ0BFFgGP红宝石查看预览
Mi0000fhqyr6fZyl深棕查看预览
Mi0000jqGa1V9RB6金珀查看预览

卧蚕(eyesocket)

ID名称图片
suyan素颜查看预览
ziran自然查看预览
eyesocketrichang妈生感查看预览
keai可爱查看预览
wugu无辜查看预览
chengshu月牙查看预览
xiachui减龄查看预览
eyesocketliangpian亮片查看预览

眼影(eyeshadow)

ID名称图片
luoxing裸杏查看预览
eyeshadow10自然查看预览
diaoxi无辜眼查看预览
eyeshadow09元气查看预览
eyeshadow04泪痣查看预览
eyeshadow07自然查看预览
eyeshadow08猫眼查看预览
eyeshadowliangpian闪片查看预览
eyeshadow05派对查看预览
tangguo糖果查看预览
Mi0000leDxesU8HP大地色查看预览
Mi0000OPcCwZT80P消肿查看预览
Mi0000BF9UTcGbc0海棠查看预览
Mi0000MxD6tGixT0粉调烟熏查看预览
Mi0000vXILg1uA8e灰色截断查看预览
Mi0000putW0W7bfv古铜金查看预览

睫毛(eyelash)

ID名称图片
eyelash02自然查看预览
eyelash01纯欲查看预览
eyelash05甜妹查看预览
eyelash06翘睫查看预览
eyelash10仙女查看预览
eyelash09短睫查看预览
eyelash14鱼尾查看预览
eyelash15漫画查看预览
xiajiemao1下睫查看预览
xiajiemao倒置查看预览
eyelash9上睫查看预览
Mi0000uTbmphGMDE浓密查看预览
Mi00002I63gwAXR7太阳花查看预览
Mi0000XtPAVP8ZpR卷翘查看预览
Mi0000Q56zV1aamA羽扇查看预览

修容(feature)

ID名称图片
liti立体查看预览
featurerichang自然查看预览
VlianV脸查看预览
qizhi气质查看预览
jianling塑造查看预览
tila欧美查看预览
biying笔挺查看预览
gutong古铜查看预览
Mi0000I8IWqaqbuW混血查看预览
Mi0000ohvx7mN2YS盒鼻查看预览
Mi0000A93APmWflz短鼻查看预览
Mi000031HQCOcmo9亚裔查看预览

腮红(blush)

ID名称颜色图片
blush01元气001 255;116;178;255;002 255;227;98;255;003 210;128;122;255;004 198;130;145;255;005 255;134;106;255查看预览
blush02眼下001 255;116;178;255;002 255;227;98;255;003 210;128;122;255;004 198;130;145;255;005 255;134;106;255查看预览
blush03法式001 255;116;178;255;002 255;227;98;255;003 210;128;122;255;004 198;130;145;255;005 255;134;106;255查看预览
blush08氛围001 255;116;178;255;002 255;227;98;255;003 210;128;122;255;004 198;130;145;255;005 255;134;106;255查看预览
blush06高原001 255;116;178;255;002 255;227;98;255;003 210;128;122;255;004 198;130;145;255;005 255;134;106;255查看预览
blush05面颊001 255;116;178;255;002 255;227;98;255;003 210;128;122;255;004 198;130;145;255;005 255;134;106;255查看预览
Mi0000fKcDexSogs微醺001 255;116;178;255;002 255;227;98;255;003 210;128;122;255;004 198;130;145;255;005. 255;134;106;255查看预览
Mi00002yMqzH8Xnl冻伤001 255;116;178;255;002 255;227;98;255;003 210;128;122;255;004 198;130;145;255;005 255;134;106;255查看预览
Mi0000hfMqZn8tkR晒伤001 255;116;178;255;002 255;227;98;255;003 210;128;122;255;004 198;130;145;255;005 255;134;106;255查看预览
Mi0000gm5FZvaQj8红润001 255;116;178;255;002 255;227;98;255;003 210;128;122;255;004 198;130;145;255;005 255;134;106;255查看预览
Mi00006vvZFZmT76桃粉001 255;116;178;255;002 255;227;98;255;003 210;128;122;255;004 198;130;145;255;005 255;134;106;255查看预览
Mi0000Mfob60M0MY减龄001 255;116;178;255;002 255;227;98;255;003 210;128;122;255;004 198;130;145;255;005 255;134;106;255查看预览
Mi0000ChAgz4Zoyd海岛001 255;116;178;255;002 255;227;98;255;003 210;128;122;255;004 198;130;145;255;005 255;134;106;255查看预览

唇彩(mouth)

ID名称图片
Mi0000pkce3FzLJR珊瑚粉查看预览
luozhuang裸粉查看预览
shuimitao蜜桃查看预览
yingtao樱桃查看预览
jiaotang南瓜查看预览
juziqishui亮橘查看预览
zhenghong正红查看预览
jinli西柚查看预览
yimase浆果查看预览
dousha豆沙粉查看预览
meigui玫瑰查看预览
huolongguo火龙果查看预览
Mi0000deCm1woQrB果冻查看预览
Mi0000n7E1vsCzpt裸棕查看预览
Mi0000hIhG4pPK7J砖红查看预览
Mi0000Wmi9Qqy20b车厘子查看预览
Mi0000VuA5Y29FXd玫红查看预览
Mi0000Rm1qmCsdaO摩卡棕查看预览

妆饰(facialdecals)

ID名称图片
eyeshadow06眼下钻石查看预览
queban雀斑查看预览
Mi0000FVHF7wqiNC度假雀斑查看预览
Mi0000qxnSbjKxgb慵懒雀斑查看预览
Mi0000SiOzeusi2U野生雀斑查看预览
meishiqueban美式雀斑查看预览
Mi0000EJKuYAUiWJ昭和雀斑查看预览
Mi00004nlc1o1zbM原生雀斑查看预览

眼线(eyeliner)

ID名称颜色图片
Mi0000cUzfaAlQgx自然系01 53;28;26;255; 02 0;0;0;255;03 101;80;64;255;04 101;66;23;255;05 157;36;28;255;06 150;3;101;255查看预览
Mi0000Kri3hozVzR深邃01 53;28;26;255;02 0;0;0;255;03 101;80;64;255;04 101;66;23;255;05 157;36;28;255;06 150;3;101;255查看预览
Mi0000m4pyNOR5wA甜酷01 53;28;26;255;02 0;0;0;255;03 101;80;64;255;04 101;66;23;255;05 157;36;28;255;06 150;3;101;255查看预览
Mi0000FpkyFTjEhY韩系01 53;28;26;255;02 0;0;0;255;03 101;80;64;255;04 101;66;23;255;05 157;36;28;255;06 150;3;101;255查看预览
Mi0000ArTobhIM9y狗狗眼01 53;28;26;255;02 0;0;0;255;03 101;80;64;255;04 101;66;23;255;05 157;36;28;255;06 150;3;101;255查看预览
Mi00008Pdys6ShW3古典01 53;28;26;255;02 0;0;0;255;03 101;80;64;255;04 101;66;23;255;05 157;36;28;255;06 150;3;101;255查看预览
Mi0000mJDm4VZSZL全包01 53;28;26;255;02 0;0;0;255;03 101;80;64;255;04 101;66;23;255;05 157;36;28;255;06 150;3;101;255查看预览
Mi0000U8yopkvAQl开口下至01 53;28;26;255;02 0;0;0;255;03 101;80;64;255;04 101;66;23;255;05 157;36;28;255;06 150;3;101;255查看预览
Mi0000iIK9XUBFUc淡颜01 53;28;26;255;02 0;0;0;255;03 101;80;64;255;04 101;66;23;255;05 157;36;28;255;06 150;3;101;255查看预览
Mi0000WbLdWUO8Mn上扬01 53;28;26;255;02 0;0;0;255;03 101;80;64;255;04 101;66;23;255;05 157;36;28;255;06 150;3;101;255查看预览
Mi0000lMRW4bMbyN刀锋01 53;28;26;255;02 0;0;0;255;03 101;80;64;255;041 01;66;23;255;05 157;36;28;255;06 150;3;101;255查看预览

高光(makeup_highlight)

ID名称图片
Mi0000aShpCmphEy眼下提亮查看预览
Mi0000d3Ti0TATej丰润查看预览
Mi0000CPhRXt5RoB平整查看预览
Mi00003bH6O8902g盈润查看预览
Mi0000qgUP6NxdZ5丰盈查看预览
Mi0000TMtJhiPr77笔挺查看预览
Mi0000IwiReFuX9r透亮查看预览
Mi00009a3Hwy6AyZ水光查看预览
Mi0000KNKZad2mUr小灯泡查看预览

滤镜素材

名称分类滤镜ID默认值
藕色历史Fa0000qhjvzrB6bk50
复古历史Fa0000GIqjw2lTHs50
宫廷历史Fa0000ka4QT8K4qu50
高级灰历史Fa00006fhJ3N39BW60
黑白历史Fam7OiW93OVqp7VZ100
幽夜历史FaZQiqI8ivwXDO8V50
清冷历史FaTrSSLhNVNl7fez50
静谧历史FaSIJM59R7eIQNdb50
寂忆历史FakN7AwtNBuTbbAg50
淅沥历史Fai455PvRjZLgUas50
青葱历史FaGt8R0xGCprQFOs50
旧梦历史FaFgP87DcDJGi4mI50
年华历史FaCDFG5M2NJDbzhE50
抹茶历史Fa9EFqwgJB9SwW8d50
多彩历史Fa5Ko6DFZ0M7LYq050
日系历史Fa00005laGsjTUku50
森系历史Fa00004ZuQuHKGS851
极简历史Fa0000l4c2ZRdh7450
黑白质感历史Fa0000LB7OThWMDo100
东方历史Fa0000zZmwsM7Nfl50
复古历史Fa0000OyoLKHimmO50
温暖历史Fa0000UksyrcZDzz50
白皙历史Fa0000P2W1nfgpop50
白皙历史Fa0000WvV9T5NlWV50
暖黄历史Fa0000LKNAHh9PbV50
喜庆历史Fa0000Tm94bdbZCX50
园林历史Fa0000RGuP61MarE50
蓝色大海历史Fa0000EzvY8aqbxR50
白色教堂历史Fa00001mDiwf1m6n50
薄荷绿历史Fa00001gSzM52xQC50
读书郎历史Fa0000GoCAiFCxQy50
秘密花园历史Fa00000crgokZT0050
粉红宝宝历史Fa0000Actdx2USmT50
黄牛宝宝历史Fa00005HwwB7VhPZ50
奶牛宝宝历史Fa0000EymDnzj6NT50
暖意历史Fa0000F1ce3gv5Jj50
清新历史Fa0000l7dQAKzlCU50
灰色内景历史Fa0000KubcZugZ4e50
白色内景历史Fa0000wBVTX9Jt4h50
黑色内景历史Fa0000epgjUhXLrB50
森系园林历史Fa00008KUR0HiadL50
简约韩式历史Fa00008Xh3vS8BsQ50
中式韵味历史Fa00006jrLeSJK8m50
休闲历史Fa0000vKd89H9Kqv50
唯美历史Fa0000rBAQvqB3eo50
红妆历史Fa0000KmtNJgfmLO50
温暖历史Fa0000cDzjDPwxmC50
清新历史Fa0000pQAGXT1ZzH50
喜庆红历史Fa0000ujWq4h3s3j50
夜景历史Fa0000AcP6k81I2p50
明月清辉历史Fa0000FQIZ2ZxBdI50
透亮人像Fa0000ZO5eevvoev60
暖意I人像Fa0000UGIBMahr3w50
暖意II人像Fa0000sw8eCTX3AB80
质感人像人像Fa0000BJzKzgEAJX50
白皙I人像Fa0000C0csBbBLGJ50
白皙II人像Fa0000hsMOoC6wHx80
室内跟拍人像Fa0000m2c3wcLMKe80
室外跟拍人像Fa0000UiikN0tEAN80
中式秀禾人像Fa0000Ly2xGD9OHh80
中式暖调人像Fa0000dWhwAG10Mt80
烟雨江南人像Fa00009qkfva96ax50
焕彩假日户外Fa0000skp99iK19d60
日系清新户外Fa0000GwlRgJjWkp80
法式油画户外Fa0000VoJWMs5IDW80
森系青调户外Fa00007cZB1m8CH380
青葱草地户外Fa00002CFtLbdAsN80
清冷江南户外Fa0000ngg7xDaVqe80
敦煌I户外Fa0000nZwYBKbihl50
敦煌II户外Fa0000iDqHash0sP70
花海户外Fa0000yQvOJtTKWf80
无尽夏户外Fa0000HxecTNSCnj80
蓝色大海户外Fa00004WmU47xXrf70
经典II胶片Fa00005Pa1RiA2fF80
粉胶胶片Fa0000GzfSGpFf4k80
乐园胶片Fa0000bqxcuYY5bb70
日系胶片Fa0000Yq5faQ9nQa80
柯达金胶片Fa0000UpsemzyADt80
黑金城市Fa0000hnu5fysSnw50
夜景城市Fa00006StiDCCXUQ50
夜景蓝调城市Fa0000zPXcq6HaKm80
质感黑白黑白Fa0000EOz3ZOATjI100
60年代黑白Fa0000wxCJsSmkr4100
复古黑白黑白Fa0000dMNokcFbOP100
高对比黑白Fa0000e02nxtPjgZ100
透亮热门Fa0000Hpx9vvGngd60
经典卷I热门Fa0000pmMzflxryj80
中式秀禾热门Fa0000NDn04T8Vp480
白皙I热门Fa0000aPQLtBufth50
无尽夏热门Fa0000jIA9yz0wXt80
焕彩假日热门Fa00008kCBX2bBc760
黑金热门Fa0000yA1Lir2bdo80
经典I胶片Fa0000CWwYIyajdD80
花好月圆历史Fa0000fZrH9dDXNu50
花海户外Fa0000yQvOJtTKWf80
经典卷II胶片Fa00005Pa1RiA2fF80
高级灰历史Fa00006fhJ3N39BW60
黑白历史Fam7OiW93OVqp7VZ100
幽夜历史FaZQiqI8ivwXDO8V50
清冷历史FaTrSSLhNVNl7fez50
寂忆历史FakN7AwtNBuTbbAg50
淅沥历史Fai455PvRjZLgUas50
青葱历史FaGt8R0xGCprQFOs50
年华历史FaCDFG5M2NJDbzhE50
抹茶历史Fa9EFqwgJB9SwW8d50
多彩历史Fa5Ko6DFZ0M7LYq050
法式油画户外Fa0000VoJWMs5IDW50
日系清新户外Fa0000GwlRgJjWkp80
黑白质感历史Fa0000LB7OThWMDo100
东方历史Fa0000zZmwsM7Nfl50
复古历史Fa0000OyoLKHimmO50
温暖历史Fa0000UksyrcZDzz50
暖黄历史Fa0000LKNAHh9PbV50
园林历史Fa0000RGuP61MarE50
蓝色大海历史Fa0000EzvY8aqbxR50
白色教堂历史Fa00001mDiwf1m6n50
薄荷绿历史Fa00001gSzM52xQC50
读书郎历史Fa0000GoCAiFCxQy50
秘密花园历史Fa00000crgokZT0050
粉红宝宝历史Fa0000Actdx2USmT50
黄牛宝宝历史Fa00005HwwB7VhPZ50
清新历史Fa0000l7dQAKzlCU50
灰色内景历史Fa0000KubcZugZ4e50
黑色内景历史Fa0000epgjUhXLrB50
森系青调户外Fa00007cZB1m8CH380
简约韩式历史Fa00008Xh3vS8BsQ50
休闲历史Fa0000vKd89H9Kqv50
唯美历史Fa0000rBAQvqB3eo50
红妆历史Fa0000KmtNJgfmLO50
温暖历史Fa0000cDzjDPwxmC50
清新历史Fa0000pQAGXT1ZzH50
喜庆红历史Fa0000ujWq4h3s3j50
夜景城市Fa00006StiDCCXUQ50
敦煌I户外Fa0000nZwYBKbihl50
柯达金胶片Fa0000UpsemzyADt80
蓝色大海户外Fa00004WmU47xXrf70
乐园胶片Fa0000bqxcuYY5bb70
60年代黑白Fa0000wxCJsSmkr4100
复古黑白黑白Fa0000dMNokcFbOP100
质感黑白黑白Fa0000EOz3ZOATjI100
暖意II人像Fa0000sw8eCTX3AB80
质感人像人像Fa0000BJzKzgEAJX80
无尽夏户外Fa0000HxecTNSCnj80
焕彩假日户外Fa0000skp99iK19d60
敦煌II户外Fa0000iDqHash0sP70
黑金城市Fa0000hnu5fysSnw80
透亮人像Fa0000ZO5eevvoev60
白皙II人像Fa0000hsMOoC6wHx80
白皙I人像Fa0000C0csBbBLGJ50
室内跟拍人像Fa0000m2c3wcLMKe80
清冷江南户外Fa0000ngg7xDaVqe80
室外跟拍人像Fa0000UiikN0tEAN80
青葱草地户外Fa00002CFtLbdAsN80
粉胶胶片Fa0000GzfSGpFf4k80
经典卷I胶片Fa0000CWwYIyajdD80
白皙I最新Fa0000aPQLtBufth50
无尽夏最新Fa0000jIA9yz0wXt80
黑金最新Fa0000yA1Lir2bdo80
高对比黑白Fa0000e02nxtPjgZ100
夜景蓝调城市Fa0000zPXcq6HaKm80
日系胶片Fa0000Yq5faQ9nQa80
烟雨江南人像Fa00009qkfva96ax50
中式秀禾人像Fa0000Ly2xGD9OHh70
中式暖调人像Fa0000dWhwAG10Mt80
喜庆历史Fa0000Tm94bdbZCX50
暖意Ⅰ人像Fa0000UGIBMahr3w50
透亮最新Fa0000Hpx9vvGngd60
焕彩假日最新Fa00008kCBX2bBc760
森系历史Fa00004ZuQuHKGS850
日系历史Fa00005laGsjTUku50
极简历史Fa0000l4c2ZRdh7450
森系园林历史Fa00008KUR0HiadL50
白色内景历史Fa0000wBVTX9Jt4h50
旧梦历史FaFgP87DcDJGi4mI50
宫廷历史Fa0000ka4QT8K4qu50
白皙历史Fa0000WvV9T5NlWV50
白皙历史Fa0000P2W1nfgpop50
花好月圆历史Fa0000fZrH9dDXNu50
明月清辉历史Fa0000FQIZ2ZxBdI50
暖意历史Fa0000F1ce3gv5Jj50
静谧历史FaSIJM59R7eIQNdb50
夜景历史Fa0000AcP6k81I2p50
中式韵味历史Fa00006jrLeSJK8m50
奶牛宝宝历史Fa0000EymDnzj6NT50
复古历史Fa0000GIqjw2lTHs50
敦煌II最新Fa0000ddGjlHmJmt70
藕色历史Fa0000qhjvzrB6bk50
朱砂新中式Fa0000XsSNfzw8Iv80
画眉新中式Fa0000PMFu1ymPrj80
青绿新中式Fa00000Ncf1Y1Xpe80
奶油肌人像Fa000067X1tIabF680
富士CC相机模拟Fa0000n39JYhOhBM80
富士NN相机模拟Fa0000uqfHKXomZf80
电商Ⅰ人像Fa0000T4RcvE18G080
电商Ⅱ人像Fa0000QYdwKZF7wL80
电商Ⅲ人像Fa0000KjRdHMn5Mr80
富士NC相机模拟Fa0000tJ6KxsAcfe80
X100相机模拟Fa0000s53M1s9jGx80
富士NC最新Fa0000ygyMjU1Ma080
青绿最新Fa0000CLst7Ai0T880
摩登城市Fa0000C4Jp6RLqqn50
港风城市Fa0000q0Og7jsV5h50
侘寂Ⅰ人像Fa0000OdwdQXpb8K50
侘寂Ⅱ人像Fa0000qSV4CD8wiA70
复古美式人像Fa00003dLXLQtrKC50
复古日系人像Fa0000HQiZpHMO8r70
哈苏胶片Fa0000qwhHdBqot960
日光卷胶片Fa0000JxRrBX6azN60
浓郁胶片Fa0000IX999CcTJF80
菲林胶片Fa0000DLropO1ZjD60
复古画报人像Fa00008e573MgZjy60
柔粉人像Fa00005JdxFdFGdi80
春日粉樱户外Fa0000T762IwrzT650
春和胶片Fa0000n1TcETBLqi50
热带雨林户外Fa0000EylPpqvN8A75
盛夏胶片Fa0000wZMjJDkJQw50
绿野户外Fa0000s2oLwiefuK70
鎏光胶片Fa0000OIJLRukbio80
暖胶最新Fa0000s5KPcqwa2q50
青野最新Fa0000ykWawJisVT70
中调最新Fa0000OM8ZuTHT7y70
AI滤镜-AUTO_COMPOSITE100

整妆素材

注:整妆素材并不是一个实际的参数,是一组参数的集合,这里列出每一个整妆包含的具体参数。

伪素颜

妆容类型妆容名称参数值
眉毛标准眉2
眼影裸杏6
美瞳星星眼4
卧蚕素颜4
睫毛1110
修容立体10
腮红098
唇彩水润4

中式新娘

妆容类型妆容名称妆容颜色参数值
眉毛标准眉BK0130
眼影钓系50
卧蚕自然50
睫毛0180
修容V脸00120
腮红0700120
唇彩正红20

清新韩式

妆容类型妆容名称妆容颜色参数值
眉毛一字眉BK0130
眼影自然60
卧蚕下垂50
睫毛0540
修容鼻影70
腮红0500220
唇彩樱桃50

法式复古

妆容类型妆容名称妆容颜色参数值
眉毛高挑眉BK0150
眼影浅棕100
卧蚕成熟50
睫毛0650
修容古铜50
腮红0700360
唇彩姨妈色80

御姐范儿

妆容类型妆容名称妆容颜色参数值
眉毛英气眉BK0150
眼影性感100
卧蚕成熟60
睫毛0670
修容气质70
腮红0600350
唇彩玫瑰80

裸妆

妆容类型妆容名称妆容颜色参数值
眉毛标准眉BK0110
眼影自然40
卧蚕日常50
修容日常60
腮红0600130
唇彩裸妆50

高级脸

妆容类型妆容名称妆容颜色参数值
眉毛标准眉BK0120
眼影浅棕50
卧蚕月牙50
睫毛0170
修容减龄80
腮红0700330
唇彩正红40

可爱甜美

妆容类型妆容名称妆容颜色参数值
眉毛弯月眉BK0150
眼影浅橘60
卧蚕可爱70
睫毛0570
修容减龄70
腮红0100150
唇彩水蜜桃80

日杂妆

妆容类型妆容名称妆容颜色参数值
眉毛标准眉BR0150
眼影深橘60
卧蚕可爱70
睫毛0160
修容日常50
腮红0700580
唇彩焦糖60

新年妆

妆容类型妆容名称妆容颜色参数值
眉毛标准眉BK0140
眼影新年90
卧蚕月牙50
睫毛0280
修容提拉100
腮红0700140
唇彩姨妈色70

田园

妆容类型妆容名称妆容颜色参数值
唇彩0228
眉毛02BR0135
眼影0156
美瞳0335
卧蚕0221
腮红0300138.5
修容0735
高光眼下提亮14
睫毛0249
妆饰0652

轻泰妆

妆容类型妆容名称妆容颜色参数值
眉毛06BK0128
眼影1656
眼线010149
美瞳0714
卧蚕0242
腮红0600528
修容1235
高光平整28
唇彩1321
睫毛1356

AI滤镜

名称值预览
自然人像1查看预览
浓郁胶片2查看预览
复古文艺3查看预览
清透氧气4查看预览
清新明亮6查看预览
日式冷调7查看预览
柠黄暖调8查看预览

换天空素材

多云

编号名称预览
2130多云1查看预览
2131多云2查看预览
2132多云3查看预览
2133多云4查看预览
2134多云5查看预览
2135多云6查看预览
2136多云7查看预览
2137多云8查看预览
2138多云9查看预览
4192多云10查看预览
4193多云11查看预览
4194多云12查看预览

晴空

编号名称预览
2139晴空1查看预览
2140晴空2查看预览
2141晴空3查看预览
2142晴空4查看预览
2143晴空5查看预览
2144晴空6查看预览
2145晴空7查看预览
4195晴空8查看预览
4196晴空9查看预览
4197晴空10查看预览
4198晴空11查看预览
4199晴空12查看预览
4200晴空13查看预览

黄昏

素材ID名称预览
2146黄昏1查看预览
2147黄昏2查看预览
2148黄昏3查看预览
2149黄昏4查看预览
2150黄昏5查看预览
2151黄昏6查看预览
2152黄昏7查看预览
4201黄昏8查看预览
4202黄昏9查看预览
4203黄昏10查看预览
4204黄昏11查看预览

夜空

编号名称预览
2153夜空1查看预览
2154夜空2查看预览
2155夜空3查看预览
2156夜空4查看预览
4205夜空5查看预览
4206夜空6查看预览
4207夜空7查看预览
4208夜空8查看预览

肤色选择

名称值
原肤0
冷调skin1.png
粉瓷skin2.png
暖调skin3.png
小麦skin4.png
可可色skin5.png

眼神光

id名称图片
yangqi氧气查看预览
qingche清澈查看预览
shencai神采查看预览
qiushui秋水查看预览
lingdong灵动查看预览
shuiguang水光查看预览
jujiao聚焦查看预览
touliang透亮查看预览
xingguang星光查看预览
tongtou通透查看预览

发色选择

ID名称图片
heicha黑茶查看预览
shumeihong树莓红查看预览
haiwanghong海王红查看预览
huizong灰棕查看预览
zangju脏橘查看预览
ziranhei自然黑查看预览
lanzi蓝紫查看预览
heiqiao黑巧查看预览

SDK 调用示例

安装对应语言的签名 SDK。Python 还需安装 requests,PHP 需将 signer.php 放在示例同目录,Java 文件名为 Main.java。

填入 AK、SK、预设 ID 和图片地址即可提交任务。查询时使用提交返回的 data.chain_id。

Python

import json
import requests
from sign_sdk import sign
def api_call_example():
    key = "your_access_key"
    secret = "your_secret_key"
    url = "https://openapi.meitu.com/yunxiu/openapi/chain.json"
    method = "POST"
    headers = {
        "Content-Type": "application/json",
        sign.HeaderHost: "openapi.meitu.com",
    }
    payload = {"media_code": "YOUR_PRESET_ID", "media_data": "https://example.com/portrait.jpg"}
    body = json.dumps(payload, ensure_ascii=False)
    signer = sign.Signer(key, secret)
    signed_request = signer.sign(url, method, headers, body)
    with requests.Session() as session:
        response = session.send(signed_request, timeout=60)
        print("Status:", response.status_code)
        print("Response:", response.text)
if __name__ == "__main__":
    api_call_example()

Go

package main

import (
	"fmt"
	"github.com/mtlab/api/signer"
	"io"
	"net/http"
	"time"
)

func main() {
	key := "your_access_key"
	secret := "your_secret_key"
	signObj := signer.NewSigner(key, secret)
	url := "https://openapi.meitu.com/yunxiu/openapi/chain.json"
	headers := make(http.Header)
	headers.Set(signer.HeaderHost, "openapi.meitu.com")
	headers.Set("Content-Type", "application/json")
	body := `{"media_code":"YOUR_PRESET_ID","media_data":"https://example.com/portrait.jpg"}`
	req, err := signObj.Sign(url, http.MethodPost, headers, body)
	if err != nil {
		fmt.Println("Failed to sign request:", err)
		return
	}
	client := &http.Client{Timeout: 60 * time.Second}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println("Failed to send request:", err)
		return
	}
	defer resp.Body.Close()
	responseBody, err := io.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Failed to read response:", err)
		return
	}
	fmt.Println("Status:", resp.StatusCode)
	fmt.Println("Response:", string(responseBody))
}

PHP

<?php
require_once __DIR__ . '/signer.php';
$key = 'your_access_key';
$secret = 'your_secret_key';
$url = 'https://openapi.meitu.com/yunxiu/openapi/chain.json';
$headers = [
    'Content-Type' => 'application/json',
    'Host' => 'openapi.meitu.com',
];
$payload = ['media_code' => 'YOUR_PRESET_ID', 'media_data' => 'https://example.com/portrait.jpg'];
$body = json_encode($payload, JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR);
$signer = new Signer($key, $secret);
$curl = $signer->sign($url, 'POST', $headers, $body);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
$response = curl_exec($curl);
if ($response === false) {
    echo 'Error: ' . curl_error($curl);
} else {
    echo 'Status: ' . curl_getinfo($curl, CURLINFO_HTTP_CODE) . PHP_EOL;
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($curl);

Java

import com.meitu.openai.common.Signer;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
public class Main {
    public static void main(String[] args) throws Exception {
        Signer signer = new Signer("your_access_key", "your_secret_key");
        String url = "https://openapi.meitu.com/yunxiu/openapi/chain.json";
        String method = "POST";
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/json");
        headers.put(Signer.HeaderHost, "openapi.meitu.com");
        String body = "{\"media_code\": \"YOUR_PRESET_ID\", \"media_data\": \"https://example.com/portrait.jpg\"}";
        Map<String, String> signedHeaders = signer.sign(url, method, headers, body);
        HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
        try {
            connection.setRequestMethod(method);
            connection.setConnectTimeout(10000);
            connection.setReadTimeout(60000);
            connection.setInstanceFollowRedirects(false);
            for (Map.Entry<String, String> header : signedHeaders.entrySet()) {
                connection.setRequestProperty(header.getKey(), header.getValue());
            }
            connection.setDoOutput(true);
            try (OutputStream output = connection.getOutputStream()) {
                output.write(body.getBytes(StandardCharsets.UTF_8));
            }
            int status = connection.getResponseCode();
            InputStream stream = status >= 400
                    ? connection.getErrorStream()
                    : connection.getInputStream();
            System.out.println("Status: " + status);
            if (stream != null) {
                try (InputStream input = stream;
                     ByteArrayOutputStream output = new ByteArrayOutputStream()) {
                    byte[] buffer = new byte[4096];
                    int length;
                    while ((length = input.read(buffer)) != -1) {
                        output.write(buffer, 0, length);
                    }
                    System.out.println("Response: " + output.toString("UTF-8"));
                }
            }
        } finally {
            connection.disconnect();
        }
    }
}

原始参数提交示例

将上文的完整原始请求体保存为 params.json,替换图片地址和处理参数。

Python

import json
import requests
from sign_sdk import sign
def api_call_example():
    key = "your_access_key"
    secret = "your_secret_key"
    url = "https://openapi.meitu.com/yunxiu/openapi/chain.json"
    method = "POST"
    headers = {
        "Content-Type": "application/json",
        sign.HeaderHost: "openapi.meitu.com",
    }
    with open("params.json", encoding="utf-8") as source:
        body = source.read()
    signer = sign.Signer(key, secret)
    signed_request = signer.sign(url, method, headers, body)
    with requests.Session() as session:
        response = session.send(signed_request, timeout=60)
        print("Status:", response.status_code)
        print("Response:", response.text)
if __name__ == "__main__":
    api_call_example()

Go

package main

import (
	"fmt"
	"github.com/mtlab/api/signer"
	"io"
	"net/http"
	"os"
	"time"
)

func main() {
	key := "your_access_key"
	secret := "your_secret_key"
	signObj := signer.NewSigner(key, secret)
	url := "https://openapi.meitu.com/yunxiu/openapi/chain.json"
	headers := make(http.Header)
	headers.Set(signer.HeaderHost, "openapi.meitu.com")
	headers.Set("Content-Type", "application/json")
	data, err := os.ReadFile("params.json")
	if err != nil { panic(err) }
	body := string(data)
	req, err := signObj.Sign(url, http.MethodPost, headers, body)
	if err != nil {
		fmt.Println("Failed to sign request:", err)
		return
	}
	client := &http.Client{Timeout: 60 * time.Second}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println("Failed to send request:", err)
		return
	}
	defer resp.Body.Close()
	responseBody, err := io.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Failed to read response:", err)
		return
	}
	fmt.Println("Status:", resp.StatusCode)
	fmt.Println("Response:", string(responseBody))
}

PHP

<?php
require_once __DIR__ . '/signer.php';
$key = 'your_access_key';
$secret = 'your_secret_key';
$url = 'https://openapi.meitu.com/yunxiu/openapi/chain.json';
$headers = [
    'Content-Type' => 'application/json',
    'Host' => 'openapi.meitu.com',
];
$body = file_get_contents(__DIR__ . '/params.json');
if ($body === false) { throw new RuntimeException('Cannot read params.json'); }
$signer = new Signer($key, $secret);
$curl = $signer->sign($url, 'POST', $headers, $body);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
$response = curl_exec($curl);
if ($response === false) {
    echo 'Error: ' . curl_error($curl);
} else {
    echo 'Status: ' . curl_getinfo($curl, CURLINFO_HTTP_CODE) . PHP_EOL;
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($curl);

Java

import com.meitu.openai.common.Signer;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
public class Main {
    public static void main(String[] args) throws Exception {
        Signer signer = new Signer("your_access_key", "your_secret_key");
        String url = "https://openapi.meitu.com/yunxiu/openapi/chain.json";
        String method = "POST";
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/json");
        headers.put(Signer.HeaderHost, "openapi.meitu.com");
        String body = new String(java.nio.file.Files.readAllBytes(java.nio.file.Paths.get("params.json")), StandardCharsets.UTF_8);
        Map<String, String> signedHeaders = signer.sign(url, method, headers, body);
        HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
        try {
            connection.setRequestMethod(method);
            connection.setConnectTimeout(10000);
            connection.setReadTimeout(60000);
            connection.setInstanceFollowRedirects(false);
            for (Map.Entry<String, String> header : signedHeaders.entrySet()) {
                connection.setRequestProperty(header.getKey(), header.getValue());
            }
            connection.setDoOutput(true);
            try (OutputStream output = connection.getOutputStream()) {
                output.write(body.getBytes(StandardCharsets.UTF_8));
            }
            int status = connection.getResponseCode();
            InputStream stream = status >= 400
                    ? connection.getErrorStream()
                    : connection.getInputStream();
            System.out.println("Status: " + status);
            if (stream != null) {
                try (InputStream input = stream;
                     ByteArrayOutputStream output = new ByteArrayOutputStream()) {
                    byte[] buffer = new byte[4096];
                    int length;
                    while ((length = input.read(buffer)) != -1) {
                        output.write(buffer, 0, length);
                    }
                    System.out.println("Response: " + output.toString("UTF-8"));
                }
            }
        } finally {
            connection.disconnect();
        }
    }
}

查询结果(Query)

将提交响应中的 data.chain_id 填入以下示例的 YOUR_CHAIN_ID,签名后发送 POST 请求查询结果。

Python

import json
import requests
from sign_sdk import sign
def api_call_example():
    key = "your_access_key"
    secret = "your_secret_key"
    url = "https://openapi.meitu.com/yunxiu/openapi/query.json"
    method = "POST"
    headers = {
        "Content-Type": "application/json",
        sign.HeaderHost: "openapi.meitu.com",
    }
    payload = {"chain_id": "YOUR_CHAIN_ID"}
    body = json.dumps(payload, ensure_ascii=False)
    signer = sign.Signer(key, secret)
    signed_request = signer.sign(url, method, headers, body)
    with requests.Session() as session:
        response = session.send(signed_request, timeout=60)
        print("Status:", response.status_code)
        print("Response:", response.text)
if __name__ == "__main__":
    api_call_example()

Go

package main

import (
	"fmt"
	"github.com/mtlab/api/signer"
	"io"
	"net/http"
	"time"
)

func main() {
	key := "your_access_key"
	secret := "your_secret_key"
	signObj := signer.NewSigner(key, secret)
	url := "https://openapi.meitu.com/yunxiu/openapi/query.json"
	headers := make(http.Header)
	headers.Set(signer.HeaderHost, "openapi.meitu.com")
	headers.Set("Content-Type", "application/json")
	body := `{"chain_id":"YOUR_CHAIN_ID"}`
	req, err := signObj.Sign(url, http.MethodPost, headers, body)
	if err != nil {
		fmt.Println("Failed to sign request:", err)
		return
	}
	client := &http.Client{Timeout: 60 * time.Second}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println("Failed to send request:", err)
		return
	}
	defer resp.Body.Close()
	responseBody, err := io.ReadAll(resp.Body)
	if err != nil {
		fmt.Println("Failed to read response:", err)
		return
	}
	fmt.Println("Status:", resp.StatusCode)
	fmt.Println("Response:", string(responseBody))
}

PHP

<?php
require_once __DIR__ . '/signer.php';
$key = 'your_access_key';
$secret = 'your_secret_key';
$url = 'https://openapi.meitu.com/yunxiu/openapi/query.json';
$headers = [
    'Content-Type' => 'application/json',
    'Host' => 'openapi.meitu.com',
];
$payload = ['chain_id' => 'YOUR_CHAIN_ID'];
$body = json_encode($payload, JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR);
$signer = new Signer($key, $secret);
$curl = $signer->sign($url, 'POST', $headers, $body);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
$response = curl_exec($curl);
if ($response === false) {
    echo 'Error: ' . curl_error($curl);
} else {
    echo 'Status: ' . curl_getinfo($curl, CURLINFO_HTTP_CODE) . PHP_EOL;
    echo 'Response: ' . $response . PHP_EOL;
}
curl_close($curl);

Java

import com.meitu.openai.common.Signer;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
public class Main {
    public static void main(String[] args) throws Exception {
        Signer signer = new Signer("your_access_key", "your_secret_key");
        String url = "https://openapi.meitu.com/yunxiu/openapi/query.json";
        String method = "POST";
        Map<String, String> headers = new HashMap<>();
        headers.put("Content-Type", "application/json");
        headers.put(Signer.HeaderHost, "openapi.meitu.com");
        String body = "{\"chain_id\":\"YOUR_CHAIN_ID\"}";
        Map<String, String> signedHeaders = signer.sign(url, method, headers, body);
        HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
        try {
            connection.setRequestMethod(method);
            connection.setConnectTimeout(10000);
            connection.setReadTimeout(60000);
            connection.setInstanceFollowRedirects(false);
            for (Map.Entry<String, String> header : signedHeaders.entrySet()) {
                connection.setRequestProperty(header.getKey(), header.getValue());
            }
            connection.setDoOutput(true);
            try (OutputStream output = connection.getOutputStream()) {
                output.write(body.getBytes(StandardCharsets.UTF_8));
            }
            int status = connection.getResponseCode();
            InputStream stream = status >= 400
                    ? connection.getErrorStream()
                    : connection.getInputStream();
            System.out.println("Status: " + status);
            if (stream != null) {
                try (InputStream input = stream;
                     ByteArrayOutputStream output = new ByteArrayOutputStream()) {
                    byte[] buffer = new byte[4096];
                    int length;
                    while ((length = input.read(buffer)) != -1) {
                        output.write(buffer, 0, length);
                    }
                    System.out.println("Response: " + output.toString("UTF-8"));
                }
            }
        } finally {
            connection.disconnect();
        }
    }
}