# Minecraft API — 서버·플레이어·커뮤니티 데이터 | MCStat.org

무료 API로 앱과 봇을 위한 Minecraft 서버 목록, 플레이어 프로필, 실시간 활동, 랭킹, 커뮤니티 데이터를 이용하세요.

Canonical HTML: https://mcstat.org/ko/api-docs
Markdown URL: https://mcstat.org/ko/api-docs.md
Base URL: https://mcstat.org/api/v1

## 인증

문서화된 모든 공개 API 엔드포인트에는 API 키가 필요합니다. X-API-Key 헤더에 키를 보냅니다.

- **요청 헤더** — 인증하려면 이 헤더를 추가하세요.
  `X-API-Key: mcs_your_key_here`
- **또는 쿼리 매개변수로** — 또는 쿼리 매개변수로 전달
  `?api_key=mcs_your_key_here`

## 비율 제한

요청은 API 키로 인증됩니다. 누락되거나 잘못된 키는 HTTP 401을 반환하고, 비활성화된 키는 HTTP 403을 반환하며, 한도를 초과하면 HTTP 429를 반환합니다.

- **API 키 없음** — 허용되지 않음
- **API 키 포함** — 기본적으로 분당 요청 60개, 일일 1,000개, 월 30,000개입니다. 한도를 초과하면 한도를 표시하는 X-RateLimit-* 헤더와 창이 재설정될 때 알려주는 Retry-After가 포함된 HTTP 429가 반환됩니다. 요청 시 키당 더 높은 한도가 부여될 수 있습니다.

속도 제한 헤더: 429 응답에는 X-RateLimit-Limit-Minute, X-RateLimit-Limit-Day, X-RateLimit-Remaining-Day, X-RateLimit-Limit-Month, X-RateLimit-Remaining-Month 및 Retry-After가 포함됩니다. 성공적인 응답에는 Cache-Control 헤더가 포함되므로 클라이언트 측에서 결과를 안전하게 캐시할 수 있습니다.

## 응답 형식

모든 성공적인 응답은 {success} 부울과 {data} 객체가 포함된 JSON입니다. 오류는 {success}: false와 동일한 봉투를 사용합니다.

성공반응:

```json
{
  "success": true,
  "data": {
    "resource": {
      "id": "...",
      "name": "Example"
    }
  }
}
```

오류 응답:

```json
{
  "success": false,
  "error": "Too many requests"
}
```

## 오류

표준 HTTP 상태 코드가 사용됩니다. 일반적인 경우:

| 코드 | 의미 |
| --- | --- |
| 400 | 잘못된 요청 - 잘못된 매개변수 |
| 401 | 승인되지 않음 - API 키가 누락되었거나 유효하지 않음 |
| 403 | 금지됨 — API 키가 비활성화되었습니다. |
| 404 | 찾을 수 없음 - 리소스가 존재하지 않습니다. |
| 429 | 요청이 너무 많습니다. 비율 제한이 초과되었습니다. |
| 500 | 내부 서버 오류 - 나중에 다시 시도하세요 |

## 시도해 보세요

The browser playground proxies requests through `/api/v1/api-docs/test`, validates Cloudflare Turnstile, allows only documented GET endpoints, and applies IP-based rate limiting.

## Endpoint Catalog

### 서버 엔드포인트

mcstat.org에서 추적하는 Minecraft 서버를 찾아보고, 필터링하고, 검사하세요.

#### GET /api/v1/servers

Title: 서버 나열
Description: 풍부한 필터를 갖춘 페이지가 매겨진 공용 서버 목록입니다.

Parameters:
- `page` (integer, optional): 1부터 시작하는 페이지 번호입니다. Default: `1`.
- `limit` (integer, optional): 페이지당 항목 수입니다. Default: `20`.
- `sort` (string, optional): 정렬 순서. Default: `recent`.
- `search` (string, optional): 자유 텍스트 쿼리.
- `country` (string, optional): ISO 국가 이름 필터.
- `version` (string, optional): 마인크래프트 버전 필터.
- `tag` (string, optional): 태그로 필터링하세요.
- `mode` (string, optional): 게임 모드 필터.
- `minPlayers` (integer, optional): 최소 현재 플레이어 수.
- `maxPlayers` (integer, optional): 현재 최대 플레이어 수.
- `minUptime` (number, optional): 최소 가동 시간 비율.
- `minVotes` (integer, optional): 최소 총 투표 수.
- `minRating` (number, optional): 최소 등급(1~5).
- `onlineOnly` (boolean, optional): 온라인으로 보고하는 서버만 포함합니다.

Example response:

```json
{
  "success": true,
  "data": {
    "servers": [
      {
        "id": "JS6o0w88QP6oZHDj",
        "slug": "mchypixelnet",
        "name": "Hypixel Network",
        "shortDescription": "Home of over 35 unique games…",
        "ip": "mc.hypixel.net",
        "port": 25565,
        "iconUrl": "https://mcstat.org/images/server-icon/mchypixelnet.webp",
        "bannerUrl": "https://mcstat.org/media/banners/mchypixelnet.webp",
        "motdImageUrl": "https://mcstat.org/images/server-motd/mchypixelnet.svg",
        "motd": "Hypixel Network",
        "website": null,
        "discordUrl": null,
        "visibility": "PUBLIC",
        "isOnline": true,
        "currentPlayers": 48230,
        "maxPlayers": 200000,
        "version": "Requires MC 1.8 / 1.21",
        "latency": 42,
        "lastPing": "2026-05-24T22:00:00Z",
        "country": "United States",
        "tags": [
          "bedwars",
          "pvp",
          "skyblock"
        ],
        "gameMode": null,
        "uptime": 100,
        "trend": 3.4,
        "totalVotes": 12345,
        "rating": 4.6,
        "createdAt": "2026-04-28T05:44:26Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 24,
      "total": 1240,
      "totalPages": 52
    }
  }
}
```

#### GET /api/v1/servers/{slug}

Title: 서버 세부정보
Description: 전체 서버 프로필: 통계 기록, 가동 시간, 투표 차트, 순위.

Parameters:
- `slug` (string, required): 서버 슬러그(/servers 목록에서).
- `period` (string, optional): 기간: 24h, 7d, 30d, 90d, all-time. Default: `24h`.

Example response:

```json
{
  "success": true,
  "data": {
    "server": {
      "id": "JS6o0w88QP6oZHDj",
      "slug": "mchypixelnet",
      "name": "Hypixel Network",
      "ip": "mc.hypixel.net",
      "port": 25565,
      "iconUrl": "https://mcstat.org/images/server-icon/mchypixelnet.webp",
      "bannerUrl": "https://mcstat.org/media/banners/mchypixelnet.webp",
      "motd": "Hypixel Network",
      "motdRaw": "§aHypixel §7Network",
      "motdImageUrl": "https://mcstat.org/images/server-motd/mchypixelnet.svg",
      "website": null,
      "discordUrl": null,
      "storeUrl": null,
      "youtubeUrl": null,
      "currentPlayers": 48230,
      "maxPlayers": 200000,
      "isOnline": true,
      "country": "United States",
      "version": "Requires MC 1.8 / 1.21",
      "protocol": 767,
      "uptime": 100,
      "rating": 4.6,
      "totalVotes": 12345,
      "tags": [
        "bedwars",
        "pvp"
      ],
      "owner": null,
      "latestStats": {
        "onlinePlayers": 48230,
        "tps": 20,
        "timestamp": "2026-05-24T22:00:00Z"
      },
      "statsHistory": [
        {
          "timestamp": "2026-05-24T21:00:00Z",
          "onlinePlayers": 47000
        }
      ],
      "periodStats": {
        "24h": {
          "avgPlayers": 46500,
          "peakPlayers": 49100,
          "minPlayers": 42000,
          "uptimePct": 99.95
        }
      },
      "voteStats": {
        "24h": 412,
        "7d": 2890,
        "30d": 11200,
        "90d": 30150
      },
      "dailyVotes": [
        {
          "day": "2026-05-23",
          "votes": 405
        }
      ]
    }
  }
}
```

#### GET /api/v1/servers/{slug}/voters

Title: 서버 유권자
Description: 해당 서버에 대한 최근 투표자(인증 및 익명)입니다.

Parameters:
- `slug` (string, required): 서버 슬러그(/servers 목록에서).
- `page` (integer, optional): 1부터 시작하는 페이지 번호입니다. Default: `1`.
- `limit` (integer, optional): 페이지당 항목 수입니다. Default: `7`.

Example response:

```json
{
  "success": true,
  "data": {
    "voters": [
      {
        "id": "TanfrbogDfzGdrgD",
        "minecraftUsername": "Notch",
        "votedAt": "2026-05-24 22:10:06.544",
        "type": "auth",
        "playerId": "xq5-Lw8xk7pEdKyn",
        "minecraftUuid": "069a79f4-3e42-4b0c-8f1a-9c2b1d5e6f70",
        "skinUrl": "http://textures.minecraft.net/texture/cbea0a15a5ce…",
        "linkedSkinPngPath": "https://mcstat.org/media/skins/published/player-skin-notch.png",
        "skinModel": "classic",
        "siteUsername": "notch"
      }
    ],
    "total": 12345,
    "page": 1,
    "totalPages": 515,
    "latestVoteAt": "2026-05-24 22:10:06.544"
  }
}
```

#### GET /api/v1/servers/{slug}/reviews

Title: 서버 리뷰
Description: 서버에 대한 페이지 매김된 플레이어 리뷰 및 평점.

Parameters:
- `slug` (string, required): 서버 슬러그(/servers 목록에서).
- `page` (integer, optional): 1부터 시작하는 페이지 번호입니다. Default: `1`.
- `limit` (integer, optional): 페이지당 항목 수입니다. Default: `5`.

Example response:

```json
{
  "success": true,
  "data": {
    "reviews": [
      {
        "id": "5g4VgYUiN4n28qcX",
        "serverId": "JS6o0w88QP6oZHDj",
        "userId": null,
        "minecraftUsername": "chibibara",
        "rating": 3,
        "content": "Great community!",
        "createdAt": "2026-05-24T22:00:00Z",
        "updatedAt": "2026-05-24T22:00:00Z",
        "user": {
          "id": null,
          "username": "chibibara",
          "avatar": null,
          "role": "USER"
        },
        "playerId": "suTEw8opOK2bGP-L",
        "playerMainNickname": "chibibara",
        "playerMinecraftUuid": "019f1b29-fcbe-705b-8efb-8c08b4e0fd9c",
        "playerSkinUrl": null,
        "playerSkinModel": "classic",
        "playerLinkedSkinPngPath": "https://mcstat.org/media/skins/published/default-steve.png"
      }
    ],
    "total": 128,
    "page": 1,
    "totalPages": 26,
    "avgRating": 4.2,
    "latestReviewAt": "2026-05-24T22:00:00Z"
  }
}
```

#### GET /api/v1/servers/{slug}/updates

Title: 서버 업데이트
Description: 서버에 대한 승인된 뉴스 및 업데이트 게시물.

Parameters:
- `slug` (string, required): 서버 슬러그(/servers 목록에서).
- `page` (integer, optional): 1부터 시작하는 페이지 번호입니다. Default: `1`.
- `limit` (integer, optional): 페이지당 항목 수입니다. Default: `3`.

Example response:

```json
{
  "success": true,
  "data": {
    "updates": [
      {
        "id": "Xk3pQ2mNbV8zR1sd",
        "serverId": "JS6o0w88QP6oZHDj",
        "userId": "Nf3kPq8sT2wVxJ7b",
        "title": "Season 5 is live!",
        "content": "New map, new kits, double XP weekend.",
        "status": "APPROVED",
        "createdAt": "2026-05-24T22:00:00Z",
        "updatedAt": "2026-05-24T22:00:00Z"
      }
    ],
    "total": 12,
    "page": 1,
    "totalPages": 4,
    "latestUpdateAt": "2026-05-24T22:00:00Z"
  }
}
```

#### GET /api/v1/servers/top

Title: 상위 서버
Description: 홈페이지/위젯 사용에 최적화된 트렌드 리스트입니다.

Parameters:
- `sort` (string, optional): 정렬 순서. Default: `votes`.
- `limit` (integer, optional): 페이지당 항목 수입니다. Default: `10`.
- `country` (string, optional): ISO 국가 이름 필터.
- `gameMode` (string, optional): 게임 모드 필터.

Example response:

```json
{
  "success": true,
  "data": {
    "servers": [
      {
        "id": "JS6o0w88QP6oZHDj",
        "slug": "mchypixelnet",
        "name": "Hypixel Network",
        "ip": "mc.hypixel.net",
        "iconUrl": "https://mcstat.org/images/server-icon/mchypixelnet.webp",
        "bannerUrl": "https://mcstat.org/media/banners/mchypixelnet.webp",
        "motdImageUrl": "https://mcstat.org/images/server-motd/mchypixelnet.svg",
        "currentPlayers": 48230,
        "maxPlayers": 200000,
        "isOnline": true,
        "country": "United States",
        "totalVotes": 12345,
        "uptime": 100,
        "trend": 3.4,
        "recentVotes": 412,
        "hotScore": 9821
      }
    ],
    "total": 1240,
    "sort": "hot"
  }
}
```

#### GET /api/v1/servers/countries

Title: 서버 국가
Description: 국가별로 그룹화된 서버의 총 개수입니다.

Example response:

```json
{
  "success": true,
  "data": {
    "countries": [
      {
        "country": "United States",
        "serverCount": 2840
      }
    ]
  }
}
```

#### GET /api/v1/servers/versions

Title: 서버 버전
Description: Minecraft 버전별로 그룹화된 서버의 총 개수입니다.

Example response:

```json
{
  "success": true,
  "data": {
    "versions": [
      {
        "version": "Paper 1.21.11",
        "serverCount": 980
      }
    ]
  }
}
```

### 플레이어 엔드포인트

플레이어 프로필, 세션, 계층 및 기록을 찾아보세요.

#### GET /api/v1/players

Title: 플레이어 나열
Description: 페이지가 매겨진 공개 플레이어 디렉토리.

Parameters:
- `page` (integer, optional): 1부터 시작하는 페이지 번호입니다. Default: `1`.
- `limit` (integer, optional): 페이지당 항목 수입니다.
- `sort` (string, optional): 정렬 순서. Default: `recent`.
- `search` (string, optional): 자유 텍스트 쿼리.

Example response:

```json
{
  "success": true,
  "data": {
    "players": [
      {
        "id": "h6tC6lGfBEDulI8o",
        "minecraftUuid": "069a79f4-3e42-4b0c-8f1a-9c2b1d5e6f70",
        "mainNickname": "Notch",
        "skinUrl": "http://textures.minecraft.net/texture/98d4f27b450d…",
        "linkedSkinPngPath": "https://mcstat.org/media/skins/published/player-skin-notch.png",
        "skinModel": "classic",
        "country": "United States",
        "tierOverall": "HT1",
        "tierPoints": 9820,
        "tierRank": 12,
        "lastTierSyncAt": "2026-05-24T20:00:00Z",
        "createdAt": "2026-04-01T10:00:00Z",
        "totalPlayTime": 184320,
        "sessionCount": 412
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 24,
      "total": 1240,
      "totalPages": 52
    }
  }
}
```

#### GET /api/v1/players/{id}

Title: 플레이어 세부정보
Description: 프로필, 최근 세션, 플레이한 서버, K/D, 업적.

Parameters:
- `id` (string, required): 플레이어 ID, UUID 또는 닉네임.

Example response:

```json
{
  "success": true,
  "data": {
    "player": {
      "id": "h6tC6lGfBEDulI8o",
      "minecraftUuid": "069a79f4-3e42-4b0c-8f1a-9c2b1d5e6f70",
      "mainNickname": "Notch",
      "nicknameHistory": [
        "Notch"
      ],
      "country": null,
      "skinModel": "classic",
      "skinUrl": "http://textures.minecraft.net/texture/98d4f27b450d…",
      "linkedSkinId": "Wi_n1dUvFqgJs0aP",
      "linkedSkinPngPath": "https://mcstat.org/media/skins/published/player-skin-notch.png",
      "linkedSkin": {
        "id": "Wi_n1dUvFqgJs0aP",
        "slug": "player-skin-notch",
        "pngPath": "https://mcstat.org/media/skins/published/player-skin-notch.png",
        "model": "classic",
        "name": "Notch's Skin"
      },
      "tierOverall": "MCStat Mythic",
      "tierPoints": 9820,
      "tierRank": 12,
      "createdAt": "2026-04-01T10:00:00Z",
      "updatedAt": "2026-05-24T22:00:00Z",
      "totalPlayTime": 184320,
      "sessionCount": 412,
      "rankScore": 9820,
      "rank": 12,
      "recentSessions": [
        {
          "id": "oWZiF6jq_UnEs7Y3",
          "server": {
            "id": "JS6o0w88QP6oZHDj",
            "slug": "mchypixelnet",
            "name": "Hypixel Network",
            "iconUrl": "https://mcstat.org/images/server-icon/mchypixelnet.webp"
          },
          "joinedAt": "2026-05-24T20:00:00Z",
          "leftAt": "2026-05-24T21:00:00Z",
          "totalPlayTime": 3600
        }
      ],
      "serversPlayed": [
        {
          "id": "JS6o0w88QP6oZHDj",
          "slug": "mchypixelnet",
          "name": "Hypixel Network",
          "iconUrl": "https://mcstat.org/images/server-icon/mchypixelnet.webp"
        }
      ],
      "latestStats": {
        "statsJson": {
          "kills": 18230,
          "deaths": 9850,
          "wins": 1240
        },
        "timestamp": "2026-05-24T21:00:00Z",
        "server": {
          "slug": "mchypixelnet",
          "name": "Hypixel Network"
        }
      },
      "statsHistory": [
        {
          "statsJson": {
            "kills": 18000,
            "deaths": 9700
          },
          "timestamp": "2026-05-24T20:00:00Z",
          "serverName": "Hypixel Network"
        }
      ],
      "kdRatio": 1.85,
      "totalKills": 18230,
      "totalDeaths": 9850,
      "totalWins": 1240,
      "activityData": [
        {
          "date": "2026-05-24",
          "count": 3
        }
      ],
      "achievements": {
        "earned": [
          {
            "id": "top10",
            "label": "Top 10",
            "labelTr": "İlk 10",
            "labelRu": "Топ 10",
            "icon": "medal"
          }
        ],
        "nextGoals": [
          {
            "id": "explorer_25",
            "label": "Globe Trotter",
            "labelTr": "Dünya Gezgini",
            "labelRu": "Путешественник",
            "icon": "plane"
          }
        ]
      },
      "votedServers": [
        {
          "serverId": "JS6o0w88QP6oZHDj",
          "serverSlug": "mchypixelnet",
          "serverName": "Hypixel Network",
          "serverIconUrl": "https://mcstat.org/images/server-icon/mchypixelnet.webp",
          "votedAt": "2026-05-24T22:10:00Z"
        }
      ],
      "reviews": [
        {
          "id": "Rv8xKp2mNq7wTz1a",
          "rating": 5,
          "content": "Great server!",
          "createdAt": "2026-05-20T10:00:00Z",
          "server": {
            "id": "JS6o0w88QP6oZHDj",
            "slug": "mchypixelnet",
            "name": "Hypixel Network",
            "iconUrl": "https://mcstat.org/images/server-icon/mchypixelnet.webp"
          }
        }
      ]
    }
  }
}
```

### 검색

서버와 플레이어를 아우르는 통합 검색.

#### GET /api/v1/search

Title: 글로벌 검색
Description: 한 번의 호출로 서버와 플레이어를 검색합니다.

Parameters:
- `q` (string, required): 검색어(2~100자)
- `type` (string, optional): 결과 유형: all, servers, players. Default: `all`.
- `limit` (integer, optional): 페이지당 항목 수입니다. Default: `10`.

Example response:

```json
{
  "success": true,
  "data": {
    "results": {
      "servers": [
        {
          "id": "JS6o0w88QP6oZHDj",
          "slug": "mchypixelnet",
          "name": "Hypixel Network",
          "iconUrl": "https://mcstat.org/images/server-icon/mchypixelnet.webp",
          "bannerUrl": "https://mcstat.org/media/banners/mchypixelnet.webp",
          "currentPlayers": 48230,
          "maxPlayers": 200000,
          "isOnline": true,
          "rating": 3.4
        }
      ],
      "players": [
        {
          "id": "h6JDPuUGKI3Mfw3m",
          "minecraftUuid": "de5f2979-1168-43d6-b5f3-e18f975a806b",
          "mainNickname": "Notch",
          "createdAt": "2026-04-01T10:00:00Z",
          "updatedAt": "2026-05-24T22:00:00Z"
        }
      ]
    },
    "query": "hypixel"
  }
}
```

### 라이브 및 글로벌 통계

실시간 글로벌 활동, 지역 및 국가 분석.

#### GET /api/v1/live

Title: 실시간 통계
Description: 전 세계 온라인 합계, 상위 서버, 최근 활동, 지역 및 국가 분석.

Example response:

```json
{
  "success": true,
  "data": {
    "stats": {
      "totalPlayers": 184320,
      "totalServers": 12480,
      "onlineServers": 9821,
      "newPlayersToday": 412,
      "peakToday": 202700,
      "generatedAt": "2026-05-24T22:00:00Z",
      "latestPingAt": "2026-05-24T21:59:48Z",
      "statsAgeSeconds": 18,
      "stale": false
    },
    "topServers": [
      {
        "id": "mchypixelnet",
        "name": "Hypixel Network",
        "players": 48230,
        "maxPlayers": 200000,
        "isOnline": true,
        "country": "United States",
        "trend": "up",
        "change": 240
      }
    ],
    "recentActivity": [
      {
        "type": "vote",
        "actor": "Notch",
        "target": "Hypixel Network",
        "time": "2026-05-24T22:00:00Z"
      }
    ],
    "regions": [
      {
        "id": "na",
        "name": "North America",
        "players": 80120,
        "servers": 4120
      }
    ],
    "countryPlayers": {
      "United States": 60120,
      "Germany": 18230
    }
  }
}
```

#### GET /api/v1/live/history

Title: 라이브 역사
Description: 지난 7일 동안 총 온라인 플레이어의 시간별 버킷입니다.

Example response:

```json
{
  "success": true,
  "data": {
    "history": [
      {
        "timestamp": "2026-05-23T22:00:00Z",
        "totalPlayers": 174200
      }
    ]
  }
}
```

### 리더보드

세션, 서버 또는 티어 포인트를 기준으로 순위가 매겨진 상위 플레이어입니다.

#### GET /api/v1/leaderboards

Title: 리더보드
Description: 선택한 측정항목, 기간, 등급 및 성과 필터에 대한 상위 플레이어입니다.

Parameters:
- `metric` (string, optional): 순위 지표: best, sessions, servers. Default: `best`.
- `period` (string, optional): 기간: 24h, 7d, 30d, 90d, all-time. Default: `all-time`.
- `page` (integer, optional): 1부터 시작하는 페이지 번호입니다. Default: `1`.
- `limit` (integer, optional): 페이지당 항목 수입니다. Default: `20`.
- `tier` (string, optional): 계층 필터.
- `achievement` (string, optional): 업적 필터.
- `search` (string, optional): 자유 텍스트 쿼리.

Example response:

```json
{
  "success": true,
  "data": {
    "leaderboard": {
      "metric": "best",
      "period": "all-time",
      "serverId": null,
      "generatedAt": "2026-05-24T22:00:00Z",
      "entries": [
        {
          "rank": 1,
          "player": {
            "id": "Vz2BaB2r6eC9TL_o",
            "mainNickname": "Notch",
            "minecraftUuid": "069a79f4-3e42-4b0c-8f1a-9c2b1d5e6f70",
            "tierOverall": "MCStat Mythic",
            "tierPoints": 224606,
            "tierRank": 1,
            "skinModel": "classic",
            "skinUrl": "http://textures.minecraft.net/texture/d71c3adef2ec…",
            "linkedSkinPngPath": "https://mcstat.org/media/skins/published/player-skin-notch.png"
          },
          "value": 224606,
          "formattedValue": "224,606 score"
        }
      ]
    },
    "pagination": {
      "page": 1,
      "limit": 24,
      "total": 1240,
      "totalPages": 52
    }
  }
}
```

### 스킨 & 망토

커뮤니티에 업로드된 스킨과 망토를 검색하세요.

#### GET /api/v1/skins

Title: 스킨 나열
Description: 정렬/필터를 사용하여 커뮤니티 스킨 업로드를 찾아보세요.

Parameters:
- `page` (integer, optional): 1부터 시작하는 페이지 번호입니다. Default: `1`.
- `limit` (integer, optional): 페이지당 항목 수입니다. Default: `24`.
- `sort` (string, optional): 정렬 순서. Default: `recent`.
- `model` (string, optional): 피부 모델: 클래식 또는 슬림.
- `search` (string, optional): 자유 텍스트 쿼리.
- `tag` (string, optional): 태그로 필터링하세요.
- `owner` (string, optional): 소유자 사용자 이름 필터.

Example response:

```json
{
  "success": true,
  "data": {
    "skins": [
      {
        "id": "Wi_n1dUvFqgJs0aP",
        "slug": "cool-knight",
        "name": "Cool Knight",
        "model": "classic",
        "tags": [
          "medieval",
          "armor"
        ],
        "pngPath": "https://mcstat.org/media/skins/published/cool-knight.png",
        "viewCount": 3120,
        "likeCount": 124,
        "favoriteCount": 88,
        "downloadCount": 980,
        "usageCount": 12,
        "isFeatured": false,
        "createdAt": "2026-05-01T10:00:00Z",
        "ownerId": "Nf3kPq8sT2wVxJ7b",
        "owner": {
          "id": "Nf3kPq8sT2wVxJ7b",
          "username": "notch",
          "avatar": "https://mcstat.org/media/avatars/notch.webp"
        }
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 24,
      "total": 1240,
      "totalPages": 52
    }
  }
}
```

#### GET /api/v1/skins/{slug}

Title: 피부 디테일
Description: 전체 스킨 메타데이터와 시청자의 좋아요/즐겨찾기 상태.

Parameters:
- `slug` (string, required): 서버 슬러그(/servers 목록에서).

Example response:

```json
{
  "success": true,
  "data": {
    "skin": {
      "id": "Wi_n1dUvFqgJs0aP",
      "slug": "cool-knight",
      "name": "Cool Knight",
      "description": "Custom medieval knight skin",
      "tags": [
        "medieval",
        "armor"
      ],
      "model": "classic",
      "pngPath": "https://mcstat.org/media/skins/published/cool-knight.png",
      "viewCount": 3120,
      "likeCount": 124,
      "favoriteCount": 88,
      "downloadCount": 980,
      "playersUsing": [
        {
          "id": "h6tC6lGfBEDulI8o",
          "mainNickname": "Notch",
          "minecraftUuid": "069a79f4-3e42-4b0c-8f1a-9c2b1d5e6f70",
          "skinUrl": "http://textures.minecraft.net/texture/98d4f27b450d…",
          "skinModel": "classic",
          "tierOverall": "MCStat Mythic",
          "linkedSkinPngPath": "https://mcstat.org/media/skins/published/cool-knight.png"
        }
      ],
      "playersUsingCount": 1,
      "owner": {
        "id": "Nf3kPq8sT2wVxJ7b",
        "username": "notch",
        "avatar": "https://mcstat.org/media/avatars/notch.webp"
      },
      "viewer": {
        "liked": false,
        "favorited": false,
        "isOwner": false
      }
    }
  }
}
```

#### GET /api/v1/capes

Title: 망토 목록
Description: 정렬/필터를 사용하여 커뮤니티 케이프 업로드를 찾아보세요.

Parameters:
- `page` (integer, optional): 1부터 시작하는 페이지 번호입니다. Default: `1`.
- `limit` (integer, optional): 페이지당 항목 수입니다. Default: `24`.
- `sort` (string, optional): 정렬 순서. Default: `recent`.
- `search` (string, optional): 자유 텍스트 쿼리.
- `tag` (string, optional): 태그로 필터링하세요.
- `owner` (string, optional): 소유자 사용자 이름 필터.

Example response:

```json
{
  "success": true,
  "data": {
    "capes": [
      {
        "id": "De-jbTlj_PTnJJ5N",
        "slug": "royal-red",
        "name": "Royal Red",
        "tags": [
          "red",
          "royal"
        ],
        "pngPath": "https://mcstat.org/media/capes/published/royal-red.png",
        "viewCount": 210,
        "likeCount": 18,
        "favoriteCount": 6,
        "downloadCount": 44,
        "isFeatured": false,
        "createdAt": "2026-05-02T10:00:00Z",
        "ownerId": "Nf3kPq8sT2wVxJ7b",
        "owner": {
          "id": "Nf3kPq8sT2wVxJ7b",
          "username": "notch",
          "avatar": "https://mcstat.org/media/avatars/notch.webp"
        }
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 24,
      "total": 1240,
      "totalPages": 52
    }
  }
}
```

#### GET /api/v1/capes/{slug}

Title: 케이프 상세
Description: 전체 케이프 메타데이터와 조회자의 좋아요/즐겨찾기 상태.

Parameters:
- `slug` (string, required): 서버 슬러그(/servers 목록에서).

Example response:

```json
{
  "success": true,
  "data": {
    "cape": {
      "id": "De-jbTlj_PTnJJ5N",
      "slug": "royal-red",
      "name": "Royal Red",
      "description": "Deep red royal cape",
      "tags": [
        "red",
        "royal"
      ],
      "pngPath": "https://mcstat.org/media/capes/published/royal-red.png",
      "viewCount": 210,
      "likeCount": 18,
      "favoriteCount": 6,
      "downloadCount": 44,
      "playersUsing": [
        {
          "id": "h6tC6lGfBEDulI8o",
          "mainNickname": "Notch",
          "minecraftUuid": "069a79f4-3e42-4b0c-8f1a-9c2b1d5e6f70",
          "skinUrl": "http://textures.minecraft.net/texture/98d4f27b450d…",
          "skinModel": "classic",
          "linkedSkinPngPath": "https://mcstat.org/media/skins/published/player-skin-notch.png",
          "tierOverall": "MCStat Mythic"
        }
      ],
      "playersUsingCount": 1,
      "owner": {
        "id": "Nf3kPq8sT2wVxJ7b",
        "username": "notch",
        "avatar": "https://mcstat.org/media/avatars/notch.webp"
      },
      "viewer": {
        "liked": false,
        "favorited": false,
        "isOwner": false
      }
    }
  }
}
```
