# 에러 코드

실패 응답 형식:

```json
{ "success": false, "error": { "code": "not_found", "message": "채널을 찾을 수 없습니다" } }
```

| HTTP | code | 의미 |
|---|---|---|
| 400 | `bad_request` | 잘못된 요청 |
| 401 | `unauthorized` | 인증 필요/실패(토큰·기기 헤더 없음, 로그인 실패) |
| 403 | `forbidden` | 접근 불가(비활성 계정 등) |
| 404 | `not_found` | 리소스 없음 |
| 404 | `no_stream` | 재생 가능한 스트림 없음/URL 미설정 |
| 409 | `conflict` | 중복(이미 가입된 이메일 등) |
| 422 | `validation` | 입력값 검증 실패 |
| 502 | `resolve_failed` | 토큰형 스트림 발급 실패(방송사 API 오류) |
| 503 | — | 서비스 저하(DB 연결 실패 등, `/health`) |

## 권장 처리

- `401` (즐겨찾기/계정): 토큰 재발급 또는 재로그인 유도.
- `resolve_failed` / 재생 중 403: `/stations/{id}/stream` 재호출(토큰 재발급).
- `no_stream`: 해당 채널은 아직 스트림 미설정. 목록에서 `stream.available=false`.
