四月在抖音走红的 HappyOyster(快乐生蚝)是实时交互世界模型:聊天模型交一段回答、文生视频交一段定死的片段,它交的是一个能走进去、你走一步它现算一步、建好可查可删可派生的世界。9 月 17 日已在百炼上架三个模型并公开定价。这篇把北京区 happyoyster-1.0-adventure 的服务端 Open API 全流程交给 Agent 跑了一遍,每步的返回长什么样、哪里会摔跤,都在下面。
用百炼的 HappyOyster Adventure 模型,走一遍世界创建到删除的全流程。先画一张 1.5 到 2.0 比例的黄昏海岸首帧图;建一个第一人称的世界;轮询到 ready 报构建耗时;换一张进房凭证;查详情和列表;最后删掉,用列表确认 total 归零。
三个模型,只有一扇门开着
happyoyster-1.0-adventure(世界探索):北京区可用,本文主角。首帧图加描述,生成可移动、可战斗、可骑乘的实时交互世界happyoyster-1.0-directing(实时导演):流式长视频 + 中途指令注入,定价页只列新加坡/弗吉尼亚,北京区直调实测 HTTP 403 AccessDeniedhappyoyster-1.0-acting(角色演绎):官方标注邀测
架构:服务端 REST + 客户端 RTC
服务端 Open API 用标准 HTTPS 管理世界全生命周期,鉴权就是百炼 API Key(Bearer 头),无额外开通。客户端 SDK(Android/iOS/Web)走 RTC 通道进房体验。这个分层决定了哪些环节 Agent 就能跑完、哪些必须写客户端。
这条线上的六个接口合起来只干一件事:把「用户能走进去的 AI 世界」装进你的产品。创建把描述变成世界,轮询等它建熟(实测 19.5 秒),换票给前端发进房门票,详情/列表做管理后台,删除收尾。不写代码的用户用 C 端 App 即可;API 的价值是把这套体验搬进你自己的产品。
服务端六环实测
创建(POST /worlds)
这一步把一句描述加一张图变成一个世界。必填字段:perspective(first_person/third_person)、prompt(≤2000 字符)、firstFrameImage(横屏 1.5–2.0 比例、<6MB、url/base64 二选一,不达标直接被拒)、eventStyle(normal/dramatic)。我用 qwen-image-3.0 生成了比例 1.75 的黄昏海岸公路图,转存 OSS 后传 URL。响应 2.1 秒拿到世界编号,状态 generating。请求体里的 async 传 true:世界构建走异步,调用方建档后轮询查态,同步等待没有任何收益。
提示词写法遵循官方规则「场景里有什么就能玩什么」:图里有车就写「路面平整可以加速」,想看到的反应(命中迸火花、对方踉跄)写进 prompt。
轮询(GET /worlds/build-status)
3–5 秒间隔轮询至 ready。我创建后 4 秒首查就 ready 了,实测构建耗时 19.5 秒,等不到半分钟一个世界就绪。ready 响应附带模型自动生成的世界名「黄昏海岸」。status 字段从 generating 翻成 ready 就算完成,轮询本身不计费,节奏不用太抠。
换票(POST /worlds/get-travel-credential)
这一步给前端发进房门票:返回 tk_ 前缀一次性 ticket,1800 秒有效,只能由客户端 SDK 消费;过期或已用重新签发即可,服务端不必缓存。注意:换票不创建 Travel,Travel 在客户端进房成功时才创建。
详情与列表
这两个接口做管理后台用:列表分页参数为 pageIndex / pageSize,元数据完整回显 perspective、creationModel、uploadMode 与 createdAt,做「世界工坊」够用。详情仅支持 query 参数(/worlds/detail?encryptedWorldId=),路径参数形态返回 Spring 风格 404,连错误格式都自成一套。
删除(POST /worlds/delete)
删除接口是 POST 而非 DELETE 方法(DELETE /worlds/{id} 实测 404),body 传 encryptedWorldId,响应 deleted: true,复查列表归零。
四个实测坑与一个 200 陷阱
- 响应体带
output包装({request_id, output:{code, message, data}}),文档示例没有这层 - 接口间结构不统一:换票接口是裸
{code, message, data} - 详情只认 query 参数
- 删除用 POST 不用 DELETE
200 陷阱:缺 perspective 的负例返回 HTTP 200 + 业务码 400000。错误处理建议三层:HTTP 状态 → 业务 code → 结构探测。403001 跨模型/账号、403003 临时 key 误调主 key 接口、403004/403005 首帧内容或版权校验、403007/403008 容量问题。另外 404000 在产物接口里是多义的:生成中、已失败、不存在都返回它,官方文档明确提醒别一律当「不存在」处理。
能力边界
服务端到换票为止。进房体验、操控指令(sendCommand)、产物导出全部在客户端 SDK 侧;不进房则无 Travel、无视频流、无产物。产物接口提供四个导出变体:original、withWatermark、withInstruction(交互贴图版)、withInstructionAndWatermark,全部要求世界有过进房记录。想完整复现快乐生蚝的体验,客户端代码绕不开。
成本与计量
世界创建 0.05 元/次,体验 0.2 元/秒(480P,默认 60 秒、SDK 上限 120 秒),首帧生图约 0.2 元,本次实测合计约 0.25 元,查询类接口全程不计费。注意:世界模型用量不出现在控制台「模型用量」模块(bl usage stats 亦不可见),官方口径以账单为准。
适用场景建议
互动剧/AI 陪伴:国内唯一可 API 接入的实时世界模型,0.05 元试错。UGC 世界工坊:列表/详情/删除/换票构成现成内容管理后端,refWorldId 支持从已有世界衍生创建。Directing 与 Acting 开放后,接口形态大概率与 Adventure 同构,先行接入经验可直接复用。Directing 的剧本输入走 scriptlist 六段式(世界观、角色、目标、阻碍、结局、氛围)加六条 LOCK 锁定(视角、位置、节奏等),提前设计剧本结构能省一轮返工。
想自己跑一遍:Key 在控制台密钥页签签发(https://bailian.console.aliyun.com/cn-beijing/?source_channel=key_github&tab=app#/api-key),CLI 安装页有官方 skill 包,装好把任务描述发给 Agent 就能调(https://bailian.console.aliyun.com/cli?source_channel=cli_github&)。