# 방송국 · 카테고리

## GET /categories

카테고리(장르) 목록. 인증 불필요.

```bash
curl https://tune.tideflo.work/api/v1/categories
```

```json
{
  "success": true,
  "data": [
    { "slug": "news", "name_ko": "뉴스·시사", "name_en": "News", "icon": "📰", "color": null },
    { "slug": "music", "name_ko": "음악", "name_en": "Music", "icon": "🎵", "color": null }
  ]
}
```

## GET /stations

방송국(채널) 목록. 인증 불필요.

### 쿼리 파라미터

| 파라미터 | 예 | 설명 |
|---|---|---|
| `category` | `music` | 카테고리 slug 필터 |
| `broadcaster` | `kbs` | 방송사 slug 필터 |
| `region` | `부산` | 지역 필터 |
| `band` | `FM` | FM/AM/SW/INTERNET |
| `country` | `KR` | 국가코드 |
| `featured` | `1` | 추천만 |
| `q` | `클래식` | 이름·주파수 검색 |
| `page` | `1` | 페이지(기본 1) |
| `per_page` | `30` | 페이지 크기(기본 30, 최대 100) |

```bash
curl "https://tune.tideflo.work/api/v1/stations?category=music&page=1&per_page=20"
```

```json
{
  "success": true,
  "data": [
    {
      "id": 11,
      "slug": "sbs-powerfm",
      "name_ko": "SBS 파워FM",
      "name_en": "SBS Power FM",
      "frequency": "FM 107.7",
      "band": "FM",
      "region": null,
      "coverage": "metro",
      "language": "ko",
      "logo_url": null,
      "is_featured": true,
      "broadcaster": { "id": 3, "slug": "sbs", "name_ko": "SBS", "name_en": "Seoul Broadcasting System", "logo_url": null },
      "categories": [ { "slug": "music", "name_ko": "음악", "icon": "🎵" } ],
      "stream": { "available": true, "access_model": "token_signed", "media_type": "audio", "requires_resolve": true }
    }
  ],
  "meta": { "page": 1, "per_page": 20, "total": 8, "total_pages": 1 }
}
```

- `stream.requires_resolve` 가 `true` 면 재생 전 `/stations/{id}/stream` 호출로 URL을 발급받아야 합니다.

## GET /stations/{id|slug}

방송국 상세. 숫자 `id` 또는 문자열 `slug` 모두 가능.

```bash
curl https://tune.tideflo.work/api/v1/stations/kbs-coolfm
```

```json
{
  "success": true,
  "data": {
    "id": 5,
    "slug": "kbs-coolfm",
    "name_ko": "KBS 2FM 쿨FM",
    "frequency": "FM 89.1",
    "band": "FM",
    "coverage": "national",
    "language": "ko",
    "description": null,
    "homepage_url": null,
    "nowplaying_support": "none",
    "is_featured": true,
    "broadcaster": { "id": 1, "slug": "kbs", "name_ko": "KBS", "app_name": "KBS Kong" },
    "categories": [ { "slug": "music", "name_ko": "음악", "icon": "🎵" } ],
    "streams": [
      {
        "id": 5,
        "label": "기본",
        "access_model": "token_signed",
        "protocol": "hls",
        "format": "aac",
        "media_type": "audio",
        "bitrate": null,
        "requires_resolve": true,
        "requires_app_headers": false,
        "health_status": "unknown",
        "url": null,
        "resolve_endpoint": "https://tune.tideflo.work/api/v1/stations/5/stream?stream_id=5"
      }
    ]
  }
}
```

- `streams[].url` — `open_static` 스트림은 재생 URL이 바로 들어있습니다.
- `streams[].url` 이 `null` 이면 `resolve_endpoint`(또는 `/stations/{id}/stream`)로 발급받으세요.

재생 방법은 [스트리밍](streaming) 문서 참고.
