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で終了します。