Inicio rápido
Pase de socio aprobado a primera reproducción y seguimiento de eventos en diez pasos. Todo se ejecuta en Sandbox (https://signal-partners.newunivers.ai/v1). Consulte la Guía de Sandbox.
Primero configure la URL base. Los ID de organización y claves proceden de las respuestas de reclamación y bootstrap:
export NSP_BASE="https://signal-partners.newunivers.ai/v1"
1. Obtener aprobación de la organización
Acepte la política de privacidad y envíe la solicitud:
curl -X POST "$NSP_BASE/partner-applications" \
-H "Content-Type: application/json" \
-d '{
"company_name": "Acme Streaming",
"service_type": "OTT",
"contact_name": "Jin Park",
"contact_email": "dev@acme.example",
"privacy_consent": true,
"target_territories": ["KR", "JP"],
"expected_use_case": "Catalog licensing + VOD playback"
}'Guarde de inmediato application_reference y status_token en almacenamiento seguro. El token se muestra una vez; no lo incluya en URL ni registros. Repetir el mismo email en 24 horas devuelve application_id existente. Sondee el estado mientras NU revisa.
Ejecute la reclamación exactamente una vez cuando el estado sea approved y claim_available sea true.
export NSP_APPLICATION_REFERENCE="nsp_app_..."
export NSP_STATUS_TOKEN="nsp_ast_..."
curl -X POST "$NSP_BASE/partner-applications/status" -H "Content-Type: application/json" -d "{"application_reference":"$NSP_APPLICATION_REFERENCE","status_token":"$NSP_STATUS_TOKEN"}"
curl -X POST "$NSP_BASE/partner-applications/claim" -H "Content-Type: application/json" -d "{"application_reference":"$NSP_APPLICATION_REFERENCE","status_token":"$NSP_STATUS_TOKEN"}"
export NSP_APPROVAL_TOKEN="nsp_appr_..."2. Emitir la primera clave de Sandbox
Tras aprobarse, cambie el token único de /partner-applications/claim por una clave Sandbox con prefijo nsp_test_. El secreto se muestra una vez: guárdelo. El Portal de socios de solo lectura permite revisar el estado, pero crear, rotar y revocar sigue siendo exclusivo de la API.
curl -X POST "$NSP_BASE/api-keys/bootstrap" \
-H "Content-Type: application/json" \
-d "{ \"approval_token\": \"$NSP_APPROVAL_TOKEN\" }"
export NSP_ADMIN_KEY="nsp_test_xxxxxxxxxxxxxxxx"3. Aplicar privilegios mínimos
Use la clave bootstrap para crear otra con solo catalog:read, playback:token y events:write. Guarde aparte una clave de servidor con api_keys:write y, opcionalmente, limite orígenes e IP. Consulte Claves de API.
curl --fail-with-body -X POST "$NSP_BASE/api-keys" \
-H "Authorization: Bearer $NSP_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"environment": "sandbox",
"scopes": ["catalog:read", "playback:token", "events:write"]
}'
export NSP_KEY="nsp_test_xxxxxxxxxxxxxxxx"4. Descargar la colección de Postman
Descargue Colección de Postman y Archivo de entorno Sandbox, impórtelos en Postman y configure base_url y api_key con los valores anteriores.
5. Listar títulos del catálogo
curl "$NSP_BASE/catalog/titles?territory=KR&limit=5" \
-H "Authorization: Bearer $NSP_KEY"La organización se deriva de la clave; no es necesario enviar X-NU-Partner-Id por separado.
Elija title_id de data[], liste episodios con GET /catalog/titles/{title_id}/episodes y copie episode_id. Consulte API de catálogo.
6. Autorizar reproducción
viewer_id_hash es SHA-256 calculado con ID y sal. Production exige 64 caracteres hexadecimales en minúscula; nunca PII original. Envíe preferences sin PII para personalizar el WebView.
No reutilice el valor de ejemplo. Calcule el hash en su servidor con una sal secreta del socio.
export NSP_VIEWER_HASH="$(printf '%s' 'stable-viewer-id:replace-with-secret-salt' | sha256sum | cut -d' ' -f1)"curl -X POST "$NSP_BASE/playback/tokens" \
-H "Authorization: Bearer $NSP_KEY" \
-H "Content-Type: application/json" \
-d '{
"title_id": "ttl_abc",
"episode_id": "ep_001",
"viewer_id_hash": "'"$NSP_VIEWER_HASH"'",
"country": "KR",
"device": "web",
"origin": "https://app.acme.example",
"preferences": { "subtitle_language": "ko", "autoplay_next": true },
"expires_in": 1800
}'Sandbox no exige acuerdo, pero sí controles de derechos: el título necesita paquete visible vigente y country, si se envía, debe estar permitido o se bloquea con territory_not_allowed. La respuesta incluye playback_session_id, expires_at, webview_url, manifest con hls/dash firmados y tracking con event_endpoint y required_events. Consulte API de reproducción.
7. Reproducir
Elija uno de los dos métodos equivalentes para la misma sesión:
- WebView alojada (recomendado): abra
webview_urlen WebView (WKWebView/android.webkit.WebView) o<iframe>. No requiere integrar reproductor y aplicapreferences. La URL contiene token firmado; trátela como secreto. - Reproductor propio: apunte hls.js, AVPlayer o ExoPlayer a
manifest.hls. La CDN valida firma y TTL antes de servir segmentos; nunca expone el archivo maestro.
8. Enviar un evento
curl -X POST "$NSP_BASE/events" \
-H "Authorization: Bearer $NSP_KEY" \
-H "Content-Type: application/json" \
-d '{
"event_id": "evt_acme_0001",
"event_type": "EPISODE_STARTED",
"title_id": "ttl_abc",
"episode_id": "ep_001",
"playback_session_id": "pbs_123",
"occurred_at": "2026-06-24T00:00:00Z"
}'Devuelve 200 con { data: { event_id, status: "validated", received_at } }. event_id es único por organización e idempotente; reenviarlo devuelve 409 duplicate_event_id. Consulte API de eventos.
9. Verificar la ingesta
Confirme validated. Guarde request_id de errores y use event_id estables para que los reintentos devuelvan duplicate_event_id en vez de contabilizar dos veces.
10. Solicitar una clave de Production
Al terminar, siga la Lista de Production. Ejecute un acuerdo hasta que status sea active y production_api_enabled, true (API de licencias); pida una clave nsp_live_, configure allowed_origins/allowed_ips y cambie NSP_BASE a https://signal-partners.newunivers.ai/v1.