새로운 문서를 작성 중입니다.새 문서로 이동
ClawOps Docs
API Reference

메시지 발송

POST
/v1/accounts/{accountId}/messages

SMS/LMS/MMS 메시지를 발송합니다. From 번호는 계정에 등록된 번호여야 합니다.

KCT 통합메시징 Agent를 통해 실제 발송되며, 발송 결과는 webhook으로 비동기 수신합니다.

메시지 타입별 사용법

SMS (단문, EUC-KR 90byte 이하 = 한글 45자):

{ "To": "010...", "From": "070...", "Body": "안녕하세요" }

통신사 SMS 상한은 EUC-KR 90byte 입니다. 이를 넘겨 Type: "sms" 로 보내면 400 body_too_long 입니다. Type 을 생략하면 긴 본문은 LMS 로 자동 발송되므로, 길이가 런타임에 정해지는 경우(템플릿 치환 등)에는 생략하시는 편이 안전합니다.

LMS (장문, 2000자 이하, 첨부 없음):

{ "To": "010...", "From": "070...", "Body": "긴 내용...", "Type": "lms", "Subject": "제목" }

MMS (이미지 첨부, 최대 3개):

{ "To": "010...", "From": "070...", "Body": "사진", "Type": "mms", "MediaUrl": ["https://example.com/photo.jpg"] }

알림톡 (Kakao 를 실으면 알림톡입니다 — Type 은 생략하십시오):

{
  "To": "010...", "From": "070...",
  "Kakao": {
    "ChannelId": "KA01PF...", "TemplateId": "KA01TP...",
    "Variables": { "고객명": "홍길동", "#{금액}": "12,000" }
  },
  "Fallback": { "Body": "주문이 접수되었습니다." }
}

알림톡은 승인된 템플릿으로만 보낼 수 있고, 본문·버튼·아이템 리스트는 템플릿에 검수된 그대로 발송됩니다. 요청에서 바꿀 수 있는 것은 Variables 뿐입니다 — 본문의 #{변수} 는 물론 버튼 링크와 강조 문구에 들어간 변수도 같은 목록으로 채워집니다.

발송에 실패하면(수신자가 카카오톡을 쓰지 않는 등) Fallback 문구가 문자로 대신 나갑니다. 이때 문자는 별도의 메시지 1건으로 기록되고 문자 단가로 청구됩니다.

Authorization

BearerAuth
AuthorizationBearer <token>

API Key를 Bearer 토큰으로 전달

In: header

Path Parameters

accountId*string

계정 ID

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/accounts/AC1a2b3c4d/messages" \  -H "Content-Type: application/json" \  -d '{    "To": "01012345678",    "From": "07052358010"  }'
{
  "messageId": "MGabcdef1234567890",
  "status": "queued",
  "type": "sms",
  "subject": "string",
  "to": "01012345678",
  "from": "07052358010",
  "body": "안녕하세요",
  "numMedia": 0,
  "mediaUrl": [],
  "direction": "outbound",
  "accountId": "AC1a2b3c4d",
  "dateCreated": "2019-08-24T14:15:22Z",
  "dateUpdated": "2019-08-24T14:15:22Z"
}
{
  "error": "string",
  "code": "recipient_blocked"
}
{
  "error": "string",
  "code": "recipient_blocked"
}
{
  "error": "string",
  "code": "recipient_blocked"
}
{
  "error": "string",
  "code": "recipient_blocked"
}