드로 문자를 발송하려면 Authorization: Bearer 헤더와 senderId, destinationNumber, 메시지 및 messageType이 포함된 JSON 본문을 사용하여 https://api.broadnet.me/sms/sendSms로 HTTPS POST 요청을 보냅니다. 호출에 성공하면 응답 본문에 메시지 ID와 함께 HTTP 200이 반환됩니다. 전송 결과 보고(DLR)는 이후 웹훅(webhook)을 통해 전달됩니다. 아래의 모든 언어는 표준 HTTP 라이브러리만을 사용하며, 공식 SDK는 TypeScript 및 Node.js를 위한 것입니다.
핵심 요약
- 엔드포인트: JSON 본문 및 Bearer 토큰을 포함한 POST https://api.broadnet.me/sms/sendSms,.
- 필수 필드: senderId, destinationNumber (플러스 기호가 없는 국제 형식), 메시지, messageType (TEXT).
- 응답: 메시지 ID와 함께 200 반환; 전송 결과 보고와 매칭하기 위해 메시지 ID를 보관하세요.
- 에러: 토큰이 누락되었거나 유효하지 않으면 게이트웨이에서 401을 반환합니다. API 에러는 status, error, message, errorCode 및 requestUri를 반환합니다.
- 단일 공식 SDK: TypeScript/Node.js를 위한 @broadnet/cpaas-sdk; OpenAPI 명세서를 기반으로 다른 언어용 클라이언트를 생성합니다.
발송 전 준비 사항은 무엇인가요?
- BroadNet 계정의 액세스 토큰이 필요하며, 이는 환경 변수(아래 BROADNET_TOKEN)에 저장해야 합니다. 소스 코드나 모바일 앱에 직접 포함해서는 안 됩니다.
- 도착 국가에서 허용되는 발신자 ID가 필요합니다. 일부 국가는 사전 등록이 필요할 수 있습니다.
- 국제 형식의 수신 번호가 필요합니다. 예: 447700900123 (가상의 영국 번호).
테스트 계정은 당사 엔지니어를 통해 제공됩니다. 테스트 계정을 신청하면 영업일 기준 1일 이내에 테스트 인증 정보를 받게 되며, 첫 테스트 메시지는 보통 그로부터 약 5분 후에 발송됩니다. 빠른 시작 가이드에서 자세한 절차를 확인할 수 있습니다.
요청(Request) 형식은 어떻게 되나요?
다음은 cURL를 포함한 요청 예시입니다. 아래의 모든 예시는 동일한 JSON 본문을 전송합니다.
curl -X POST https://api.broadnet.me/sms/sendSms \ -H "Authorization: Bearer $BROADNET_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "senderId": "BroadNet", "destinationNumber": "447700900123", "message": "Your verification code is 482913", "messageType": "TEXT" }' # 200 OK → response body is the message ID, e.g. 2603121407537573731Python을 사용하여 문자를 발송하는 방법은 무엇인가요?
requests 라이브러리를 사용하면 json= 인수가 Content-Type 헤더를 자동으로 설정합니다.
import os, requests r = requests.post( "https://api.broadnet.me/sms/sendSms", headers={"Authorization": f"Bearer {os.environ['BROADNET_TOKEN']}"}, json={ "senderId": "BroadNet", "destinationNumber": "447700900123", "message": "Your verification code is 482913", "messageType": "TEXT", },) print(r.status_code, r.text) # message IDPHP를 사용하여 문자를 발송하는 방법은 무엇인가요?
PHP의 curl 확장이면 충분하며, 별도의 패키지는 필요하지 않습니다.
<?php$ch = curl_init("https://api.broadnet.me/sms/sendSms");curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "Authorization: Bearer " . getenv("BROADNET_TOKEN"), "Content-Type: application/json", ], CURLOPT_POSTFIELDS => json_encode([ "senderId" => "BroadNet", "destinationNumber" => "447700900123", "message" => "Your verification code is 482913", "messageType" => "TEXT", ]),]); $messageId = curl_exec($ch);echo $messageId;Node.js를 사용하여 문자를 발송하는 방법은 무엇인가요?
Node.js 18 버전 이후부터는 fetch가 내장되어 있습니다:
// Node.js 18+ (fetch)const res = await fetch("https://api.broadnet.me/sms/sendSms", { method: "POST", headers: { Authorization: `Bearer ${process.env.BROADNET_TOKEN}`, "Content-Type": "application/json", }, body: JSON.stringify({ senderId: "BroadNet", destinationNumber: "447700900123", message: "Your verification code is 482913", messageType: "TEXT", }),}); console.log(await res.text()); // message ID또는 공식 TypeScript/Node.js SDK, @broadnet/cpaas-sdk를 사용하세요:
// npm install @broadnet/cpaas-sdk axiosimport { Configuration, SMSSMSApi } from "@broadnet/cpaas-sdk"; const sms = new SMSSMSApi( new Configuration({ basePath: "https://api.broadnet.me", accessToken: process.env.BROADNET_TOKEN!, }),); const res = await sms.smsSendsmsPost({ sMSSmsRequest: { senderId: "BroadNet", destinationNumber: "447700900123", message: "Your verification code is 482913", messageType: "TEXT", },}); console.log(res.data); // message IDJava를 사용하여 문자를 발송하는 방법은 무엇인가요?
Java 11 이상 버전에는 java.net.http.HttpClient이(가) 포함되어 있습니다:
// Java 11+ — java.net.http is built in, nothing to installimport java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse; public class SendSms { public static void main(String[] args) throws Exception { String json = "{" + "\"senderId\": \"BroadNet\", " + "\"destinationNumber\": \"447700900123\", " + "\"message\": \"Your verification code is 482913\", " + "\"messageType\": \"TEXT\"" + "}"; HttpRequest req = HttpRequest.newBuilder(URI.create("https://api.broadnet.me/sms/sendSms")) .header("Authorization", "Bearer " + System.getenv("BROADNET_TOKEN")) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(json)) .build(); HttpResponse<String> res = HttpClient.newHttpClient() .send(req, HttpResponse.BodyHandlers.ofString()); System.out.println(res.statusCode() + " " + res.body()); // 200 + message ID }}Go로 문자를 발송하는 방법은 무엇인가요?
package main import ( "bytes" "fmt" "io" "net/http" "os") func main() { body := []byte(`{ "senderId": "BroadNet", "destinationNumber": "447700900123", "message": "Your verification code is 482913", "messageType": "TEXT" }`) req, err := http.NewRequest(http.MethodPost, "https://api.broadnet.me/sms/sendSms", bytes.NewReader(body)) if err != nil { panic(err) } req.Header.Set("Authorization", "Bearer "+os.Getenv("BROADNET_TOKEN")) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() id, _ := io.ReadAll(res.Body) fmt.Println(res.StatusCode, string(id)) // 200 + message ID}C# 및 .NET를 사용하여 문자를 발송하는 방법은 무엇인가요?
.NET 6 이상 버전은 NuGet 패키지가 필요하지 않습니다: HttpClient 및 System.Net.Http.Json가 내장되어 있습니다.
// .NET 6+ console app (Program.cs) — HttpClient is built in, no NuGet packageusing System;using System.Net.Http;using System.Net.Http.Headers;using System.Net.Http.Json; using var http = new HttpClient();http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Bearer", Environment.GetEnvironmentVariable("BROADNET_TOKEN")); // PostAsJsonAsync sends Content-Type: application/jsonvar res = await http.PostAsJsonAsync("https://api.broadnet.me/sms/sendSms", new{ senderId = "BroadNet", destinationNumber = "447700900123", message = "Your verification code is 482913", messageType = "TEXT",}); var id = await res.Content.ReadAsStringAsync();Console.WriteLine($"{(int)res.StatusCode} {id}"); // 200 + message ID응답 결과는 무엇이며, 오류는 어떻게 처리하나요?
| 응답 | 의미 | 조치 사항 |
|---|---|---|
| 200 + 메시지 ID | 전송 접수됨 | ID를 자체 기록과 함께 저장하십시오. DLR을 기다리십시오. |
| 400 | 유효성 검사 오류 또는 누락된 필드 | 요청을 수정하십시오. 수정 없이 재시도하지 마십시오. |
| 401 | Bearer 토큰이 누락되었거나 유효하지 않음 | 토큰 및 Authorization 헤더를 확인하세요 |
| 500 | 예기치 않은 서버 오류 | 지수 백오프(backoff)를 적용하여 재시도하세요. 재전송 전 메시지 상태를 확인해야 합니다. |
200 응답은 플랫폼이 메시지를 수락했음을 의미하며, 단말기가 메시지를 수신했음을 의미하지는 않습니다. 전송 여부는 전송 결과 보고를 통해 확인하십시오. DLR은 무엇인가요? 및 SMS 전송 결과 보고 및 오류 코드를 참조하십시오. API에는 멱등성(idempotency) 헤더가 없으므로, 중복 발송을 방지하려면 반환된 메시지 ID를 보관하고 재전송 전에 해당 ID의 상태를 확인하십시오. 나머지 내용은 오류 코드 페이지에 나열되어 있습니다.
어떻게 하면 운영 환경에 적합하게 준비할 수 있나요?
- 토큰을 서버 측에 보관하십시오. 토큰이 추출될 수 있는 브라우저나 모바일 앱에서 SMS API를 호출하지 마십시오. 대신 자체 백엔드를 호출해야 합니다.
- 장문 메시지 발송 시 유의사항: GSM-7은 SMS당 160자, Unicode(UCS-2)는 70자까지 지원하며, 이보다 긴 텍스트는 과금되는 세그먼트로 분할됩니다. SMS 글자 수 제한을 확인하십시오.
- 대량 문자 발송을 대기열에 추가하고 계정의 처리량을 준수하세요. 요금 제한을 확인하시기 바랍니다.
- 웹훅을 통해 전송 결과 보고를 받고 최종 상태를 저장하세요.
- 먼저 번호를 국제 형식으로 검증하세요. E.164 전화번호 검증을 참조하세요.
매우 높은 처리량이 필요하거나 기존 통신 스택을 보유한 경우, REST보다 SMPP가 더 적합할 수 있습니다. SMPP vs REST를 참조하세요. BroadNet 플랫폼은 노드당 초당 30,000건의 SMS를 처리합니다.
자주 묻는 질문
코드에서 문자를 발송하는 가장 간단한 방법은 무엇인가요?
액세스 토큰과 JSON 본문을 사용하여 문자 API로 HTTPS POST 요청을 한 번 보내는 것입니다. BroadNet의 경우, senderId, destinationNumber, message 및 messageType을 포함하여 https://api.broadnet.me/sms/sendSms로 POST 요청을 보냅니다.
Python, PHP 또는 Java를 위한 BroadNet SDK가 있나요?
아니요. TypeScript 및 Node.js를 위한 공식 SDK인 @broadnet/cpaas-sdk가 하나 있습니다. 다른 언어에서는 여기에서 보는 것처럼 REST API를 직접 호출하거나, OpenAPI 명세서를 통해 클라이언트를 생성합니다.
전화번호는 어떤 형식이어야 하나요?
국가 코드를 포함하되 플러스(+) 기호나 공백이 없는 국제 형식이어야 합니다. 예: 447700900123.
200 응답이 문자가 성공적으로 착신되었음을 의미하나요?
아니요. 메시지가 접수되었다는 의미입니다. 전송 결과 보고(DLR)를 통해 메시지가 단말기에 도달했는지 확인할 수 있습니다.
Android 또는 iOS 앱에서 직접 SMS를 보낼 수 있나요?
보안상 권장하지 않습니다. 액세스 토큰이 앱 내부로 유출되지 않도록 서버에서 API 호출을 처리하도록 구성하고, 앱이 서버를 호출하는 방식을 사용하세요.
전체 API 레퍼런스는 어디에서 확인할 수 있나요?
API 레퍼런스 및 OpenAPI 스펙에 명시되어 있습니다.
코드 샘플은 당사 개발자 페이지에 게시된 것이며, 공개된 OpenAPI 스펙을 기준으로 검토되었습니다. 2026년 9월 28일 검토됨. 당사의 편집 기준을 참조하세요.
