通过代码发送短信,请向 https://api.broadnet.me/sms/sendSms 发起一次HTTPS POST请求,包含Authorization: Bearer请求头和包含senderId、destinationNumber、消息内容及messageType的JSON正文。调用成功后将返回HTTP 200状态码,并将消息ID作为响应体返回;送达结果随后将作为状态报告(DLR)发送到您的Webhook。以下每种语言仅使用其标准的HTTP库;唯一的官方SDK是用于TypeScript和Node.js的。
核心要点
- 端点:POST https://api.broadnet.me/sms/sendSms, JSON正文,Bearer令牌。
- 必填字段:senderId、destinationNumber(不带加号的国际格式)、消息内容、messageType (TEXT)。
- 响应:200状态码及消息ID;请保留该ID以便匹配状态报告。
- 错误:令牌缺失或无效会导致网关返回401;API错误将返回status、error、message、errorCode和requestUri。
- 一个官方SDK:用于TypeScript/Node.js的@broadnet/cpaas-sdk;可根据OpenAPI规范为其他语言生成客户端。
发送前您需要准备什么?
- 一个来自您BroadNet账户的访问令牌,请将其保存在环境变量中(如下方的BROADNET_TOKEN所示),切勿将其保存在源代码或移动应用中。
- 一个目标国家允许使用的发送者ID;某些国家需要先进行报备。
- 一个符合国际格式的目标号码,例如447700900123(一个虚构的英国号码)。
测试权限由我们的工程师提供:申请测试权限后,您将在一个工作日内获得测试凭据,通常在获得凭据后约五分钟即可发出第一条测试短信。快速入门将引导您完成操作。
请求的具体格式是怎样的?
这是带有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. 2603121407537573731如何使用Python发送短信?
使用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 ID如何使用PHP发送短信?
使用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 ID如何使用Java发送短信?
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 | 意外的服务器错误 | 请使用退避机制重试;在重新发送之前请检查消息状态 |
200表示平台已接收消息,并不代表手机已收到。送达情况由状态报告提供;请参阅什么是DLR以及短信状态报告和错误代码。API没有幂等性请求头,因此请保留返回的消息ID,并在重新发送前检查其状态,以避免重复发送。其余内容请参见错误代码页面。
如何使其达到生产可用状态?
- 请将令牌保存在服务器端。切勿从浏览器或移动应用中调用短信API,因为令牌可能会被提取;请改为调用您自己的后端。
- 请知晓长短信的发送规则:GSM-7每条短信包含160个字符,Unicode (UCS-2)为70个字符,更长的文本将被拆分为计费的分段。请参阅短信字符限制。
- 排队进行群发并遵守您账户的吞吐量限制;请阅读速率限制。
- 通过Webhook接收状态报告并存储最终状态。
- 请先将号码验证为国际格式;请参阅E.164电话号码验证。
对于极高业务量或现有的电信技术栈,SMPP可能比REST更合适;请参阅SMPP与REST的对比。BroadNet的平台每个节点可处理每秒30,000条短信。
常见问题
通过代码发送短信最简单的方法是什么?
使用访问令牌和JSON正文向短信API发送一次HTTPS POST请求。使用BroadNet时,即向 https://api.broadnet.me/sms/sendSms 发送POST请求,并携带senderId、destinationNumber、message和messageType。
是否有针对Python、PHP或Java的BroadNet SDK?
没有。目前仅提供一个针对TypeScript和Node.js的官方SDK @broadnet/cpaas-sdk。其他语言可直接调用REST API(如下所示),或根据OpenAPI规范生成客户端。
电话号码应该使用什么格式?
包含国家代码且不带加号或空格的国际格式,例如447700900123。
200响应是否意味着短信已送达?
不是。这仅表示消息已被接收。状态报告(DLR)会报告消息是否已到达手机。
我可以直接通过Android或iOS应用发送短信吗?
不建议这样做,因为不安全。请将API调用放在您的服务器上,以确保访问令牌不会内置在应用中,并由应用调用您的服务器。
我在哪里可以找到完整的API参考文档?
代码示例取自我们的开发者页面,并已根据已发布的OpenAPI规范进行核对。最后修订日期:2026年9月28日。请参阅我们的编辑标准。
