인증

POST /partner-applications POST /api-keys/bootstrap를 제외한 모든 엔드포인트는 인증이 필요합니다. 반드시 서버 측에서만 인증하세요. API 키를 브라우저나 모바일 클라이언트로 전송해서는 안 됩니다 (보안 모범 사례 참고).

필수 헤더

헤더필수예시비고
AuthorizationBearer nsp_live_xxxBearer API 키. 샌드박스 키는 nsp_test_로, 프로덕션 키는 nsp_live_로 시작합니다.
X-NU-Partner-Id아니오org_xxx선택 사항. 전송할 경우 키의 조직과 일치해야 하며, 불일치 시 거부됩니다. 생략해도 무방합니다 — 키가 이미 조직을 식별합니다.
X-NU-Request-Id아니오req_01HQ...클라이언트가 생성한 추적 ID. 재생 토큰 및 라이선스 요청 생성 시 멱등 키로도 사용됩니다.
curl "https://nu-signal-partners.vercel.app/v1/catalog/titles" \
  -H "Authorization: Bearer nsp_live_xxxxxxxxxxxx" \
  -H "X-NU-Partner-Id: org_acme" \
  -H "X-NU-Request-Id: req_01HQABCDEF"

Bearer 키

키는 자체 환경(nsp_test_ nsp_live_)을 인코딩하며 단일 조직에 바인딩됩니다. 샌드박스와 프로덕션은 서로 다른 기본 URL을 사용합니다. 요청별 환경 게이트는 없으며, 키가 자체 환경을 담고 있어 모든 요청이 해당 환경에서 처리됩니다. 키는 호출할 수 있는 엔드포인트를 제어하는 스코프를 포함합니다. 관리, 회전, 폐기는 API 키에서 다룹니다.

X-NU-Partner-Id

선택 사항입니다. 키 자체가 이미 조직을 식별하므로 이 헤더는 필수가 아닙니다. 전송할 경우 키가 발급된 조직과 동일한 조직을 참조해야 하며, 불일치 시 invalid_api_key로 거부됩니다. 헤더가 없으면 통과합니다. 카탈로그 가시성, 라이선스 거래, 이벤트, 정산은 헤더 유무와 관계없이 키의 조직으로 스코프됩니다.

X-NU-Request-Id

선택 사항이지만 권장됩니다. 논리적 요청마다 고유한 값을 제공하면 귀하의 로그를 NU의 로그와 연결할 수 있으며, 실패 시 error.request_id 로 그대로 반환됩니다. POST /playback/tokens, POST /licenses/requests, POST /api-keys/{id}/rotate에서 멱등 윈도우 내에 같은 값을 재사용하면 완료된 응답이 재생되거나, 첫 요청이 아직 처리 중이면 409 conflict를 반환합니다.

401과 403 동작

상황HTTPerror.code
키 누락 / 형식 오류 / 알 수 없는 키401invalid_api_key
키 만료, 또는 X-NU-Partner-Id 불일치401invalid_api_key
키가 폐기됨401api_key_revoked
인증되었으나 키에 스코프가 없음403missing_scope
조직이 아직 승인되지 않음403organization_not_approved
라이선스 / 지역 / 에피소드가 인가되지 않음403license_not_active / territory_not_allowed / episode_not_licensed

401은 "인증할 수 없음"을 의미합니다. 403은 "인증되었으나 인가되지 않음"을 의미합니다. 전체 매핑은 오류 코드를 참고하세요.

스코프

스코프권한
catalog:read타이틀 및 에피소드 조회
license:read라이선스 견적 및 거래 조회
license:write라이선스 요청 생성
api_keys:readAPI 키 목록 조회
api_keys:writeAPI 키 생성, 수정, 회전, 폐기
playback:token재생 토큰 발급, 세션 조회
events:write단일 및 배치 이벤트 전송
settlement:read정산 및 항목 조회
settlement:dispute정산 분쟁 제기

각 연동 구성 요소에 필요한 최소한의 스코프만 부여하세요.