Skip to content
On this page

Message API

SMS, LMS, MMS 발송, 발송 예약 기능, 템플릿 관리, 발송 내역 조회 기능을 제공하는 문자 메시지 발송 시스템입니다. 손쉬운 연동을 위한 RESTful API를 제공합니다.

특징

  • SMS, LMS, MMS 발송을 제공합니다.
  • 대량 발송을 지원합니다.
    • Excel 파일로 수신자 목록을 입력하고 대량으로 SMS를 발송할 수 있습니다.
  • 예약 발송
    • 원하는 시간에 문자를 발송할 수 있습니다.
  • 치환 태그 제공
    • 치환 태그를 이용하여 수신자별 개별화된 SMS 내용을 발송할 수 있습니다.
  • 템플릿 기능 제공
    • 자주 사용하는 SMS는 템플릿으로 등록하여 사용할 수 있습니다.

주요기능

고객의 애플리케이션에서 사용할 수 있는 문자 메시지 발송과 조회 RESTful API를 제공합니다. SMS 발송, 발송 내역 조회, 템플릿 관리를 할 수 있는 UI를 제공합니다.


[API 도메인]

Test

https://stg-api.metaflyer.co.kr
Production

https://api.metaflyer.co.kr

[Header]

NameTypeDescription
apiKeyString별도 요청

[Content-Type]
application/json;charset=UTF-8

[Common Response]

json
{
    "time": String,
    "result": String,
    "resultMessage": String,
    "locale": String
}
NameTypeRequiredDescription
timeStringtrueResponse Time 2022-11-07T07:52:35.949+00:00
resultStringtrueResponse Code
resultMessageStringtrueResponse Message
localeStringtrueAPI Locale

SMS

[URL]
POST /api/message/sendSMS.v1.0

[Request Body]

json
{
    "content": String,
    "sendDate": String,
    "sender": String,
    "receivers": [
        {
          "phoneNumber": String,
          "templateData": Map
        },
        {
          "phoneNumber": String,
          "templateData": Map
        }
    ]
}
NameTypeRequiredDescription
contentStringtrue메시지 내용
- size :90byte
sendDateStringfalse발송시간
- format : yyyy-MM-dd HH:mm
senderStringtrue발신자 번호
-format : 010-0000-0000
receiversArraytrue수신자 정보
- phoneNumberStringtrue수신자 번호
- format 010-0000-0000
- templateDataMapfalse메시지 내용에 포함된 변수 키, 값
"templateData": {
                      "이름": "김한나",
                       "카테고리명": "테스트고객센터"
                            }

[Response]

json
{
    "time": String,
    "result": String,
    "resultMessage": String,
    "locale": String,
    "item": {
              "requestId": String
            }
}
NameTypeRequiredDescription
itemObjecttrue
- requestIdStringtrue발신 요청 ID

LMS

[URL]
POST /api/message/sendLMS.v1.0

[Request Body]

json
{
    "subject": String,
    "content": String,
    "sendDate": String,
    "sender": String,
    "receivers": [
        {
          "phoneNumber": String,
          "templateData": Map
        },
        {
          "phoneNumber": String,
          "templateData": Map
        }
    ]
}
NameTypeRequiredDescription
subjectStringfalse메시지 제목
contentStringtrue메시지 내용
- size : 2000byte
sendDateStringfalse발송시간
-format : yyyy-MM-dd HH:mm
senderStringtrue발신자 번호
-format : 010-0000-0000
receiversArraytrue수신자 정보
- phoneNumberStringtrue수신자 번호
- format 010-0000-0000
- templateDataMapfalse메시지 내용에 포함된 변수 키, 값
"templateData": {
                      "이름": "김한나",
                       "카테고리명": "테스트고객센터"
                            }

[Response]

json
{
    "time": String,
    "result": String,
    "resultMessage": String,
    "locale": String,
    "item": {
        "requestId": String
    }
}
NameTypeRequiredDescription
itemObjecttrue
- requestIdStringtrue발신 요청 ID

MMS

[URL]
POST /api/message/sendMMS.v1.0

[Request Body]

json
{
    "subject": String,
    "content": String,
    "sendDate": String,
    "sender": String,
    "image": {
        "contentType": String,
        "fileName": String,
        "body": String
    },
    "receivers": [
      {
        "phoneNumber": String,
        "templateData": Map
      },
      {
        "phoneNumber": String,
        "templateData": Map
      }
    ]
}
NameTypeRequiredDescription
subjectStringfalse메시지 제목
contentStringtrue메시지 내용
- size : 2000byte
sendDateStringfalse발송시간
-format : yyyy-MM-dd HH:mm
senderStringtrue발신자 번호
-format : 010-0000-0000
imageObjectfalse이미지
- contentTypeStringtrueMIME Type
- JPG(image/jpeg),JPEG(image/jpeg,
SIS(image,vnd.wap.sis)
- fileNameStringtrueFile Name
- bodyStringtrueFile Body
- File byte[]를 Base64 인코딩
- size : 50kb 이하
ex)
Base64.getEncoder().encodeToString
(Files.readAllBytes(file.toPath()))
receiversArraytrue수신자 정보
- phoneNumberStringtrue수신자 번호
- format 010-0000-0000
- templateDataMapfalse메시지 내용에 포함된 변수 키, 값
"templateData": {
                      "이름": "김한나",
                       "카테고리명": "테스트고객센터"
                            }

[Response Body]

json
{
    "time": String,
    "result": String,
    "resultMessage": String,
    "locale": String,
    "item": {
        "requestId": String
    }
}
NameTypeRequiredDescription
itemObjecttrue
requestIdStringtrue발신 요청 ID

Alimtalk

[URL]
POST /api/message/sendAlimtalk.v1.0

[Request Body]

json
{
    "senderKey": String,
    "templateCode": String,
    "sendDate": String,
    "resend": Boolean,
    "resendPhoneNumber": String,
    "receivers": [
        {
          "phoneNumber": String,
          "templateData": Map
        }
    ]
}
NameTypeRequiredDescription
senderKeyStringtrue발신 키
templateCodeStringtrue알림톡 템플릿 코드
sendDateStringfalse발송시간
- format : yyyy-MM-dd HH:mm
resendBooleanfalse발송 실패 시, 문자 대체 발송 여부
resendPhoneNumberStringfalse대체발송 발신번호
- format 010-0000-0000
receiversArraytrue수신자 정보
- phoneNumberStringtrue수신자 번호
- format 010-0000-0000
- templateDataMapfalse메시지 내용에 포함된 변수 키, 값
"templateData": {
                      "이름": "김한나",
                       "카테고리명": "테스트고객센터"
                            }

[Response Body]

json
{
    "time": String,
    "result": String,
    "resultMessage": String,
    "locale": String,
    "item": {
        "requestId": String
    }
}
NameTypeRequiredDescription
itemObjecttrue
- requestIdStringtrue발신 요청 ID

Friend talk

[URL]
POST /api/message/sendFriendtalk.v1.0

[Request Body]

json
{
    "senderKey": String,
    "sendDate": String,
    "adFlag": Boolean,
    "messageType": String,
    "image": {
        "contentType": String,
        "fileName": String,
        "body": String
    },
    "imageLink": String,
    "resend": Boolean,
    "resendPhoneNumber": String,
    "buttons": [
        {
            "buttonType": String,
            "name": String,
            "mobileUrl": String,
            "pcUrl": String,
            "androidUrl": String,
            "iosUrl": String,
            "chatExtra": String,
            "chatEvent": String,
            "target": String,
            "orderNo": Integer
        }
    ],
    "receivers": [
        {
          "phoneNumber": String,
          "templateData": Map
        }
    ]
}
NameTypeRequiredDescription
senderKeyStringtrue발신 키
sendDateStringfalse발송시간
- format : yyyy-MM-dd HH:mm
adFlagBooleanfalse광고 여부
imageObjectfalse이미지
- contentTypeStringtrueMIME Type
- JPG(image/jpeg),JPEG(image/jpeg,
SIS(image,vnd.wap.sis)
- fileNameStringtrueFile Name
- bodyStringtrueFile Body
- File byte[]를 Base64 인코딩
- size : 50kb 이하
ex)
Base64.getEncoder().encodeToString
(Files.readAllBytes(file.toPath()))
imageLinkStringfalse이미지 링크
resendBooleanfalse발송 실패 시, 문자 대체 발송 여부
resendPhoneNumberStringfalse대체발송 발신번호
- format 010-0000-0000
buttonsArrayfalse버튼 리스트
- buttonTypeStringfalse버튼타입
- 웹링크(webLink)
- 앱링크(appLink)
- 채널추가(channelAddition)
- 봇 키워드(botKeyword)
- 메시지 전달(messageDelivery)
- 상담톡 전환(counselingTalkConversion)
- 봇 전환(botConversion)
- 배송조회페이지로 연결(deliveryTracking)
- nameStringfalse버튼 명
- mobileUrlStringfalse모바일 웹링크
- 필수 버튼 타입
-- 웹링크(webLink)
- pcUrlStringfalsepc 웹링크
- 필수 버튼 타입
-- 웹링크(webLink)
- androidUrlStringfalseAndroid 앱링크
- 필수 버튼 타입
-- 웹링크(webLink)
- iosUrlStringfalseIOS 앱링크
- 필수 버튼 타입
-- 웹링크(webLink)
- chatExtraStringfalse상담톡 전환, 봇 전환 버튼일 때 전달할 정보
- 필수 버튼 타입
-- 상담톡 전환(counselingTalkConversion)
-- 봇 전환(botConversion)
- chatEventStringfalse봇 전환 버튼 일 때, 연결할 이벤트 명
- 필수 버튼 타입
-- 봇 전환(botConversion)
- targetStringfalse웹링크 버튼인 경우, 아웃링크 기본 인앱 링크로 발송
"target":"out"
- 필수 버튼 타입
-- 웹링크(webLink)
- orderNoIntegerfalse버튼 순서
receiversArraytrue수신자 정보
- phoneNumberStringtrue수신자 번호
- format 010-0000-0000
- templateDataMapfalse메시지 내용에 포함된 변수 키, 값
"templateData": {
                      "이름": "김한나",
                       "카테고리명": "테스트고객센터"
                            }

[Response]

json
{
    "time": String,
    "result": String,
    "resultMessage": String,
    "locale": String,
    "item": {
        "requestId": String
    }
}
NameTypeRequiredDescription
itemObjecttrue
requestIdStringtrue발신 요청 ID

Message List

[URL]
POST /api/message/list.v1.0

[Request Parameter]

NameTypeRequiredDescription
pageIntegerfalse페이지 번호
- default : 1
pageSizeIntegerfalse페이지 조회 건수
- default : 10
requestIdStringfalse발신 요청 ID
messageIdStringfalse발신 메시지 ID
messageProductTypeStringfalse메시지 상품 유형
- SMS (sms)
- LMS (lms)
- MMS (mms)
- Email (email)
- Push (push)
- 알림톡 (alimTalk)
- 친구톡 Text (friendTalkText)
- 친구톡 Image (friendTalkImage)
- 친구톡 Wid Image (friendTalkWideImage)
sendingStatusStringfalse발송 상태
- 대기 (waiting)
- 발송중 (sending)
- 완료 (completed)
- 실패 (fail)
- 취소 (cancel)
receiversStringtrue수신자
- format : 010-0000-0000
channelIdStringfalse카카오톡 채널 ID
senderKeyStringfalse카카오톡 발신 프로필 키
templateCodeStringfalse카카오톡 알림톡 템플릿 코드
yyyyMMStringfalse방송 연월
requestDateStringfalse발송 요청일 검색기간
- format : yyyy-MM-dd HH:mm
scheduledDateStringfalse발송 예정일 검색기간
- format : yyyy-MM-dd HH:mm
completeDateStringfalse발송 완료일 검색기간
- format : yyyy-MM-dd HH:mm

[Response]

json
{
    "time": String,
    "result": String,
    "resultMessage": String,
    "locale": String,
    "totalCount": Integer,
    "resultCount": Integer,
    "pageSize": Integer,
    "pageCount": Integer,
    "currentPage": Integer,
    "items": [
        {
            "id": String,
            "label": String,
            "messageId": String,
            "requestId": String,
            "messageProductType": {
                "value": String,
                "label": String
            },
            "sendingStatus": {
                "value": String,
                "label": String
            },
            "receiver": String,
            "channelId": String,
            "senderKey": String,
            "templateCode": String,
            "yyyyMM": String,
            "requestDate": String,
            "scheduledDate": String,
            "completedDate": String,
            "subject": String,
            "content": String
        }
    ]
}
NameTypeRequiredDescription
totalCountIntegertrue총 건수
resultCountIntegertrue현재 조회중 건수
pageSizeIntegertrue페이지 조회 건수
pageCountIntegertrue총 페이지 수
currentPageIntegertrue현재 페이지 번호
itemsObjectfalse메시지 정보
- idStringfalseID
- messageIdStringtrue발신 메시지 ID
- requestIdStringtrue발신 요청 ID
- messageProductTypeObjecttrue메시지 상품 유형
- SMS (sms)
- LMS (lms)
- MMS (mms)
- Email (email)
- Push (push)
- 알림톡 (alimTalk)
- 친구톡 Text (friendTalkText)
- 친구톡 Image (friendTalkImage)
- 친구톡 Wid Image (friendTalkWideImage)
-- valueStringtrue메시지 상품 유형 코드
-- labelStringtrue메시지 상품 유형 명
- sendingStatusObjecttrue발송 상태
- 대기 (waiting)
- 발송중 (sending)
- 완료 (completed)
- 실패 (fail)
- 취소 (cancel)
-- valueStringtrue발송 상태 코드
-- labelStringtrue발송 상태 명
- receiversStringtrue수신자
- format : 010-0000-0000
- channelIdStringfalse카카오톡 채널 ID
- senderKeyStringfalse카카오톡 발신 프로필 키
- templateCodeStringfalse카카오톡 알림톡 템플릿 코드
- yyyyMMStringtrue방송 연월
- requestDateStringtrue발송 요청일
- scheduledDateStringture발송 예정일
- completeDateStringfalse발송 완료일
- subjectStringfalse제목
- contentStringtrue메시지 본문