FireDrago

치지직 api 본문

자바 플레이그라운드

치지직 api

화이용 2025. 12. 29. 13:10

치지직 관련 웹서비스를 만드려고 하다보니
api 정보들을 수집하고 알게되었다.
정보를 정리해보았다. (노션 복붙이라 가독성이 떨어진다.)

1. 기본 정보 (Base URL)

  • API 서버: https://api.chzzk.naver.com
  • 채팅 웹소켓: wss://kr-ss{n}.chat.naver.com/chat
    • n은 1~5 등의 번호
    • 웹소켓 분산서버를 사용하는듯, 접속시마다 바뀜 5이상은 본적 없음

2. 방송 탐색 및 수집 (Discovery)

2.1 전체 라이브 목록 탐색

  • Endpoint: GET /service/v1/lives
  • Query Params:
    • size: 가져올 개수 (기본 20, 최대 50 내외)
    • sortType: 정렬 방식 (POPULAR 시청자순, LATEST 최신순)
    • next: 다음 페이지 호출을 위한 데이터
  • 특징: 현재 방송 중인 모든 채널을 추출할 때 핵심적으로 사용.

2.2 채널 검색

  • Endpoint: GET /service/v1/search/channels?keyword={keyword}
  • 특징: 특정 스트리머의 채널 ID를 직접 찾을 때 유용하다.

3. 채널 및 방송 상세 정보 (Channel & Live)

수집 중인 채널의 상태 변화를 감시하거나 상세 메타데이터를 얻을 때 사용

3.1 채널 기본 정보

  • Endpoint: GET /service/v1/channels/{channelId}
  • 주요 데이터: 채널명, 팔로워 수, 프로필 이미지, 방송 여부 등.

3.2 라이브 상태 요약 (Polling용)

  • Endpoint: GET /polling/v1/channels/{channelId}/live-status
  • 특징: 데이터가 가볍고 응답 속도가 빨라 '뱅온(방송 시작) 체크' 봇을 만들 때 쓸수 있을듯

3.3 라이브 상세 정보 (Worker용 필수 API)

  • Endpoint: GET /service/v1/channels/{channelId}/live-detail
  • 주요 데이터:
    • chatChannelId: 웹소켓 접속에 필요한 실제 ID
    • liveSpec: 해상도 및 영상 전송 규격
    • liveTitle: 방송 제목
    • category: 게임 등 방송 카테고리
    • livePath: m3u8 재생 주소

4. 다시보기 및 녹화 데이터 (VOD)

방송 종료 후 하이라이트 분석이나 데이터 아카이빙 시 사용

4.1 비디오 정보 조회

  • Endpoint: GET /service/v1/videos/{videoNo}
  • 주요 데이터: videoId, inKey, 시작/종료 시간, 다시보기 길이.

5. 실시간 채팅 (WebSocket)

5.1 웹소켓 연결

  • URL: wss://kr-ss{n}.chat.naver.com/chat
  • 접속 방식: JSON 기반 통신
  • 필수 절차 (Handshake):
    1. 웹소켓 연결 성공.
    2. CONNECT 메시지 전송 (Token 전달).
    3. SEND 명령어로 특정 chatChannelId 입장.
  • 특징: IRC(트위치 규격) 대비 파싱이 매우 쉬우며, 다수 연결을 하려면, 가상 스레드 혹은 SpringWebflux환경이 필요

6. 기타 유용한 API

  • 카테고리별 라이브: GET /service/v1/lives?category={categoryType}
  • 추천 방송: GET /service/v1/home/recommendation