Experience & Runtime API

Browse and run webtoons, FMV games, character chatbots, and linear video through one entitlement-based API. Catalog calls require catalog:read; sessions and interactions require runtime:session.

Endpoints

MethodPathRuntime token
GET/catalog/experiencesNo
GET/catalog/experiences/{experience_id}No
GET/catalog/experiences/{experience_id}/unitsNo
POST/runtime/sessionsIssued once in response
GET/runtime/sessions/{session_id}Required
POST/runtime/sessions/{session_id}/revokeRequired
GET/runtime/sessions/{session_id}/manifestRequired
POST/runtime/sessions/{session_id}/fmv/decisionsRequired
POST/runtime/sessions/{session_id}/chat/turnsRequired

Experience catalog

Interpret territory, language, platform, and capabilities within the same offers[] row. Never combine fields from different offers or rights packages to create new permission. Webtoon, FMV, and character-chat rights are explicit grants and default to deny.

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 sessions

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, and platform are required.
  • Requested TTL is 60–3,600 seconds. Actual expiry never exceeds the earliest entitlement, deal, or rights end time.
  • The raw session_token appears only in the creation response; the server stores only its hash.
  • Subsequent calls must send both the API key and X-NU-Runtime-Token.
  • Use a stable request ID for session creation; it is mandatory for FMV decisions and chat turns. Revoke is inherently idempotent.
  • Rights, deals, and entitlements are checked on every call, so revocation affects existing sessions immediately.

Manifest and content paths

The manifest returns only release-bound, safe logical_path values. It never exposes source buckets, storage keys, or private repository URLs. Session-scoped delivery URLs will be added when a separate delivery plane is available.

FMV decisions

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"}'

The server atomically applies only unconditional choices allowed at the current node. Retrying the same request ID returns the same result; reusing it for another session or payload returns 409.

Character chat

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"}'
  • The current foundation is text-only and checks PII and configured turn/token budgets on input and output.
  • Raw text is not written to audit, event, or usage metadata. ChatTurn stores only a purpose-specific HMAC fingerprint.
  • A response rejected after a provider call is metered using only actual consumed tokens and a non-content rejection reason; it still counts toward the session budget.
  • Successful responses are encrypted and retained temporarily for idempotent replay for up to 24 hours, then expire.
  • If no approved provider is available or it fails, the request ends with 503 service_unavailable and never invents a response.