빠르고 안전한, 무료 단축 URL

DEVELOPER API

API 문서

프로젝트 링크, 캠페인, UTM 템플릿과 통계를 외부 시스템에서 관리합니다.

OpenAPI JSON

시작하기

  1. 키 발급프로젝트의 API 탭에서 OWNER가 필요한 scope를 선택해 키를 만듭니다.
  2. 키 보관전체 키는 발급 직후 한 번만 표시됩니다. 서버의 secret 저장소에 보관하세요.
  3. 요청 전송Authorization: Bearer srrrg_pk_... 헤더를 모든 /api/v1/** 요청에 넣습니다.
API 키 관리 기본 URL https://srrrg.link

첫 요청

curl -H "Authorization: Bearer srrrg_pk_..." \
  "https://srrrg.link/api/v1/projects/{projectId}/links?limit=20"

인증과 권한

API 키는 하나의 프로젝트에 속합니다. URL의 projectId와 키의 프로젝트가 다르면 요청이 거부됩니다.

scope허용 작업
links:read프로젝트·캠페인 링크 목록, CSV 내보내기
links:write링크 생성, JSON batch, CSV 가져오기
campaigns:read캠페인, UTM 템플릿·기본값, 가져오기 상태 조회
campaigns:write캠페인과 UTM 템플릿·필드·기본값 변경
stats:read프로젝트·캠페인·링크 통계 조회

공통 규칙

Idempotency-Key
단일 링크 생성에는 권장하며, JSON batch에는 필수입니다. 같은 작업의 재시도에는 같은 값을 사용하세요.
페이지네이션
목록은 cursor와 limit를 사용합니다. 응답의 다음 cursor를 그대로 전달하세요.
날짜와 시각
날짜는 YYYY-MM-DD, 시각은 ISO 8601 UTC 형식(예: 2026-08-16T03:00:00Z)을 사용합니다.
개인정보
externalId와 UTM 값에 이메일, 이름, 전화번호 같은 개인정보를 넣지 마세요.

엔드포인트

요청·응답 필드와 전체 schema는 OpenAPI JSON이 기준입니다.

익명 링크

POST/api/links인증 없음 · 링크 생성
GET/api/links/{code}Secret key · 링크 조회
PATCH/api/links/{code}Secret key · 링크 변경
DELETE/api/links/{code}Secret key · 링크 삭제
GET/api/links/{code}/statisticsSecret key · 링크 통계

프로젝트 링크와 통계

POST/api/v1/projects/{projectId}/linkslinks:write · 링크 생성
GET/api/v1/projects/{projectId}/linkslinks:read · 링크 목록
GET/api/v1/projects/{projectId}/statisticsstats:read · 프로젝트 통계
GET/api/v1/projects/{projectId}/links/{code}/statisticsstats:read · 링크 통계

캠페인

POST/api/v1/projects/{projectId}/campaignscampaigns:write · 생성
GET/api/v1/projects/{projectId}/campaignscampaigns:read · 목록
GET/api/v1/campaigns/{campaignId}campaigns:read · 상세
PATCH/api/v1/campaigns/{campaignId}campaigns:write · 변경
PATCH/api/v1/campaigns/{campaignId}/utm-templatecampaigns:write · UTM 템플릿 선택
GET/api/v1/campaigns/{campaignId}/utm-defaultscampaigns:read · UTM 기본값
PATCH/api/v1/campaigns/{campaignId}/utm-defaultscampaigns:write · UTM 기본값 변경
GET/api/v1/campaigns/{campaignId}/statisticsstats:read · 통계

UTM 템플릿

POST/api/v1/projects/{projectId}/utm-templatescampaigns:write · 생성
GET/api/v1/projects/{projectId}/utm-templatescampaigns:read · 목록
GET/api/v1/projects/{projectId}/utm-templates/{templateId}campaigns:read · 상세
PATCH/api/v1/projects/{projectId}/utm-templates/{templateId}campaigns:write · 변경
DELETE/api/v1/projects/{projectId}/utm-templates/{templateId}campaigns:write · 삭제
POST/api/v1/projects/{projectId}/utm-templates/{templateId}/fieldscampaigns:write · 필드 추가
DELETE/api/v1/projects/{projectId}/utm-templates/{templateId}/fields/{fieldId}campaigns:write · 필드 삭제

캠페인 링크와 CSV

POST/api/v1/campaigns/{campaignId}/linkslinks:write · 링크 생성
POST/api/v1/campaigns/{campaignId}/links/batchlinks:write · 최대 500개 생성
GET/api/v1/campaigns/{campaignId}/linkslinks:read · 링크 목록
GET/api/v1/campaigns/{campaignId}/links/template.csvcampaigns:read · CSV 양식
POST/api/v1/campaigns/{campaignId}/imports/csvlinks:write · CSV 가져오기
GET/api/v1/campaigns/{campaignId}/links.csvlinks:read · 링크 내보내기

오류

/api/v1/**의 인증·권한·요청 제한 오류는 application/problem+json이며 응답 헤더에 X-Request-Id가 포함됩니다.

{
  "title": "Forbidden",
  "status": 403,
  "detail": "필요한 API key scope가 없습니다.",
  "code": "INSUFFICIENT_SCOPE",
  "requestId": "..."
}

익명 링크 API와 일부 통계 도메인 오류는 현재 {"code":"...","message":"..."} 형식입니다. 클라이언트는 HTTP 상태를 먼저 판단하고 code를 분기 기준으로 사용하세요.

요청 한도

초과 시 429 Too Many Requests와 Retry-After 헤더를 반환합니다.

대상한도
익명 링크 생성IP당 분 10회, 일 200회
API 키 요청키당 분 300회
단일 링크 생성키당 분 60회
JSON batch프로젝트당 분 2회, 요청당 최대 500개
CSV 업로드프로젝트당 시간 5회, 최대 10MB·10,000행
대량 링크 생성프로젝트당 일 50,000개