短信宝代码示例
本页整理国内短信 API 的最小调用示例。接口支持 txt 和 json 两种返回格式:不填写 f 时默认返回 txt,填写 f=json 时返回 JSON。
先确认返回格式
| 返回方式 | 请求地址 | 参数 | 成功判断 |
|---|---|---|---|
txt 返回 | https://api.smsbao.com/sms | u、p、g、m、c | 明文文本等于 0。 |
json 返回 | https://api.smsbao.com/sms | u、p、g、m、c、f=json | JSON 中 code 等于 0。 |
json:JSON 示例
在同一个发送接口上将 f 设置为 json,即可返回 JSON,并在服务端处理 code、msg 和 data。
cURL
curl -G "https://api.smsbao.com/sms" \
--data-urlencode "u=$SMSBAO_USER" \
--data-urlencode "p=$SMSBAO_API_KEY" \
--data-urlencode "m=13800138000" \
--data-urlencode "c=【短信宝】您的验证码是123456,5分钟内有效。" \
--data-urlencode "f=json"PHP
<?php
$params = http_build_query([
"u" => getenv("SMSBAO_USER"),
"p" => getenv("SMSBAO_API_KEY"),
"m" => "13800138000",
"c" => "【短信宝】您的验证码是123456,5分钟内有效。",
"f" => "json",
]);
$body = file_get_contents("https://api.smsbao.com/sms?" . $params);
$result = json_decode($body, true);
if (($result["code"] ?? -1) !== 0) {
throw new RuntimeException("短信提交失败:" . ($result["msg"] ?? $body));
}
$taskId = $result["data"]["taskId"] ?? null;
Java
String content = java.net.URLEncoder.encode(
"【短信宝】您的验证码是123456,5分钟内有效。",
java.nio.charset.StandardCharsets.UTF_8
);
String url = "https://api.smsbao.com/sms"
+ "?u=" + System.getenv("SMSBAO_USER")
+ "&p=" + System.getenv("SMSBAO_API_KEY")
+ "&m=13800138000"
+ "&c=" + content
+ "&f=json";
java.net.http.HttpClient client = java.net.http.HttpClient.newHttpClient();
java.net.http.HttpRequest request = java.net.http.HttpRequest.newBuilder(java.net.URI.create(url)).GET().build();
String body = client.send(request, java.net.http.HttpResponse.BodyHandlers.ofString()).body();
if (!body.contains(""code":0")) {
throw new IllegalStateException("短信提交失败:" + body);
}
Node.js
const params = new URLSearchParams({
u: process.env.SMSBAO_USER,
p: process.env.SMSBAO_API_KEY,
m: "13800138000",
c: "【短信宝】您的验证码是123456,5分钟内有效。",
f: "json"
});
const res = await fetch("https://api.smsbao.com/sms?" + params.toString());
const result = await res.json();
if (result.code !== 0) {
throw new Error("短信提交失败:" + result.msg);
}
const taskId = result.data?.taskId;
Python
import os
import requests
params = {
"u": os.environ["SMSBAO_USER"],
"p": os.environ["SMSBAO_API_KEY"],
"m": "13800138000",
"c": "【短信宝】您的验证码是123456,5分钟内有效。",
"f": "json",
}
result = requests.get("https://api.smsbao.com/sms", params=params, timeout=10).json()
if result.get("code") != 0:
raise RuntimeError("短信提交失败:" + result.get("msg", "未知错误"))
task_id = result.get("data", {}).get("taskId")
Go
values := url.Values{}
values.Set("u", os.Getenv("SMSBAO_USER"))
values.Set("p", os.Getenv("SMSBAO_API_KEY"))
values.Set("m", "13800138000")
values.Set("c", "【短信宝】您的验证码是123456,5分钟内有效。")
values.Set("f", "json")
resp, err := http.Get("https://api.smsbao.com/sms?" + values.Encode())
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
if !strings.Contains(string(body), ""code":0") {
panic("短信提交失败:" + string(body))
}
txt:明文文本示例
不填写 f 时,返回 txt 明文文本。响应文本等于 0 表示提交成功,其他返回按文本返回码排查。
cURL
curl -G "https://api.smsbao.com/sms" \
--data-urlencode "u=$SMSBAO_USER" \
--data-urlencode "p=$SMSBAO_API_KEY" \
--data-urlencode "m=13800138000" \
--data-urlencode "c=【短信宝】您的验证码是123456"Node.js
const params = new URLSearchParams({
u: process.env.SMSBAO_USER,
p: process.env.SMSBAO_API_KEY,
m: "13800138000",
c: "【短信宝】您的验证码是123456"
});
const res = await fetch("https://api.smsbao.com/sms?" + params.toString());
const code = (await res.text()).trim();
if (code !== "0") {
throw new Error("短信提交失败,返回码:" + code);
}
Python
import os
import requests
params = {
"u": os.environ["SMSBAO_USER"],
"p": os.environ["SMSBAO_API_KEY"],
"m": "13800138000",
"c": "【短信宝】您的验证码是123456",
}
code = requests.get("https://api.smsbao.com/sms", params=params, timeout=10).text.strip()
if code != "0":
raise RuntimeError(f"短信提交失败,返回码:{code}")
返回结果处理
| 返回方式 | 处理方式 | 注意事项 |
|---|---|---|
txt 返回 | 不填写 f,读取明文文本,判断是否等于 0。 | 不要把 JSON 解析逻辑用于 txt 返回。 |
json 返回 | 将 f 设置为 json,解析 JSON,判断 code 是否等于 0,并读取 data.taskId。 | 不要把文本返回码当作 JSON 的 code 字段处理。 |
- 账号和 ApiKey 只放在服务端环境变量、密钥管理或配置中心。
- 业务日志中对手机号、验证码和 ApiKey 做脱敏处理。
- 提交成功不等于用户一定收到,最终结果要结合发送记录或状态报告确认。


