Skip to content
언어: 한국어

개발자를 위한 API

단계별 안내: API로 페이지 업데이트하기

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

API 키부터 게시된 버전까지: 링크를 추가하고, 맨 위로 옮기고, 디자인을 바꾸고, 초안을 검증하고 게시합니다. curl과 jq를 사용합니다.

이 예시에서는 기존 페이지를 API로만 업데이트합니다. 링크를 추가하고, 맨 위로 옮기고, 버튼 스타일을 바꾸고, 초안을 검증하고 게시합니다. 명령은 curl과 jq가 있는 모든 셸에서 실행됩니다.

1. API 키 만들기

  1. 대시보드에서 “콜백 및 API”를 엽니다
  2. “+ 새 키 만들기”를 클릭합니다
  3. “페이지”와 “링크” 모두 “쓰기”를 고릅니다(읽기 권한 포함)
  4. “키 만들기”를 클릭하고 키 시크릿을 복사합니다
  5. 목록에서 키 ID를 복사합니다

두 값은 스크립트가 아니라 환경 변수에 저장하세요.

인증 정보 설정
export LH_KEY_ID="6F668EA6598B0692"
export LH_KEY_SECRET="lt_…"
export API="https://dock.at-harbor.com"

2. 액세스 토큰 받기

POST /v1/token
LH_TOKEN=$(curl -sS -X POST "$API/v1/token" \
  -H "Content-Type: application/json" \
  -d "{\"key_id\":\"$LH_KEY_ID\",\"key_secret\":\"$LH_KEY_SECRET\"}" \
  | jq -r .token)

토큰은 15분 동안 유효합니다. 스크립트가 더 오래 실행되면 중간에 새 토큰을 받으세요.

3. 페이지 찾기

GET /v1/pages
curl -sS "$API/v1/pages" -H "Authorization: Bearer $LH_TOKEN" \
  | jq '.items[] | {id, handle, title, status, current_version}'

페이지의 id를 기억해 두세요. 이 예시에서는 42입니다.

bash
PAGE_ID=42

4. 링크 추가하기

POST /v1/pages/{id}/links
LINK_ID=$(curl -sS -X POST "$API/v1/pages/$PAGE_ID/links" \
  -H "Authorization: Bearer $LH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title":"Autumn sale","target_url_template":"https://shop.example.com/autumn","enabled":true}' \
  | jq -r .id)
echo "New link: $LINK_ID"

API는 HTTP 201과 새 ID로 응답합니다. 새 링크는 목록 끝에 추가됩니다. 플랜의 링크 한도에 도달하면 409 link_limit_reached를 받습니다.

5. 링크를 맨 위로 옮기기

POST /v1/pages/{id}/links/reorder
curl -sS -X POST "$API/v1/pages/$PAGE_ID/links/reorder" \
  -H "Authorization: Bearer $LH_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"order\":[$LINK_ID]}"

앞으로 옮길 ID만 보내면 됩니다. 나머지 링크는 그 뒤에서 순서를 유지합니다.

6. 초안에서 디자인 바꾸기

theme_config는 PATCH에서 완전히 대체됩니다. 그래서 먼저 초안을 읽고, 원하는 값만 바꾼 뒤 객체 전체를 다시 보냅니다.

GET과 PATCH /v1/pages/{id}/draft
THEME=$(curl -sS "$API/v1/pages/$PAGE_ID/draft" -H "Authorization: Bearer $LH_TOKEN" \
  | jq -c '(.theme_config // {}) | .button_style = "pill"')

curl -sS -X PATCH "$API/v1/pages/$PAGE_ID/draft" \
  -H "Authorization: Bearer $LH_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"theme_config\":$THEME}"

button_style에는 rounded, pill, square를 쓸 수 있습니다. 그 밖의 theme_config 필드로는 bg_color, text_color, button_color, button_text_color, background 등이 있습니다.

7. 초안 검증하기

GET /v1/pages/{id}/draft/validate
curl -sS "$API/v1/pages/$PAGE_ID/draft/validate" -H "Authorization: Bearer $LH_TOKEN"
# → {"ok":true,"valid":true,"issues":[]}

valid가 false이면 issues에 문제가 나열됩니다. 게시하기 전에 고치세요. 초안이 공개 버전과 다른지는 GET /v1/pages/$PAGE_ID의 has_unpublished_changes 필드로 알 수 있으며, false이면 게시를 건너뛰어도 됩니다.

8. 게시하기

POST /v1/pages/{id}/publish
curl -sS -X POST "$API/v1/pages/$PAGE_ID/publish" -H "Authorization: Bearer $LH_TOKEN"
# → {"ok":true,"version":8,"checksum":"…"}

이제 방문자는 새 링크, 순서, 디자인이 반영된 새 버전을 봅니다. page.published 웹훅이 있다면 이제 전송을 받습니다. 초안을 게시할 수 없으면 API가 409 draft_not_publishable과 details.issues의 목록으로 응답합니다.

9. 되돌리기

결과가 마음에 들지 않으면 이전 버전을 초안으로 되돌리고 다시 게시하세요.

버전 7 복원
curl -sS -X POST "$API/v1/pages/$PAGE_ID/versions/7/restore" -H "Authorization: Bearer $LH_TOKEN"
curl -sS -X POST "$API/v1/pages/$PAGE_ID/publish" -H "Authorization: Bearer $LH_TOKEN"

버전 번호 대신 current를 넘길 수 있습니다. 그러면 마지막 게시 이후의 모든 초안 변경을 버립니다. 복원하면 디자인, 템플릿, 커스텀 CSS, SEO, 블록, 링크가 돌아오며, 제목, 핸들, 공개 범위는 버전에 포함되지 않습니다.

자주 발생하는 오류

400 bad_request
Content-Type: application/json 헤더가 없습니다. 이 헤더가 없으면 curl -d는 다른 유형을 보냅니다.
401 invalid_token
토큰이 15분 뒤 만료되었습니다. 새 토큰을 받으세요.
403 insufficient_scope
키에 스코프가 없습니다. 예: 링크에 대한 “쓰기”.
디자인이 갑자기 초기화됨
theme_config를 필드 하나만 넣어 보내서 테마 전체가 대체되었습니다. 전체 테마를 다시 보내거나, restore current로 마지막 게시 이후의 모든 초안 변경을 버리세요.

모든 코드는 오류 형식과 오류 코드에서, 모든 엔드포인트는 영역별 API 엔드포인트에서 설명합니다.

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

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

지원팀에 문의