라이선스 API

특정 지역과 언어에서 타이틀을 배포할 권리의 가격을 산정하고 요청합니다. 견적은 구속력 없는 추정치(license:read)이며 요청은 NU가 검토하고 체결할 실제 계약을 시작합니다(license:write).

엔드포인트

메서드경로용도
POST/licenses/quote가격 추정 및 권리 확인이며 구속력이 없습니다.
POST/licenses/requests라이선스 요청(계약)을 생성합니다.
GET/licenses보유 계약 목록을 상태로 필터링하여 조회합니다.
GET/licenses/{license_id}계약 상세입니다.

비즈니스 모델

business_model설명
MG_RS최소 보장금 + 수익 배분(MG는 RS에서 회수)
PURE_RS최소 보장금 없는 순수 수익 배분
FLAT_LICENSE기간 단위 정액 라이선스 비용
API_FEE_RSAPI 또는 플랫폼 수수료 + 수익 배분
DATA_LICENSE데이터 또는 지표 라이선싱
UNDECIDED아직 선택되지 않음(모델 합의 전 기본값)

이 모델들이 정산금에 반영되는 방식은 정산 API를 참고하세요.

견적과 요청

  • 견적 — 반복 호출해도 안전하며 추정치와 availability를 반환합니다. 아무것도 확정되지 않습니다.
  • 요청 — NU 검토를 위해 계약을 제출합니다. 계약 생애주기에 진입하며 active가 되기 전에 서명된 계약서가 필요할 수 있습니다.

견적 받기

curl -X POST "https://signal-partners.newunivers.ai/v1/licenses/quote" \
  -H "Authorization: Bearer nsp_live_xxx" \
  -H "X-NU-Partner-Id: org_acme" \
  -H "X-NU-Request-Id: req_license_0001" \
  -H "Content-Type: application/json" \
  -d '{
    "title_id": "ttl_abc",
    "territories": ["KR", "JP"],
    "languages": ["ko", "en"],
    "exclusive": false,
    "resale_allowed": false,
    "expected_monthly_views": 200000,
    "business_model": "MG_RS"
  }'
{
  "data": {
    "result": "auto_quote",
    "availability": {
      "available": true,
      "rights_status": "clear",
      "conflicts": []
    },
    "estimated_terms": {
      "business_model": "mg_rs",
      "mg_amount": 25000,
      "revenue_share_rate": 0.35,
      "flat_license_fee": null,
      "api_fee_monthly": null,
      "currency": "USD"
    },
    "next_step": "submit_license_request"
  }
}

요청 생성

curl -X POST "https://signal-partners.newunivers.ai/v1/licenses/requests" \
  -H "Authorization: Bearer nsp_live_xxx" \
  -H "X-NU-Partner-Id: org_acme" \
  -H "Content-Type: application/json" \
  -d '{
    "title_id": "ttl_abc",
    "territories": ["KR"],
    "languages": ["ko"],
    "exclusive": false,
    "business_model": "MG_RS",
    "expected_monthly_views": 200000,
    "message": "Launch on Acme OTT, KR only."
  }'
{
  "data": {
    "license_deal_id": "lic_123",
    "status": "requested",
    "next_step": "nu_internal_review"
  }
}

성공한 요청은 HTTP 200를 반환합니다. 선택적 X-NU-Request-Id로 멱등하게 동작하여 완료된 재시도는 원본 응답을 반환하고 처리 중인 동시 중복은 409 conflict를 반환합니다.

계약 상태 생애주기

requested → reviewing → quoted → negotiating → approved → contracting → signed → active → expired
                    ↘ rejected                                                            ↘ cancelled
  • production_api_enabled: trueactive 계약만 해당 타이틀, 지역 및 에피소드 집합의 Production 재생을 인가합니다.

목록 조회 및 필터링

curl "https://signal-partners.newunivers.ai/v1/licenses?status=active" \
  -H "Authorization: Bearer nsp_live_xxx" -H "X-NU-Partner-Id: org_acme"

계약 data[]를 반환하며 pagination 봉투는 없습니다. 목록과 단일 계약 응답 모두 updated_at을 포함합니다.

동기화 유지(폴링)

웹훅은 제공되지 않습니다. quoted 또는 active 같은 상태 변경을 감지하려면 updated_since로 이 엔드포인트를 폴링하세요. 지금까지 확인한 가장 큰 updated_at을 보내면 이후 변경만 오름차순으로 받아 워터마크를 전진시킬 수 있습니다.

curl "https://signal-partners.newunivers.ai/v1/licenses?updated_since=2026-06-24T10:00:00Z" \
  -H "Authorization: Bearer nsp_live_xxx" -H "X-NU-Partner-Id: org_acme"

이후 재생에서 license_not_active가 반환되면 여기에서 계약의 statusproduction_api_enabled를 확인하세요.