Experience & Runtime API
通过统一的 entitlement API 浏览和运行网络漫画、FMV 游戏、角色聊天机器人及线性视频。目录调用需要 catalog:read;会话与交互需要 runtime:session。
端点
| 方法 | 路径 | Runtime 令牌 |
|---|---|---|
| GET | /catalog/experiences | 否 |
| GET | /catalog/experiences/{experience_id} | 否 |
| GET | /catalog/experiences/{experience_id}/units | 否 |
| POST | /runtime/sessions | 在响应中签发一次 |
| GET | /runtime/sessions/{session_id} | 必需 |
| POST | /runtime/sessions/{session_id}/revoke | 必需 |
| GET | /runtime/sessions/{session_id}/manifest | 必需 |
| POST | /runtime/sessions/{session_id}/fmv/decisions | 必需 |
| POST | /runtime/sessions/{session_id}/chat/turns | 必需 |
Experience 目录
地区、语言、平台和 capability 必须在同一 offers[] 行内解释。不得组合不同 offer 或 rights package 的字段来创建新权限。网络漫画、FMV 和角色聊天权利均须明确授予,默认拒绝。
curl "https://signal-partners.newunivers.ai/v1/catalog/experiences?experience_type=webtoon&territory=KR&language=ko&platform=web" \
-H "Authorization: Bearer nsp_live_xxx" \
-H "X-NU-Partner-Id: org_acme"Runtime 会话
curl -X POST "https://signal-partners.newunivers.ai/v1/runtime/sessions" \
-H "Authorization: Bearer nsp_live_xxx" \
-H "X-NU-Partner-Id: org_acme" \
-H "X-NU-Request-Id: req_runtime_0001" \
-H "Content-Type: application/json" \
-d '{
"experience_id": "exp_webtoon_01",
"country": "KR",
"language": "ko",
"platform": "web",
"viewer_id_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"expires_in": 1800
}'country、language和platform为必填项。- 请求 TTL 为 60–3,600 秒。实际到期时间不会晚于 entitlement、deal 或 rights 中最早的结束时间。
- 原始
session_token仅出现在创建响应中;服务器只存储其哈希。 - 后续调用必须同时发送 API 密钥和
X-NU-Runtime-Token。 - 建议创建会话时使用稳定的 request ID;FMV 决策和聊天轮次必须提供。revoke 本身幂等。
- 每次调用都会重新检查 rights、deal 和 entitlement,因此撤销会立即影响现有会话。
Manifest 与内容路径
Manifest 仅返回绑定 release 的安全 logical_path。不会暴露源 bucket、storage key 或私有存储库 URL。独立 delivery plane 可用后再提供会话范围的交付 URL。
FMV 决策
curl -X POST "https://signal-partners.newunivers.ai/v1/runtime/sessions/run_01/fmv/decisions" \
-H "Authorization: Bearer nsp_live_xxx" \
-H "X-NU-Partner-Id: org_acme" \
-H "X-NU-Runtime-Token: nsp_rt_xxx" \
-H "X-NU-Request-Id: req_fmv_0001" \
-H "Content-Type: application/json" \
-d '{"choice_id":"choice_left"}'服务器仅以原子方式应用当前节点允许的无条件 choice。使用同一请求 ID 重试会返回相同结果;将其用于其他会话或 payload 会返回 409。
角色聊天
curl -X POST "https://signal-partners.newunivers.ai/v1/runtime/sessions/run_01/chat/turns" \
-H "Authorization: Bearer nsp_live_xxx" \
-H "X-NU-Partner-Id: org_acme" \
-H "X-NU-Runtime-Token: nsp_rt_xxx" \
-H "X-NU-Request-Id: req_chat_0001" \
-H "Content-Type: application/json" \
-d '{"message":"Hello"}'- 当前 foundation 仅支持文本,并对输入输出检查 PII 及配置的 turn/token budget。
- 原文不会写入 audit、event 或 usage metadata;ChatTurn 仅存储特定用途的 HMAC 指纹。
- Provider 调用后被拒绝的响应仅按实际消耗 token 和非内容拒绝原因计量,不保存原文,并计入会话预算。
- 成功响应会加密并临时保留最多 24 小时以便幂等重放,随后过期。
- 如果没有获批 provider 或调用失败,请求将以
503 service_unavailable结束,绝不会编造响应。