API 공통 사항

SweetBook API의 인증, 요청/응답 형식, 페이지네이션, Rate Limiting 등 공통 규칙을 안내합니다.

인증

모든 API 요청에는 Bearer Token 인증이 필요합니다. 파트너 포털에서 발급받은 API Key를 Authorization 헤더에 포함하세요.

text
Authorization: Bearer SB{prefix}.{secret}

API Key는 SB 접두사로 시작하며, .으로 구분된 prefix와 secret으로 구성됩니다. Sandbox 키와 Live 키가 분리되어 있으므로 환경에 맞는 키를 사용하세요.

보안 주의: API Key는 서버 측에서만 사용하세요. 클라이언트(브라우저, 앱)에 노출하지 마세요.

Base URL

SweetBook API는 Sandbox와 Live 두 가지 환경을 제공합니다.

환경Base URL용도
Sandboxhttps://api-sandbox.sweetbook.com/v1개발 및 테스트
Livehttps://api.sweetbook.com/v1실제 운영
Sandbox 환경에서는 실제 인쇄/배송이 이루어지지 않으며, Test 충전금이 사용됩니다.

요청 형식

대부분의 API 요청은 JSON 형식을 사용합니다. 파일 업로드가 필요한 엔드포인트는 multipart/form-data를 사용합니다.

Content-Type대상 엔드포인트비고
application/json일반 API (Orders, Webhooks 등)대부분의 요청
multipart/form-data파일 업로드 (Cover, Contents, Photos)파일 첨부 시

응답 형식

모든 API 응답은 동일한 JSON 구조를 따릅니다.

성공 응답

json
{
  "success": true,
  "message": "Success",
  "data": { ... }
}

에러 응답

json
{
  "success": false,
  "message": "Validation failed",
  "data": null,
  "errors": ["잔액이 부족합니다."],
  "fieldErrors": [
    {
      "field": "email",
      "message": "Invalid email format"
    }
  ]
}

응답 필드

필드타입항상 포함설명
successbooleanO요청 성공 여부
messagestringO결과 메시지
dataobject | nullO응답 데이터 (에러 시 null)
errorsstring[]-에러 메시지 목록 (에러 시)
fieldErrorsobject[]-필드별 검증 에러 (400 에러 시)

페이지네이션

목록 조회 API는 limit/offset 기반 페이지네이션을 사용합니다.

요청 파라미터

파라미터기본값최대값설명
limit20100한 페이지에 반환할 항목 수
offset0-건너뛸 항목 수

응답 구조

json
{
  "success": true,
  "message": "Success",
  "data": {
    "total": 85,
    "limit": 20,
    "offset": 0,
    "hasNext": true,
    "items": [ ... ]
  }
}
필드타입설명
totalnumber전체 항목 수
hasNextboolean다음 페이지 존재 여부
itemsarray현재 페이지의 항목 목록

Rate Limiting

API의 안정적인 운영을 위해 엔드포인트별로 요청 빈도를 제한합니다.

정책대상제한기준
auth인증 엔드포인트10 req/minIP 기반
general일반 API300 req/minAPI Key 기반
upload파일 업로드 / Contents200 req/minAPI Key 기반

Rate Limit을 초과하면 429 Too Many Requests 응답이 반환됩니다. 응답의 Retry-After 헤더(60초)를 확인한 뒤 재시도하세요.

json
{
  "success": false,
  "message": "Rate limit exceeded. Please retry after 60 seconds.",
  "data": null
}

멱등성 (Idempotency)

네트워크 오류 등으로 동일한 요청이 중복 실행되는 것을 방지하기 위해 Idempotency-Key 헤더를 지원합니다. 특히 주문 생성 시 반드시 사용하는 것을 권장합니다.

bash
curl -X POST 'https://api.sweetbook.com/v1/orders' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: unique-request-id-12345' \
  -d '{ ... }'

동일한 Idempotency-Key로 동일한 요청을 보내면 이전 응답이 반환됩니다. 동일한 키로 다른 내용의 요청을 보내면 409 Conflict 에러가 발생합니다.

중요: 주문 생성(POST /orders)에는 반드시 Idempotency-Key를 포함하세요. 충전금 이중 차감을 방지합니다.

날짜 형식

모든 날짜/시간 필드는 ISO 8601 형식(UTC)을 사용합니다.

text
2026-03-17T09:30:00Z

관련 문서