API接口文档

版本: 1.0.0 | 最后更新: 2025年3月27日

概述

本文档描述了MV生成API的使用方法,包括请求参数、响应格式和代码示例。

生产一个MV为¥59.00元

认证

所有API请求需要在Header中包含以下认证信息:

Authorization: [联系管理员获得的APIKEY]
Salt: [随机6位数字]

API端点

POST https://ai.qingyunvip.cn/new_full_mv_create

创建新的音乐视频

请求参数

参数 类型 是否必需 描述
img_url string 人物形象URL(清晰正脸半身或全身照,衣着不能过于暴露,服饰不能有蓝色,头部距照片顶部距离不宜过大)
mp3_url string 音频文件URL
srt_url string 字幕文件URL
video_url string 背景视频URL(当值为""时由ai自动生成)
key1 string 音乐关键字1 在“airplane,animals,business,car,clouds,dance,drink,drive earth,family,fashion,fire,flower,funny,kiss,light,love, motorcycle,night,rain,road,romance,sea,smoke,snow,sport,street,trains”中选三个最符合歌词意境的作为关键词
key2 string 音乐关键字2
key3 string 音乐关键字3
sex string 演唱者性别(男、女)

成功响应示例

message为success,代表已经成功开始生产MV,这时候才会扣除费用。
响应代码:200
{
  "downloadurl": "http://47.121.217.1/uploads/MV_6946297691.mp4",
  "info": "已下达了视频生产命令",
  "message": "success",
  "task_id": "MY-taskid6946297691"
}

失败响应示例

message为failed,代表请求已失败,失败的原因包括令牌无效、费用不足以支付视频生产、照片未通过检测等,可参考info返回的内容
响应代码:200
{
  "info": "照片未通过检测",
  "message": "failed",
  "task_id": "1234"
}

重试响应示例

响应代码不是200,可能是网络波动或者是超时等原因引起,需要重新发起请求(注:重新发起请求但salt得保持和上次请求的一致,否则可能导致多次扣费)
响应代码:400
{
  "info": "任务已接收,正在处理",
  "message": "pending",
  "task_id": "1234"
}

Python示例代码

                  import requests
                  import random
                  import time

                  def generate_random_salt():
                      """生成随机 salt 值"""
                      return str(random.randint(100000, 999999))

                  def make_api_request_with_retry(max_retries=10, retry_delay=5):
                      """
                      发送 POST 请求并支持重试

                      参数:
                          max_retries: 最大重试次数 (默认10次)
                          retry_delay: 重试间隔秒数 (默认5秒)
                      """
                      url = "https://ai.qingyunvip.cn/new_full_mv_create"

                      # 请求参数
                      params = {
                          "img_url": "http://www.qingyunvip.cn/uploads/image123.png",#MV主角照片下载地址
                          "mp3_url": "http://www.qingyunvip.cn/uploads/audio123.mp3",#MV歌曲下载地址
                          "srt_url": "http://www.qingyunvip.cn/uploads/srt123.srt",#歌曲字幕文件下载地址
                          "video_url":"",#背景视频下载地址,可为空
                          "key1": "love",#歌曲关键词1
                          "key2": "fire",#歌曲关键词2
                          "key3": "night",#歌曲关键词3
                          "sex": "男"#演唱者性别
                      }

                      # 请求头
                      headers = {
                          "authorization": "APIKEY_248349582",#管理员处获取的apikey
                          "salt": generate_random_salt(),#随机数
                          "Content-Type": "application/x-www-form-urlencoded"
                      }

                      for attempt in range(max_retries):
                          try:
                              print(f"尝试第 {attempt + 1} 次请求...")
                              response = requests.post(
                                  url,
                                  data=params,
                                  headers=headers,
                                  timeout=100  # 设置超时时间
                              )

                              # 打印响应信息
                              print(f"HTTP 状态码: {response.status_code}")
                              print(f"响应内容: {response.text}")

                              # 如果成功则返回响应
                              if response.status_code == 200:
                                  return response

                              # 如果不是200,等待后重试
                              if attempt < max_retries - 1:
                                  print(f"请求失败,{retry_delay}秒后重试...")
                                  time.sleep(retry_delay)

                          except requests.exceptions.RequestException as e:
                              print(f"请求异常: {str(e)}")
                              if attempt < max_retries - 1:
                                  print(f"{retry_delay}秒后重试...")
                                  time.sleep(retry_delay)

                      print(f"请求失败,已达最大重试次数 {max_retries} 次")
                      return None

                  # 调用函数发送请求
                  response = make_api_request_with_retry()

                  # 处理最终响应
                  if response and response.status_code == 200:
                      print("请求成功!")
                      print(response.json())  # 如果是JSON响应
                  else:
                      print("请求最终失败")

                

API端点

GET https://ai.qingyunvip.cn/new_full_mv_back

获取MV生产状态

请求参数

参数 类型 是否必需 描述
task_id string 生产视频时获取的任务id
downloadurl string 生产视频时获取的临时下载地址
openid string 自定义的id,便于日志查询

成功响应示例

    success为True,代表视频已经可以下载。
    响应代码:200
    {
    "success":True,#视频可以下载
    "videoUrl":"https://ai.qingyunvip.cn/uploads/MV_12345.mp4",#视频下载地址
    "info":"succeeded"#提示信息
    }

失败响应示例

    success为False,代表视频还在生产中,或者已生产失败
    响应代码:200
    {
      "success":False,#视频还未就绪
      "info":"TIMEOUT"#视频生产已超时,代表已失败
    }

重试响应示例

    success为False,代表视频还在生产中,或者已生产失败
    响应代码:200
    {
      "success":False,#视频还未就绪
      "info":"PENDING"#视频还在生产中
    }

错误代码

代码 描述 解决方案
400 网络波动 尝试重新发起请求
注意:所有API请求都需要使用HTTPS协议。