技术 / 架构与实现

19 请求、响应、数据示例与错误码

基于 Android 1.0.2 / 1.0.2-trial · 2026-10-10 · 完整正文

创建本机照片任务

{
  "title": "6G 通信",
  "title_secondary": "产业协同与应用路径",
  "text": "这是用于解释接口契约的合成朗读示例。",
  "voice": "zh-CN-YunjianNeural",
  "image_mode": "upload",
  "photos": [
    {"photo_name": "example.png", "photo_data": "<有效PNG字节的Base64,非data URI>"}
  ]
}

成功201返回job_view。试用版应先调用trial/photos取得photo_receipt并附加;已到期即使凭据有效也不能创建。photos数组为新多图契约,也兼容单图顶层photo_data/photo_name。所有图片在活动任务创建前校验,不因半批成功就启动任务。

URL/AI任务差异字段

{
  "text": "用于演示URL任务的正文",
  "image_mode": "url",
  "photo_url": "https://example.org/example.png"
}

上面example.org是说明占位,不执行下载。URL模式不需prompt/Key。AI模式使用以下差异字段,Key必须真实由用户提供,不应写在文档、日志或源码中:

{
  "text": "用于演示AI任务的正文",
  "image_mode": "generate",
  "provider": "seedream",
  "model": "doubao-seedream-5-0-pro-260628",
  "prompt": "横向构图的科技城市,蓝色光线,主体明确",
  "api_key": "<由用户在运行时填写,不作为文档凭据>",
  "payment_consent": true
}

素材筛选与确认

// POST /api/jobs/<id>/select-images
{"image_version": "<当前版本>", "selected_indices": [0, 2]}

// POST /api/jobs/<id>/confirm
{"image_version": "<筛选后的当前版本>"}

索引必须真实int、合法、非重复、非空;筛选仍按原图库顺序保存,不能当任意排序API。全选不改变版本;有变化会更新版本并清确认。confirm使用最新版本,不提交客户端自造摘要,SHA256由后端计算。

通用草稿字段

{
  "title": "示例",
  "titleSecondary": "副标题",
  "text": "朗读正文",
  "prompt": "图片要求",
  "voice": "zh-CN-YunxiNeural",
  "imageMode": "upload",
  "provider": "seedream",
  "selectedId": ""
}

注意草稿字段titleSecondary/imageMode为前端驼峰,任务title_secondary/image_mode为后端下划线。GET缺失/不可读草稿返回{},POST成功为{"ok":true};非法音色回默认、非法imageMode回upload、provider固定seedream、selectedId非法UUID回空。试用草稿保存会再次经过统一计数,不能绕过账本。

试用usage实际合成样例

下面样例来自独立临时目录中的Flask test_client调用,不包含个人内容,没有发起在线合成或收费请求。输入字符串“中😀,空格换行”用转义JSON表达实际5个码点,同文再次发送不增加。

// POST /api/mobile/trial/text
{"text": "中😀, \n"}

// HTTP 200
{
  "expired": false,
  "max_photos": 10,
  "max_text_characters": 10000,
  "photos_remaining": 10,
  "photos_used": 0,
  "text_remaining": 9995,
  "text_used": 5,
  "wechat": "wzqy2019"
}

trial-status额外有completed;trial/photos额外有photo_receipt;migration_note是可选说明。恰好10000字或10张HTTP200但expired=true,后续制作HTTP400。text非string如{"text":1}返回400“文案格式无效”;trial/photos仅upload模式,url不接受。

{
  "error": "试用已到期:累计输入最多 10000 字(含标点、空格和换行)或累计选择 10 张照片;获取正式版请联系微信:wzqy2019"
}

HTTP结果分类

状态码 主要含义 处理建议
200 状态/读取/动作接受 仍需检查job状态或expired,不把200当制作一定成功
201 新任务已建立 继续轮询素材步骤
400 格式、参数、标题、图片或试用到期 显示error,按原因处理
403 Android密钥、Host、Origin或本机会话不合法 仅明确过期拒绝可恢复一次会话
404 未知任务、动作、媒体或文件 不试图扩大路径范围
409 活动冲突、未就绪、素材版本变化、未知付费重发未确认 等处理结束或重新预览/明确决定
413 超64MiB请求体 压缩或减少照片
415 非JSON POST 使用正确内容类型;可能为Flask默认HTML错误,不保证统一JSON
500/其他异常 未被业务捕获的服务错误或环境故障 保留输入/素材,检查诊断,不自动重发收费动作

注册的400/403/404/409/413通常返回{"error":...};会话拒绝另有code。不是所有HTTP异常均有统一结构,文档/客户端应保留非JSON失败分支。

把这些功能用到你的内容里。

免费试用、正式版优惠授权与招商合作:微信 wzqy2019。说明你需要配音、照片视频、PC或Android端,我们一起确定适合的使用方式。

合作从一次沟通开始

让你的内容制作,
找到合适的工作台。

免费试用、优惠授权、PC与Android版本、工作室及渠道合作意向,欢迎直接咨询。

打开微信,搜索 wzqy2019,添加时备注“听文合作”。具体授权、价格与合作政策以沟通为准;本站不收款。