Skip to main content
首页/文档中心/开发者中心/短信宝代码示例

短信宝代码示例

本页整理国内短信 API 的最小调用示例。接口支持 txtjson 两种返回格式:不填写 f 时默认返回 txt,填写 f=json 时返回 JSON。

先确认返回格式

返回方式请求地址参数成功判断
txt 返回https://api.smsbao.com/smsu、p、g、m、c明文文本等于 0。
json 返回https://api.smsbao.com/smsu、p、g、m、c、f=jsonJSON 中 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 做脱敏处理。
  • 提交成功不等于用户一定收到,最终结果要结合发送记录或状态报告确认。