단축 링크 API 비교: 2026년 개발자가 실제로 얻는 것
- api
- developers
- link-shortener
이 페이지의 목차
단축 서비스는 어디나 똑같은 시연을 팝니다. 긴 URL을 붙여 넣으면 짧은 URL이 나옵니다. 차이가 드러나는 것은 3주 뒤입니다. 큐 작업자가 한 시간에 링크 10,000개를 만들고, 웹훅 처리기가 재시도를 조용히 흘려보내며, 누군가 지난달 클릭 데이터를 CRM에 붙일 수 없는 이유를 묻기 시작할 때입니다. 이 비교는 시연이 아니라 그 단계를 다룹니다.
아래에서 다루는 것은 API가 프로덕션과 맞부딪혔을 때 살아남을지를 가르는 기준들, 그 기준마다 이 분야의 주요 사업자가 실제로 무엇을 제공하는지, 그리고 LinkProfit API를 상대로 실제 동작하는 예제입니다. 경쟁 제품의 동작은 지어낸 코드 예제가 아니라 문장으로 설명합니다. 요청 형식은 바뀌기 마련이고, 더 이상 동작하지 않는 복사된 조각은 그 엔드포인트가 무슨 일을 하는지 설명하는 한 문장보다 나쁘기 때문입니다.
어떤 구매자에게는 API가 곧 제품입니다
단축 서비스의 고객은 두 부류입니다. 한쪽은 대시보드에 로그인해 링크를 손으로 만들고 차트를 읽습니다. 다른 한쪽은 대시보드를 아예 열지 않습니다. 링크는 자기 소프트웨어가 자기 사용자를 대신해 만들고, 클릭 데이터는 자기 데이터 웨어하우스로 흘러 들어갑니다. 두 번째 부류에게 대시보드는 디버깅 도구이고 API가 제품 전부입니다.
이 분야에서 벌어지는 실망은 대부분 이 구분에서 나오며, SaaS 제품에 링크 단축을 심는 일이 마케팅 도구를 사는 일과 전혀 다른 구매인 이유도 여기에 있습니다. 첫 번째 구매자에게 맞춰진 사업자는 API를 가격 페이지의 체크 항목으로 취급합니다. 존재는 하고, 문서는 얄팍하며, 상위 등급 뒤에 잠겨 있고, 링크 생성은 되지만 도메인과 분석과 웹훅은 다루지 않습니다. 제품 안에 단축 기능을 심는 중이라면 그 빈틈이 출시와 재작성을 가르는 차이가 됩니다.
정말로 중요한 기준들
인증과 키 범위
기본은 bearer 토큰입니다. 구현을 가르는 것은 유출된 토큰이 무엇을 할 수 있는가입니다. 모든 링크를 삭제할 수 있는 계정 단위의 단일 키는 그 자체로 부채이며, 연동에 필요한 것이 생성뿐일 때는 더욱 그렇습니다. 확인할 것은 계정이 아니라 워크스페이스 단위로 범위가 잡힌 키, 키를 만든 사용자가 아니라 키 자체에 붙은 권한, 생성 시 한 번만 노출되고 해시로 저장되는 방식, 그리고 서비스마다 키를 따로 발급하고 그중 하나를 중단 없이 폐기할 수 있는 독립적인 교체입니다.
속도 제한과 상한에서의 동작
중요한 숫자는 둘인데 둘 다 공개되는 경우는 드뭅니다. 지속 가능한 한도, 그리고 그 한도를 넘었을 때 벌어지는 일입니다. 제대로 만든 API는 429로 답하고, 언제 다시 시도할지 알려 주며, 모든 응답에 남은 여유를 실어 보냅니다. 그래야 클라이언트가 실패하기 전에 스스로 속도를 줄일 수 있습니다. 부하가 걸리면 뭉뚱그린 500을 돌려주거나 쓰기를 조용히 버리는 API는, 짐작에 기대어 보수적인 속도 제한기를 직접 만들도록 강요합니다.
창의 모양은 크기만큼 중요합니다. 평균 처리량이 같더라도 초 단위 상한과 분 단위 슬라이딩 윈도는 폭주가 몰리는 작업에서 완전히 다르게 움직이는데, 대다수 연동이 만들어 내는 것이 바로 그런 작업입니다. 캠페인이 발행되면 90초 만에 링크 5,000개가 만들어지고, 큐는 남은 하루 내내 놀고 있습니다.
일괄 작업
HTTP 요청 하나에 링크 하나씩 만드는 방식은 수백 건에서는 괜찮고 수십만 건에서는 고통스럽습니다. 묶음을 받아 항목마다 결과를 돌려주고, 부분 실패에는 실패한 항목의 인덱스까지 실어 주는 일괄 엔드포인트는 밤새 걸리던 작업을 몇 분으로 줄입니다. 확인해야 할 세부는 실패 의미론입니다. 잘못된 URL 하나가 묶음 전체를 거절하게 만드는지, 그리고 일부만 적용된 묶음을 다시 보냈을 때 중복이 생기는지입니다.
API를 통한 분석 데이터
거의 모든 사업자가 대시보드에서 클릭 차트를 보여 줍니다. 같은 숫자를 필요한 단위로 프로그램에서 끌어올 수 있게 해 주는 곳은 훨씬 적고, 요금제별 한도가 숨어 있는 자리도 여기입니다. 세 가지를 요구하십시오. 집계 요약, 단위를 고를 수 있는 시계열, 그리고 국가와 도시, 기기, 브라우저, 리퍼러, 캠페인 파라미터 같은 차원별 분해입니다. 그다음에는 보관 기간과 내보내기 크기 상한을 묻고, 요금제에서 차감되는 이벤트가 API가 돌려주는 이벤트와 같은 것인지도 확인하십시오. 그 아래 깔린 측정의 문제, 특히 봇 필터링과 순 방문자 집계는 저희 클릭 추적 가이드에서 다룹니다.
이것이 왜 중요한지 가장 분명하게 보여 주는 사례가 Rebrandly입니다. 리디렉션은 무제한이지만, 2026년 8월 기준으로 분석 자체가 인게이지먼트 데이터로 계량되어 등급에 따라 월 100건, 10,000건, 25,000건, 150,000건으로 제한됩니다. 리디렉션은 계속되는데 보고만 멈추는 것은 구체적인 장애 양상이므로, 고르기 전에 비용으로 미리 계산해 두어야 합니다.
웹훅과 전달 보장
상태 변화를 알아내려고 폴링을 돌리면 연동은 느려지고 비싸집니다. 웹훅이 그 자리를 대신하며, 웹훅의 품질은 네 가지 속성으로 갈립니다. 어떤 이벤트가 발생하는지, 페이로드에 서명이 붙는지, 재시도 일정이 어떤 모양인지, 재시도가 모두 소진된 뒤에 무슨 일이 벌어지는지입니다. 서명 검증은 재전송을 막기 위해 타임스탬프를 포함한 원본 본문을 대상으로 이뤄져야 합니다. 재시도는 몇 분이 아니라 몇 시간에 걸쳐 퍼져 있어야, 배포 시간대가 이벤트 손실로 이어지지 않습니다. 그리고 사업자는 이벤트를 조용히 버리는 대신 엔드포인트가 실패 상태로 표시됐다는 사실을 알려 주어야 합니다.
SDK와 규격, 문서
공식 SDK는 하루치 작업을 아껴 줍니다. 기계 판독 가능한 OpenAPI 규격은 SDK가 다루지 않는 어떤 언어에서도 그 하루를 아껴 주고, API가 진화하는 동안 계속 아껴 줍니다. Short.io는 SDK 네 개를 제공하는데, 2026년 8월 기준 이 분야에서 가장 넓은 공식 지원입니다. 더 오래가는 자산은 공개된 규격입니다. 클라이언트와 모의 서버, 계약 테스트를 모두 생성해 주기 때문입니다.
오류와 페이지네이션, 버전 관리
유지보수 비용을 결정하는, 화려하지 않은 세 가지 속성입니다. 오류는 기계가 읽을 수 있어야 하고, 사람이 읽는 메시지와 분리된 안정적인 코드를 지녀야 합니다. 그래야 재시도 로직이 문자열 대조가 아니라 코드로 분기합니다. 페이지네이션은 커서 기반이어야 합니다. 쓰기가 계속 들어오는 테이블에 오프셋 방식을 쓰면 행을 건너뛰거나 중복해서 읽습니다. 그리고 버전은 경로에 명시되어야 하며, 한 번 공개하면 동결하고 호환을 깨는 변경은 후속 버전으로 내보내야 합니다.
사업자별 제공 내용
| 사업자 | API 제공 범위 | 공개된 속도 제한 | 공식 SDK | 눈여겨볼 제약 | | --- | --- | --- | --- | --- | | Short.io | 무료를 포함한 모든 요금제 | 초당 50건, 추가 용량은 묶음 판매 | 네 개 | 화이트라벨 대시보드 없음, 팀 기능은 Enterprise 전용 | | Dub | 핵심 제품, 오픈소스 코드베이스 | 대표 숫자로는 미공개 | 있음 | 파트너 화이트라벨은 300 USD 등급 | | Rebrandly | 유료 등급, 기능마다 요금제로 제한 | 대표 숫자로는 미공개 | 있음 | 분석을 인게이지먼트 이벤트로 계량 | | Replug | Agency 요금제 전용, 월 99 USD | 미공개 | 없음 | 하위 등급에서는 API를 평가할 수 없음 | | Shlink 직접 호스팅 | 전체 제공, 오픈소스 | 직접 설정 | 커뮤니티 | 단일 테넌트 전제, 청구 기능 없음 | | LinkProfit | Growth 요금제 이상 | 워크스페이스 키당 분당 600건 | 규격에서 생성한 클라이언트 | 버전 1에서는 공용 API 호스트명 |
위의 요금제와 가격 정보는 모두 2026년 8월 기준입니다.
Short.io: 물량의 기준점
Short.io는 이 분야에서 가격과 처리량을 앞세워 공세를 펴는 쪽입니다. API는 모든 요금제에서 쓸 수 있고, 공개된 한도는 등급과 상관없이 초당 50건이며, 추가 용량은 초당 50건 묶음으로 월 50 USD에 판매합니다. SDK 네 개와 제대로 된 개발자 문서 사이트를 갖췄고, 자동 인증서가 붙은 맞춤 도메인은 무료 등급부터 포함됩니다.
제약은 API가 아니라 제품의 다른 곳에 있습니다. 이 회사가 화이트라벨이라 부르는 것은 링크에 브랜드를 입히는 일이지 브랜드를 바꿔 달 수 있는 대시보드가 아니고, 여러 팀 지원은 Enterprise에 갇혀 있으며, 리타기팅 픽셀은 두 개 네트워크만 지원합니다. 그런 것이 필요하다면 저희 Short.io 대안 비교를 보십시오.
Dub: API 우선의 기준 구현
Dub는 이 분야의 설계와 개발자 경험 기준점으로, 오픈소스 코어를 갖췄고 대시보드가 아니라 API를 먼저 두고 만든 제품입니다. 이 영역에서 좋은 것이 어떤 모습인지 본보기를 원한다면, 여러분의 연동 요구사항을 적기 전에 그들의 문서부터 읽으십시오.
이름 때문에 혼란이 생기므로 두 가지는 짚어 둘 만합니다. Dub Partners는 Dub의 고객에게 제공되는 제휴 프로그램 인프라이지 Dub 자체를 재판매하는 수단이 아니며, 2026년 8월 기준 그 화이트라벨은 월 300 USD의 Advanced 등급에 있습니다. 그들 자신의 제휴 제도는 판매액의 30%를 1년 동안 지급하는데, 이는 리셀러 모델이 아니라 추천 방식입니다.
Rebrandly와 Replug: 상위 판매 수단이 된 API
둘 다 개발자 접근을 상위 등급 뒤에 두지만 방식은 다릅니다. Replug의 API는 2026년 8월 기준 월 99 USD, 연간 결제 시 79 USD인 Agency 요금제에서만 제공되므로 연동을 저렴하게 평가해 볼 수 없습니다. Rebrandly의 제한은 벽 하나가 아니라 기능마다 나뉘어 있습니다. 딥링크는 Growth부터, 리타기팅 픽셀은 Professional부터 나타나고, 앞에서 설명한 인게이지먼트 데이터 상한은 등급과 무관하게 분석에 적용됩니다.
어느 쪽도 특별히 이상한 방식은 아니고, 문턱 위에 있다면 둘 다 쓸 만합니다. 평가에서 중요한 것은 예산에 솔직해지는 일입니다. API 때문에 필요해진 등급이 여러분이 실제로 사는 등급이지, 처음 눈여겨봤던 비교표 속의 그 등급이 아닙니다.
직접 호스팅과 오픈소스
필요한 것이 청구 기능도 없고 테넌트도 하나뿐인 사내 단축 서비스라면 Shlink가 가장 강력한 선택지입니다. MIT 라이선스에 PHP로 쓰였고, 진짜로 API 우선이며, 성숙한 클라이언트 생태계를 갖췄습니다. 그 전제가 드러나는 것은 다른 사람에게 서비스하려 할 때입니다. 슬러그는 도메인별이 아니라 인스턴스 전체에서 고유해야 하고, API 키 역할은 진정한 테넌트 격리 근처에도 가지 못하며, QR 생성은 버전 5에서 제거됐습니다. Kutt는 커스터마이징 디렉터리를 통해 리브랜딩을 지원하지만 개발 속도가 상당히 느려져 2026년 한 해 커밋이 16건이고 팀과 웹훅, 멀티테넌시가 없습니다. YOURLS는 설계부터 관리자 한 명과 도메인 하나입니다.
LinkProfit
저희 설계는 맨 앞에서 말한 두 번째 부류의 구매자를 겨냥합니다. 키는 워크스페이스 단위 또는 파트너 단위로 발급되고, 명시적인 범위를 지니며, 한 번만 표시된 뒤 SHA-256 해시로 저장됩니다. 기본 한도는 워크스페이스 키가 분당 600건, 파트너 키가 1,200건이고 슬라이딩 윈도로 적용되며, 모든 응답에 X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset이 실리고 429에는 Retry-After가 붙습니다. 일괄 생성은 한 번에 링크 100개까지 받습니다. 분석은 대시보드 전용이 아니라 일급 자원입니다. 요약과 시계열, 차원별 분해, 그리고 100,000행까지 스트리밍으로 내려받는 CSV 내보내기를 제공합니다. 웹훅에는 서명이 붙고 약 12시간에 걸쳐 다섯 번 재시도합니다. 규격은 요청을 검증하는 것과 같은 스키마에서 생성되므로 문서가 구현과 어긋날 수 없습니다.
API 접근은 Growth 요금제부터 시작하며, 이 등급은 맞춤 대시보드 도메인이 열리는 등급이기도 합니다. 전체 내역은 가격 페이지에 있습니다. 버전 1의 솔직한 한계는 이렇습니다. API가 공용 호스트명에서 제공되므로, 화이트라벨 파트너는 이를 자기 도메인에 올리지 못한 채 자기 API로 고객에게 안내하게 됩니다. 이는 숨겨 둔 사실이 아니라 로드맵 항목입니다.
LinkProfit API로 직접 작업하기
링크 만들기
curl -X POST https://api.linkprofit.com/v1/links \
-H "Authorization: Bearer lp_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/spring-collection",
"slug": "spring",
"domain_id": "dom_7Kq2f9",
"expires_at": "2026-10-01T00:00:00Z"
}'
쓰기 묶어 보내기
일괄 엔드포인트는 한 번에 링크 100개까지 받고 항목마다 결과를 돌려주므로, 부분 실패가 나면 묶음 전체를 거절하는 대신 문제가 된 항목을 짚어 줍니다.
const response = await fetch('https://api.linkprofit.com/v1/links/bulk', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.LINKPROFIT_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
links: batch.map((row) => ({ url: row.destination, slug: row.code, domain_id: domainId })),
}),
});
if (response.status === 429) {
const waitSeconds = Number(response.headers.get('retry-after') ?? '1');
await new Promise((resolve) => setTimeout(resolve, waitSeconds * 1000));
}
분석 데이터 되읽기
분해 조회는 차원을 파라미터로 받으므로, 차트마다 엔드포인트를 늘리는 대신 표면을 작고 예측 가능하게 유지합니다.
curl -G https://api.linkprofit.com/v1/analytics/breakdown \
-H "Authorization: Bearer lp_live_xxxxxxxxxxxxxxxx" \
-d dimension=city \
-d date_from=2026-07-01 \
-d date_to=2026-07-31
제공되는 차원은 국가, 도시, 기기, 브라우저, 운영체제, 리퍼러, 그리고 주요 캠페인 파라미터 세 가지를 아우르므로, 대시보드의 숫자를 여러분의 보고 체계에서 그대로 재현하기에 충분합니다.
웹훅 검증하기
이벤트에는 t=timestamp,v1=hex 형식의 X-LinkProfit-Signature가 실립니다. 서명 대상은 타임스탬프와 점, 그리고 원본 요청 본문이므로, 본문을 다시 직렬화할 수 있는 JSON 파싱보다 먼저 검증이 이뤄져야 합니다.
import { createHmac, timingSafeEqual } from 'node:crypto';
export function isValidSignature(rawBody, header, secret) {
const fields = new Map(header.split(',').map((pair) => pair.split('=')));
const timestamp = Number(fields.get('t'));
// Reject anything outside a five minute window to limit replay.
if (!Number.isFinite(timestamp) || Math.abs(Date.now() / 1000 - timestamp) > 300) return false;
const expected = createHmac('sha256', secret).update(`${timestamp}.${rawBody}`).digest('hex');
const received = Buffer.from(fields.get('v1') ?? '', 'hex');
const computed = Buffer.from(expected, 'hex');
return received.length === computed.length && timingSafeEqual(received, computed);
}
전달에 실패하면 1분, 5분, 30분, 2시간, 12시간 뒤에 다시 시도합니다. 마지막 시도까지 실패하면 엔드포인트가 실패 상태로 표시되고 계정 소유자에게 메일이 발송되므로, 망가진 처리기는 한 달 뒤에야 발견되는 데이터 공백이 아니라 알림으로 드러납니다.
반나절 만에 API 평가하기
- API 접근이 포함된 가장 저렴한 요금제에서 키를 발급하고, 그 요금제가 원래도 살 만한 것이었는지 적어 둡니다.
- 링크 하나를 만들고 읽고 수정하고 삭제하면서, 응답에 속도 제한 헤더가 실리는지 확인합니다.
- 일부러 한도를 넘겨서, 뭉뚱그린 실패가 아니라 재시도 안내가 붙은 429가 돌아오는지 확인합니다.
- 잘못된 URL 하나가 섞인 일괄 요청을 보내 부분 실패가 어떻게 보고되는지 살펴봅니다.
- 지난달 도시별 분해를 내려받아 합계를 대시보드와 비교합니다.
- 요청을 그대로 받아 보여 주는 엔드포인트에 웹훅을 등록해 이벤트를 발생시키고 서명을 검증한 뒤, 엔드포인트를 내려서 재시도 일정을 지켜봅니다.
- OpenAPI 문서를 받아 그것으로 클라이언트를 생성해 봅니다.
- 버전 관리 정책과 최근 12개월치 변경 이력을 읽습니다.
대부분의 평가가 건너뛰는 것이 3번과 4번, 6번이고, 새벽 두 시에 연동이 어떻게 동작할지 예측하게 해 주는 것도 바로 그 셋입니다.
이 분야에는 Dub라는 진짜 기준 구현이 있고, Short.io라는 진짜 물량 선택지가 있으며, API가 설계 목표가 아니라 상위 판매 수단인 제품들의 긴 꼬리가 있습니다. 범위가 잡힌 키, 솔직한 헤더와 함께 공개된 한도, 일급 자원으로 다루는 분석과 도메인, 검증 스키마에서 생성한 규격이라는 저희의 접근은 API 기능 소개에 정리되어 있고, 빠른 시작과 페이지네이션, 오류 코드, 웹훅 가이드는 문서에 있습니다.
많이 묻는 질문
공개된 속도 제한이 가장 높은 단축 서비스는 어디입니까?
주류 사업자 가운데 가장 높은 대표 숫자를 내건 곳은 Short.io입니다. 2026년 8월 기준으로 무료를 포함한 모든 요금제에서 초당 50건을 허용하고, 추가 용량은 초당 50건 단위로 월 50 USD에 판매합니다. 다만 대표 숫자끼리는 곧바로 견줄 수 없습니다. 사업자마다 세는 창이 다르기 때문입니다. 초 단위 상한은 분 단위 슬라이딩 윈도라면 흡수했을 순간적인 폭주를 그대로 거절하므로, 다른 사업자의 숫자가 아니라 여러분의 실제 트래픽 모양과 한도를 견주십시오.
API가 정말 필요합니까, 아니면 CSV 가져오기로 충분합니까?
한 번으로 끝나는 이전이라면 CSV로 충분합니다. API가 필요해지는 시점은 링크 생성을 대시보드 앞의 사람이 아닌 무언가가 촉발할 때입니다. 수신자마다 링크를 만드는 캠페인 도구, 사용자를 대신해 URL을 줄여 주는 제품, 게시물을 예약 발행하는 스케줄러가 그렇습니다. 판단 기준은 물량이 마케팅 팀 규모가 아니라 고객 수에 따라 늘어나는가, 그리고 클릭 데이터를 여러분의 보고 체계로 다시 끌어와야 하는가입니다.
일부 사업자가 API를 가장 비싼 요금제 뒤에 두는 이유는 무엇입니까?
API 접근이 곧 물량과 대행사 업무를 뜻하기 때문이며, 그만큼 상위 등급으로 끌어올리기 좋은 지렛대이기 때문입니다. 2026년 8월 기준 Replug는 월 99 USD, 연간 결제 시 79 USD인 Agency 요금제에서만 API를 제공합니다. 개발자에게 돌아오는 현실적인 결과는 평가 비용이 비싸다는 것입니다. 결정하기 전에 저렴한 등급에서 연동을 시험해 볼 수 없으므로, 입문 요금제부터 API를 여는 사업자를 후보로 남기는 것은 충분히 합리적인 판단입니다.
중복을 만들지 않으면서 웹훅 재시도를 처리하려면 어떻게 해야 합니까?
최소 한 번 전달을 전제하고 처리기를 멱등하게 만드십시오. 페이로드에 담긴 이벤트 식별자를 저장해 두고, 이벤트가 도착하면 어떤 작업을 시작하기 전에 이미 처리한 것인지부터 확인합니다. 서명은 파싱하기 전에 원본 요청 본문 그대로 검증하고, 타임스탬프가 몇 분의 허용 범위를 벗어난 이벤트는 거절하며, 응답은 2xx로 빠르게 돌려주십시오. 오래 걸리는 작업은 그 자리에서 처리하지 말고 큐에 넣어야 합니다. 보내는 쪽에서는 느린 처리기와 실패한 처리기가 똑같아 보이기 때문입니다.
오픈소스 단축 서비스가 상용 API의 현실적인 대안이 됩니까?
테넌트가 하나뿐인 사내 도구라면 그렇습니다. Shlink가 가장 강력한 선택지로, MIT 라이선스이며 진짜로 API 우선입니다. 한계는 다른 사람에게 서비스할 때 드러납니다. 슬러그가 도메인별이 아니라 인스턴스 전체에서 고유해야 하고, API 키 역할은 진정한 멀티테넌트 격리에 한참 못 미치며, QR 생성은 버전 5에서 제거됐고, 청구 기능이 없으며, 유지보수가 관리자 한 명에게 걸려 있습니다. Kutt와 YOURLS는 멀티테넌트 용도에서 더 멀리 떨어져 있습니다.
API 버전 관리는 사업자에 대해 무엇을 알려 줍니까?
웬만한 기능 목록보다 많은 것을 알려 줍니다. 버전을 한 번 공개한 뒤 동결하고 호환을 깨는 변경은 새 경로에서만 내놓는 사업자는, 여러분의 연동에 정해진 수명이 있다고 말하는 셈입니다. 버전이 없는 API에 필드 이름 변경으로 가득한 변경 이력을 가진 사업자는, 유지보수가 여러분 몫이라고 말하는 셈입니다. 지원 중단 정책은 무엇인지, 후속 버전이 나온 뒤 옛 버전을 얼마나 오래 제공하는지, 클라이언트를 생성할 수 있는 기계 판독 규격이 있는지 물어보십시오.