핵심 개념

빠른 시작에서 등장한 용어들을 더 자세히 설명합니다.

1. API

데이터를 주고받는 통신 규격입니다. 프로그램 간 연결 통로라고 생각하세요.

3Min API에서는:

  • 백엔드 코드 없이 API를 생성할 수 있습니다
  • 표준 JSON 형식의 데이터를 수신합니다
  • 수신된 데이터는 자동으로 저장되고, 웹훅으로 전달할 수 있습니다

2. 엔드포인트

데이터를 받는 API 주소입니다. 하나의 API = 하나의 엔드포인트.

각 엔드포인트는 다음을 포함합니다:

  • 고유한 URL 경로 (자동 생성)
  • 필수 필드 설정 (선택)
  • 샌드박스/프로덕션 환경 분리
  • 환경별 API 키 (tm_test_xxx..., tm_live_xxx...)

3. JSON

3Min API는 표준 JSON 형식의 데이터를 수신합니다.

지원하는 필드 타입:

string문자열Example
string문자열"hello"
number숫자123, 45.67
boolean참/거짓true, false
array배열[1, 2, 3]
object객체{"key": "value"}

예시 (주문 정보):

{
  "order_id": "ORD-2024-001",
  "amount": 45000,
  "items": ["Item A", "Item B"],
  "paid": true,
  "customer": {
    "name": "John Doe",
    "phone": "010-1234-5678"
  }
}

4. 필수 필드 (선택 설정)

필수 필드를 정의하지 않아도 표준 JSON은 모두 수용됩니다.

JSON 데이터에서 반드시 포함되어야 할 필드를 지정할 수 있습니다.

필수 필드를 정의하면:

  • 해당 필드가 없는 요청은 거부됩니다 (400 에러)
  • 데이터 품질을 보장할 수 있습니다

5. 샌드박스 vs 프로덕션

환경API 키용도
샌드박스tm_test_xxx...개발 및 테스트
프로덕션tm_live_xxx...실서비스 운영
  • API 키 접두사로 환경이 자동 결정됩니다
  • 환경별로 웹훅을 따로 설정할 수 있습니다
  • 샌드박스에서 충분히 테스트 후 프로덕션에 배포하세요

6. API 키

엔드포인트 호출 시 인증에 사용하는 키입니다. 소유자의 기본 API 키는 엔드포인트 생성 시 자동 발급되며 삭제할 수 없습니다. 키가 노출된 경우 재생성할 수 있습니다.

API 키환경용도
tm_test_xxx...샌드박스테스트용, 실서비스에 영향 없음
tm_live_xxx...프로덕션실서비스용, 실제 데이터 처리

API 키가 노출되면 즉시 재생성하세요.

협업 키

협업 키를 만들고 협업자를 초대하면, 협업 키별로 로그와 통계를 분리하여 관리할 수 있습니다.

협업 키별로 로그를 필터링하여 사용량을 추적할 수 있습니다.

협업 키별로 허용할 작업(POST/GET/PUT/DELETE)을 환경별로 독립 설정할 수 있습니다. 읽기(GET) 권한은 단건·목록·검색 조회 모두에 적용됩니다.

7. 웹훅

데이터 도착 시 지정한 URL로 자동 알림을 보내는 기능입니다.

두 종류의 웹훅:

웹훅설정 위치설명
내 웹훅대시보드 → API → 엔드포인트 상세모든 API 호출 알림을 수신
협업자 웹훅API 호출 시 요청 헤더에 포함협업자가 직접 처리 결과 수신

재시도 정책: 15초 안에 2xx 반환. 실패 시 큐에서 시간 단위로 재시도

참고: 웹훅 재시도가 모두 실패해도 데이터는 안전하게 저장됩니다. 로그에서 웹훅 상태를 확인할 수 있습니다.


8. 폴링

데이터를 받는 또 하나의 방법입니다. 저희가 여러분의 URL로 보내는 대신, 여러분의 클라이언트가 폴링 엔드포인트를 주기적으로 호출해 지난 호출 이후 들어온 것만 받아 갑니다.

웹훅과 폴링 비교:

항목웹훅 (푸시)폴링 (풀)
누가 호출하나3Min API가 여러분을 호출합니다여러분의 클라이언트가 저희를 호출합니다
필요한 것15초 안에 응답하는 공개 URL들어오는 연결은 필요 없고, 나가는 HTTPS만 있으면 됩니다
지연레코드가 저장된 뒤 수 초폴링 주기에 약 60초의 안정화 지연이 더해집니다
비용무료 — 배달은 API 호출로 집계되지 않습니다폴링 요청 1건당 API 호출 1건. 빈 응답도 포함됩니다

받는 쪽에 공개 URL이 있고 데이터가 들어오는 즉시 반응해야 한다면 웹훅을 쓰세요. 기본 선택입니다.

공개 URL이 없다면 — 로컬 개발, 사내망, 방화벽 안쪽, 상시 실행 서버가 없는 경우 — 또는 받는 쪽이 속도를 스스로 조절해야 한다면 폴링을 쓰세요.

둘은 배타적이지 않습니다. 같은 엔드포인트에 둘 다 켜 둘 수 있어요. 실시간 반응은 웹훅으로, 놓친 것은 야간 폴링으로 메우는 식입니다.

요청 예시:

# First call - since a point in time
GET /api/v1/data/my-endpoint/poll?since=2026-09-01
Authorization: Bearer tm_test_xxx

# Response - oldest first
{
  "success": true,
  "data": [ ... ],
  "pagination": {
    "limit": 100,
    "poll_cursor": "eyJ0IjoiMjAyNi0wOS0wMVQwMDowMDowMFoifQ"
  }
}

# Next call - send the cursor back
GET /api/v1/data/my-endpoint/poll?cursor=eyJ0IjoiMjAyNi0wOS0wMVQwMDowMDowMFoifQ

커서가 동작하는 방식:

  • 첫 호출에는 since(RFC 3339 또는 YYYY-MM-DD, 항상 UTC로 해석)를 주거나 아무것도 주지 않습니다. 아무것도 주지 않으면 그 시점부터 구독합니다. since와 cursor는 함께 보낼 수 없습니다.
  • next_cursor는 아직 남은 백로그가 있다는 뜻입니다 — 곧바로 다시 호출하세요
  • poll_cursor는 따라잡았다는 뜻입니다 — 저장해 두고 다음 주기까지 기다리세요
  • 레코드는 오래된 것부터 오며 한 번에 최대 100건입니다(limit, 1-100). 응답에는 두 커서 중 정확히 하나만 담깁니다

최근 60초 남짓은 큐가 따라잡는 동안 보류됩니다. 건너뛰는 게 아니라 다음 폴링으로 미뤄지는 것입니다. 재시도나 재기동으로 같은 레코드가 다시 올 수 있으니 레코드 id 기준으로 멱등하게 처리하세요.


9. 데이터 보관

레코드는 한정된 기간만 보관됩니다. 데이터가 3Min API 밖으로 나가는 경로는 대시보드가 아니라 웹훅 또는 폴링 엔드포인트라고 생각해 주세요.

환경별 정책:

환경정책비고
프로덕션 (유료 플랜)최소 60일 보관보관 기간이 지나면 월 단위로 한꺼번에 삭제됩니다
샌드박스 (유료 플랜)30일 이후 자동 삭제테스트용이며 저장소가 아닙니다
Free 플랜엔드포인트 생성 7일 후 전체 삭제엔드포인트 단위 삭제

데이터를 내보내는 방법:

  • 웹훅: 레코드가 들어오는 즉시 지정한 URL로 전달됩니다
  • 폴링: 지난 호출 이후 들어온 것을 직접 가져옵니다 — 위 8번 항목 참조
  • 로그: 보관 기간 안에는 대시보드에서 개별 레코드를 조회·검색할 수 있습니다
  • 사용량 통계는 별도로 보관되어 레코드가 삭제돼도 남습니다. 대시보드 그래프는 그대로예요