rdurl API

단축 링크를 코드로 생성하고 관리하세요

일반 API 정보

  • 모든 요청에 API 토큰이 필요합니다. 인증 섹션을 참고하세요.
  • 베이스 엔드포인트는: https://rdurl.link/api
  • HTTPS만 지원합니다.
  • 모든 엔드포인트는 JSON 객체를 반환합니다.
  • 요청은 JSON으로 전송됩니다 (Content-Type: application/json).
  • 모든 시간 및 타임스탬프 관련 필드는 밀리초 단위입니다.
  • 모든 문자 인코딩은 UTF-8입니다.

인증

API는 토큰으로 요청이 어느 계정의 것인지 구분합니다. 토큰은 계정 비밀번호와 동급입니다 — 토큰을 가진 사람은 그 계정의 링크를 생성하고 삭제할 수 있습니다.

1단계. 토큰 발급

대시보드에 로그인한 뒤 'API 연동 토큰' 메뉴에서 토큰을 발급하세요. 발급할 때마다 새로운 토큰이 생성되며, 발급 직후 한 번만 확인할 수 있습니다.

2단계. 요청에 토큰 첨부

아래 두 가지 방식 중 아무거나 선택할 수 있습니다.

1. Authorization: Bearer (권장)

대부분의 공개 API가 사용하는 표준 인증 방식입니다.

curl https://rdurl.link/api/link/create   -H "Authorization: Bearer rd_YOUR_TOKEN"   -H "Content-Type: application/json"   -d '{ "url": "https://example.com/very/long/url" }'

2. x-api-key 헤더

Authorization 헤더를 다루기 어려운 도구에는 이 방식이 편합니다.

curl https://rdurl.link/api/link/create   -H "x-api-key: rd_YOUR_TOKEN"   -H "Content-Type: application/json"   -d '{ "url": "https://example.com/very/long/url" }'

3단계. 토큰 확인

아래 명령을 실행해보세요. 링크 목록이 반환되면 토큰이 정상 작동합니다.

curl https://rdurl.link/api/link/list \
  -H "Authorization: Bearer rd_YOUR_TOKEN"

토큰 관리

토큰은 rd_ 뒤에 16진수 32자로 이루어집니다. 발급 직후 한 번만 확인할 수 있으니 안전하게 보관하세요. 유출이 의심되면 대시보드에서 즉시 폐기하세요 — 폐기된 토큰은 즉시 더 이상 작동하지 않습니다.

엔드포인트

POST /api/link/create

단축 링크를 생성합니다. URL을 보내면 슬러그와 단축 링크가 반환됩니다.

파라미터

  • url단축할 대상 URL (필수)
  • title링크 제목 (선택, 100자 이내)
  • folder링크 그룹 (선택, 100자 이내 — 그룹별 목록 필터 가능)
  • domain커스텀 도메인 (선택, 예: example.com)

요청

{ "url": "https://example.com/very/long/url" }

응답

{
  "success": true,
  "message": {
    "slug": "abc123",
    "short": "https://rdurl.link/abc123",
    "domain_no": 0,
    "domain": ""
  }
}
GET /api/link/list

나의 링크 목록을 페이지별로 조회합니다. 페이지당 20개입니다. 검색과 도메인 필터를 지원합니다.

파라미터

  • page페이지 번호 (기본값 1)
  • domain커스텀 도메인 (선택, 예: example.com)
  • search검색 키워드 (슬러그/URL 부분 일치)
  • folder링크 그룹 (선택, 100자 이내 — 그룹별 목록 필터 가능)

요청

GET /api/link/list?page=1&domain=example.com&search=keyword

응답

{
  "success": true,
  "message": {
    "total": 42,
    "page": 1,
    "list": [
      {
        "slug": "abc123",
        "url": "https://example.com/very/long/url",
        "short": "https://rdurl.link/abc123",
        "clicks": 128,
        "tm": 1789379625000
      }
    ]
  }
}
GET /api/link/info

단일 링크의 상세 정보와 클릭 수를 조회합니다.

파라미터

  • slug슬러그 (필수)
  • domain커스텀 도메인 (선택, 예: example.com)

요청

GET /api/link/info?slug=abc123

응답

{
  "success": true,
  "message": {
    "slug": "abc123",
    "url": "https://example.com/very/long/url",
    "short": "https://rdurl.link/abc123",
    "clicks": 128,
    "tm": 1789379625000
  }
}
GET /api/link/stats

링크별 클릭 통계 — 누적, 오늘, 국가별 TOP 10을 조회합니다.

파라미터

  • slug슬러그 (필수)
  • domain커스텀 도메인 (선택, 예: example.com)

요청

GET /api/link/stats?slug=abc123

응답

{
  "success": true,
  "message": {
    "clicks": 128,
    "clicksToday": 5,
    "countries": [
      { "country": "KR", "clicks": 80 },
      { "country": "US", "clicks": 30 }
    ]
  }
}
DELETE /api/link

링크를 삭제합니다. 전역 링크는 30일간 복원 가능하고, 커스텀 도메인 링크는 즉시 완전히 삭제됩니다.

파라미터

  • slug슬러그 (필수)
  • domain커스텀 도메인 (선택, 예: example.com)

요청

DELETE /api/link
{ "slug": "abc123" }

응답

{ "success": true }

레이트 리밋

IP당 분 10회, 계정당 하루 1,000개까지 요청할 수 있습니다. 초과 시 429가 반환됩니다.

에러 코드

실패 시 success: false와 함께 에러 코드가 반환됩니다.

{ "success": false, "message": "api_invalid_token" }
codestatus의미
api_invalid_token401토큰이 없거나 유효하지 않습니다
link_invalid_url400URL이 올바르지 않습니다 (http/https만 가능)
link_invalid_slug400슬러그 형식이 올바르지 않습니다
link_not_found400링크가 존재하지 않습니다
domain_not_found400커스텀 도메인이 존재하지 않습니다
link_own_domain400자신의 도메인을 단축할 수 없습니다
link_create_failed400링크 생성에 실패했습니다
link_rate_limit429요청 한도를 초과했습니다
koenjazh-TWzh-CNviesptfrru