요약 / 빠른 답변
Sent.dm API는 SMS와 WhatsApp을 아우르는 비즈니스 메시징을 위한 단일 통합 지점을 제공합니다. Sent를 Apidog와 함께 사용하면, 자격 증명을 환경에 저장하고, 일회성 스크립트 작성 없이 요청을 테스트하고, 웹훅 페이로드를 검증하며, 메시징 워크플로를 한 곳에 문서화할 수 있습니다.
소개
대부분의 메시징 프로젝트는 한 곳에서 속도가 느려집니다. API 자체는 어렵지 않지만, 운영 세부 사항이 빠르게 쌓이기 때문입니다. API 키, 발신자 ID, 템플릿 ID, 웹훅 보안, 채널 규칙, 그리고 실제 메시지를 맹목적으로 보내지 않고 모든 것을 테스트할 수 있는 깔끔한 방법이 필요합니다.
이것이 바로 Sent.dm이 흥미로운 이유입니다. Sent는 SMS 및 WhatsApp과 같은 앱 기반 채널을 위한 통합 메시징 API로, 단일 개발자 대면 인터페이스 뒤에서 라우팅 및 전송 로직을 처리합니다. 2026년 3월 26일에 검토된 Sent의 공개 문서를 기반으로, 이 플랫폼은 계정 확인, 채널 설정, 템플릿 기반 발송, 연락처, 웹훅 이벤트, 그리고 테스트를 위한 대시보드 플레이그라운드를 포함합니다.
💡 Apidog는 Sent API 연동에 최적화된 도구입니다. Sent API 레퍼런스를 가져오고,
x-api-key및x-sender-id환경을 관리하며, 메시지 생성/웹훅 테스트 시나리오를 구축하고, 완성된 컬렉션을 팀과 쉽게 공유할 수 있습니다.
Sent.dm API가 해결하는 문제
Sent.dm은 제공업체별로 각기 다른 통합을 유지할 필요 없이 여러 메시징 채널을 통해 사용자에게 도달하고자 하는 팀을 위해 만들어졌습니다. SMS API, WhatsApp 온보딩, 채널별 페이로드 형식, 그리고 자체적인 전송 모니터링을 직접 연결하는 대신, Sent는 이를 하나의 플랫폼으로 추상화합니다.
공식 문서 기준 주요 기능:
- 메시징 워크플로를 위한 단일 API 기본 URL
-
x-api-key기반 헤더 인증 -
x-sender-id를 통한 발신자 ID 지정 - 템플릿 기반 아웃바운드 메시징
- 연락처 및 대상 관리
- 전송/템플릿 이벤트용 웹훅
- 플랫폼 레이어에서의 라우팅 및 장애 조치
실제 메시징 시스템에서는 다음이 추가로 필요합니다:
- 일관된 페이로드 구조
- 템플릿의 안전한 재사용
- 전송/실패/대기 이벤트 추적
- 프런트엔드 코드에서 비밀 보호
- 개발/QA 팀이 실제로 활용할 수 있는 문서
실제 사용 플로우:
Application -> Message API -> Channel Rules -> Delivery Events -> Retry / Status Logic
각 기능이 따로 흩어져 있으면 디버깅이 느려집니다. Apidog 등 API 플랫폼에서 전체 흐름을 처음부터 모델링하면, 개발/QA 협업이 훨씬 빨라집니다.
Sent.dm API 작동 방식
Sent는 앱과 다운스트림 메시징 채널 사이의 지능형 미들웨어 역할을 합니다. 앱이 하나의 요청을 보내면, Sent가 라우팅/수신자 컨텍스트/채널 가용성에 따라 최적 경로를 선택합니다.
1. 계정 및 규정 준수 설정
- 계정 생성
- KYC(본인 확인) 검증
- 비즈니스 정보 등록
- 이 절차는 필수입니다.
2. 채널 설정
- 전화번호 선택
- WhatsApp Business 연결
- SMS/WhatsApp에 동일한 번호 사용 추천
3. 템플릿
- 템플릿 생성이 필수
- 템플릿 기반 메시징이 워크플로의 기본
4. API 자격 증명
필수 헤더 예시:
x-sender-id: YOUR_SENDER_ID
x-api-key: YOUR_API_KEY
Sent 대시보드에서 엔드포인트 버전에 맞는 헤더를 반드시 확인하세요.
5. 메시지 요청
예시 엔드포인트:
POST https://api.sent.dm/v2/messages/phone
페이로드:
{
"phoneNumber": "RECIPIENT_PHONE_NUMBER",
"templateId": "TEMPLATE_ID"
}
TIP: 템플릿 기반 발송부터 정확하게 구현한 후, 워크플로를 확장하세요.
첫 Sent.dm API 요청 보내기
cURL 예시
curl -X POST "https://api.sent.dm/v2/messages/phone" \
-H "x-sender-id: YOUR_SENDER_ID" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phoneNumber": "RECIPIENT_PHONE_NUMBER",
"templateId": "TEMPLATE_ID"
}'
JavaScript 예시
const response = await fetch("https://api.sent.dm/v2/messages/phone", {
method: "POST",
headers: {
"x-sender-id": process.env.SENT_SENDER_ID,
"x-api-key": process.env.SENT_API_KEY,
"Content-Type": "application/json"
},
body: JSON.stringify({
phoneNumber: process.env.TEST_PHONE_NUMBER,
templateId: process.env.SENT_TEMPLATE_ID
})
});
if (!response.ok) {
throw new Error(`Sent request failed: ${response.status}`);
}
const data = await response.json();
console.log(data);
Python 예시
import os
import requests
response = requests.post(
"https://api.sent.dm/v2/messages/phone",
headers={
"x-sender-id": os.environ["SENT_SENDER_ID"],
"x-api-key": os.environ["SENT_API_KEY"],
"Content-Type": "application/json",
},
json={
"phoneNumber": os.environ["TEST_PHONE_NUMBER"],
"templateId": os.environ["SENT_TEMPLATE_ID"],
},
timeout=30,
)
response.raise_for_status()
print(response.json())
응답: HTTP 200과 messageId 반환.
이 messageId는 Apidog 테스트, 애플리케이션 로그, 웹훅 조정 등에서 반드시 추적해야 합니다.
Apidog에서 Sent.dm API 테스트하기
Apidog는 요청 실행기 그 이상입니다. 변수, 테스트 어설션, 문서, 팀 핸드오프까지 한 곳에서 관리할 수 있습니다.
1단계: Sent 환경 생성
Apidog 환경에 다음 변수 등록:
base_url = https://api.sent.dm
sender_id = YOUR_SENDER_ID
api_key = YOUR_API_KEY
template_id = YOUR_TEMPLATE_ID
test_phone = RECIPIENT_PHONE_NUMBER
이점:
- 프로덕션 비밀 하드코딩 방지
- 환경 간 전환 용이
- 팀별 보안 값 사용 가능
2단계: 요청 빌드
Apidog에서 새 요청 생성:
- 메서드:
POST - URL:
{{base_url}}/v2/messages/phone - 헤더:
x-sender-id: {{sender_id}}x-api-key: {{api_key}}Content-Type: application/json
- 본문:
{
"phoneNumber": "{{test_phone}}",
"templateId": "{{template_id}}"
}
3단계: 어설션 추가
성공 경로 검증 테스트:
pm.test("Status is 200", function () {
pm.response.to.have.status(200);
});
pm.test("Response contains a messageId", function () {
const json = pm.response.json();
pm.expect(json.messageId).to.exist;
});
4단계: 시나리오 구축
다단계 워크플로 예시:
- 메시지 전송
- 반환된
messageId저장 - 다운스트림 상태 쿼리
- 웹훅 이벤트 비교
이렇게 해야 엔드투엔드 메시징 플로우를 올바르게 검증할 수 있습니다.
5단계: 웹훅 예제 추가
웹훅 이벤트 예제 저장:
{
"field": "message.status",
"messageId": "msg_123",
"status": "delivered",
"channel": "whatsapp"
}
실제 페이로드와 비교/문서화해 팀 간 협업을 강화하세요.
6단계: 내부 문서 게시
Apidog의 문서화 레이어를 통해 다음 정보를 한 번에 정리:
- 필수 헤더
- 예제 페이로드
- 오류 응답
- 웹훅 이벤트 예제
- 환경 참고 사항
템플릿, 연락처, 웹훅을 올바르게 처리하기
템플릿
- 템플릿 ID를 환경 변수/구성에 보관
- 목적/로케일/승인 상태별로 레이블 지정
- 테스트/실제 캠페인 템플릿 분리
- 사용자 여정별 템플릿 매핑 문서화
Apidog에서 각 템플릿 예제 요청을 컬렉션으로 관리하세요.
연락처
- 신뢰할 수 있는 데이터 소스 명확화
- 전화번호 정규화
- 수신 동의/거부 상태 저장
- 채널 변경 시 처리 로직 문서화
이 부분을 처음부터 명확히 해야 규정 준수 문제를 예방할 수 있습니다.
웹훅
Sent는 HMAC-SHA256 검증을 위한 헤더(x-webhook-signature, x-webhook-id, x-webhook-timestamp)와 5분 타임스탬프 유효성 검사를 요구합니다.
Express 예제:
import crypto from "crypto";
import express from "express";
const app = express();
app.post("/webhooks/sent", express.raw({ type: "*/*" }), (req, res) => {
const signature = req.header("x-webhook-signature");
const webhookId = req.header("x-webhook-id");
const timestamp = req.header("x-webhook-timestamp");
const secret = process.env.SENT_WEBHOOK_SECRET;
const rawBody = req.body.toString("utf8");
const signedContent = `${webhookId}.${timestamp}.${rawBody}`;
const expected = crypto
.createHmac("sha256", Buffer.from(secret.replace(/^whsec_/, ""), "base64"))
.update(signedContent)
.digest("base64");
if (signature !== `v1,${expected}`) {
return res.status(401).send("Unauthorized");
}
const event = JSON.parse(rawBody);
console.log("Received webhook event:", event.field);
return res.sendStatus(200);
});
Apidog에 웹훅 샘플을 저장/문서화하여 팀 전체가 쉽게 검증할 수 있습니다.
Apidog가 이 워크플로에 적합한 이유
Sent.dm은 메시징 레이어를, Apidog는 워크플로/테스트/문서화 레이어를 제공합니다.
| 작업 | Sent.dm | Apidog |
|---|---|---|
| SMS/WhatsApp 메시지 전송 | 예 | 아니요, 하지만 해당 API를 테스트 |
| 템플릿/발신자 관리 | 예 | 관련 요청을 문서화, 검증 |
| 인증된 요청 테스트 | 기본 지원 | 강력한 요청 빌더, 환경, 어설션, 시나리오 |
| 팀과 API 문서 공유 | 플랫폼 문서 | 팀 대상 컬렉션 및 생성된 문서 |
| 요청/응답 흐름 디버깅 | 부분적 지원 | 반복 가능한 검사 및 협업에 더 적합 |
| 엔드투엔드 시나리오 구축 | 메시징 중심 | 다단계 API 워크플로 테스트에 더 적합 |
특히 여러 개발자/QA가 협업하거나, 맞춤 스크립트 없이 API를 반복적으로 검증하고 싶을 때 Apidog가 큰 도움이 됩니다.
고급 팁 및 일반적인 실수
모범 사례
- 자격 증명은 반드시 서버 측에만 저장
-
messageId를 애플리케이션 로그/지원 도구에서 추적 - 스테이징/프로덕션 템플릿 분리
- 웹훅 처리 전 반드시 검증
- Apidog 환경을 활용해 실제/테스트 자격 증명 격리
피해야 할 실수
-
200응답을 최종 결과로 오해 - 여러 서비스에 템플릿 ID 하드코딩
- 발신자 ID 설정을 무시한 채 롤아웃
- 전화번호 정규화 누락
- 임시 스크립트에서 실제 자격 증명으로 테스트
문제 해결 팁
-
x-api-key가 유효/활성화 상태인지 확인 - 엔드포인트 버전 일치 여부 확인
- 요청 경로에
x-sender-id필요 여부 확인 - 템플릿 승인/사용 가능 상태 확인
- 전화번호 포맷이 올바른지 점검
Apidog의 저장된 요청 비교 기능을 활용하면, 문제 원인을 신속히 파악할 수 있습니다.
Sent.dm 대안 및 비교
| 옵션 | 장점 | 단점 |
|---|---|---|
| 직접 SMS+WhatsApp 제공업체 | 세분화된 제어 | 통합/유지보수 부담 |
| Twilio 스타일 통신 스택 | 광범위한 생태계 | 다중 채널 오케스트레이션 구성 부담 |
| Sent.dm | 채널 추상화/통합 메시징 워크플로 | Sent 규칙 및 문서 구조에 의존 |
| Sent.dm + Postman | 익숙한 요청 테스트 | 문서화/워크플로 협업이 더 파편화됨 |
| Sent.dm + Apidog | 통합 메시징+강력한 API 테스트/협업 | 두 가지 도구 사용 필요 |
Apidog의 강점은 환경, 문서, 어설션, 목업, 협업 인수인계가 하나의 작업 공간에 있다는 점입니다.
결론
Sent.dm은 SMS/WhatsApp을 위한 통합 메시징 API입니다. 템플릿, 발신자 ID, 연락처, 웹훅 중심의 체계적 테스트와 구축이 가능합니다.
더 빠른 프로토타입-프로덕션 전환을 원한다면, Apidog에서 Sent 요청을 만들고, messageId 어설션을 추가하고, 웹훅 계약을 한 곳에 문서화하세요.
흩어진 스크립트와 구전 지식에 의존하는 것보다 훨씬 효율적입니다.
자주 묻는 질문
Sent.dm API는 무엇에 사용됩니까?
Sent.dm API는 단일 통합을 통해 SMS 및 WhatsApp과 같은 채널 전반의 비즈니스 메시징에 사용됩니다. 공식 문서 기준, 발신자 설정, 템플릿, 연락처, 웹훅 기반 이벤트 처리를 지원합니다.
Sent.dm은 하나의 API에서 WhatsApp과 SMS를 모두 지원합니까?
예. Sent는 채널별 복잡성을 단일 개발자 통합 뒤로 추상화하는 통합 메시징 API로 플랫폼을 포지셔닝합니다. 온보딩 문서 또한 SMS와 WhatsApp에 동일한 전화번호를 사용할 것을 권장합니다.
Sent.dm API 요청에 어떤 헤더가 필요합니까?
공개 문서는 x-api-key를 핵심 인증 헤더로 보여주며, 시작 메시지 예제 또한 x-sender-id를 사용합니다. 문서에 v3 및 v2 참조가 모두 나와 있으므로 프로덕션 배포 전에 Sent 계정에서 정확한 엔드포인트 버전을 확인하십시오.
Sent.dm으로 메시지를 보내기 전에 템플릿이 필요합니까?
시작 흐름의 경우, 그렇습니다. Sent의 온보딩 가이드는 템플릿을 생성한 다음 templateId를 사용하여 첫 메시지를 보내는 과정을 안내합니다.
맞춤형 스크립트 작성 없이 Sent.dm API를 테스트하려면 어떻게 해야 합니까?
Apidog는 이에 적합합니다. Sent 자격 증명을 환경 변수로 저장하고, 메시지 요청을 저장하며, 어설션을 추가하고, 다단계 시나리오를 구축하고, 웹훅 페이로드를 문서화하며, 나머지 팀을 위해 내부 API 문서를 게시할 수 있습니다.
Sent.dm 웹훅을 어떻게 보호해야 합니까?
HMAC 서명을 확인하고, 타임스탬프를 검증하며, 멱등성(idempotently)으로 이벤트를 처리하십시오. Sent 문서에는 확인을 위한 x-webhook-signature, x-webhook-id, x-webhook-timestamp와 같은 헤더가 설명되어 있습니다.
Sent.dm만으로 팀 API 워크플로에 충분합니까?
메시징 플랫폼 자체는 다루지만, 대부분의 팀은 여전히 테스트, 문서화, 반복적인 검증을 위한 협업 API 도구가 필요합니다. Apidog가 가치를 더하는 부분이 바로 여기입니다.


Top comments (0)