본문 바로가기

문자 발송 API 연동 방법

센드엠 API는 REST 방식입니다. HTTPS로 JSON을 보내고 JSON을 받습니다. 별도 SDK 설치 없이 HTTP 요청이 가능한 언어라면 무엇이든 연동할 수 있습니다.

센드엠 API는 어떻게 연동하나요?

센드엠 API 서버는 https://api.sendm.co.kr 입니다. 모든 요청에 user-id(센드엠 아이디)와 api-key(API 신청 후 발급받은 키) 두 개의 헤더를 넣어 호출합니다.

문자 발송은 POST /v1/sms/send 에 JSON을 보내면 되고, 응답의 code"0" 이면 접수 성공입니다. 함께 돌아오는 data.msgId 로 나중에 발송 결과를 조회합니다.

반드시 백엔드(서버)에서 호출하세요. 브라우저 자바스크립트에서 직접 호출하면 HTML·JS 소스에 아이디와 인증키가 그대로 노출되고, 요청 IP도 사용자마다 달라져 발송 IP 관리가 불가능합니다.
올바른 구조는 클라이언트 → 우리 서버(Java·Node.js·PHP 등) → 센드엠 API 입니다.

연동 전에 준비할 것

  1. 회원가입과 API 신청

    API 신청 화면에서 신청하고 승인을 받습니다. 승인 후 인증키(api-key)가 발급됩니다.

  2. 발신번호 등록

    보내는 사람으로 쓸 번호를 미리 등록·승인받아야 합니다. 등록되지 않은 번호를 callerNo 로 보내면 발송되지 않습니다. 절차는 발신번호 등록 방법을 참고하세요.

  3. 발송 IP 등록

    API를 호출할 서버의 공인 IP를 등록합니다. 등록되지 않은 IP에서의 호출은 차단됩니다.

  4. 코인 충전

    API 발송도 웹 발송과 동일하게 선불 코인에서 차감됩니다. 단가는 요금안내와 같습니다.

공통 요청 규격

모든 API가 같은 인증 헤더를 씁니다.

센드엠 API 공통 헤더
헤더필수설명
user-id필수sendm.co.kr 회원가입 아이디
api-key필수API 서비스 신청 후 발급받은 인증키

응답 형식 (모든 API 공통)

{
  "code": "0",            // "0" 이면 성공, 그 외는 실패
  "message": "success",   // 실패 시 사유 메시지
  "data": { "msgId": 1 }  // 발송 API 는 메시지 ID 를 돌려준다
}

code문자열 "0" 입니다. 숫자 0과 비교하는 언어에서는 타입에 주의하세요. msgId 는 발송 결과를 조회할 때 쓰므로 저장해 두는 것을 권장합니다.

제공 엔드포인트

기준 주소는 https://api.sendm.co.kr 입니다.

센드엠 REST API 엔드포인트 목록
기능메서드경로Content-Type
문자 발송 (SMS·LMS)POST/v1/sms/sendapplication/json
포토문자 발송 (MMS)POST/v1/mms/sendmultipart/form-data
알림톡 발송POST/v2/kakao/sendAtmultipart/form-data
발신번호 목록 조회GET/v1/caller/callerNoListapplication/json
잔여 코인·발송 가능 건수GET/v2/info/coinInfoapplication/json
문자 발송 목록GET/v1/sms/sendListapplication/json
문자 발송 상세(수신자별 결과)GET/v1/sms/sendList/{msgId}application/json
예약 문자 취소GET/v1/sms/cancel/{msgId}application/json
카카오 발송 목록GET/v1/kakao/sendListapplication/json
카카오 발송 상세GET/v1/kakao/sendList/{msgId}application/json
예약 카카오 취소GET/v2/kakao/cancel/{msgId}application/json

문자 계열은 /v1, 알림톡 발송·취소와 잔여건수 조회는 /v2 입니다. 경로의 버전을 임의로 바꾸면 동작하지 않습니다.

문자 발송 (SMS·LMS)

POST /v1/sms/send 요청 파라미터
파라미터필수기본값설명
callerNo필수-발신번호. 사이트에 등록·승인된 번호여야 합니다
message필수-문자 내용
receiveNos필수-수신번호. 여러 건은 # 로 구분
예) 010-0000-0001#010-0000-0002
smsType선택SMSSMS 단문 / LMS 장문
title선택-제목. 장문(LMS)에서만 사용
adYn선택NN 일반 / Y 광고 / E 선거
reserveYn선택NN 즉시발송 / Y 예약발송
sendDate선택현재시간발송 시각. YYYYMMDDHHMM(24시간제)
예) 202303182045
messageCd선택-문자 템플릿 코드. 지정하면 본문이 템플릿 내용으로 대체됩니다
kind선택-국제문자일 때만. I 국제문자 / L 국제문자 MMS
country선택-국제문자일 때만. 국가코드(81, 86 등)

단문(SMS) 요청 예시

POST https://api.sendm.co.kr/v1/sms/send
Content-Type: application/json
user-id: YOUR_SENDM_ID
api-key: YOUR_API_KEY

{
  "callerNo": "02-6959-8827",
  "message": "주문이 접수되었습니다.",
  "receiveNos": "010-0000-0001#010-0000-0002"
}

장문(LMS) 요청 예시 — 제목과 예약 시각 포함

{
  "callerNo": "02-6959-8827",
  "smsType": "LMS",
  "title": "배송 안내",
  "message": "주문하신 상품이 오늘 출고되었습니다. ...",
  "receiveNos": "010-0000-0001",
  "reserveYn": "Y",
  "sendDate": "202303182045"
}
광고문자는 adYnY 로 보내세요. 광고로 지정하면 (광고) 표기와 무료 수신거부번호가 규정에 맞게 처리됩니다. 지켜야 할 기준은 광고문자 발송 방법에 정리되어 있습니다. 야간(21시~08시) 발송 제한도 API 발송에 동일하게 적용됩니다.

포토문자 발송 (MMS)

파일을 첨부해야 하므로 JSON이 아니라 multipart/form-data 로 보냅니다.

POST /v1/mms/send — 문자 발송과 다른 항목만
파라미터필수설명
smsType선택기본값 MMS
message선택포토문자는 본문이 없어도 됩니다
attachFile01
attachFile02
attachFile03
선택첨부 이미지. 최대 3장

이미지 규격(1500×1440px 이하, 장당 300KB 미만, JPG·JPEG·PNG)은 웹 발송과 같습니다. SMS·LMS·MMS 차이에서 확인하세요.

알림톡 발송

수신자마다 치환 내용이 다르므로 수신자 목록을 kakaoList 배열로 보냅니다.

POST /v2/kakao/sendAt 요청 파라미터
파라미터필수설명
callerNo필수발신번호(등록·승인된 번호)
senderKey필수카카오 채널 발신 프로필 키
tmplCd필수승인된 알림톡 템플릿 코드
kakaoList필수수신자·내용 리스트(JSON 배열 문자열)
kakaoList[].receive필수수신번호
kakaoList[].message필수치환이 끝난 알림톡 내용. 승인된 템플릿과 내용이 일치해야 합니다
kakaoList[].btnMobUrl
kakaoList[].btnPcUrl
선택버튼 연결 모바일 / PC URL
kakaoList[].reYn선택알림톡 실패 시 문자로 대체 발송할지 (Y/N, 기본 N)
kakaoList[].reType조건부reYn=Y 일 때 필수. SMS / LMS
kakaoList[].reTitle조건부reType=LMS 일 때 대체 문자 제목 (최대 40자)
kakaoList[].reMsg조건부reYn=Y 일 때 필수. 대체 문자 내용
reserveYn / sendDate선택문자 발송과 동일

알림톡 kakaoList 예시

[
  {
    "receive":  "010-0000-0001",
    "message":  "홍길동님, 주문번호 A1234 상품이 출고되었습니다.",
    "reYn":     "Y",
    "reType":   "LMS",
    "reTitle":  "배송 안내",
    "reMsg":    "홍길동님, 주문번호 A1234 상품이 출고되었습니다."
  }
]

알림톡은 템플릿 사전 승인이 필요합니다. 채널 등록부터 템플릿 승인까지는 카카오 알림톡 시작하기를 참고하세요.

발송 결과와 잔여 건수 조회

잔여 코인·발송 가능 건수

GET /v2/info/coinInfo 는 유형별로 몇 건을 더 보낼 수 있는지 돌려줍니다.

{
  "code": "0",
  "data": {
    "smsCnt":    13181,   // SMS 발송 가능 건수
    "lmsCnt":     4217,   // LMS 발송 가능 건수
    "mmsCnt":     1917,   // MMS 발송 가능 건수
    "atCnt":     13181,   // 알림톡 발송 가능 건수
    "totalCoin": 105448   // 총 보유 코인
  }
}

발송 결과 조회

발송 시 받은 msgIdGET /v1/sms/sendList/{msgId} 를 호출하면 요청 건수와 성공·실패·대기 건수, 그리고 수신자별 결과코드를 확인할 수 있습니다.

발송 상세 조회 주요 응답 필드
필드설명
data.totalCnt총 발송 요청 건수
data.successCnt전송 성공 건수
data.failCnt전송 실패 건수
data.waitCnt전송 대기 건수. 통신사 사정으로 최대 48시간 대기할 수 있습니다
list[].receiveNo수신자 번호
list[].resultCd결과코드
list[].resultCdNm결과 성공/실패 표기
발송 직후 조회하면 대부분 대기 상태입니다. 결과는 통신사 리포트를 받아야 확정되므로, 보내자마자 바로 조회하지 말고 일정 간격을 두고 확인하세요. resultCd 값의 의미와 조치 방법은 문자 발송 실패 원인과 결과코드에서 설명합니다.

예약 발송 취소

GET /v1/sms/cancel/{msgId}(문자) 또는 GET /v2/kakao/cancel/{msgId}(알림톡)를 호출하면 아직 발송되지 않은 예약 건을 취소합니다.

언어별 예제 코드

표준 HTTP 요청이라 특별한 라이브러리가 필요 없습니다.

연동 준비가 되셨나요?

API 신청 후 승인되면 인증키를 발급해 드립니다.

loading...