PUSH API · v1a

첫 테스트 발송

1. 준비 확인

  • 앱 환경의 푸시 서비스 연결이 준비되어 있고 발송이 정지되지 않았는지 확인합니다.
  • SDK의 서버 동기화를 확인하고, 해당 환경에 등록된 본인 테스트 installation_id를 가져옵니다. 기기 토큰 자체를 복사하지 마세요.
  • API 접근이 허용된 신뢰할 수 있는 개발 서버나 터미널에서만 서버 키를 사용합니다. messages:send와 조회용 messages:read가 필요합니다.

2. 예제 값 바꾸기

값준비할 내용
KITS_API_ORIGIN운영자가 제공한 API origin. https://api.example.com은 실제 서비스가 아닌 예시입니다.
KITS_SERVER_KEY테스트 환경의 서버 키. 비밀 저장소에서 안전하게 주입하고 터미널 기록·화면을 공유하지 마세요.
KITS_IDEMPOTENCY_KEY이번 논리적 발송에 고유한 1–255자 ASCII 키. 같은 발송 재시도에는 같은 값을 유지합니다.
inst_REPLACE_WITH_TEST_INSTALLATION본문에서 본인의 실제 테스트 앱 설치 ID로 바꿉니다. 예제 문자열은 유효한 식별자가 아닙니다.

3. 알림 하나 접수하기

curl --include --request POST "${KITS_API_ORIGIN}/v1/messages" \
  --header "Authorization: Bearer ${KITS_SERVER_KEY}" \
  --header "Kits-Idempotency-Key: ${KITS_IDEMPOTENCY_KEY}" \
  --header "Content-Type: application/json" \
  --data-binary '{
  "target": {
    "installation_id": "inst_REPLACE_WITH_TEST_INSTALLATION"
  },
  "send_purpose": "TEST",
  "classification": "SERVICE",
  "display_path": "OS_DISPLAY",
  "priority": "HIGH",
  "title": "Kits test message",
  "body": "Hello from your test environment"
}'

예제는 SERVICE 분류와 v1a의 OS_DISPLAY를 사용합니다. 마케팅 알림을 SERVICE로 우회하지 마세요. 대상은 installation_id 하나이며 다른 target 필드를 함께 넣지 않습니다.

4. 접수 응답 읽기

최초 접수 성공은 HTTP 202입니다. 아래는 실제 고객 정보가 없는 설명용 응답입니다.

{
  "id": "msg_EXAMPLE_ONLY",
  "origin": "TRANSACTIONAL_API",
  "accepted_at": "2026-01-01T00:00:00.000Z",
  "idempotency": {
    "replayed": false
  },
  "targeted_subscriptions": 1,
  "ignored_fields": [],
  "deliveries_url": "/v1/messages/msg_EXAMPLE_ONLY/deliveries"
}
  • id와 deliveries_url을 보관해 결과를 조회합니다. accepted_at은 서버 접수 시각입니다.
  • targeted_subscriptions는 대상으로 잡힌 구독 수이며 기기 수신 수가 아닙니다. 0이면 대상·권한·수신 설정을 확인하세요.
  • idempotency.replayed가 true이면 같은 요청의 기존 결과입니다. 새 발송을 의미하지 않습니다.
  • ignored_fields는 알고 있지만 해당 플랫폼에서 사용되지 않은 필드입니다. 무시된 내용을 확인하세요.

5. 결과와 기기에서 확인하기

KITS_MESSAGE_ID를 응답의 id로 설정한 뒤 조회합니다. 다음 페이지가 있으면 응답의 next_cursor를 그대로 사용하세요.

curl --include \
  --header "Authorization: Bearer ${KITS_SERVER_KEY}" \
  "${KITS_API_ORIGIN}/v1/messages/${KITS_MESSAGE_ID}/deliveries?limit=50"