服务概览
什么是BulkSMSAPI?
面向开发者的群发短信API:通过REST接口单次请求可向227个国家发送单条短信或最多10,000个号码的批次,每条消息附带签名Webhook通知,按短信分段从预存余额扣费。网页控制台支持直接粘贴号码列表或上传CSV文件发送,无需编写代码。
谁需要使用群发短信API?
需从自有系统发送短信的产品与技术团队:登录验证码、订单物流通知、预约提醒、支付提醒、服务公告及营销活动。任何能发起HTTPS请求的用户均可使用。
支持发送至哪些国家?
227个国家和地区,资费详见价格页与国家列表页。单次请求可混合不同国家号码,按号码所属国家分别计费。
是否需要月费或签订合约?
无需。按短信分段从预存余额扣费,无月费、开通费或最低发送量要求,余额永久有效。
是否有免费试用?
新账户余额为零,首次充值后即可使用服务。首充可享最高40%奖励金,降低初始发送成本。所有价格公开透明,可通过estimate接口或控制台在发送前查看精确费用。
账户与API密钥
如何创建账户?
访问获取API密钥页面,浏览器将生成以acct_开头的账户密钥,复制或保存为文本文件并确认保存后即完成注册。账户密钥是唯一登录凭证,无需管理邮箱或密码。
丢失账户密钥怎么办?
系统仅存储密钥的哈希值,包括客服在内的任何人都无法找回。建议使用密码管理器保管。只要保持登录状态,控制台仍可正常使用,您也可通过控制台联系客服。
如何获取API密钥?
在控制台的API密钥页面,首次充值到账后即可创建。为密钥命名、创建后请立即复制(以bsa_live_开头)。每个账户可持有10个活跃密钥,各具独立名称和速率限制计数。
能否为生产环境和测试环境使用不同密钥?
可以。为每个应用或环境创建独立命名的密钥。每个密钥会显示最后使用时间,撤销单个密钥不会影响其他密钥。
最多可创建多少个账户?
每个网络地址最多3个账户。多数团队只需一个账户配合多个API密钥即可。
发送消息
单次请求支持多少号码?
POST /v1/batches单次请求最多支持10,000个号码,可发送统一内容或个性化短信。控制台单次活动支持50,000号码,更大列表会自动拆分请求。
消息发送速度如何?
队列每两秒处理一次,按接收顺序每分钟最多递送1,200条消息。单条短信通常在请求后数秒内发出。
电话号码格式要求?
国际E.164格式:加号+国家代码+本地号码(如+14155550123)。空格、连字符、括号及00前缀会自动清除,无效或重复号码将被筛除且不收费。
短信长度限制?
最多10个分段:GSM-7编码1,530字符或Unicode编码670字符。单分段容纳160个GSM-7字符或70个Unicode字符,长短信会按153/67字符拆分并在接收端自动拼接。
为何实际分段数超出预期?
若含GSM-7字符集外的符号(如弯引号、á、ç或表情),整条消息将转为Unicode编码(每段70字符)。控制台编辑器会标注特殊字符,POST /v1/estimates接口可预先返回编码类型。
能否定时发送?
可以。通过API添加send_at参数,或在控制台选择未来2分钟至45天内的发送时间。定时批次在开始前可取消,费用全额退回余额。
能否发送个性化内容?
可以。通过API发送批次时,为每个收件人指定{to, text}组合;控制台支持粘贴/上传带附加列的列表,并在正文使用{{1}}至{{9}}合并字段。
会自动添加退订声明吗?
在设置中配置退订声明(如链接或邮箱),勾选后控制台会自动添加至群发内容。通过API需自行在营销短信中添加。黑名单号码会被控制台和API自动跳过且不收费。
能否先发送测试短信?
可以。控制台支持活动前单条测试发送,通过API调用POST /v1/messages可给自己手机发送测试短信。
资费与支付
单条短信费用如何计算?
按号码所属国家计费:各国分段单价不同(最低$0.00247/巴西)。资费页面和GET /v1/pricing接口可查询全部国家价格。
批次费用如何核算?
每接收方费用=其国家分段单价×短信分段数。请求受理时从余额扣除总和,响应中的cost字段会显示金额。
最低充值金额是多少?
$40。充值金额可以是$40到$5,000之间的任意金额。首次充值可享受最高40%的奖励,支付前会显示在每个金额上。
如何支付?
在控制台中,Billing会在页面上打开一个托管结账窗口。您选择金额并使用加密货币支付,支付页面会显示确切的金额和地址。支付页面列出了每个步骤。
发送失败的消息会退款吗?
是的。当消息发送失败时,其费用会自动返还到余额中,作为账本中的退款记录。已取消的预定批次会全额退款。
我可以提现余额吗?
余额用于支付消息费用,并永久保留在您的账户中。发送失败或已取消的消息的退款也会返还到余额中。
价格会变动吗?
当网络成本变化时,价格可能会调整。当前价格列表带有日期,API返回每个价格对应的日期,已接受的消息保持其被收取的价格不变。
送达与报告
如何知道消息已送达?
每条消息会从排队到发送再到送达或失败。在控制台中添加webhook URL以获取每个最终状态的签名事件,或读取GET /v1/messages/{id}和GET /v1/batches/{id}。
webhook如何签名?
采用Standard Webhooks格式:headers包括webhook-id、webhook-timestamp和webhook-signature,其中签名是使用您的whsec_密钥对id、时间戳和原始正文进行HMAC-SHA256计算的结果。文档中提供了Node.js、Python、PHP和Go的验证代码。
如果我的webhook端点不可用怎么办?
每个事件会在约24小时内进行10次尝试,每次尝试及其HTTP状态都会列在控制台中。您也可以随时轮询消息端点。
消息为什么会失败?
手机可能长时间关机,号码可能已停用,或网络可能拒绝发送消息。失败状态会携带错误代码,费用会退还。
消息记录保留多久?
批次、消息和余额账本会保留在您的账户和API中。请求日志保留您最近的500次API调用,webhook日志保留您最近的500次送达记录。
开发者相关
有SDK吗?
API是HTTPS上的纯JSON,因此任何语言的标准库都足够使用。文档中提供了curl、Node.js、Python、PHP和Go的完整示例,/openapi.json的OpenAPI规范可为大多数语言生成类型化客户端。
速率限制是多少?
每个API密钥每分钟600次请求。每个响应都包含X-RateLimit-Limit、X-RateLimit-Remaining和X-RateLimit-Reset headers,429响应会包含Retry-After。
超时后如何安全重试?
发送带有Idempotency-Key header的POST请求,并使用相同的密钥重试。在24小时内,相同的密钥和正文会返回第一个响应,而不是再次发送。
我可以在没有API密钥的情况下查询价格吗?
可以。GET /v1/pricing和GET /v1/pricing/{country}是公开的,因此结账页面或仪表板可以显示实时价格。
如何查看代码发送的内容?
控制台提供请求日志,记录最近500次API调用的方法、路径、状态和时间,同时展示批次、消息及webhook日志。
控制台
可以不写代码直接发送吗?
是的。在控制台中,粘贴号码或上传最多50,000行的CSV文件,编写带有合并字段的文本,检查每个收件人的预览和每个国家的费用,然后立即发送或设定时间发送。
控制台显示哪些内容?
账户余额、实时统计的近期批次、各批次消息及状态、充值记录、API密钥、webhook设置与投递情况、请求日志、价目表、支持工单和系统设置。
如何联系技术支持?
通过控制台的「支持」页面提交。支付问题首日即可咨询,其他功能需首次充值到账后开放。