API 레퍼런스
melom.ing REST API 전체 레퍼런스
기본 URL: https://api.melom.ing
단축 URL 생성
새로운 단축 URL을 생성합니다.
POST
/api/v1/urls요청 본문
{
"url": "https://example.com/very/long/url/path",
"custom_code": "mycode", // 선택사항, 3-20 chars
"expires_at": "2025-12-31T23:59:59Z" // 선택사항
}응답
{
"success": true,
"data": {
"code": "abc123",
"short_url": "https://melom.ing/abc123",
"original_url": "https://example.com/very/long/url/path",
"created_at": "2024-12-19T10:30:00Z",
"expires_at": "2025-12-31T23:59:59Z"
}
}에러 응답
| 상태 | 코드 | 설명 |
|---|---|---|
| 400 | BAD_REQUEST | 잘못된 URL 또는 요청 형식 |
| 409 | CONFLICT | 커스텀 코드가 이미 사용 중 |
| 422 | UNPROCESSABLE_ENTITY | URL 또는 코드에 차단된 내용 포함 |
| 429 | TOO_MANY_REQUESTS | 사용량 제한 초과 |
URL 정보 조회
단축 URL의 정보를 조회합니다.
GET
/api/v1/urls/:code응답
{
"success": true,
"data": {
"code": "abc123",
"short_url": "https://melom.ing/abc123",
"original_url": "https://example.com/...",
"created_at": "2024-12-19T10:30:00Z",
"expires_at": null,
"click_count": 1542,
"is_active": true
}
}코드 사용 가능 여부 확인
커스텀 코드가 사용 가능한지 확인합니다.
GET
/api/v1/urls/check/:code응답
{
"success": true,
"data": {
"code": "mycode",
"available": true
}
}URL 통계 조회
단축 URL의 상세 통계를 조회합니다.
GET
/api/v1/urls/:code/stats쿼리 파라미터
| 파라미터 | 타입 | 설명 |
|---|---|---|
from | string | 시작 날짜 (YYYY-MM-DD) |
to | string | 종료 날짜 (YYYY-MM-DD) |
응답
{
"success": true,
"data": {
"code": "abc123",
"total_clicks": 1542,
"unique_visitors": 1203,
"period": {
"from": "2024-12-01",
"to": "2024-12-19"
},
"daily_clicks": [
{"date": "2024-12-01", "clicks": 45, "unique": 38}
],
"referrers": [
{"source": "google.com", "count": 450}
],
"countries": [
{"code": "KR", "name": "South Korea", "count": 890}
],
"devices": [
{"type": "mobile", "count": 820}
],
"browsers": [
{"name": "Chrome", "count": 780}
]
}
}서비스 통계 조회
서비스 전체 통계를 조회합니다.
GET
/api/v1/stats응답
{
"success": true,
"data": {
"total_urls": 15420,
"total_clicks": 2845920,
"total_urls_today": 145,
"total_clicks_today": 12450,
"top_urls": [
{
"code": "abc123",
"clicks": 45000,
"original_url": "https://example.com/..."
}
]
}
}리다이렉트
원본 URL로 리다이렉트하고 클릭 통계를 기록합니다.
GET
/:code응답
302 Found 원본 URL로 302 Found 리다이렉트를 반환합니다. 클릭 통계(IP, User-Agent, Referrer)는 비동기로 기록됩니다.
사용량 제한
| 엔드포인트 | 제한 |
|---|---|
| URL 생성 | 시간당 5회 |
