Experience & Runtime API
Consulte y ejecute webtoons, juegos FMV, chatbots de personajes y vídeo lineal con una API basada en entitlements. El catálogo requiere catalog:read; las sesiones e interacciones, runtime:session.
Endpoints
| Método | Ruta | Token de Runtime |
|---|---|---|
| GET | /catalog/experiences | No |
| GET | /catalog/experiences/{experience_id} | No |
| GET | /catalog/experiences/{experience_id}/units | No |
| POST | /runtime/sessions | Se emite una vez en la respuesta |
| GET | /runtime/sessions/{session_id} | Obligatorio |
| POST | /runtime/sessions/{session_id}/revoke | Obligatorio |
| GET | /runtime/sessions/{session_id}/manifest | Obligatorio |
| POST | /runtime/sessions/{session_id}/fmv/decisions | Obligatorio |
| POST | /runtime/sessions/{session_id}/chat/turns | Obligatorio |
Catálogo de Experience
Interprete territorio, idioma, plataforma y capabilities dentro de la misma fila offers[]. No combine campos de offers o paquetes de derechos distintos. Los derechos de webtoon, FMV y chat son concesiones explícitas y se deniegan por defecto.
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"Sesiones de 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,languageyplatformson obligatorios.- El TTL solicitado es de 60 a 3.600 segundos. La caducidad real no supera el final más próximo del entitlement, deal o derecho.
- El valor original de
session_tokensolo aparece en la respuesta de creación; el servidor guarda únicamente su hash. - Las llamadas posteriores deben enviar la clave de API y
X-NU-Runtime-Token. - Use un request ID estable al crear sesiones; es obligatorio en decisiones FMV y turnos de chat. La revocación es idempotente.
- Los derechos, deals y entitlements se comprueban en cada llamada, por lo que una revocación afecta de inmediato a las sesiones existentes.
Manifest y rutas de contenido
El manifest solo devuelve valores logical_path seguros y ligados a la release. No expone buckets de origen, claves de almacenamiento ni URL privadas. Las URL de entrega por sesión se añadirán cuando exista un delivery plane separado.
Decisiones 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"}'El servidor aplica de forma atómica solo choices incondicionales permitidas en el nodo actual. Reintentar el mismo ID devuelve el mismo resultado; reutilizarlo con otra sesión o payload devuelve 409.
Chat de personajes
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"}'- La base actual es solo texto y comprueba PII y los presupuestos de turnos/tokens configurados tanto en entrada como en salida.
- El texto original no se escribe en metadatos de audit, event ni usage. ChatTurn guarda solo una huella HMAC específica de la finalidad.
- Una respuesta rechazada tras llamar al proveedor se mide solo con los tokens consumidos y un motivo no textual; cuenta para el presupuesto de la sesión.
- Las respuestas correctas se cifran y conservan temporalmente hasta 24 horas para su reproducción idempotente; después caducan.
- Si no hay proveedor aprobado o falla, la solicitud termina con
503 service_unavailablesin inventar una respuesta.