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
| Method | Path | Runtime token |
|---|---|---|
| GET | /catalog/experiences | No |
| GET | /catalog/experiences/{experience_id} | No |
| GET | /catalog/experiences/{experience_id}/units | No |
| POST | /runtime/sessions | Issued once in response |
| GET | /runtime/sessions/{session_id} | Required |
| POST | /runtime/sessions/{session_id}/revoke | Required |
| GET | /runtime/sessions/{session_id}/manifest | Required |
| POST | /runtime/sessions/{session_id}/fmv/decisions | Required |
| POST | /runtime/sessions/{session_id}/chat/turns | Required |
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, andplatformare required.- Requested TTL is 60–3,600 seconds. Actual expiry never exceeds the earliest entitlement, deal, or rights end time.
- The raw
session_tokenappears 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_unavailableand never invents a response.