Experience & Runtime API
ウェブトゥーン、FMVゲーム、キャラクターチャットボット、リニア動画を1つのentitlementベースAPIで参照・実行します。カタログには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、キャラクターチャットの権利は明示的なgrantで、既定は拒否です。
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決定とchat turnでは必須です。revokeは本質的に冪等です。
- 権利、deal、entitlementは呼び出しごとに再確認されるため、取消しは既存セッションにも即時反映されます。
マニフェストとコンテンツパス
マニフェストはreleaseに固定された安全なlogical_pathだけを返します。元のbucket、storage key、非公開リポジトリURLは公開しません。session-scoped配信URLは別のdelivery planeが利用可能になった時点で追加されます。
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はtext-onlyで、入力と出力のPIIおよび設定済みturn/token budgetを検査します。
- 原文はaudit、event、usage metadataに記録せず、ChatTurnには用途別HMACフィンガープリントだけを保存します。
- Provider呼び出し後に拒否されたレスポンスは、原文なしで実消費tokenと非コンテンツ拒否理由だけを計測し、セッション予算に算入します。
- 成功レスポンスは冪等再生のため暗号化され、最大24時間一時保存された後に失効します。
- 承認済みproviderがない、または失敗した場合、架空のレスポンスを生成せず
503 service_unavailableで終了します。