API 문서

Payman을 앱에 연동하는 데 필요한 모든 것.

소개

Payman API는 JSON REST API입니다. 모든 요청은 HTTPS를 통해 https://payman33.com/v1로 전송됩니다.

인증

계정을 만들 때 받은 액세스 토큰을 Bearer 토큰으로 보내세요. 토큰은 한 번만 표시되며 다시 발급할 수 없으니, 비밀로 유지하고 클라이언트 코드에는 절대 넣지 마세요.

Authorization: Bearer pm_live_xxxxxxxxxxxxxxxx

메시지 발송

POST /messages

필드유형설명
tostring[]E.164 형식의 수신자. 요청당 최대 10,000개.
textstring메시지 본문: 문자 1건, 최대 160자(GSM-7), 그 밖의 글자나 이모지가 들어가면 70자예요. 더 긴 글은 거부돼요.
schedule_atstring선택 사항. 나중에 보낼 ISO-8601 시각 (최대 30일 이후까지).
callback_urlstring선택 사항. 전달 리포트를 받을 HTTPS URL.
{
  "id": "msg_01J9Z3K8V2",
  "status": "queued",
  "recipients": 1,
  "segments": 1,
  "cost": 0.0063
}

Idempotency-Key 헤더를 붙이면 안전하게 재시도할 수 있습니다: 24시간 안에 같은 키로 보내면 다시 발송하지 않고 처음 응답을 돌려줍니다.

메시지 상태

GET /messages/{id}

상태는 queued, 그다음 sent, 그다음 delivered 또는 failed 순서로 바뀝니다. 예약 메시지는 나가기 전까지 scheduled 상태이며, POST /messages/{id}/cancel로 취소하면 비용이 환불됩니다.

웹훅

전송 리포트가 도착하면 callback_url로 POST합니다. 각 요청에는 X-Payman-Signature 헤더가 붙습니다. 본문을 웹훅 시크릿(대시보드의 API 탭)으로 HMAC-SHA256 한 값이므로 이것으로 검증할 수 있습니다. 전달에 실패하면 최대 3번 다시 보냅니다.

{
  "id": "msg_01J9Z3K8V2",
  "to": "+14155550123",
  "status": "delivered",
  "delivered_at": "2026-10-09T08:12:03Z"
}

잔액

GET /balance

현재 잔액을 USDT로 반환합니다. 요금은 USD로 표시되며 1 USDT = 1 USD입니다.

오류

HTTP코드의미
400invalid_request필드가 없거나 형식이 잘못되었습니다.
401unauthorizedAPI 키가 없거나 유효하지 않습니다.
402insufficient_balance계속 발송하려면 잔액을 충전하세요.
403verification_required미인증 계정의 오늘 수신자 한도에 도달했습니다.
404not_found계정에 해당 메시지가 없습니다.
429rate_limited요청이 너무 많습니다. Retry-After 헤더에 표시된 시간 후 다시 시도하세요.

요청 한도

기본 한도는 계정당 초당 50건입니다. 대규모 캠페인에는 대량 발송(to에 여러 번호 지정)을 사용하세요. 미인증 계정은 하루 500명까지 보낼 수 있습니다.