API 소개

rul.kr API 문서에 오신 것을 환영합니다. API 키 발급 없이 즉시 사용 가능한 공개 RESTful API입니다. URL 단축, 비밀 링크 생성, QR 코드 이미지 반환을 지원합니다.

  • 모든 요청 본문은 application/json으로 전송합니다.
  • 모든 응답은 JSON(또는 이미지) 형식으로 반환됩니다.
  • 비밀 링크는 클라이언트 측 AES-256-GCM 암호화를 사용합니다.

인증 & Rate Limiting

별도의 API 키 발급 없이 즉각적인 익명 연동을 지원합니다. 단, 비정상적인 트래픽이 감지될 경우 서비스 보호를 위해 IP 기반 Rate Limiting이 자동으로 활성화됩니다.

Rate Limiting 정책

명시된 한도는 없으나, 짧은 시간 내 대량 요청 시 429 Too Many Requests가 반환될 수 있습니다. 자동화 도구 사용 시 요청 간 적절한 간격을 두는 것을 권장합니다. 일시적인 차단이며, 시간이 지나면 자동 해제됩니다.

기본 URL

https://rul.kr

모든 API 경로는 이 기본 URL을 접두사로 사용합니다. HTTP 요청은 HTTPS로 리디렉트됩니다.

오류 코드

오류 응답은 항상 { "error": "설명 문자열" } 형식의 JSON으로 반환됩니다.

HTTP 오류 코드 목록
코드 상태 설명
400 Bad Request 필수 필드 누락, 유효하지 않은 URL, 잘못된 링크 타입
404 Not Found 존재하지 않는 단축 코드
409 Conflict 이미 사용 중인 커스텀 코드
422 Unprocessable 커스텀 코드 형식 오류(4자 미만, 허용 외 문자 포함, 예약어)
429 Too Many Requests Rate Limit 초과. 잠시 후 재시도하세요.
500 Internal Server Error 서버 내부 오류
POST /create

새로운 단축 주소를 발급합니다. 공개 링크와 비밀 링크(클라이언트 암호화)를 모두 지원합니다.

Request Body 명세
필드명 타입 설명
url String Required 단축할 원본 URL. https:// 없으면 자동 추가됩니다.
type String Required "public" 또는 "private"
custom_code String Optional 공개 링크 전용 커스텀 코드. 영문·숫자·-·_, 4자 이상. 예약어 사용 불가.
encrypted_data String 비밀 링크 필수 AES-256-GCM으로 암호화된 원본 URL (Base64).
iv String 비밀 링크 필수 암호화에 사용된 Initialization Vector (Base64).
응답 예시 201 Created
{
  "success": true,
  "short_code": "aBcDeF",
  "short_url": "https://rul.kr/aBcDeF",
  "type": "public"
}
오류 응답 예시 409 Conflict
{
  "error": "이미 사용 중인 커스텀 코드입니다."
}
curl -X POST https://rul.kr/create \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/long/path", "type": "public"}'
GET /api/stats/{short_code}

단축 코드의 기본 정보를 조회합니다. 비밀 링크의 원본 URL은 서버에 저장되지 않으므로 반환되지 않습니다.

Path Parameters
파라미터 타입 설명
short_code String Required 조회할 단축 코드
응답 예시 200 OK
{
  "short_code": "aBcDeF",
  "type": "public",
  "created_at": "2026-05-18T14:32:00"
}
오류 응답 예시 404 Not Found
{
  "error": "링크를 찾을 수 없습니다."
}
curl https://rul.kr/api/stats/aBcDeF
GET /api/qr

전달받은 URL을 QR 코드 PNG 이미지로 변환하여 반환합니다. 단축 URL과 결합해 오프라인 배포용 QR을 즉시 생성할 수 있습니다.

Query Parameters
파라미터 타입 설명
url String Required QR로 인코딩할 URL. URL 인코딩하여 전달하세요.
응답 포맷 200 OK
Content-Type: image/png — PNG 바이너리 스트림 반환. <img src="..."> 태그에 직접 URL로 사용할 수도 있습니다.
# 단축 URL의 QR 이미지 다운로드
curl -G https://rul.kr/api/qr \
  --data-urlencode "url=https://rul.kr/aBcDeF" \
  -o qrcode.png

리디렉션

단축 URL 접속 시 링크 타입에 따라 다르게 동작합니다.

동작 방식
링크 타입 응답 설명
공개 (public) 302 Found 원본 URL로 즉시 리디렉트. X-Robots-Tag: noindex 헤더 포함.
비밀 (private) 200 OK 암호화된 데이터와 함께 로더 페이지 반환. 브라우저가 URL 해시(#) 키로 클라이언트 복호화 수행.
없음 404 존재하지 않는 단축 코드.

비밀 링크의 복호화 키는 URL 해시(#fragment) 부분에만 존재하며, HTTP 요청에 포함되지 않아 서버에 전달되지 않습니다.