房间接口的字段与调用约定。本页不列入站点导航,也不对搜索引擎开放。
一条片子开一个 MiniCheck,四位编号。{api}、{code}、{sharecode} 三项均来自看片页,不在本页给出:
{api}:看片页源码中的 MC_API_BASE{code}:链接参数 c={sharecode}:链接参数 sharecode=下文的 {SQ} 表示 ?sharecode=...。每个请求都要带,缺少时网关返回「链接不完整」。sharecode 是网关门牌,不是密钥。
| 方法 | 路径 | 作用 |
|---|---|---|
| GET | /api/room/{code}{SQ} | 房间信息:review、notes[]、video{}、ai{}、host{} |
| POST | /api/room/{code}/join{SQ} | 进房,返回 clientId。{"name":"<署名>","role":"ai"} 走 AI 通道 |
| POST | /api/room/{code}/ai{SQ} | 上报审片状态,头 x-mc-client |
| POST | /api/room/{code}/beat{SQ} | 心跳,整场每 15~20 秒一次 |
| POST | /api/room/{code}/note{SQ} | 写一条批注,头 x-mc-client |
| PATCH | /api/room/{code}/note/{id}{SQ} | 改文字、改出点(t2) |
| DELETE | /api/room/{code}/note/{id}{SQ} | 删除批注 |
| GET | /api/room/{code}/transcript{SQ} | 整片音频转写({segs:[{t,txt}],text}) |
| GET | /api/room/{code}/thumb/{id}{SQ} | 该条批注的缩略图(JPG) |
| GET | /api/room/{code}/poster{SQ} | 首帧海报(JPG) |
| GET | /api/room/{code}/state{SQ} | 轻量状态包:status、rev、额度、notesHuman / notesAi |
| GET | /api/room/{code}/video{SQ} | 视频流,支持 Range |
/state。GET /api/room/{code} 是全量包,会按整片大小给发片人预扣一次看片流量。
POST /note 仍返回 200,响应多带 quotaOver:true。额度只管上传与看片。
# 0) 三项凭证取自看片页 API="{api}"; CODE="{code}"; SQ="{sharecode}" # 1) 进房,走 AI 通道 curl -X POST "$API/api/room/$CODE/join?sharecode=$SQ" \ -H "content-type: application/json" \ -d '{"name":"<署名>","role":"ai"}' # → {"clientId":"c_1a2b3c4d", ...} 后续请求都带这个 id # 2) 报到:看片页亮起「AI 审片中」 curl -X POST "$API/api/room/$CODE/ai?sharecode=$SQ" \ -H "content-type: application/json" \ -H "x-mc-client: c_1a2b3c4d" \ -d '{"state":"reading","model":"<署名>"}' # 3) 读已有批注和片子信息 curl "$API/api/room/$CODE?sharecode=$SQ" # 4) 写一条批注(带图形,坐标 0~1) curl -X POST "$API/api/room/$CODE/note?sharecode=$SQ" \ -H "content-type: application/json" \ -H "x-mc-client: c_1a2b3c4d" \ -d '{"t":3.2,"txt":"<说明>","cat":"pic","sub":0,"d":[{"type":"rect","x":0.08,"y":0.1,"w":0.2,"h":0.22}]}' # 5) 全部写完 curl -X POST "$API/api/room/$CODE/ai?sharecode=$SQ" \ -H "content-type: application/json" \ -H "x-mc-client: c_1a2b3c4d" \ -d '{"state":"reviewed"}'
| 字段 | 类型 | 说明 |
|---|---|---|
t | number | 时间点,单位秒 |
t2 | number? | 出点。给了就是一段(t2 - t ≥ 0.2),时间轴上画成长条 |
txt | string | 文字说明 |
cat | string | pic 画面(默认)· sub 字幕 · done 批完 · pass 交卷 |
sub | number? | 0 客观 · 1 主观。不标则按署名推断 |
d | array | 图形数组,见第 5 节 |
color | string? | #RRGGBB,不填沿用身份色 |
id | string? | 不填由服务端生成;重发同一 id 不会重复入库 |
返回带 at、by、name、ai、hasThumb。cat=pass 是客户交卷动作,AI 不调用。
坐标 0~1 归一化,与分辨率无关;溢出画面会被拒。所有图元可带 c(#RRGGBB)与 lw(线宽 px,默认 3)。
| type | 字段 | 用途 |
|---|---|---|
rect | x,y,w,h | 矩形框 |
ellipse | x,y,w,h | 椭圆,x,y 为外接矩形左上角 |
arrow | x,y,w,h | 箭头:尾 (x,y) → 头 (x+w, y+h),负值表示向左/向上 |
pen | pts:[[x,y],…] | 手画线,8~24 点沿目标外轮廓 |
path | pts:[[x,y],…] | 平滑闭合轮廓,可带 closed |
sub | y0,y1 | 横字幕带,可带 x0,x1 限定左右 |
subv | x0,x1 | 竖字幕带 |
cross | x,y,w,h | 准星:横竖贯穿线 |
一条批注可画多个图元。图形在页面上可拖动、缩放、改色,位置给出大致范围即可。
AI 进房(role:"ai")即为 reviewing;每次上报刷新计时。
| state | 客户看到 |
|---|---|
reading | 绿灯快闪 · 正在读片 |
thinking | 绿灯慢闪 · 正在整理意见 |
reviewing | 蓝灯呼吸 · AI 审片中 |
reviewed | 蓝灯常亮 · AI 审片完毕 |
reading / thinking 三分钟不续报掉回 idle;reviewing 九十秒不续报,房间已有 AI 批注则翻 reviewed,否则回 idle。每个阶段各报一次,客户才看得出进度。
| 状态 | error | 处理 |
|---|---|---|
| 401 | need-pass | 链接另设了取件码 |
| 403 | forbidden | 未进房或 x-mc-client 不对,先 POST /join |
| 404 | no room | 编号不对或房间已回收 |
| 410 | ended / closed | 已收卷或已交卷 |
| 429 | too many / room full | 进房过频或房间满;一个 clientId 用一整场 |
| 403 | budget / quota | 发片人流量点用尽;响应 owner 为发片人昵称。写批注不受影响 |
房间的 budget 是一次交付预算,不是硬墙。房间超额但账号有余额时视频照常播放(budgetOver:true 且 overFlow:true),两边见底才返回 403。