오류와 제한
API가 처리한 HTTP 오류는 JSON의 code로 구분합니다.
{"code":"cursor_expired"}
| HTTP 상태 | code | 의미와 처리 |
|---|---|---|
| 400 | invalid_cursor | cursor 형식이 잘못됐거나 다른 조회에 사용했습니다. 처음부터 다시 조회하세요. |
| 400 | invalid_limit | limit가 허용 범위를 벗어났습니다. 각 조회의 최대값을 확인하세요. |
| 404 | broadcast_not_found | 해당 sessionId의 보관 방송이 없습니다. |
| 409 | cursor_expired | 최근 채팅 cursor의 Redis 보존 범위가 끝났거나 stream이 교체됐습니다. 새 위치에서 다시 시작하세요. |
| 429 | rate_limited | 요청 제한에 도달했습니다. Retry-After: 1 헤더를 따르세요. |
| 503 | status_unavailable, collection_unavailable | 방송 또는 수집 상태를 확인할 수 없습니다. 잠시 뒤 다시 요청하세요. |
| 503 | chat_unavailable, chat_generation_unavailable, chat_data_invalid | 최근 채팅을 읽을 수 없습니다. 잠시 뒤 다시 요청하세요. |
| 503 | archive_unavailable | 지난 방송 저장소를 읽을 수 없습니다. 잠시 뒤 다시 요청하세요. |
| 503 | connection_limit | WebSocket 연결 한도에 도달했습니다. 기존 연결을 정리하거나 잠시 뒤 다시 연결하세요. |
WebSocket 연결 후 서버 내부에서 문제가 발생하면 HTTP 응답 대신 {"type":"error","code":"..."} 이벤트를 보낸 뒤 연결을 종료합니다. WebSocket 이벤트
요청 제한은 API 전체에서 공유하는 초당 20회, 순간 최대 60회입니다. 지난 방송 채팅 조회는 동시에 한 요청만 처리합니다. WebSocket 연결은 전체 최대 32개, IP당 최대 2개이며 연결 시작도 HTTP 요청 제한을 사용합니다. 제한은 개별 사용자에게 예약된 할당량이 아니므로, 폴링 간격을 늘리고 429에서는 Retry-After 이후 재시도하세요. 네트워크 연결 실패와 Cloudflare가 반환한 오류에는 위 JSON 형식이 적용되지 않을 수 있습니다.