Skip to content
언어: 한국어

개발자를 위한 API

LinkHarbor API 한눈에 보기

2026년 11월 1일 업데이트 4분 분량

기본 URL, 샌드박스, 버전 관리, 데이터 형식, 페이지네이션, 인증: LinkHarbor REST API를 처음 호출하기 전에 알아야 할 내용입니다.

REST API를 쓰면 자체 프로그램으로 LinkHarbor를 제어할 수 있습니다. 페이지와 링크를 만들고, 초안을 편집하고 게시하고, 단축 링크를 만들거나 통계를 자체 보고서로 가져올 수 있습니다. 이 글은 개발자를 위한 것이며 모든 엔드포인트에 적용되는 기본 규칙을 설명합니다.

어떤 방법이 맞을까요?

원하는 일방법자세히
스크립트나 서버에서 페이지, 링크, 콘텐츠 관리API 키를 쓰는 REST API이 섹션
무언가 일어나면 알림 받기(예: 페이지 게시)웹훅웹훅
쇼핑몰의 판매를 링크 클릭과 연결판매 콜백콜백
자체 도구의 라이브 데이터를 페이지에 표시“Custom (API)” 연동콜백
Claude나 ChatGPT와 채팅하며 작업MCP 서버AI 어시스턴트

기본 URL과 버전 관리

기본 URL
https://dock.at-harbor.com입니다. 모든 제품 엔드포인트는 /v1 아래에 있습니다. 예: https://dock.at-harbor.com/v1/pages.
버전
현재는 v1 버전만 있습니다. 버전 번호는 경로의 일부입니다.
프로토콜
HTTPS만 지원합니다.
OpenAPI
기계가 읽을 수 있는 명세(OpenAPI 3.1)는 https://dock.at-harbor.com/openapi.yaml에 있습니다. Postman, Insomnia, 코드 생성기에 불러올 수 있습니다.

샌드박스에서 테스트하기

개발과 테스트를 위한 별도의 샌드박스가 있습니다. 실제 API처럼 동작하지만 완전히 분리되어 있습니다. 계정도 데이터도 따로이며, 어떤 것도 실제 워크스페이스에 들어가지 않습니다.

API
https://drydock.at-harbor.com이며 경로는 위와 같습니다. 예: https://drydock.at-harbor.com/v1/pages.
대시보드
https://sandbox-deck.linkharbor.com이며, 예를 들어 API 키를 만들 때 씁니다.
페이지
게시된 페이지는 https://<handle>.sandbox.linkharbor.com에 나타납니다.
계정
실제 LinkHarbor 계정은 그곳에서 작동하지 않습니다. 별도의 샌드박스 계정을 만드세요.

샌드박스는 이메일을 보내지 않습니다. API로 가입하면(POST /v1/auth/register) 인증 코드가 응답의 _dev_verification 필드에 바로 돌아옵니다. 비밀번호 재설정과 이메일 변경도 마찬가지입니다. 이 필드는 샌드박스에만 있으므로 코드에서 의존하지 마세요.

  • 푸시 알림은 꺼져 있음
  • 결제는 Stripe의 테스트 모드로 처리되며 실제 돈은 오가지 않음
  • 요청 한도는 실제 값의 약 3분의 1이며, 새 계정은 IP 주소당 시간당 5개로 제한됨
  • 매월 1일 3:00 UTC에 샌드박스가 완전히 초기화되며, 그 뒤 모든 계정과 데이터가 사라짐
  • 모든 응답에 X-Environment: sandbox 헤더가 붙음

인증 요약

  1. 소유자나 관리자가 대시보드의 “콜백 및 API”에서 필요한 스코프로 API 키를 만듭니다(Creator Pro부터)
  2. POST /v1/token으로 키 ID와 키 시크릿을 액세스 토큰으로 교환합니다
  3. 모든 요청에 Authorization: Bearer … 헤더로 토큰을 보냅니다
  4. 15분이 지나면 새 토큰을 받습니다

자세한 내용은 API 키와 토큰에, 권한은 스코프에 있습니다.

요청과 응답

형식
요청과 응답은 UTF-8 JSON입니다. 파일 업로드에는 multipart/form-data도 씁니다.
Content-Type
본문이 있는 모든 요청에 Content-Type: application/json 헤더를 보내세요. 다른 유형은 400 bad_request로 거부되며, 이 헤더가 없을 때 curl이 -d에 자동으로 설정하는 유형도 마찬가지입니다.
알 수 없는 필드
엔드포인트가 모르는 필드는 422 validation_failed가 됩니다. 응답에 알 수 없는 필드가 나옵니다.
깨진 JSON
400 invalid_json이 됩니다.
크기
엔드포인트에 따라 본문은 최대 64 KB, 1 MB, 2 MB이며 파일 업로드는 10 MB입니다. 더 크면 API가 413 request_too_large로 응답합니다. 모든 한도는 요청 한도에 정리되어 있습니다.
목록
items 필드가 있는 객체로 옵니다. 예: {"items":[…]}.
생성
HTTP 201과 새 ID로 응답합니다. 예: {"id":123}.
반환값이 없는 작업
{"ok":true}로 응답합니다.
오류
항상 기계가 읽을 수 있는 코드가 있는 고정된 형식입니다. 오류 형식과 오류 코드를 참고하세요.

페이지네이션

하나로 통일된 페이지네이션 방식은 없습니다. 대부분의 목록은 작아서 한 번에 모두 돌아오며, 일부 엔드포인트에만 파라미터가 있습니다.

엔드포인트동작파라미터
GET /v1/pages, /v1/pages/{id}/links, /v1/pages/{id}/blocks, /v1/forms전체 목록–
GET /v1/forms/{id}/submissions최신순, 커서로 페이지 이동: 응답의 next_cursor가 다음 페이지의 커서이며 마지막 페이지에서는 nulllimit 1~500(기본 100), cursor
GET /v1/short-links페이지 단위, 응답에 total 포함limit 1~100(기본 50), offset, sort, q
GET /v1/push/history페이지 단위limit 최대 100(기본 50), offset
통계 엔드포인트기간 단위period, from, to, granularity

단축 링크의 sort에는 created_desc, created_asc, redirects_desc, redirects_asc가 있으며, q는 슬러그, 제목, 대상 URL을 검색합니다(최대 100자, 대소문자 구분 없음). 통계의 period에는 24h, 7d, 30d, 90d, this_month, last_month, last_30d, custom을 쓸 수 있으며, 대신 from과 to를 보낼 수도 있습니다. granularity는 hour 또는 day입니다.

요청 ID와 언어

  • 모든 응답에 X-Request-Id 헤더가 붙음. 지원팀에 문의할 때 함께 알려 주기
  • X-Request-Id 헤더를 직접 보내면 API가 그 값을 사용함
  • message의 오류 텍스트는 워크스페이스 소유자의 계정 언어로, 그것이 없으면 Accept-Language를 따름. error의 코드는 항상 같음

브라우저에서 호출하나요?

기술적으로 API는 브라우저에서의 호출(CORS)을 허용합니다. 하지만 키 시크릿은 웹사이트든 앱이든 방문자 쪽에서 실행되는 코드에 절대 넣으면 안 됩니다. API는 항상 자체 서버에서 호출하세요.

플랜

플랜API 키웹훅콜백 시크릿
Creator Free–––
Creator Pro최대 5개최대 5개최대 5개
Creator Agency최대 20개최대 25개최대 5개
Enterprise최대 50개(조정 가능)최대 100개(조정 가능)최대 5개

플랜별 API 호출 할당량은 없습니다. 분당 요청 한도만 적용됩니다. 페이지, 링크, 페이지당 블록 같은 플랜의 콘텐츠 한도는 대시보드와 마찬가지로 API에도 적용됩니다. 플랜 비교를 참고하세요.

첫 번째 호출

토큰을 받고 페이지 목록 가져오기
# 키를 토큰으로 교환
curl -X POST https://dock.at-harbor.com/v1/token \
  -H "Content-Type: application/json" \
  -d '{"key_id":"6F668EA6598B0692","key_secret":"lt_…"}'
# → {"token":"eyJ…","expires_in":900}

export LH_TOKEN="eyJ…"

# 페이지 목록 가져오기(스코프 read:pages)
curl https://dock.at-harbor.com/v1/pages \
  -H "Authorization: Bearer $LH_TOKEN"

링크를 추가하고 디자인을 바꾸고 게시하는 전체 예시는 API로 페이지 업데이트하기에 있습니다.

원하는 내용을 찾지 못했나요?

필요한 내용을 알려 주시면 지원팀이 직접 도와드립니다.

지원팀에 문의