Download OpenAPI specification:
此文档是 listenhub 服务的后端接口文档,适用场景是用于 APP 端的接口调用
{- "id": "string",
- "username": "string",
- "nickname": "string",
- "avatar": "string",
- "email": "string",
- "activeStatus": 0,
- "stripeCustomerId": "string",
- "registerSource": "apple",
- "provisionStatus": true,
- "scopes": [
- "premium_voice"
]
}更新用户信息
| nickname | string 昵称 |
| avatar | string 头像 |
{- "nickname": "string",
- "avatar": "string"
}{- "code": 0,
- "message": "string",
- "data": { }
}切换用户配置
| onboardingWeb | boolean 是否开启Web端引导 |
| podcastVoiceExpiredToast | boolean 是否开启播客语音过期提示 |
| flowspeechVoiceExpiredToast | boolean 是否开启流式语音过期提示 |
| podcastUseTokenToast | boolean 是否开启播客使用Token提示 |
{- "onboardingWeb": true,
- "podcastVoiceExpiredToast": true,
- "flowspeechVoiceExpiredToast": true,
- "podcastUseTokenToast": true
}用户每日签到并获得积分奖励
| platform required | string Enum: "listenhub" "nextlab" "banana-lab" 平台类型 |
{- "platform": "listenhub"
}{- "code": 0,
- "message": "string",
- "data": {
- "checkinDate": "string",
- "rewardCredits": 0,
- "freeUsages": {
- "property1": {
- "remaining": 0,
- "unlimited": true,
- "resourceType": "string",
- "resourceKey": "string",
- "unit": "string"
}, - "property2": {
- "remaining": 0,
- "unlimited": true,
- "resourceType": "string",
- "resourceKey": "string",
- "unit": "string"
}
}
}
}获取订阅用量
| page | integer >= 1 Default: 1 页码 |
| pageSize | integer [ 1 .. 100 ] Default: 10 每页数量 |
{- "code": 0,
- "message": "string",
- "data": {
- "items": [
- {
- "associateId": "string",
- "credits": 0,
- "type": "increment",
- "creditType": "monthly",
- "event": "string",
- "createdAt": 0,
- "eventTitleZh": "string",
- "eventTitleEn": "string"
}
], - "pagination": {
- "page": 0,
- "pageSize": 0,
- "total": 0
}
}
}获取指定用户的公开信息(昵称、头像)
| userId required | string^[0-9a-fA-F]{24}$ 用户 ID |
{- "id": "string",
- "nickname": "string",
- "avatar": "string",
- "createdAt": 0,
- "subscriptionStatus": "string",
- "subscriptionPlan": {
- "id": "string",
- "name": "string",
- "duration": "string",
- "platform": "string",
- "application": "string",
- "region": "string"
}
}mobile 第三方登录回调
| code required | any 第三方登录授权码 |
| providerType required | string Enum: "google-mobile" "apple-mobile" 第三方登录平台类型 |
{- "code": 0,
- "message": "string",
- "data": {
- "accessToken": "string",
- "refreshToken": "string",
- "expiresIn": 0
}
}获取 token
| grantType | string Value: "refresh_token" 授权类型 |
| refreshToken | string 刷新令牌 |
{- "grantType": "refresh_token",
- "refreshToken": "string"
}{- "code": 0,
- "message": "string",
- "data": {
- "accessToken": "string",
- "refreshToken": "string",
- "expiresIn": 0
}
}发送邮箱验证码,需要提供 Cloudflare Turnstile 验证 token。 此接口增加了机器人验证,提高安全性。
| email required | string <email> 邮箱地址 |
| turnstileToken required | string Cloudflare Turnstile 验证返回的 token |
{- "email": "user@example.com",
- "turnstileToken": "0.AAAAAAAAAA_BBBBBBBBBBB.CCCCCCCCCC-1234567890-D"
}{- "code": 0,
- "message": "string",
- "data": {
- "success": true
}
}邮箱验证码登录
string 邮箱 | |
| code | string 验证码 |
{- "email": "string",
- "code": "string"
}{- "code": 0,
- "message": "string",
- "data": {
- "accessToken": "string",
- "refreshToken": "string",
- "expiresIn": 0
}
}根据输入文本内容和图片数量,预估生成 Episode 所需的脚本、音频和图片积分
| query | string Default: "" 输入文本内容 |
| imageCount | integer >= 0 Default: 0 图片数量 |
| visualOnly | boolean Default: false 仅视觉模式,不需要音频计算,audioCredits 将返回 0 |
{- "query": "",
- "imageCount": 0,
- "visualOnly": false
}{- "code": 0,
- "message": "string",
- "data": {
- "scriptsCredits": 0,
- "audioCredits": 0,
- "imagesCredits": 0,
- "totalCredits": 0
}
}获取分类列表,支持按产品和状态筛选
| productId required | string 产品ID |
| activeStatus | string Enum: "active" "inactive" 激活状态 |
{- "code": 0,
- "message": "string",
- "data": {
- "items": [
- {
- "key": "string",
- "name": {
- "zh": "教育",
- "en": "Education"
}, - "productId": "string",
- "weight": 0,
- "activeStatus": "active"
}
]
}
}获取画廊中的单集列表,支持按产品、语言、分类筛选
| page | integer >= 1 Default: 1 页码 |
| pageSize | integer [ 1 .. 100 ] Default: 10 每页数量 |
| productId required | string 产品ID |
| language | string Enum: "zh" "en" 语言 |
| category | string 分类键 |
{- "code": 0,
- "message": "string",
- "data": {
- "items": [
- {
- "episodeId": "string",
- "id": "string",
- "language": "string",
- "categories": [
- "string"
], - "weight": 0,
- "title": "string",
- "cover": "string",
- "audioUrl": "string",
- "audioDuration": 0,
- "videoUrl": "string",
- "input": "string",
- "mode": "quick",
- "speakerNames": [
- "string"
], - "speakers": [
- {
- "name": "string",
- "speakerInnerId": "string",
- "gender": "string"
}
], - "inputSources": [
- {
- "type": "string",
- "uri": "string",
- "content": "string",
- "metadata": {
- "mimeType": "string",
- "name": "string",
- "size": 0,
- "faviconUrl": "string",
- "ogImageUrl": "string",
- "ogSiteName": "string",
- "ogTitle": "string",
- "title": "string"
}
}
], - "imageConfig": {
- "size": "2K",
- "aspectRatio": "1:1"
}, - "videoParams": {
- "model": "string",
- "resolution": "string",
- "ratio": "string",
- "duration": 0,
- "inputVideoDuration": 0,
- "content": [
- { }
]
}
}
], - "pagination": {
- "page": 0,
- "pageSize": 0,
- "total": 0
}
}
}获取单集列表,支持分页和时间排序
| page | integer >= 1 Default: 1 页码,从1开始 |
| pageSize | integer [ 1 .. 100 ] Default: 10 每页数量 |
| productId | string 产品ID筛选(可选) |
| keyword | string 搜索当前用户自己的单集标题;匹配 episode.title 或三类 topic.title,大小写不敏感;服务端会 trim 并截断到 100 字符 |
| sortBy | string Default: "created_at" Value: "created_at" 排序字段 |
| sortOrder | string Default: "desc" Enum: "asc" "desc" 排序方向 |
{- "code": 0,
- "message": "string",
- "data": {
- "items": [
- {
- "id": "string",
- "type": "string",
- "status": "string",
- "createdAt": 0,
- "title": "string",
- "cover": "string",
- "audioUrl": "string",
- "audioDuration": 0,
- "videoUrl": "string",
- "failCode": 0,
- "summary": "string",
- "processStatus": "success",
- "stepStatus": "string",
- "playedStatus": 0,
- "slidesUrl": "string",
- "slidesStatus": 0,
- "creator": {
- "nickname": "string",
- "avatar": "string"
}, - "playCount": 0,
- "generationType": "string",
- "enabledShare": true,
- "mode": "quick",
- "speakers": [
- {
- "name": "string",
- "speakerInnerId": "string",
- "gender": "string"
}
], - "language": "zh",
- "input": "string",
- "inputSources": [
- {
- "type": "string",
- "uri": "string",
- "content": "string",
- "metadata": {
- "mimeType": "string",
- "name": "string",
- "size": 0,
- "faviconUrl": "string",
- "ogImageUrl": "string",
- "title": "string"
}
}
], - "imageConfig": {
- "size": "2K",
- "aspectRatio": "1:1"
}
}
], - "pagination": {
- "page": 0,
- "pageSize": 0,
- "total": 0
}
}
}批量删除指定ID的单集(单批最多 100 个)。若单集关联视频生成任务,会一并软删除该任务,并对进行中(pending/generating)的任务退还积分。
| ids | Array of strings <= 100 items 要删除的单集ID列表 |
{- "ids": [
- "episode-001",
- "episode-002"
]
}{- "code": 0,
- "message": "string",
- "data": {
- "success": true
}
}{- "code": 0,
- "message": "string",
- "data": {
- "id": "string",
- "ownerMatch": true,
- "status": "string",
- "createdAt": 0,
- "completedTime": 0,
- "cover": "string",
- "audioUrl": "string",
- "audioDuration": 0,
- "summary": "string",
- "message": "string",
- "failCode": 0,
- "title": "string",
- "insight": "string",
- "outline": "string",
- "subtitlesUrl": "string",
- "enabledShare": true,
- "source": {
- "type": "string",
- "content": {
- "text": "string",
- "enabledDeepSearch": true,
- "deepsearchMode": "deep",
- "url": "string",
- "fileUrl": "string",
- "fileName": "string",
- "deepSearchContent": "string",
- "references": [
- {
- "type": "string",
- "title": "string",
- "url": "string",
- "favicon": "string"
}
]
}
}, - "processStatus": "success",
- "stepStatus": "success",
- "scripts": [
- {
- "speakerInnerId": "string",
- "content": "string",
- "speakerName": "string"
}
], - "slidesStatus": 0,
- "creator": {
- "nickname": "string",
- "avatar": "string"
}, - "playCount": 0,
- "mode": "quick"
}
}{- "code": 0,
- "message": "string",
- "data": {
- "type": "speech",
- "id": "string",
- "ownerMatch": true,
- "createdAt": 0,
- "completedTime": 0,
- "title": "string",
- "insight": "string",
- "outline": "string",
- "subtitlesUrl": "string",
- "enabledShare": true,
- "cover": "string",
- "audioUrl": "string",
- "audioDuration": 0,
- "scripts": [
- {
- "speakerInnerId": "string",
- "content": "string",
- "speakerName": "string"
}
], - "summary": "string",
- "credits": 0,
- "message": "string",
- "failCode": 0,
- "stepStatus": "string",
- "slidesStatus": 0,
- "slidesUrl": "string",
- "playedStatus": 0,
- "creator": {
- "nickname": "string",
- "avatar": "string"
}, - "playCount": 0,
- "mode": "quick",
- "processStatus": "pending",
- "input": {
- "query": "string",
- "sources": [
- {
- "type": "string",
- "uri": "string",
- "content": "string",
- "scrapeStatus": true,
- "metadata": {
- "mimeType": "string",
- "name": "string",
- "size": 0,
- "faviconUrl": "string",
- "ogImageUrl": "string",
- "ogSiteName": "string",
- "ogTitle": "string",
- "title": "string"
}
}
]
}, - "preprocessResult": {
- "deepsearchEnabled": true,
- "content": "string",
- "references": [
- {
- "type": "string",
- "url_citation": {
- "title": "string",
- "url": "string",
- "favicon": "string"
}
}
]
}, - "pages": [
- {
- "pageNumber": 0,
- "text": "string",
- "imageUrl": "string",
- "audioTimestamp": 0
}
], - "videoUrl": "string",
- "videoStatus": "not_generated"
}
}获取单集详情信息 V4
| episodeId required | string^[0-9a-fA-F]{24}$ 单集ID (24位十六进制字符串) |
{- "code": 0,
- "message": "string",
- "data": {
- "id": "string",
- "type": "string",
- "ownerMatch": true,
- "sourceType": "string",
- "createdAt": 0,
- "completedAt": 0,
- "enabledShare": true,
- "playedStatus": 0,
- "creator": {
- "nickname": "string",
- "avatar": "string"
}, - "playCount": 0,
- "input": {
- "query": "string",
- "sources": [
- {
- "type": "string",
- "uri": "string",
- "content": "string",
- "scrapeStatus": true,
- "metadata": {
- "mimeType": "string",
- "name": "string",
- "size": 0,
- "faviconUrl": "string",
- "ogImageUrl": "string",
- "ogSiteName": "string",
- "ogTitle": "string",
- "title": "string"
}
}
]
}, - "seoMeta": {
- "keywords": "string",
- "description": "string"
}, - "credits": 0,
- "failCode": 0,
- "processStatus": "string",
- "language": "string",
- "speakers": [
- {
- "name": "string",
- "speakerInnerId": "string",
- "gender": "string"
}
], - "topicDetail": {
- "title": {
- "inputType": "text",
- "text": "string"
}, - "outline": {
- "inputType": "text",
- "text": "string"
}, - "cover": {
- "inputType": "text",
- "text": "string"
}, - "audio": {
- "inputType": "object",
- "data": {
- "audioUrl": "string",
- "audioDuration": 0,
- "audioHlsUrl": "string"
}
}, - "video": {
- "inputType": "object",
- "data": {
- "videoUrl": "string",
- "videoStatus": "string"
}
}, - "pages": {
- "inputType": "object",
- "data": [
- {
- "text": "string",
- "pageNumber": 0,
- "imageUrl": "string",
- "audioTimestamp": 0
}
]
}, - "preprocessResult": {
- "inputType": "object",
- "data": {
- "deepsearchEnabled": true,
- "content": "string",
- "references": [
- {
- "type": "string",
- "url_citation": {
- "title": "string",
- "exactQuote": "string",
- "url": "string",
- "dateTime": "string",
- "favicon": "string"
}
}
]
}
}, - "scripts": {
- "inputType": "object",
- "data": [
- {
- "text": "string",
- "speakerInnerId": "string"
}
]
}, - "seoMeta": {
- "inputType": "object",
- "data": {
- "keywords": "string",
- "description": "string"
}
}, - "slides": {
- "inputType": "object",
- "data": {
- "slidesUrl": "string",
- "slidesStatus": "string"
}
}, - "subtitles": {
- "subtitlesUrl": "string"
}
}
}
}获取单集详情信息 V5 (优化的数据结构)
| episodeId required | string^[0-9a-fA-F]{24}$ 单集ID (24位十六进制字符串) |
{- "code": 0,
- "message": "string",
- "data": {
- "id": "string",
- "generationMode": "quick",
- "generationType": "podcast",
- "sseEvents": [
- "outline"
], - "ownerMatch": true,
- "sourceType": "string",
- "createdAt": 0,
- "completedAt": 0,
- "enabledShare": true,
- "playedStatus": 0,
- "creator": {
- "nickname": "string",
- "avatar": "string"
}, - "playCount": 0,
- "imageConfig": {
- "size": "2K",
- "aspectRatio": "1:1"
}, - "input": {
- "query": "string",
- "sources": [
- {
- "type": "string",
- "uri": "string",
- "content": "string",
- "scrapeStatus": true,
- "metadata": {
- "mimeType": "string",
- "name": "string",
- "size": 0,
- "faviconUrl": "string",
- "ogImageUrl": "string",
- "ogSiteName": "string",
- "ogTitle": "string",
- "title": "string"
}
}
]
}, - "seoMeta": {
- "keywords": "string",
- "description": "string"
}, - "credits": 0,
- "failCode": 0,
- "processStatus": "string",
- "language": "string",
- "speakers": [
- {
- "name": "string",
- "speakerInnerId": "string",
- "gender": "string"
}
], - "topicDetail": {
- "title": {
- "inputType": "object",
- "data": "string"
}, - "outline": {
- "inputType": "object",
- "data": "string"
}, - "cover": {
- "inputType": "object",
- "data": "string"
}, - "audio": {
- "inputType": "object",
- "data": {
- "audioUrl": "string",
- "audioDuration": 0,
- "audioHlsUrl": "string"
}
}, - "video": {
- "inputType": "object",
- "data": {
- "videoUrl": "string",
- "videoStatus": "string"
}
}, - "pages": {
- "inputType": "object",
- "data": [
- {
- "text": "string",
- "pageNumber": 0,
- "imageUrl": "string",
- "audioTimestamp": 0
}
]
}, - "preprocessResult": {
- "inputType": "object",
- "data": {
- "deepsearchEnabled": true,
- "content": "string",
- "references": [
- {
- "type": "string",
- "url_citation": {
- "title": "string",
- "exactQuote": "string",
- "url": "string",
- "dateTime": "string",
- "favicon": "string"
}
}
]
}
}, - "scripts": {
- "inputType": "object",
- "data": [
- {
- "content": "string",
- "speakerInnerId": "string"
}
]
}, - "seoMeta": {
- "inputType": "object",
- "data": {
- "keywords": "string",
- "description": "string"
}
}, - "slides": {
- "inputType": "object",
- "data": {
- "slidesUrl": "string",
- "slidesStatus": "string"
}
}, - "subtitles": {
- "subtitlesUrl": "string"
}
}
}
}获取指定事件的流式数据 V5 (支持 script_generate 和 outline_generate)
| episodeId required | string^[0-9a-fA-F]{24}$ 单集ID (24位十六进制字符串) |
| event required | string Enum: "scripts" "outline" Example: event=scripts 事件类型 |
id: 689ef06042a332af99cd5781 event: script_generate data: {"chunk":"突然变成了一副巨型水印框。"} id: 689ef06042a332af99cd5781 event: script_generate data: {"chunk":"这栋百年建筑的每一扇窗户"} id: 689ef06042a332af99cd5781 event: script_generate data: {"chunk":"[END]"}
获取单集的重混相关数据,用于创建新单集时预填充输入信息。 当前仅支持 storybook 类型单集。 访问条件:单集为公开分享状态(enabledShare=true)或为当前用户所有
| episodeId required | string^[0-9a-fA-F]{24}$ 单集ID (24位十六进制字符串) |
{- "code": 0,
- "message": "string",
- "data": {
- "input": "string",
- "inputSources": [
- {
- "type": "url",
- "uri": "string",
- "content": "string",
- "metadata": {
- "mimeType": "string",
- "name": "string",
- "size": 0,
- "faviconUrl": "string",
- "ogImageUrl": "string",
- "ogSiteName": "string",
- "title": "string"
}
}
], - "imageConfig": {
- "size": "2k",
- "aspectRatio": "16:9"
}, - "language": "en",
- "mode": "story",
- "style": "string",
- "styleOverride": "string"
}
}{- "code": 0,
- "message": "string",
- "data": {
- "type": "speech",
- "id": "string",
- "ownerMatch": true,
- "createdAt": 0,
- "completedAt": 0,
- "enabledShare": true,
- "playedStatus": 0,
- "creator": {
- "nickname": "string",
- "avatar": "string"
}, - "playCount": 0,
- "input": {
- "query": "string",
- "sources": [
- {
- "type": "string",
- "uri": "string",
- "content": "string",
- "scrapeStatus": true,
- "metadata": {
- "mimeType": "string",
- "name": "string",
- "size": 0,
- "faviconUrl": "string",
- "ogImageUrl": "string",
- "ogSiteName": "string",
- "ogTitle": "string",
- "title": "string"
}
}
]
}, - "credits": 0,
- "seoMeta": {
- "keywords": "string",
- "description": "string"
}
}
}{- "code": 0,
- "message": "string",
- "data": {
- "processStatus": "pending",
- "message": "",
- "failCode": 0,
- "currentEvents": [
- {
- "signalId": "688c9a27348f001e707ba331",
- "event": "source_generate",
- "eventType": "podcast",
- "eventStatus": "success",
- "inputType": "object"
}
]
}
}获取事件流式数据 V3
| episodeId required | string 单集ID |
| event required | string Example: event=script_generate,outline_generate 事件类型(逗号分隔) |
id: 689ef06042a332af99cd5781 event: script_generate data: {"chunk":"突然变成了一副巨型水印框。"} id: 689ef06042a332af99cd5781 event: script_generate data: {"chunk":"这栋百年建筑的每一扇窗户"} id: 689ef06042a332af99cd5781 event: script_generate data: {"chunk":"[END]"}
根据episodeId和events批量获取事件数据(只有非流式数据返回)
| episodeId required | string 单集ID |
| event required | string Example: event=tag_generate,source_generate,title_generate,script_generate,outline_generate,audio_generate 事件类型 (逗号分隔) |
{- "code": 0,
- "message": "string",
- "data": {
- "events": {
- "tag_generate": [
- "string"
], - "source_generate": {
- "cover": "string",
- "deepsearchEnable": true,
- "content": "string",
- "references": [
- {
- "type": "string",
- "url_citation": {
- "title": "string",
- "url": "string",
- "favicon": "string"
}
}
]
}, - "title_generate": "string",
- "outline_generate": "string",
- "script_generate": "string",
- "audio_generate": {
- "audioDuration": 0,
- "audioUrl": "string",
- "audioSseUrl": "string"
}, - "storybook_cover_generate": "string",
- "storybook_plan_generate": {
- "pages": [
- {
- "context": "string",
- "emotion": "string",
- "imagePrompt": "string",
- "pageNumber": 0,
- "text": "string",
- "referencedCharacters": [
- "string"
]
}
]
}, - "storybook_image_generate": {
- "pages": [
- {
- "context": "string",
- "emotion": "string",
- "imagePrompt": "string",
- "pageNumber": 0,
- "text": "string",
- "referencedCharacters": [
- "string"
], - "imageUrl": "string"
}
]
}, - "storybook_video_generate": {
- "videoUrl": "string"
}
}
}
}流式语音
Array of objects 来源 | |
object 模板配置(可选) |
{- "sources": [
- {
- "type": "string",
- "content": "string",
- "uri": "string",
- "metadata": {
- "mimeType": "string",
- "name": "string",
- "size": 0
}
}
], - "template": {
- "type": "flowspeech",
- "mode": "string",
- "speakers": [
- "string"
], - "language": "string"
}
}{- "code": 0,
- "message": "string",
- "data": {
- "episodeId": "string"
}
}编辑单集内容,生成新的音频
| type required | string Enum: "podcast" "flowspeech" 类型 podcast播客, flowspeech流式语音 |
required | Array of objects = 1 items 语音数组(目前限制1个) |
| language required | string 语言 |
required | Array of objects 脚本数组 |
| sourceEpisodeId | string 源单集ID(可选) |
{- "type": "podcast",
- "speakers": [
- {
- "name": "string",
- "speakerInnerId": "string"
}
], - "language": "string",
- "scripts": [
- {
- "text": "string",
- "speakerInnerId": "string"
}
], - "sourceEpisodeId": "string"
}{- "code": 0,
- "message": "string",
- "data": {
- "episodeId": "string"
}
}更新单集的标题
| episodeId required | string 单集ID |
| title required | string 单集标题 |
{- "title": "My Episode Title"
}{- "code": 0,
- "message": "string",
- "data": {
- "success": true
}
}重试失败的单集,会复制原单集和相关的 topic 数据,创建新的单集并重新开始生成流程。 原单集将被删除,返回新创建的单集 ID。
支持的单集类型:
注意:只有状态为失败的单集才能重试。
| episodeId required | string^[0-9a-fA-F]{24}$ 失败的单集ID |
{- "code": 0,
- "message": "string",
- "data": {
- "episodeId": "507f1f77bcf86cd799439011"
}
}集成多种来源创建单集
| query | string 查询内容 |
| type | string Enum: "podcast-solo" "podcast-duo" 播客类型 |
Array of objects 来源列表 | |
object 模板配置(可选) |
{- "query": "string",
- "type": "podcast-solo",
- "sources": [
- {
- "type": "url",
- "uri": "string",
- "content": "string",
- "metadata": {
- "mimeType": "string",
- "name": "string",
- "size": 0,
- "title": "string",
- "image": "string",
- "site_name": "string",
- "favicon": "string",
- "url": "string"
}
}
], - "template": {
- "type": "podcast",
- "mode": "string",
- "speakers": [
- "string"
], - "language": "string"
}
}{- "code": 0,
- "message": "string",
- "data": {
- "episodeId": "string"
}
}通过故事书创建单集
| query | string 查询内容 |
Array of objects 来源列表 | |
| style | string 风格(可选) |
object 图片配置(可选,兼容旧版本) | |
object 模板配置(可选) |
{- "query": "string",
- "sources": [
- {
- "type": "url",
- "uri": "string",
- "content": "string",
- "metadata": {
- "mimeType": "string",
- "name": "string",
- "size": 0,
- "title": "string",
- "image": "string",
- "site_name": "string",
- "favicon": "string",
- "url": "string"
}
}
], - "style": "string",
- "imageConfig": {
- "size": "2K",
- "aspectRatio": "1:1",
- "pageCount": 0
}, - "template": {
- "type": "storybook",
- "mode": "string",
- "speakers": [
- "string"
], - "language": "string",
- "style": "string",
- "size": "2K",
- "aspectRatio": "1:1"
}
}{- "code": 0,
- "message": "string",
- "data": {
- "episodeId": "string"
}
}获取故事书的图片编辑历史记录(pageImages)。 如果 pageImages 为空,会从 pages 数组初始化,将原始图片写入。 返回的数组按创建时间倒序排列(最新的在前)。
| episodeId required | string 单集ID |
{- "code": 0,
- "message": "string",
- "data": {
- "items": [
- {
- "_id": "string",
- "type": "generated",
- "status": "pending",
- "targetImageIndex": 0,
- "imageUrl": "string",
- "downloadUrl": "string",
- "jpegUrl": "string",
- "mimeType": "string",
- "editQuery": "string",
- "failMsg": "string",
- "createdAt": 0,
- "updatedAt": 0
}
]
}
}为故事书的指定页面生成新图片,加入编辑历史记录。 生成过程为异步操作,返回 imageId 用于后续查询状态。 图片生成完成后会更新到 topic.pageImages 数组中。
| episodeId required | string 单集ID |
| targetImageIndex required | integer >= 0 目标页面索引(从0开始) |
| editQuery | string 编辑提示词(可选) |
Array of objects 参考图片列表(可选,用户上传的参考图) | |
| aspectRatio | string Enum: "1:1" "9:16" "16:9" "4:3" "2:3" "3:2" "3:4" "21:9" 图片宽高比(可选) |
| size | string Enum: "2K" "4K" 图片尺寸(可选,默认使用 storybook 创建时的设置) |
{- "targetImageIndex": 0,
- "editQuery": "string",
- "referenceImages": [
- {
- "uri": "string",
- "metadata": {
- "mimeType": "string"
}
}
], - "aspectRatio": "1:1",
- "size": "2K"
}{- "code": 0,
- "message": "string",
- "data": {
- "imageId": "string"
}
}将某个图片应用到故事书的指定页面。 图片可以来自 pageImages 编辑历史记录或用户上传的图片URL。
| episodeId required | string 单集ID |
| index required | integer >= 0 页面索引(从0开始) |
| imageUrl required | string 要应用的图片URL |
{- "imageUrl": "string"
}{- "code": 0,
- "message": "string",
- "data": {
- "success": true
}
}上传用户自定义图片,直接作为 pageImages 的数据源,不需要 AI 生成。 适用于用户已有图片想要替换页面图片的场景。
| episodeId required | string 单集ID |
| targetImageIndex required | integer >= 0 目标页面索引(从0开始) |
| imageUrl required | string <uri> 用户上传的图片URL |
{- "targetImageIndex": 0,
}{- "code": 0,
- "message": "string",
- "data": {
- "imageId": "string"
}
}通过文本内容创建单集
| text required | string 文本内容 |
| enabledDeepSearch | boolean Default: false 是否开启搜索 |
| deepsearchMode | string Enum: "deep" "fast" 深度搜索模式 |
{- "text": "string",
- "enabledDeepSearch": false,
- "deepsearchMode": "deep"
}{- "code": 0,
- "message": "string",
- "data": {
- "episodeId": "string"
}
}通过URL地址创建单集
| url required | string 网页地址 |
| duration | string Default: "short" Enum: "short" "long" 音频时长 |
object 模板配置(可选) |
{- "url": "string",
- "duration": "short",
- "template": {
- "type": "podcast",
- "mode": "string",
- "speakers": [
- "string"
], - "language": "string"
}
}{- "code": 0,
- "message": "string",
- "data": {
- "episodeId": "string"
}
}通过已上传的文件创建单集
| fileUrl required | string 已上传的文件地址 |
| fileName required | string 文件名 |
{- "fileUrl": "string",
- "fileName": "string"
}{- "code": 0,
- "message": "string",
- "data": {
- "episodeId": "string"
}
}根据语言获取视频风格配置列表,用于 storybook 视频生成时选择风格
| language required | string Enum: "zh" "en" 语言 |
{- "code": 0,
- "message": "string",
- "data": {
- "items": [
- {
- "mode": "story",
- "bestFor": "string",
- "styles": [
- {
- "id": "string",
- "label": "string",
- "description": "string",
- "bestFor": "string",
- "preview": "string"
}
]
}
]
}
}获取公开的画廊图片列表,支持分页
| imageId | string 图片 ID(用于定位到特定图片) |
| page | integer >= 1 Default: 1 页码 |
| pageSize | integer [ 1 .. 100 ] Default: 10 每页数量 |
{- "code": 0,
- "message": "",
- "data": {
- "items": [
- {
- "id": "696846efc0b512924c1189c6",
- "referenceImageUrls": [
], - "prompt": "给参考图中的角色生成一张立绘",
- "aspectRatio": "16:9",
- "imageSize": "2K",
- "createdAt": 1768441583909,
- "tags": [
- "featured_image"
],
}
], - "pagination": {
- "total": 163,
- "page": 1,
- "pageSize": 10
}
}
}{- "code": 0,
- "message": "string",
- "data": {
- "id": "string",
- "ownerMatch": true,
- "createdAt": 0,
- "completedTime": 0,
- "title": "string",
- "insight": "string",
- "outline": "string",
- "subtitlesUrl": "string",
- "enabledShare": true,
- "cover": "string",
- "audioUrl": "string",
- "audioDuration": 0,
- "scripts": [
- {
- "speakerInnerId": "string",
- "content": "string",
- "speakerName": "string"
}
], - "summary": "string",
- "message": "string",
- "failCode": 0,
- "stepStatus": "string",
- "slidesStatus": 0,
- "slidesUrl": "string",
- "playedStatus": 0,
- "creator": {
- "nickname": "string",
- "avatar": "string"
}, - "playCount": 0,
- "mode": "quick",
- "processStatus": "pending",
- "input": {
- "query": "string",
- "sources": [
- {
- "type": "string",
- "uri": "string",
- "content": "string",
- "scrapeStatus": true,
- "metadata": {
- "mimeType": "string",
- "name": "string",
- "size": 0
}
}
]
}, - "preprocessResult": {
- "deepsearchEnabled": true,
- "content": "string",
- "references": [
- {
- "type": "string",
- "url_citation": {
- "title": "string",
- "url": "string",
- "favicon": "string"
}
}
]
}
}
}获取探索内容列表,支持分页和标签筛选
| page | integer >= 1 Default: 1 页码,从1开始 |
| pageSize | integer [ 1 .. 100 ] Default: 14 每页数量 |
| tag | string 标签标识(不传则返回全部) |
| language | string Enum: "zh" "en" 语言 |
{- "code": 0,
- "message": "string",
- "data": {
- "items": [
- {
- "id": "string",
- "status": "published",
- "createdAt": 0,
- "cover": "string",
- "audioUrl": "string",
- "audioDuration": 0,
- "title": "string",
- "summary": "string",
- "tags": [
- "string"
], - "processStatus": "success",
- "stepStatus": "success",
- "creator": {
- "nickname": "string",
- "avatar": "string"
}, - "slidesUrl": "string",
- "slidesStatus": 0,
- "playCount": 0,
- "mode": "quick"
}
], - "pagination": {
- "page": 0,
- "pageSize": 0,
- "total": 0
}
}
}{- "code": 0,
- "message": "string",
- "data": {
- "id": "string",
- "ownerMatch": true,
- "status": "string",
- "createdAt": 0,
- "completedTime": 0,
- "cover": "string",
- "audioUrl": "string",
- "audioDuration": 0,
- "summary": "string",
- "message": "string",
- "failCode": 0,
- "title": "string",
- "insight": "string",
- "outline": "string",
- "subtitlesUrl": "string",
- "enabledShare": true,
- "source": {
- "type": "string",
- "content": {
- "text": "string",
- "enabledDeepSearch": true,
- "deepsearchMode": "deep",
- "url": "string",
- "fileUrl": "string",
- "fileName": "string",
- "deepSearchContent": "string",
- "references": [
- {
- "type": "string",
- "title": "string",
- "url": "string",
- "favicon": "string"
}
]
}
}, - "processStatus": "success",
- "stepStatus": "success",
- "scripts": [
- {
- "speakerInnerId": "string",
- "content": "string",
- "speakerName": "string"
}
], - "slidesStatus": 0,
- "creator": {
- "nickname": "string",
- "avatar": "string"
}, - "playCount": 0,
- "mode": "quick"
}
}获取文件上传的预签名 URL。支持上传音集文件、用户头像和参考图片
| fileKey | string 文件 key |
| contentType | string 文件类型 |
| category | string Default: "episode" Enum: "episode" "avatar" "banana" 文件分类 (episode=音集, avatar=头像, banana=参考图片) |
{- "fileKey": "string",
- "contentType": "string",
- "category": "episode"
}{- "code": 0,
- "message": "string",
- "data": {
- "presignedUrl": "string",
- "fileUrl": "string"
}
}获取上传参考图片的预签名地址和文件 URL
| contentType required | string 文件类型(如 image/png) |
{- "contentType": "string"
}{- "presignedUrl": "string",
- "fileUrl": "string"
}{- "data": {
- "subscriptionProductId": "string",
- "subscriptionStatus": "free",
- "usageAvailableLimitedTimeCredits": 0,
- "totalAvailableCredits": 0,
- "freeUsages": {
- "property1": {
- "remaining": 0,
- "unlimited": true,
- "resourceType": "string",
- "resourceKey": "string",
- "unit": "string"
}, - "property2": {
- "remaining": 0,
- "unlimited": true,
- "resourceType": "string",
- "resourceKey": "string",
- "unit": "string"
}
}, - "usageTotalMonthlyCredits": 0,
- "usageAvailableMonthlyCredits": 0,
- "usageTotalPermanentCredits": 0,
- "usageAvailablePermanentCredits": 0,
- "resetAt": 0,
- "subscriptionStartedAt": 0,
- "subscriptionExpiresAt": 0,
- "platform": "ios",
- "renewStatus": true,
- "trialStatus": true,
- "subscriptionPlan": {
- "id": "string",
- "name": "string",
- "duration": "monthly",
- "platform": "ios"
}
}
}创建用户订阅
| planId | string 订阅计划ID |
| redirectUrl | string 重定向URL |
| locale | string 当前界面 locale(如 zh-TW/zh-HK/zh-MO/zh-Hant),用于决定结算货币。 简体中文(zh/zh-CN)走 CNY,繁体中文走 USD;缺省时回落 Accept-Language。 |
{- "planId": "string",
- "redirectUrl": "string",
- "locale": "zh-TW"
}{- "data": {
- "sessionUrl": "string",
- "redirectCheckoutStatus": true,
- "priceInfo": {
- "amount": 999,
- "currency": "usd"
}
}
}取消订阅
| planId | string 订阅计划ID |
| promotionCode | string 优惠码 |
{- "planId": "string",
- "promotionCode": "string"
}{- "code": 0,
- "message": "string",
- "data": {
- "redirectCheckoutStatus": true,
- "checkoutUrl": "string"
}
}取消订阅
| subscriptionId | string 订阅ID |
{- "subscriptionId": "string"
}{- "code": 0,
- "message": "string",
- "data": {
- "success": true,
- "message": "string"
}
}获取订阅计划
| platform | string Enum: "ios" "android" "web" 平台 |
{- "code": 0,
- "message": "string",
- "data": {
- "items": [
- {
- "id": "string",
- "name": "string",
- "duration": 0,
- "price": 0,
- "description": [
- "string"
], - "currency": "string",
- "productId": "string",
- "region": "global",
- "credits": 0,
- "metadata": {
- "rightsDescription": {
- "zh": [
- "string"
], - "en": [
- "string"
]
}, - "creditsCount": 0
}
}
]
}
}查询从当前套餐切换到新套餐的信息,包括变更类型、验证结果和费用计算。
返回信息:
验证规则:
| newPlanId required | string 新套餐 ID |
{- "newPlanId": "string"
}{- "code": 0,
- "message": "string",
- "data": {
- "changeType": "upgrade",
- "currentPlan": {
- "id": "string",
- "name": "string",
- "price": 0,
- "currency": "string",
- "region": "string",
- "duration": "string",
- "platform": "string"
}, - "newPlan": {
- "id": "string",
- "name": "string",
- "price": 0,
- "currency": "string",
- "region": "string",
- "duration": "string",
- "platform": "string"
}, - "isValid": true,
- "validationErrors": [
- "string"
], - "proratedCredit": 0,
- "amountToPay": 0
}
}升级当前订阅套餐到更高价格的套餐。
限制条件:
升级规则:
| newPlanId required | string 新套餐 ID |
| redirectUrl | string 支付完成后的重定向 URL(可选) |
| locale | string 当前界面 locale(如 zh-TW/zh-HK/zh-MO/zh-Hant),用于决定升级支付货币。 简体中文(zh/zh-CN)走 CNY 并按汇率换算,繁体中文走 USD 且不换算;缺省时回落 Accept-Language。 |
{- "newPlanId": "string",
- "redirectUrl": "string",
- "locale": "zh-TW"
}{- "code": 0,
- "message": "string",
- "data": {
- "sessionUrl": "string",
- "proratedCredit": 0,
- "amountToPay": 0,
- "requiresPayment": true
}
}降级当前订阅套餐到更低价格的套餐。
限制条件:
降级规则:
| newPlanId required | string 新套餐 ID |
{- "newPlanId": "string"
}{- "code": 0,
- "message": "string",
- "data": {
- "message": "string",
- "currentPlan": {
- "id": "string",
- "name": "string",
- "price": 0
}, - "newPlan": {
- "id": "string",
- "name": "string",
- "price": 0
}, - "effectiveDate": 0,
- "note": "string"
}
}{- "code": 0,
- "message": "string",
- "data": {
- "speakers【废弃兼容】": [
- {
- "id": "string",
- "speakerInnerId": "string",
- "personality": "string",
- "name": "string",
- "demoAudioUrl": "string",
- "gender": "male",
- "accessType": "public",
- "weight": 0
}
], - "language": "string",
- "duration": "short",
- "speakersConfig": {
- "zh": [
- {
- "speakerInnerId": "string"
}
], - "en": [
- {
- "speakerInnerId": "string"
}
]
}
}
}{- "code": 0,
- "message": "string",
- "data": {
- "items": [
- {
- "type": "speech",
- "language": "string",
- "duration": "short",
- "speakers": {
- "zh": [
- {
- "speakerInnerId": "string"
}
], - "en": [
- {
- "speakerInnerId": "string"
}
]
}, - "updatedAt": 0,
- "mode": "quick",
- "imagesConfig": {
- "story": [
- {
- "id": "string",
- "name": "string",
- "uri": "string",
- "mimeType": "string"
}
], - "info": [
- {
- "id": "string",
- "name": "string",
- "uri": "string",
- "mimeType": "string"
}
], - "slides": [
- {
- "id": "string",
- "name": "string",
- "uri": "string",
- "mimeType": "string"
}
]
}
}
]
}
}为故事书模式添加风格参考图片,系统会自动分析图片并生成风格名称
| type required | string Value: "storybook" 设置类型,目前仅支持 storybook |
| mode required | string Enum: "story" "info" "slides" 故事书模式 |
required | object |
{- "type": "storybook",
- "mode": "story",
- "image": {
- "uri": "string",
- "mimeType": "string"
}
}{- "code": 0,
- "message": "string",
- "data": {
- "id": "string",
- "name": "string",
- "uri": "string",
- "mimeType": "string"
}
}删除指定模式下的风格参考图片
| type required | string Value: "storybook" 设置类型,目前仅支持 storybook |
| mode required | string Enum: "story" "info" "slides" 故事书模式 |
| imageId required | string 图片唯一标识 |
{- "code": 0,
- "message": "string",
- "data": {
- "imageId": "string"
}
}更新单集配置
| type | string Enum: "speech" "podcast-solo" "podcast-duo" "storybook" 类型 |
| duration | string Enum: "short" "long" 单集时长(废弃) |
| speakers | Array of strings 主持人列表 |
| language | string Enum: "zh" "en" 语言 |
| enabledShare | boolean Default: false 是否开启分享 |
| mode | string Enum: "quick" "deep" "debate" "smart" "direct" "info" "story" "slides" 模式(smart,direct在type为speech模式下有效; info,story,slides在type为storybook模式下有效) |
{- "type": "speech",
- "duration": "short",
- "speakers": [
- "string"
], - "language": "zh",
- "enabledShare": false,
- "mode": "quick"
}{- "code": 0,
- "message": "string",
- "data": {
- "success": true,
- "message": "string"
}
}获取用户的单集配置,支持查询全部或指定 productId 的配置。
功能说明:
{ settings: { [productId]: {...} } }使用场景:
GET /v1/episode-settingsGET /v1/episode-settings?productId=aiPodcast| productId | string^[a-zA-Z][a-zA-Z0-9_]*$ Example: productId=aiPodcast 产品ID(如 explainerVideo, slideDeck, aiPodcast, textToSpeech, aiImage),不传则返回全部。必须以字母开头,只能包含字母、数字、下划线。 |
{- "code": 0,
- "message": "string",
- "data": {
- "settings": {
- "explainerVideo": {
- "type": "storybook",
- "mode": "info",
- "language": "zh",
- "speakersCount": 1,
- "speakers": {
- "zh": {
- "1": [
- "speaker_001"
]
}, - "en": {
- "1": [
- "speaker_002"
]
}, - "ja": {
- "1": [
- "speaker_003"
]
}
}, - "aspectRatio": "16:9",
- "imagesConfig": {
- "story": [
- {
- "id": "string",
- "name": "string",
- "uri": "string",
- "mimeType": "string"
}
], - "info": [
- {
- "id": "string",
- "name": "string",
- "uri": "string",
- "mimeType": "string"
}
]
}
}, - "slideDeck": {
- "type": "storybook",
- "mode": "slides",
- "language": "en",
- "speakersCount": 1,
- "speakers": {
- "zh": {
- "1": [
- "speaker_001"
]
}, - "en": {
- "1": [
- "speaker_002"
]
}, - "ja": {
- "1": [
- "speaker_003"
]
}
}, - "aspectRatio": "16:9",
- "imagesConfig": {
- "slides": [
- {
- "id": "string",
- "name": "string",
- "uri": "string",
- "mimeType": "string"
}
]
}
}, - "aiPodcast": {
- "type": "podcast",
- "mode": "deep",
- "language": "zh",
- "speakersCount": 2,
- "speakers": {
- "zh": {
- "1": [
- "speaker_001"
], - "2": [
- "speaker_003",
- "speaker_004"
]
}, - "en": {
- "1": [
- "speaker_002"
], - "2": [
- "speaker_003",
- "speaker_004"
]
}, - "ja": {
- "1": [
- "speaker_003"
], - "2": [
- "speaker_003",
- "speaker_004"
]
}
}
}, - "textToSpeech": {
- "type": "speech",
- "mode": "smart",
- "language": "en",
- "speakersCount": 1,
- "speakers": {
- "zh": {
- "1": [
- "speaker_001"
]
}, - "en": {
- "1": [
- "speaker_002"
]
}, - "ja": {
- "1": [
- "speaker_003"
]
}
}
}, - "aiImage": {
- "type": "aiImage",
- "aspectRatio": "16:9",
- "quality": "2K"
}
}
}
}更新指定 productId 的单集配置,支持增量更新。
功能说明:
配置说明:
使用场景:
| productId required | string^[a-zA-Z][a-zA-Z0-9_]*$ Example: aiPodcast 产品ID(如 explainerVideo, slideDeck, aiPodcast, textToSpeech, aiImage)。必须以字母开头,只能包含字母、数字、下划线。 |
| property name* additional property | any |
{- "type": "podcast",
- "mode": "deep",
- "language": "zh",
- "speakersCount": 2,
- "speakers": {
- "zh": {
- "1": [
- "speaker_001"
], - "2": [
- "speaker_003",
- "speaker_004"
]
}, - "en": {
- "1": [
- "speaker_002"
], - "2": [
- "speaker_003",
- "speaker_004"
]
}, - "ja": {
- "1": [
- "speaker_003"
], - "2": [
- "speaker_003",
- "speaker_004"
]
}
}
}{- "code": 0,
- "message": "string",
- "data": {
- "success": true
}
}{- "code": 0,
- "message": "string",
- "data": {
- "items": [
- {
- "id": "string",
- "speakerInnerId": "string",
- "personality": "string",
- "name": "string",
- "demoAudioUrl": "string",
- "gender": "male",
- "accessType": "public",
- "weight": 0
}
]
}
}添加用户的 APNS (Apple Push Notification Service) 设备令牌,用于接收推送通知。
功能说明:
注意事项:
| token required | string iOS 设备的 APNS 令牌 |
{- "token": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6"
}{- "success": true
}删除用户的 APNS 设备令牌,停止向该设备发送推送通知。
使用场景:
注意事项:
| token required | string 要删除的 APNS 令牌 |
{- "token": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6"
}{- "success": true
}获取应用配置信息,包含积分奖励配置等系统参数。
积分配置说明:
checkinBonus: 每日签到奖励积分inviteSignupBonus: 邀请用户注册奖励积分inviteSubscriptionBonus: 被邀请用户订阅后奖励积分weeklyInviteBonusLimit: 每周邀请奖励积分上限每项积分配置都包含 free(免费用户)和 active(订阅用户)两种状态的值。
活动期间:积分配置会自动切换为活动配置
| platform required | string Enum: "ios" "android" "web" 平台类型 |
{- "code": 0,
- "message": "string",
- "data": {
- "credits": {
- "checkinBonus": {
- "free": 10,
- "active": 15
}, - "inviteSignupBonus": {
- "free": 10,
- "active": 20
}, - "inviteSubscriptionBonus": {
- "free": 20,
- "active": 50
}, - "weeklyInviteBonusLimit": {
- "free": 300,
- "active": 700
}
}
}
}获取 app 版本
| type required | string Value: "ios" 平台 |
| currentVersion required | string 当前版本 |
{- "code": 0,
- "message": "string",
- "data": {
- "version": "string",
- "latestVersion": "string",
- "forceUpdateVersion": "string",
- "recommendUpdateVersion": "string",
- "releaseNotesZh": "string",
- "releaseNotesEn": "string",
- "needsForceUpdate": true,
- "needsRecommendUpdate": true
}
}获取系统所有错误码及其描述信息,用于前端展示和国际化
注意:仅返回 publicVisible: true 的错误码,内部错误码不会暴露给前端
响应格式:
message 对象,包含 en 和 zh 字段示例:
{
"21001": {
"message": {
"en": "Not supported provider type",
"zh": "错误的身份提供商"
}
}
}
{- "code": 0,
- "message": "string",
- "data": {
- "errorCodes": {
- "21001": {
- "message": {
- "en": "Not supported provider type",
- "zh": "错误的身份提供商"
}
}, - "21003": {
- "message": {
- "en": "Login has expired.",
- "zh": "登录已过期"
}
}
}
}
}新用户验证邀请码并发放奖励
| inviteCode required | string 邀请码 |
| platform required | string Enum: "listenhub" "nextlab" "banana-lab" 平台类型 |
{- "inviteCode": "string",
- "platform": "listenhub"
}{- "code": 0,
- "message": "string",
- "data": {
- "isVerified": true,
- "message": "string"
}
}批量获取所有非流式事件
| episodeId required | string 单集 ID |
| events | Array of strings (EventType) Items Enum: "title_generate" "source_generate" "script_generate" "audio_generate" "outline_generate" |
{- "events": [
- "title_generate"
]
}{- "code": 0,
- "message": "string",
- "data": {
- "events": [
- {
- "event": "title_generate",
- "eventType": "flow_speech",
- "eventStatus": "success",
- "inputType": "object",
- "input": { }
}
]
}
}获取流式事件
| episodeId required | string 单集 ID |
| eventName required | string 事件名称 |
data: {"code": 0, "message": "", "chunk": "xxxx"} data: {"code": 0, "message": "", "chunk": "[[END]]"} data: {"code": 0, "message": "", "chunk": "[[ERROR]]"}
用于对话式音色克隆的交互接口,支持多轮对话引导用户录音。
流程说明:
language,context 为空,不传 audioFile,返回引导语音频/clone 接口上传合并后的音频文件,触发克隆| language required | string Enum: "zh" "en" 语言类型 |
| audioFile | string <binary> 用户录音文件 (首次调用不传) |
| context | string 对话历史 JSON 字符串 (首次调用传空数组或不传) |
| isEnd | boolean 是否结束对话 |
| guideAudioIndex | number 引导音频 Index |
| taskId | string 克隆任务 ID (仅供后续 |
{- "code": 0,
- "message": "success",
- "data": {
- "audioUrl": "data:audio/mpeg;base64,SUQzBAAAAAAAI1MTAsLAVzc0BEFhYW...",
- "userText": "我今天过得很好",
- "assistantText": "太好了!能跟我分享一下今天有什么开心的事情吗?"
}
}上传音频文件进行音色克隆,支持单个文件或多个音频片段(1-6 个)。
流程说明:
taskIdGET /clone/{taskId} 轮询查询状态文件限制:
required | string or Array of strings 音频文件或音频片段数组
|
| language required | string Enum: "zh" "en" 音频语言 |
| mode | string Enum: "upload" "chat" 任务模式 - upload(文件上传克隆)或 chat(对话克隆),可选参数 |
{- "code": 0,
- "message": "success",
- "data": {
- "taskId": "6915bde9cca4d3c8ecb3eaf5",
- "status": "pending"
}
}查询指定任务的克隆状态和结果。
状态说明:
pending: 任务已创建,等待处理processing: 正在处理中completed: 克隆完成,可获取 demoAudioUrl 和 thirdPartyIdfailed: 克隆失败| taskId required | string Example: 6915bde9cca4d3c8ecb3eaf5 克隆任务 ID |
{- "code": 0,
- "message": "success",
}{- "code": 0,
- "message": "success",
- "data": {
- "isLimitReached": false,
- "maxSpeakers": 2,
- "remainingConfirmations": 3,
- "speakers": [
- {
- "id": "6915c123cca4d3c8ecb3eaf6",
- "name": "My Voice",
- "language": "zh",
- "gender": "male",
- "createdAt": "2025-11-13T10:00:00Z"
}
]
}
}获取指定音色的详细信息
| speakerId required | string Example: 6915c123cca4d3c8ecb3eaf6 音色 ID |
{- "code": 0,
- "message": "success",
- "data": {
- "id": "6915c123cca4d3c8ecb3eaf6",
- "name": "My Voice",
- "language": "zh",
- "gender": "male",
- "createdAt": "2025-11-13T10:00:00Z",
- "updatedAt": "2025-11-13T10:00:00Z"
}
}更新音色的名称和性别信息
| speakerId required | string Example: 6915c123cca4d3c8ecb3eaf6 音色 ID |
| name | string 音色名称 |
| gender | string Enum: "male" "female" "other" 性别 |
{- "name": "My Updated Voice",
- "gender": "male"
}{- "code": 0,
- "message": "success",
- "data": {
- "id": "6915c123cca4d3c8ecb3eaf6",
- "name": "My Updated Voice",
- "language": "zh",
- "gender": "male",
- "createdAt": "2025-11-13T10:00:00Z",
- "updatedAt": "2025-11-13T10:30:00Z"
}
}将临时克隆任务转为永久音色记录。
流程说明:
可能的错误码:
| taskId required | string 克隆任务 ID |
| name required | string 音色名称 |
| gender required | string Enum: "male" "female" "other" 性别 |
| useCredits | boolean 是否使用积分确认(当免费次数用完时需要传 true) |
{- "taskId": "6915bde9cca4d3c8ecb3eaf5",
- "name": "My Voice",
- "gender": "male",
- "useCredits": false
}{- "code": 0,
- "message": "success",
- "data": null
}获取预设的示例音色列表,用于展示克隆前后对比效果。 示例数据由后端写死,不需要用户创建。 支持按语言筛选,默认返回中文示例。
| language | string Default: "zh" Enum: "zh" "en" Example: language=zh 语言(zh=中文, en=英文),默认 zh |
{- "code": 0,
- "message": "success",
- "data": {
- "speakers": [
- {
- "id": "example_1",
- "title": "Professional Voice",
- "description": "A professional voice for business content",
- "language": "en",
}
]
}
}根据模型、尺寸、宽高比、质量等参数预估生成图片所需的积分,并返回订阅/权益提示。
| model | string Default: "gpt-image-2" 图片模型(如 gpt-image-2 / gpt-image-2-official / wan2.7-image 等) |
| imageSize | string Default: "2K" Enum: "1K" "2K" "4K" 分辨率档位 |
| aspectRatio | string Default: "1:1" Enum: "1:1" "1:4" "1:8" "2:3" "3:2" "3:4" "4:1" "4:3" "8:1" "9:16" "16:9" "21:9" 宽高比 |
| quality | string Enum: "low" "medium" "high" 质量档位(仅 gpt-image-2-official Pro 生效,Lite 忽略) |
| prompt | string 图像描述(用于估算输入 token) |
| referenceImageCount | integer [ 0 .. 4 ] Default: 0 参考图数量 |
| enableSearch | boolean Default: false |
{- "model": "gpt-image-2",
- "imageSize": "1K",
- "aspectRatio": "1:1",
- "quality": "low",
- "prompt": "string",
- "referenceImageCount": 0,
- "enableSearch": false
}{- "code": 0,
- "message": "string",
- "data": {
- "model": "string",
- "imageSize": "string",
- "aspectRatio": "string",
- "quality": "string",
- "pixels": {
- "width": 0,
- "height": 0,
- "size": "string"
}, - "credits": 0,
- "canGenerate": true,
- "requiresSubscription": true,
- "pricing": { },
- "warnings": [
- "string"
]
}
}创建 AI 图片生成任务
| prompt required | string 图像描述 |
| referenceImageUrls | Array of strings <= 5 items 参考图像 URL 列表(最多 5 张;gpt-image-2 的 URL 与 Base64 参考图合计最多 4 张) |
Array of objects <= 5 items Base64 参考图列表(最多 5 张;gpt-image-2 的 URL 与 Base64 参考图合计最多 4 张) | |
| imageSize | string Default: "2K" Enum: "1K" "2K" "4K" 图像尺寸 |
| aspectRatio | string Default: "1:1" Enum: "1:1" "1:4" "1:8" "2:3" "3:2" "3:4" "4:1" "4:3" "8:1" "9:16" "16:9" "21:9" 宽高比。gpt-image-2 支持 1:1、2:3、3:2、3:4、4:3、9:16、16:9、21:9;1:4、4:1、1:8、8:1 仅 gemini-3.1-flash-image 模型支持。 |
| language | string Default: "auto" Enum: "auto" "en" "ja" "ko" "hi" "zh" "pt" "es" 提示词语言 |
| isLossless | boolean Default: true 是否无损 |
| isRetry | boolean Default: false 是否为重试请求 |
| model | string Default: "gemini-3-pro-image" Enum: "gemini-3-pro-image" "gemini-3.1-flash-image" "gpt-image-2" 图片生成模型。gpt-image-2 使用 OpenDev/OpenAI 通道,1K/2K 会先尝试使用免费额度。 |
| enableSearch | boolean Default: false 是否开启 Google Search(开启后模型可联网检索参考信息) |
{- "prompt": "一个美丽的日落风景",
- "referenceImageUrls": [
- "string"
], - "referenceImageBase64": [
- {
- "data": "string",
- "mimeType": "image/png"
}
], - "imageSize": "1K",
- "aspectRatio": "1:1",
- "language": "auto",
- "isLossless": true,
- "isRetry": false,
- "model": "gemini-3-pro-image",
- "enableSearch": false
}{- "imageId": "string"
}获取当前用户生成的所有图片列表(分页)
| page | integer >= 1 Default: 1 页码,从1开始 |
| pageSize | integer [ 1 .. 50 ] Default: 20 每页数量(最大 50) |
| keyword | string 搜索当前用户自己的图片 prompt,大小写不敏感;服务端会 trim 并截断到 100 字符 |
{- "items": [
- {
- "id": "string",
- "prompt": "string",
- "imageUrl": "string",
- "thumbnailUrl": "string",
- "aspectRatio": "string",
- "imageSize": "string",
- "status": "pending",
- "createdAt": 0,
- "enableSearch": true
}
], - "pagination": {
- "page": 0,
- "pageSize": 0,
- "total": 0
}
}批量逻辑删除指定 ID 的图片(仅删除本人图片,单批最多 100 个)
| ids required | Array of strings <= 100 items 要删除的图片 ID 列表 |
{- "ids": [
- "string"
]
}{- "success": true
}获取指定图片的详细信息
权限规则:
| imageId required | string^[0-9a-fA-F]{24}$ 图片 ID |
{- "id": "string",
- "userId": "string",
- "prompt": "string",
- "referenceImageUrls": [
- "string"
], - "imageUrl": "string",
- "thumbnailUrl": "string",
- "aspectRatio": "string",
- "imageSize": "string",
- "language": "string",
- "isPublic": true,
- "status": "pending",
- "tags": [
- "string"
], - "createdAt": 0,
- "updatedAt": 0,
- "creator": {
- "nickname": "string",
- "avatar": "string"
}
}根据模型、尺寸、宽高比、质量等参数预估生成图片所需的积分,并返回订阅/权益提示。
| model | string Default: "gpt-image-2" 图片模型(如 gpt-image-2 / gpt-image-2-official / wan2.7-image 等) |
| imageSize | string Default: "2K" Enum: "1K" "2K" "4K" 分辨率档位 |
| aspectRatio | string Default: "1:1" Enum: "1:1" "1:4" "1:8" "2:3" "3:2" "3:4" "4:1" "4:3" "8:1" "9:16" "16:9" "21:9" 宽高比 |
| quality | string Enum: "low" "medium" "high" 质量档位(仅 gpt-image-2-official Pro 生效,Lite 忽略) |
| prompt | string 图像描述(用于估算输入 token) |
| referenceImageCount | integer [ 0 .. 4 ] Default: 0 参考图数量 |
| enableSearch | boolean Default: false |
{- "model": "gpt-image-2",
- "imageSize": "1K",
- "aspectRatio": "1:1",
- "quality": "low",
- "prompt": "string",
- "referenceImageCount": 0,
- "enableSearch": false
}{- "code": 0,
- "message": "string",
- "data": {
- "model": "string",
- "imageSize": "string",
- "aspectRatio": "string",
- "quality": "string",
- "pixels": {
- "width": 0,
- "height": 0,
- "size": "string"
}, - "credits": 0,
- "canGenerate": true,
- "requiresSubscription": true,
- "pricing": { },
- "warnings": [
- "string"
]
}
}创建 Banana 图片生成任务
| prompt required | string 图像描述 |
| referenceImageUrls | Array of strings <= 14 items 参考图像 URL 列表(最多 14 张;gpt-image-2 最多 4 张) |
| language | string Default: "auto" Enum: "auto" "en" "ja" "ko" "hi" "zh" "pt" "es" 提示词语言 |
| imageSize | string Default: "2K" Enum: "1K" "2K" "4K" 图像尺寸 |
| aspectRatio | string Default: "1:1" Enum: "1:1" "1:4" "1:8" "2:3" "3:2" "3:4" "4:1" "4:3" "8:1" "9:16" "16:9" "21:9" 宽高比。gpt-image-2 支持 1:1、2:3、3:2、3:4、4:3、9:16、16:9、21:9;1:4、4:1、1:8、8:1 仅 gemini-3.1-flash-image 模型支持。 |
| isPublic | boolean Default: false 是否公开(免费用户不可公开) |
| isLossless | boolean Default: true 是否无损 |
| isRetry | boolean Default: false 是否为重试请求(为 true 时需传 rootImageId) |
| model | string Default: "gemini-3-pro-image" Enum: "gemini-3-pro-image" "gemini-3.1-flash-image" "gpt-image-2" 图片生成模型。gpt-image-2 使用 OpenDev/OpenAI 通道,1K/2K 会先尝试使用免费额度。 |
| enableSearch | boolean Default: false 是否开启 Google Search(开启后模型可联网检索参考信息) |
| rootImageId | string^[0-9a-fA-F]{24}$ 源图片 ID(重试时必填) |
{- "prompt": "string",
- "referenceImageUrls": [
- "string"
], - "language": "auto",
- "imageSize": "1K",
- "aspectRatio": "1:1",
- "isPublic": false,
- "isLossless": true,
- "isRetry": false,
- "model": "gemini-3-pro-image",
- "enableSearch": false,
- "rootImageId": "string"
}{- "imageId": "string"
}获取当前用户图片或公开图片列表(分页)
| imageId | string^[0-9a-fA-F]{24}$ 图片 ID(用于筛选) |
| status | string Enum: "pending" "success" "fail" 图片生成状态(仅 scope=me 生效) |
| scope | string Default: "me" Enum: "me" "public" 搜索范围:
|
| page | integer >= 1 Default: 1 页码,从1开始 |
| pageSize | integer [ 1 .. 100 ] Default: 10 每页数量(最大 100) |
{- "items": [
- {
- "id": "string",
- "status": "pending",
- "isPublic": true,
- "isRetry": true,
- "prompt": "string",
- "aspectRatio": "string",
- "imageSize": "string",
- "language": "string",
- "createdAt": 0,
- "updatedAt": 0,
- "rootImageId": "string",
- "imageUrl": "string",
- "thumbnailUrl": "string",
- "referenceImageUrls": [
- "string"
], - "creator": {
- "userId": "string",
- "nickname": "string",
- "avatar": "string"
}, - "hasFavorited": true,
- "stats": {
- "favoriteCount": 0
}, - "modelName": "string",
- "enableSearch": true
}
], - "pagination": {
- "total": 0,
- "page": 0,
- "pageSize": 0
}
}逻辑删除指定的图片
| imageIds required | Array of strings[ items^[0-9a-fA-F]{24}$ ] 图片 ID 列表 |
{- "imageIds": [
- "string"
]
}{- "success": true
}更新指定图片的公开状态
| imageId required | string^[0-9a-fA-F]{24}$ 图片 ID |
| isPublic required | boolean 是否公开 |
{- "imageId": "string",
- "isPublic": true
}{- "success": true
}根据提示词关键字搜索图片,支持多种搜索范围:
| keyword required | string [ 1 .. 300 ] characters 搜索关键词 |
| scope | string Default: "public" Enum: "me" "public" 搜索范围:
|
| page | integer >= 1 Default: 1 页码,从1开始 |
| pageSize | integer [ 1 .. 50 ] Default: 10 每页数量(最大 50) |
{- "items": [
- {
- "id": "string",
- "status": "pending",
- "isPublic": true,
- "isRetry": true,
- "prompt": "string",
- "aspectRatio": "string",
- "imageSize": "string",
- "language": "string",
- "createdAt": 0,
- "updatedAt": 0,
- "rootImageId": "string",
- "imageUrl": "string",
- "thumbnailUrl": "string",
- "referenceImageUrls": [
- "string"
], - "creator": {
- "userId": "string",
- "nickname": "string",
- "avatar": "string"
}, - "hasFavorited": true,
- "stats": {
- "favoriteCount": 0
}
}
], - "pagination": {
- "total": 0,
- "page": 0,
- "pageSize": 0
}
}获取 Banana 探索标签列表
| language required | string Example: language=en 语言(不支持时默认使用 en) |
| type required | string Enum: "explore" "featured" 标签类型 |
{- "items": [
- {
- "key": "string",
- "name": "string",
- "description": "string",
- "isVisibleInExplore": true,
- "isVisibleInFeatured": true
}
]
}批量获取多个标签的精选图片
| tags required | string Example: tags=all,portrait,landscape 标签 key 列表(逗号分隔) |
| pageSize | integer [ 1 .. 50 ] Default: 10 每个标签返回数量(最大 50) |
{- "items": [
- {
- "key": "string",
- "items": [
- {
- "id": "string",
- "status": "pending",
- "isPublic": true,
- "isRetry": true,
- "prompt": "string",
- "aspectRatio": "string",
- "imageSize": "string",
- "language": "string",
- "createdAt": 0,
- "updatedAt": 0,
- "rootImageId": "string",
- "imageUrl": "string",
- "thumbnailUrl": "string",
- "referenceImageUrls": [
- "string"
], - "creator": {
- "userId": "string",
- "nickname": "string",
- "avatar": "string"
}, - "hasFavorited": true,
- "stats": {
- "favoriteCount": 0
}
}
]
}
]
}获取指定用户的公开图片(仅返回公开且审核通过的图片)
| userId required | string^[0-9a-fA-F]{24}$ 用户 ID |
| page | integer >= 1 Default: 1 页码,从1开始 |
| pageSize | integer [ 1 .. 100 ] Default: 10 每页数量(最大 100) |
{- "items": [
- {
- "id": "string",
- "prompt": "string",
- "imageUrl": "string",
- "thumbnailUrl": "string",
- "referenceImageUrls": [
- "string"
], - "aspectRatio": "string",
- "imageSize": "string",
- "language": "string",
- "isPublic": true,
- "isRetry": true,
- "rootImageId": "string",
- "status": "pending",
- "createdAt": 0,
- "updatedAt": 0,
- "creator": {
- "userId": "string",
- "nickname": "string",
- "avatar": "string"
}, - "hasFavorited": true,
- "stats": {
- "favoriteCount": 0
}
}
], - "pagination": {
- "total": 0,
- "page": 0,
- "pageSize": 0
}
}获取当前用户收藏的所有图片列表(分页)
| page | integer >= 1 Default: 1 页码,从1开始 |
| pageSize | integer [ 1 .. 100 ] Default: 10 每页数量(最大 100) |
{- "items": [
- {
- "id": "string",
- "status": "pending",
- "isPublic": true,
- "isRetry": true,
- "prompt": "string",
- "aspectRatio": "string",
- "imageSize": "string",
- "language": "string",
- "createdAt": 0,
- "updatedAt": 0,
- "rootImageId": "string",
- "imageUrl": "string",
- "thumbnailUrl": "string",
- "referenceImageUrls": [
- "string"
], - "creator": {
- "userId": "string",
- "nickname": "string",
- "avatar": "string"
}, - "hasFavorited": true,
- "stats": {
- "favoriteCount": 0
}
}
], - "pagination": {
- "total": 0,
- "page": 0,
- "pageSize": 0
}
}获取用户的 episodes 和 images 合并列表,按创建时间降序排序。 使用基于索引的游标分页,前端每次请求带回上次返回的 episodeIndex 和 imageIndex。
| pageSize | integer [ 1 .. 50 ] Default: 20 每页数量,默认20,最大50 |
| episodeIndex | integer >= 0 Default: 0 Episode 起始索引,首次请求传0 |
| imageIndex | integer >= 0 Default: 0 Image 起始索引,首次请求传0 |
{- "code": 0,
- "message": "string",
- "data": {
- "items": [
- {
- "assetType": "episode",
- "episode": {
- "id": "string",
- "status": "string",
- "createdAt": 0,
- "title": "string",
- "failCode": 0,
- "summary": "string",
- "processStatus": "success",
- "stepStatus": "string",
- "cover": "string",
- "audioUrl": "string",
- "audioDuration": 0,
- "videoUrl": "string",
- "input": "string",
- "inputSources": [
- {
- "type": "string",
- "uri": "string",
- "content": "string",
- "metadata": { }
}
], - "playedStatus": 0,
- "slidesStatus": 0,
- "creator": {
- "nickname": "string",
- "avatar": "string"
}, - "playCount": 0,
- "generationType": "podcast",
- "enabledShare": true,
- "mode": "quick",
- "speakers": [
- {
- "name": "string",
- "speakerInnerId": "string",
- "gender": "string"
}
], - "language": "string",
- "imageConfig": {
- "size": "2K",
- "aspectRatio": "1:1"
}
}, - "image": {
- "id": "string",
- "prompt": "string",
- "imageUrl": "string",
- "thumbnailUrl": "string",
- "aspectRatio": "string",
- "imageSize": "string",
- "status": "pending",
- "createdAt": 0
}
}
], - "pagination": {
- "total": 0,
- "pageSize": 0,
- "episodeIndex": 0,
- "imageIndex": 0,
- "hasMore": true
}
}
}获取知乎播客列表,支持分页和状态筛选
| status | string Enum: "pending" "processing" "success" "failed" 播客状态筛选 |
| page | integer >= 1 Default: 1 页码,从1开始 |
| limit | integer [ 1 .. 100 ] Default: 20 每页数量 |
{- "code": 0,
- "message": "string",
- "data": {
- "items": [
- {
- "id": "507f1f77bcf86cd799439011",
- "sourceId": "12345678",
- "sourceType": "question",
- "sourceTitle": "如何学习编程?",
- "episodeId": "ep_abc123def456",
- "episodeStatus": "success",
- "errorMessage": null,
- "createdAt": 1640995200000,
- "updatedAt": 1640995200000
}
], - "pagination": {
- "page": 0,
- "limit": 0,
- "total": 0,
- "totalPages": 0
}
}
}{- "code": 0,
- "message": "string",
- "data": {
- "id": "507f1f77bcf86cd799439011",
- "sourceId": "12345678",
- "sourceType": "question",
- "sourceTitle": "如何学习编程?",
- "episodeId": "ep_abc123def456",
- "episodeStatus": "success",
- "errorMessage": null,
- "createdAt": 1640995200000,
- "updatedAt": 1640995200000,
- "sourceRaw": "string",
- "promptInput": "string",
- "episodeData": { }
}
}异步创建音乐生成任务,返回 taskId 用于后续查询。
默认 provider:default 当前解析为 Mureka。
模型:model 使用 provider-neutral 合同。Mureka 支持 auto、mureka-7.6、mureka-8、mureka-9、mureka-o2;Suno 支持 V4、V4_5、V4_5PLUS、V4_5ALL、V5、V5_5。
积分消耗:按 model 档位扣费。 积分在创建时预占,生成成功后确认扣除,失败则自动退回。
异步流程:
| provider | string Default: "default" Enum: "default" "mureka" "suno" 音乐生成服务提供商 |
| model | string Default: "auto" Enum: "auto" "mureka-7.6" "mureka-8" "mureka-9" "mureka-o2" "V4" "V4_5" "V4_5PLUS" "V4_5ALL" "V5" "V5_5" 模型版本。Mureka/default 默认 auto;Suno 默认 V5_5。 |
| prompt | string <= 1024 characters 生成提示/风格描述。
Mureka provider 时映射到 Mureka |
| lyrics | string <= 3000 characters 歌词文本。
Mureka provider 非纯器乐生成时必填,映射到 Mureka |
| style | string <= 200 characters 音乐风格标签。Mureka provider 下作为 |
| title | string <= 100 characters 歌曲标题 |
| customMode | boolean Default: true 自定义模式(可指定 style/title/prompt)vs 简单模式(仅 prompt) |
| instrumental | boolean Default: false 是否为纯器乐(无人声) |
| vocalId | string Mureka Vocal ID(平台配置或 vocal-clone 产物,仅 Mureka generate 支持) |
object Provider 特有参数 |
{- "provider": "default",
- "model": "auto",
- "prompt": "r&b, slow, passionate, male vocal\n",
- "lyrics": "[verse]\nWalking down the empty street at night\n[chorus]\nFeel the rhythm, feel the light\n",
- "style": "jazz, mellow, acoustic",
- "title": "Night Walk",
- "customMode": true,
- "instrumental": false,
- "vocalId": "string",
- "providerParams": {
- "negativeTags": "string",
- "vocalGender": "m",
- "personaId": "string",
- "personaModel": "string",
- "styleWeight": 0,
- "weirdnessConstraint": 0,
- "audioWeight": 0
}
}{- "code": 0,
- "message": "string",
- "data": {
- "taskId": "68e780390fc5c9a54f695a7e",
- "status": "pending"
}
}上传一段音频,用新风格重新演绎,保留核心旋律。
积分消耗:与 generate 一致,按 model 档位扣费。
uploadUrl:支持外部可访问 URL 或通过 POST /v1/files 获取的内部 GCS URL。 内部 URL 会自动校验文件归属并生成临时下载链接。
异步流程:与 generate 一致。
| provider required | string Value: "default" |
| uploadUrl required | string <uri> 音频文件 URL(外部可访问或内部 GCS) |
| model required | string Enum: "V4" "V4_5" "V4_5PLUS" "V4_5ALL" "V5" "V5_5" |
| customMode required | boolean |
| instrumental required | boolean |
| prompt | string 歌词(customMode=true + instrumental=false 时必填) |
| style | string 音乐风格(customMode=true 时必填) |
| title | string 歌曲标题(customMode=true 时必填) |
| providerParams | object Provider 特有参数(negativeTags, vocalGender, personaId, personaModel, styleWeight, weirdnessConstraint, audioWeight) |
{- "provider": "default",
- "model": "V4",
- "customMode": true,
- "instrumental": true,
- "prompt": "string",
- "style": "string",
- "title": "string",
- "providerParams": { }
}{- "code": 0,
- "data": {
- "taskId": "string",
- "taskType": "COVER",
- "status": "pending"
}
}上传音频并提供新歌词,通过 Mureka 生成 remix。
音频来源(三选一,必须且只能选一):
audio — 直接上传音频文件(mp3/m4a,最大 10MB)audioUrl — 内部 ListenHub 音频 URL(须归属当前用户或公开)providerSongId — Mureka song_id(来自之前的生成结果)| audio | string <binary> 音频文件(mp3/m4a,最大 10MB)。与 providerSongId 和 audioUrl 互斥。 |
| providerSongId | string Mureka song_id(来自之前的生成结果)。与 audio 和 audioUrl 互斥。 |
| audioUrl | string 内部 ListenHub 音频 URL(须归属当前用户或公开)。与 audio 和 providerSongId 互斥。 |
| lyrics required | string 新歌词(必填) |
| prompt | string 风格/流派描述 |
{- "taskId": "string",
- "taskType": "GENERATE",
- "status": "pending"
}基于一段已有音频,从指定时间点继续延伸生成新内容。
积分消耗:与 generate 一致,按 model 档位扣费。
音频来源(三选一):
uploadUrl / audio(文件上传)— Suno provider 使用 uploadUrl(URL),Mureka 可用 audio 文件上传或 providerSongIdproviderSongId — Mureka provider,直接引用之前生成的 song_id异步流程:与 generate 一致。
| provider | string Default: "default" Enum: "default" "mureka" "suno" 音乐生成服务提供商 |
| audio | string <binary> 音频文件(mp3/m4a,最大 10MB)。Mureka provider 专用,与 providerSongId / uploadUrl 互斥。 |
| uploadUrl | string <uri> 音频文件 URL(任意可访问的外部链接或内部 GCS URL)。Suno provider 必填。 |
| providerSongId | string Mureka provider 的 song_id(来自之前的生成结果)。与 audio / uploadUrl 互斥。 |
| model | string Enum: "auto" "mureka-7.6" "mureka-8" "V4" "V4_5" "V4_5PLUS" "V4_5ALL" "V5" "V5_5" Mureka 支持 auto/mureka-7.6/mureka-8;Suno 支持 V4...V5_5 |
| continueAt | number > 0 Suno provider — 从音频的哪个时间点(秒)开始延伸 |
| extendAt | number [ 8 .. 420 ] Mureka provider — 从音频的哪个时间点(秒)开始延伸 |
| extendType | string Default: "tail" Enum: "tail" "head" Mureka provider — 延伸方向(tail 向后 / head 向前,head 仅 mureka-8) |
| lyrics | string Mureka provider — 新增段落的歌词 |
| prompt | string 歌词(Suno provider)或风格描述 |
| style | string 音乐风格 |
| title | string 歌曲标题 |
| instrumental | boolean 是否纯器乐(无人声) |
| negativeTags | string 排除的风格标签(逗号分隔) |
| vocalGender | string Enum: "m" "f" 人声性别 |
| styleWeight | number [ 0 .. 1 ] 风格权重 |
| weirdnessConstraint | number [ 0 .. 1 ] 创意约束度 |
| audioWeight | number [ 0 .. 1 ] 参考音频权重 |
{- "code": 0,
- "data": {
- "taskId": "string",
- "taskType": "EXTEND",
- "status": "pending"
}
}上传音频,转写带时间戳的歌词分段。同步返回。
| audio required | string <binary> 音频文件(mp3/m4a,最大 10MB) |
{- "success": true,
- "data": {
- "id": "string",
- "status": "success",
- "result": {
- "duration": 0,
- "lyricsSections": [
- { }
]
}
}
}上传音频,返回音乐描述、标签、流派与乐器。同步返回。
| audio required | string <binary> 待分析音频文件(mp3/m4a,最大 10MB) |
{- "success": true,
- "data": {
- "id": "string",
- "status": "success",
- "result": {
- "description": "string",
- "tags": [
- "string"
], - "genres": [
- "string"
], - "instruments": [
- "string"
]
}
}
}上传音频,分离为人声/贝斯/鼓/其他等音轨,返回 ZIP 下载地址。同步返回。
| audio required | string <binary> 待分离音频文件(mp3/m4a,最大 10MB) |
| model | string Default: "audio-separation-1" Enum: "audio-separation-1" "audio-separation-2" 分离模型;audio-separation-2 额外产出 MIDI |
{- "success": true,
- "data": {
- "id": "string",
- "status": "success",
- "result": {
- "zipUrl": "string",
- "midiZipUrl": "string",
- "expiresAt": 0
}
}
}通过 prompt 或参考音频生成纯音乐。prompt 与 referenceAudio 二选一,互斥。
异步任务,通过 GET /v1/music/tasks/{taskId} 轮询结果。
| prompt | string 风格/流派描述。与 referenceAudio 互斥。 |
| referenceAudio | string <binary> 参考音频文件(mp3/m4a,最大 10MB)。与 prompt 互斥。 |
| model | string Default: "auto" Enum: "auto" "mureka-7.6" "mureka-8" "mureka-o2" 模型版本(instrumental 不支持 mureka-9) |
{- "taskId": "string",
- "taskType": "GENERATE",
- "status": "pending"
}根据图片或视频生成配乐。image 与 video 二选一,互斥。
异步任务,通过 GET /v1/music/tasks/{taskId} 轮询结果。
| image | string <binary> 图片文件(jpg/jpeg/png/webp)。与 video 互斥。 |
| video | string <binary> 视频文件(mp4/mov/avi/mkv/webm)。与 image 互斥。 |
| prompt | string |
| model | string Default: "auto" Enum: "auto" "mureka-7.6" "mureka-8" "mureka-9" |
{- "taskId": "string",
- "taskType": "GENERATE",
- "status": "pending"
}基于参考音频或已有 song_id 生成单条乐器/人声音轨。
audio 与 providerSongId 二选一,互斥。异步任务,轮询 GET /v1/music/tasks/{taskId}。
| audio | string <binary> 参考音频文件(mp3/m4a/wav,最大 10MB)。与 providerSongId 互斥。 |
| providerSongId | string Mureka song_id(来自之前的生成结果)。与 audio 互斥。 |
| generateType required | string Enum: "Vocals" "Instrumental" "Drums" "Bass" "Guitar" "Keyboard" "Percussion" "Strings" "Synth" "FX" "Brass" "Woodwinds" 目标乐器/音轨类型 |
| prompt | string 风格/流派描述(必填) |
| lyrics | string 当 generateType 为 Vocals 时必填 |
| vocalGender | string Enum: "male" "female" 人声性别(仅 generateType=Vocals) |
| generateStart | number 起始时间(秒,可选) |
| generateEnd | number 结束时间(秒,可选) |
{- "taskId": "string",
- "taskType": "GENERATE",
- "status": "pending"
}分页查询当前用户的音乐生成任务列表,按创建时间倒序。
| page | integer >= 1 Default: 1 |
| pageSize | integer [ 1 .. 50 ] Default: 20 |
| status | string Enum: "pending" "generating" "uploading" "success" "failed" 按状态过滤 |
| keyword | string 搜索当前用户自己的视频任务标题;当前标题由文本 prompt 派生,大小写不敏感;服务端会 trim 并截断到 100 字符 |
{- "code": 0,
- "message": "string",
- "data": [
- {
- "id": "68e780390fc5c9a54f695a7e",
- "provider": "default",
- "taskType": "GENERATE",
- "status": "pending",
- "params": {
- "model": "string",
- "prompt": "string",
- "style": "string",
- "title": "string",
- "customMode": true,
- "instrumental": true
}, - "tracks": [
- {
- "title": "string",
- "tags": "string",
- "duration": 0,
- "audioUrl": "string"
}
], - "creditCost": 0,
- "errorMessage": "string",
- "createdAt": 0,
- "updatedAt": 0
}
]
}查询指定任务的详细信息,只能查询自己的任务。
| taskId required | string 音乐任务 ID |
{- "code": 0,
- "message": "string",
- "data": {
- "id": "68e780390fc5c9a54f695a7e",
- "provider": "default",
- "taskType": "GENERATE",
- "status": "pending",
- "params": {
- "model": "string",
- "prompt": "string",
- "style": "string",
- "title": "string",
- "customMode": true,
- "instrumental": true
}, - "tracks": [
- {
- "title": "string",
- "tags": "string",
- "duration": 0,
- "audioUrl": "string"
}
], - "creditCost": 0,
- "errorMessage": "string",
- "createdAt": 0,
- "updatedAt": 0
}
}供音乐生成服务异步回调使用,无需用户认证(skipAuth)。 通过 URL query 参数中的 HMAC token 验证请求合法性。 中间回调(如 TEXT_SUCCESS)静默处理,仅最终结果触发状态变更。
| token required | string HMAC 验证 token(创建任务时生成) |
回调 payload(格式由 provider 定义)
{ }{- "code": 0,
- "message": "string",
- "data": {
- "ok": true
}
}供 Suno 音乐生成服务异步回调使用,无需用户认证(skipAuth)。 通过 URL query 参数中的 HMAC token 验证请求合法性。 中间回调(如 TEXT_SUCCESS)静默处理,仅最终结果触发状态变更。
| token required | string HMAC 验证 token(创建任务时生成) |
回调 payload(格式由 Suno provider 定义)
{ }{- "code": 0,
- "message": "string",
- "data": {
- "ok": true
}
}异步创建视频生成任务,返回 taskId 用于后续轮询。
支持四种模式:
积分消耗:按 model × resolution × duration 计费,创建时即时扣除,失败自动退还。
频率限制:按用户和模型族限流,SeedDance 为 2 RPM,HappyHorse 为 5 RPM。
异步流程:
| model | string Default: "fast" Enum: "pro" "fast" "happyhorse" 模型档位(pro 高质量,fast 快速,happyhorse HappyHorse 模型) |
required | Array of objects or objects or objects or objects [ 1 .. 16 ] items 输入内容数组,支持混合类型:
|
| resolution | string Default: "720p" Enum: "480p" "720p" "1080p" 视频分辨率 |
| ratio | string Default: "16:9" Enum: "16:9" "4:3" "1:1" "3:4" "9:16" "21:9" "4:5" "5:4" 视频宽高比 |
| duration | integer [ 3 .. 15 ] Default: 5 生成视频时长(秒) |
| generateAudio | boolean Default: true 是否同时生成音频 |
| seed | integer [ -1 .. 4294967295 ] Default: -1 随机种子(-1 为随机) |
| inputVideoDuration | integer [ 0 .. 60 ] Default: 0 输入视频时长(秒),有 video_url 输入时必须 >= 2;Seedance 最大 15 秒,HappyHorse 最大 60 秒 |
| audioSetting | string Default: "auto" Enum: "auto" "origin" 音频设置(仅 video-edit 有效)。auto=模型生成音频,origin=保留原视频音频 |
Array of objects <= 9 items 参考图尺寸元数据。Seedance 2.0 reference_image 官方要求 width/height 单边在 (300, 6000),宽高比在 (0.4, 2.5),单图小于 30 MB;不做图片总像素下限校验。 | |
Array of objects <= 3 items 参考视频尺寸元数据。Seedance 2.0 reference_video 官方要求单边 [300, 6000]、宽高比 [0.4, 2.5]、总像素 [409600, 8295044]、单个 [2, 15] 秒、总时长不超过 15 秒、FPS [24, 60]、单个不超过 200 MB。 |
{- "model": "pro",
- "content": [
- {
- "type": "text",
- "text": "string"
}
], - "resolution": "480p",
- "ratio": "16:9",
- "duration": 5,
- "generateAudio": true,
- "seed": -1,
- "inputVideoDuration": 0,
- "audioSetting": "auto",
- "referenceImages": [
- {
- "role": "first_frame",
- "width": 1,
- "height": 1,
- "size": 0
}
], - "referenceVideos": [
- {
- "role": "reference_video",
- "width": 1,
- "height": 1,
- "duration": 0,
- "fps": 0,
- "size": 0
}
]
}{- "code": 0,
- "message": "string",
- "data": {
- "taskId": "string",
- "episodeId": "string",
- "status": "generating"
}
}分页查询当前用户的视频生成任务列表,按创建时间倒序。
| page | integer >= 1 Default: 1 |
| pageSize | integer [ 1 .. 100 ] Default: 20 |
| status | string Enum: "pending" "generating" "uploading" "success" "failed" 按状态过滤 |
{- "code": 0,
- "message": "string",
- "data": {
- "items": [
- {
- "id": "string",
- "episodeId": "string",
- "status": "pending",
- "model": "doubao-seedance-2-pro",
- "title": "string",
- "prompt": "string",
- "params": {
- "content": [
- { }
], - "resolution": "480p",
- "ratio": "16:9",
- "duration": 0,
- "generateAudio": true,
- "seed": 0
}, - "seed": 0,
- "creditCharged": 0,
- "inputVideoDuration": 0,
- "createdAt": 0
}
], - "page": 0,
- "pageSize": 0,
- "total": 0
}
}查询指定任务的详细信息,只能查询自己的任务。
| taskId required | string 视频生成任务 ID |
{- "code": 0,
- "message": "string",
- "data": {
- "id": "string",
- "status": "pending",
- "params": { },
- "duration": 0,
- "resolution": "string",
- "ratio": "string",
- "creditCharged": 0,
- "createdAt": 0,
- "updatedAt": 0
}
}根据模型、分辨率、时长等参数预估生成视频所需的积分。
| model required | string Enum: "pro" "fast" "happyhorse" 模型档位 |
| resolution required | string Enum: "480p" "720p" "1080p" 视频分辨率 |
| duration required | integer [ 3 .. 15 ] 生成视频时长(秒) |
| hasVideoInput | boolean Default: false 是否有视频输入 |
| inputVideoDuration | integer [ 0 .. 60 ] Default: 0 输入视频时长(秒),hasVideoInput=true 时必须 >= 2 |
| ratio | string Default: "16:9" Enum: "16:9" "4:3" "1:1" "3:4" "9:16" "21:9" "4:5" "5:4" 视频宽高比 |
Array of objects <= 9 items 参考图尺寸元数据。Seedance 2.0 reference_image 官方要求 width/height 单边在 (300, 6000),宽高比在 (0.4, 2.5),单图小于 30 MB;不做图片总像素下限校验。 | |
Array of objects <= 3 items 参考视频尺寸元数据。Seedance 2.0 reference_video 官方要求单边 [300, 6000]、宽高比 [0.4, 2.5]、总像素 [409600, 8295044]、单个 [2, 15] 秒、总时长不超过 15 秒、FPS [24, 60]、单个不超过 200 MB。 |
{- "model": "pro",
- "resolution": "480p",
- "duration": 3,
- "hasVideoInput": false,
- "inputVideoDuration": 0,
- "ratio": "16:9",
- "referenceImages": [
- {
- "role": "first_frame",
- "width": 1,
- "height": 1,
- "size": 0
}
], - "referenceVideos": [
- {
- "role": "reference_video",
- "width": 1,
- "height": 1,
- "duration": 0,
- "fps": 0,
- "size": 0
}
]
}{- "code": 0,
- "message": "string",
- "data": {
- "credits": 0
}
}创建 PixVerse 视频生成任务。v1 同时支持原子能力和营销 Agent,默认走国际站服务;传 language=zh 时走国内站。
text_to_video、image_to_video、transition、multi_transition、fusion、restyle、mimic、lip_sync。language=en(默认):国际站 https://app-api.pixverse.ai,使用国际站 API Key 和国际站 Agent ID。language=zh:国内站 https://app-api.pixverseai.cn,使用国内 API Key 和国内 Agent ID。text_to_video、image_to_video、transition、fusion;multi_transition、restyle、mimic、lip_sync 和 Agent 按各自接口/计费表处理。ad_master:至少 1 张商品图,当前不接受视频素材。promo_mix:至少 4 张商品图,最多 2 段视频素材。restyle / lip_sync 可通过 sourceTaskId 复用当前用户已有 PixVerse 成功任务的 providerTaskId。img_id / media_id、trace id 和 raw provider response 不会返回给客户端。| model | string Default: "pixverse" Enum: "pixverse" "v6" "v5" "v4.5" PixVerse provider model version;不传时按 capability 使用服务端默认值。 |
| language | string Default: "en" Enum: "zh" "en" PixVerse 服务区域选择;默认 en 走国际站,zh 走国内站。 |
| capability required | string Enum: "text_to_video" "image_to_video" "transition" "multi_transition" "fusion" "restyle" "mimic" "lip_sync" "agent" |
| prompt | string <= 2048 characters |
| duration | integer [ 1 .. 60 ] Default: 5 |
| aspectRatio | string Default: "16:9" Enum: "9:16" "16:9" "1:1" "4:3" "3:4" |
| quality | string Default: "720p" Enum: "360p" "540p" "720p" "1080p" |
| sourceTaskId | string 已有 ListenHub PixVerse 成功任务 id;restyle / lip_sync 优先使用该字段解析 source_video_id。 |
Array of objects <= 10 items | |
Array of objects <= 2 items | |
Array of objects <= 1 items | |
object |
{- "model": "pixverse",
- "language": "zh",
- "capability": "text_to_video",
- "prompt": "string",
- "duration": 5,
- "aspectRatio": "9:16",
- "quality": "360p",
- "sourceTaskId": "string",
- "pixverse": {
- "agentType": "ad_master",
- "motionMode": "string",
- "cameraMovement": "string",
- "templateId": "string",
- "sourceVideoId": "string",
- "restyleId": "string",
- "multiTransition": [
], - "tts": {
- "speakerId": "string",
- "content": "string"
}, - "soundEffectSwitch": true,
- "soundEffectContent": "string",
- "lipSyncTtsSwitch": true,
- "lipSyncTtsSpeakerId": "string",
- "lipSyncTtsContent": "string",
}
}{- "code": 0,
- "message": "string",
- "data": {
- "taskId": "string",
- "episodeId": "string",
- "status": "generating"
}
}根据 PixVerse capability、Agent 类型、清晰度和时长预估 ListenHub 预扣积分。默认按国内站/V6 可覆盖能力计费;PixVerse 返回的 provider credits 只作为成本观测,不自动补扣或退款。
| model | string Default: "pixverse" Enum: "pixverse" "v6" "v5" "v4.5" PixVerse provider model version;不传时按 capability 使用服务端默认值。 |
| language | string Default: "en" Enum: "zh" "en" PixVerse 服务区域选择;默认 en 走国际站,zh 走国内站。 |
| capability required | string Enum: "text_to_video" "image_to_video" "transition" "multi_transition" "fusion" "restyle" "mimic" "lip_sync" "agent" |
| duration | integer [ 1 .. 60 ] Default: 5 |
| quality | string Default: "720p" Enum: "360p" "540p" "720p" "1080p" |
object |
{- "model": "pixverse",
- "language": "zh",
- "capability": "text_to_video",
- "duration": 5,
- "quality": "360p",
- "pixverse": {
- "agentType": "ad_master"
}
}{- "code": 0,
- "message": "string",
- "data": {
- "tokens": 0,
- "credits": 0
}
}通过 episodeId 查询当前用户拥有的视频生成任务详情。
| episodeId required | string Episode ID |
{- "code": 0,
- "message": "string",
- "data": {
- "id": "string",
- "taskId": "string",
- "episodeId": "string",
- "status": "pending",
- "model": "string",
- "params": { },
- "videoUrl": "string",
- "coverUrl": "string",
- "creditCharged": 0,
- "enabledShare": true,
- "createdAt": 0,
- "updatedAt": 0
}
}软删除视频任务及关联的 episode。进行中的任务会退还积分。该单删端点已废弃,视频删除请改走批量 DELETE /v1/episodes。
| episodeId required | string Episode ID |
{- "code": 0,
- "message": "string",
- "data": {
- "success": true,
- "episodeId": "string"
}
}异步创建 ListenHub Voice 音频生成任务,返回 taskId 用于后续轮询。
音色:统一用 voices 数组(0-3 项,每项二选一类型)。不传/空 = 纯文本/音效直出(不卡音色选择)。
{ "type": "speaker", "id": "..." }:已注册音色。id 可以是 ListenHub 音色代号
(来自 GET /v1/speakers/list)或官方预置 voice_type(来自 GET /v1/listenhub-voice/voices,
如 zh_female_vv_uranus_bigtts),由服务端自动判别。{ "type": "reference", "url": "..." }:自定义参考音频 URL(克隆这段音色)。
每条 ≤30s、≤10MB,格式 wav/mp3/pcm/ogg_opus,须公开可访问的 http(s) URL。1 项 = 单音色朗读全文;多项 = 多音色对白,脚本里用 @音频1 / @音频2 按 voices
数组顺序指派每行台词归属(@音频1 = voices[0])。
⚠️ 多音色(>1 项)每项必须能进参考音频——官方预置 voice_type 顶级原生路径进不了
多音色(第三方硬限制),仅在单音色(voices 仅 1 项)时启用,音质最佳。多音色里若包含
已注册的官方预置音色(带示例音频),会自动降级走示例音频参考克隆与其他音色混排
(音质略逊于原生,换取可用);若是裸 voice_type(无参考音频可降级)仍会被拒
(33004 参数无效)。ListenHub 音色与自定义参考音频可自由混合多音色对白。
⚠️ 图片参考与音色互斥:传 image 时不能再传 voices(参考图片不能与
audio_url/audio_data/speaker 同时使用,官方硬限制),二者只能选一个,同传会被拒。
计费:按实际生成时长(秒)真扣,0.1125 积分/秒,向上取整、最低 1 积分。
创建时只做余额预检,不预占积分;出片后按真实音频时长结算。
可先调 POST /v1/listenhub-voice/estimate-credits 获取预估值。
频率限制:用户级 60 秒 / 5 次。
异步流程:
| model | string Default: "listenhub-voice-1.0" Value: "listenhub-voice-1.0" 模型版本 |
| text required | string <= 1400 characters 待合成文本(首尾空白会被裁剪)。多音色对白用 @音频1 / @音频2 前缀指派台词 |
Array of objects [ 0 .. 3 ] items 音色列表(0-3 项)。不传/空=纯文本/音效(不卡音色选择);1 项=单音色, 多项=多音色对白(@音频N 按顺序指派)。多音色每项必须能进参考音频——官方预置 voice_type 仅限单音色。 | |
object 参考图片(端到端「图片→音频」)。url / data 二选一。最多 1 张, ≤10MB,格式 jpeg/png/webp。与 voices 互斥:图片参考不能与 音色/参考音频同传(官方硬限制),二者只能选一个。 | |
object 音频参数(可选) | |
| durationHint | number [ 1 .. 110 ] 目标时长(秒),用于积分预估并提示模型生成「约 N 秒」的音频 |
| watermark | boolean 是否添加水印 |
{- "model": "listenhub-voice-1.0",
- "text": "string",
- "audioConfig": {
- "speechRate": -50,
- "loudnessRate": -50,
- "pitchRate": -12,
- "format": "mp3"
}, - "durationHint": 1,
- "watermark": true
}{- "code": 0,
- "message": "string",
- "data": {
- "taskId": "string",
- "status": "pending"
}
}分页查询当前用户的 ListenHub Voice 任务列表,按创建时间倒序。
| page | integer >= 1 Default: 1 |
| pageSize | integer [ 1 .. 100 ] Default: 20 |
| status | string Enum: "pending" "generating" "uploading" "success" "failed" 按状态过滤 |
{- "code": 0,
- "message": "string",
- "data": {
- "items": [
- {
- "id": "string",
- "status": "pending",
- "model": "listenhub-voice-1.0",
- "params": { },
- "audioDuration": 0,
- "creditCharged": 0,
- "creditRefunded": 0,
- "errorMessage": "string",
- "createdAt": 0,
- "updatedAt": 0
}
], - "page": 0,
- "pageSize": 0,
- "total": 0
}
}返回官方预置在线音色列表(596 个)。这些 voiceType 可作为
POST /v1/listenhub-voice/generate 的 voices: [{ type: "speaker", id: "<voiceType>" }]
传入(服务端自动识别为官方预置音色,走第三方顶级 speaker 字段)。
ListenHub 自有音色仍走 GET /v1/speakers/list。
| keyword | string <= 64 characters 按名称 / voiceType / 语种模糊过滤(可选) |
{- "code": 0,
- "message": "string",
- "data": {
- "total": 0,
- "items": [
- {
- "voiceType": "zh_female_vv_uranus_bigtts",
- "name": "Vivi 2.0",
- "language": "中文、日文、印尼、墨西哥西班牙语"
}
]
}
}查询指定任务的详细信息,只能查询自己的任务。
| taskId required | string ListenHub Voice 音频生成任务 ID |
{- "code": 0,
- "message": "string",
- "data": {
- "id": "string",
- "status": "pending",
- "model": "listenhub-voice-1.0",
- "params": { },
- "audioDuration": 0,
- "creditCharged": 0,
- "creditRefunded": 0,
- "errorMessage": "string",
- "createdAt": 0,
- "updatedAt": 0
}
}根据 durationHint 预估生成音频所需的积分。 缺省时按 120 秒上限估算;最终以实际生成时长结算,预估值仅供参考。
| durationHint | number [ 1 .. 110 ] 目标时长(秒),缺省按 120 秒上限估算 |
{- "durationHint": 1
}{- "code": 0,
- "message": "string",
- "data": {
- "credits": 0,
- "durationSeconds": 0,
- "note": "string"
}
}内部服务调用的审核接口,支持文本和图片审核。
注意:此接口仅供内部服务调用,需要使用内部 API Key 进行认证
认证方式:
Authorization: Bearer <internal_api_key>config.internalApiKeys功能特性:
| type required | string Enum: "text" "image" 审核类型 |
| text | string 待审核的文本内容(type=text 时必填) |
| imageUrl | string <uri> 待审核的图片 URL(type=image 时必填) |
{- "type": "text",
- "text": "这是一段需要审核的测试文本内容",
}{- "success": true,
- "data": {
- "taskId": "yidun_task_id_12345",
- "suggestion": 1,
- "isRejected": false
}
}