跳到正文

短信

短信发送、OTP 与验证,以及投递状态。

概览

基础路径: https://api.infrai.cc/v1/sms
鉴权头: Authorization: Bearer $INFRAI_API_KEY
bash
# Call any /v1/sms capability over raw HTTP — no SDK to install.
# curl:
curl https://api.infrai.cc/v1/sms/... \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json"

方法

sms.send

POST /v1/sms/send

发送短信;支持模板与 BYOK 供应商。

参数

名称类型必填说明
tostring
必填
E.164 格式的收件手机号。
bodystring可选短信文本。
fromstring可选发件标识或号码。
template_idstring可选用于渲染的模板 id(替代正文)。
vendorstring可选固定使用某个供应商,而非自动路由。
idempotency_keystring可选可选去重 key;相同重试将返回同一结果。

返回

SmsRecord { sms_id, to, state, vendor, segments, created_at }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X POST https://api.infrai.cc/v1/sms/send \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to": "+14155550100", "body": "Your code is 123456"}'

sms.otp

POST /v1/sms/otp

向手机号发送一次性验证码。

参数

名称类型必填说明
tostring
必填
E.164 格式的收件手机号。

返回

{ request_id, expires_at }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X POST https://api.infrai.cc/v1/sms/otp \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to": "..."}'

sms.verify

POST /v1/sms/verify

校验一次性验证码。

参数

名称类型必填说明
tostring
必填
E.164 格式的收件手机号。
codestring
必填
要校验的一次性验证码。

返回

{ valid: boolean }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X POST https://api.infrai.cc/v1/sms/verify \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to": "...", "code": "..."}'

sms.status

GET /v1/sms/status/{id}

获取短信的投递状态。

参数

名称类型必填说明
idstring
必填
短信记录 id。

返回

SmsRecord

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X GET https://api.infrai.cc/v1/sms/status/ID \
  -H "Authorization: Bearer $INFRAI_API_KEY"

sms.batch.send

POST /v1/sms/batch/send

异构批量发送:每条为完整短信请求,整批共用一个幂等键,按条计费不重复。

参数

名称类型必填说明
messagesSmsSendRequest[]
必填
短信请求数组,最多 100 条,每条为完整的发送请求。
idempotency_keystring可选整批共用的去重键;相同重试返回相同结果。

返回

SmsBatchSendResult { results: SmsSendResult[] }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X POST https://api.infrai.cc/v1/sms/batch/send \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"messages": []}'

sms.cancel

POST /v1/sms/cancel/{id}

取消尚未下发的已排程或排队中短信。

参数

名称类型必填说明
idstring
必填
要取消的短信消息 ID。

返回

SmsCancelResult { message_id, cancelled, state }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X POST https://api.infrai.cc/v1/sms/cancel/ID \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message_id": "..."}'

sms.events

GET /v1/sms/events/{id}

读取单条短信的投递事件时间线。

参数

名称类型必填说明
idstring
必填
短信消息 ID。
cursorstring可选分页游标,从上一页的 next_cursor 取得。
limitnumber可选单页返回的最大条数。

返回

SmsEventList { items: SmsEvent[], next_cursor }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X GET https://api.infrai.cc/v1/sms/events/ID \
  -H "Authorization: Bearer $INFRAI_API_KEY"

sms.inbound.list

GET /v1/sms/inbound/list

分页列出在已注册发送号上收到的入站(回复)短信。

参数

名称类型必填说明
cursorstring可选分页游标,从上一页的 next_cursor 取得。
limitnumber可选单页返回的最大条数。

返回

SmsListResult { items, next_cursor }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X GET https://api.infrai.cc/v1/sms/inbound/list \
  -H "Authorization: Bearer $INFRAI_API_KEY"

sms.list

GET /v1/sms/list

分页列出已发送的短信记录。

参数

名称类型必填说明
cursorstring可选分页游标,从上一页的 next_cursor 取得。
limitnumber可选单页返回的最大条数。

返回

SmsListResult { items, next_cursor }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X GET https://api.infrai.cc/v1/sms/list \
  -H "Authorization: Bearer $INFRAI_API_KEY"

sms.lookup

POST /v1/sms/lookup

校验号码并补充运营商、号码类型等信息。

参数

名称类型必填说明
phonestring
必填
要查询的电话号码(E.164 格式)。
fieldsstring[]可选需返回的补充字段列表,如 carrier、line_type。

返回

SmsLookupResult { phone, valid, country_code, carrier, line_type, caller_name }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X POST https://api.infrai.cc/v1/sms/lookup \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phone": "..."}'

sms.resend

POST /v1/sms/resend/{id}

重新下发短信,可选仅重试失败的收件人。

参数

名称类型必填说明
message_idstring
必填
要重发的原短信消息 ID。
only_failedboolean可选为 true 时仅重试投递失败的收件人。
idempotency_keystring可选去重键;相同重试返回相同结果。

返回

SmsBatchSendResult { results }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X POST https://api.infrai.cc/v1/sms/resend/ID \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message_id": "..."}'

sms.sender.register

POST /v1/sms/sender/register

注册发送号码以供验证。

参数

名称类型必填说明
phone_numberstring
必填
要注册的发送号码(E.164 格式)。
regionstring
必填
发送号码所属区域,如 western、china。
methodsstring[]可选可用的验证方式列表。
idempotency_keystring可选去重键;相同重试返回相同结果。

返回

SenderVerification { sender_id, phone_number, region, state, methods, created_at }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X POST https://api.infrai.cc/v1/sms/sender/register \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phone_number": "...", "region": "..."}'

sms.sender.verify

POST /v1/sms/sender/verify

用验证码确认已注册的发送号码。

参数

名称类型必填说明
sender_idstring
必填
待验证的发送号 ID。
codestring可选收到的验证码。
idempotency_keystring可选去重键;相同重试返回相同结果。

返回

SenderVerification { sender_id, phone_number, region, state, methods, created_at }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X POST https://api.infrai.cc/v1/sms/sender/verify \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"sender_id": "..."}'

sms.sender.get

GET /v1/sms/sender/get/{id}

获取单个已注册发送号的详情。

参数

名称类型必填说明
idstring
必填
发送号 ID。

返回

SenderVerification

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X GET https://api.infrai.cc/v1/sms/sender/get/ID \
  -H "Authorization: Bearer $INFRAI_API_KEY"

sms.sender.list

GET /v1/sms/sender/list

分页列出已注册的发送号。

参数

名称类型必填说明
cursorstring可选分页游标,从上一页的 next_cursor 取得。
limitnumber可选单页返回的最大条数。

返回

SmsSenderListResult { items, next_cursor }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X GET https://api.infrai.cc/v1/sms/sender/list \
  -H "Authorization: Bearer $INFRAI_API_KEY"

sms.sender.delete

DELETE /v1/sms/sender/delete/{id}

删除一个已注册的发送号。

参数

名称类型必填说明
idstring
必填
要删除的发送号 ID。
idempotency_keystring可选去重键;相同重试返回相同结果。

返回

SmsDeleteResult { deleted }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X DELETE https://api.infrai.cc/v1/sms/sender/delete/ID \
  -H "Authorization: Bearer $INFRAI_API_KEY"

sms.sender.reputation

GET /v1/sms/sender/reputation/{id}

查询发送号的信誉等级与限流风险。

参数

名称类型必填说明
idstring
必填
发送号 ID。

返回

SmsSenderReputation { sender_id, tier, complaint_rate_30d, cap, used_today, throttle_risk }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X GET https://api.infrai.cc/v1/sms/sender/reputation/ID \
  -H "Authorization: Bearer $INFRAI_API_KEY"

sms.signature.create

POST /v1/sms/signature/create

创建短信签名(中国发送必需)并提交审核。

参数

名称类型必填说明
namestring
必填
签名内容文本。
typestring可选签名类型,如 enterprise、individual。
proof_urlstring可选资质证明文件的 URL。
remarkstring可选提交审核时的备注说明。
vendorstring可选固定使用某个供应商,而非自动路由。

返回

SmsSignature { signature_id, text, type, review_state, reject_reason, vendor, created_at }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X POST https://api.infrai.cc/v1/sms/signature/create \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Acme", "type": "company"}'

sms.signature.get

GET /v1/sms/signature/get/{id}

读取单个短信签名及其审核状态。

参数

名称类型必填说明
idstring
必填
签名 ID。

返回

SmsSignature

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X GET https://api.infrai.cc/v1/sms/signature/get/ID \
  -H "Authorization: Bearer $INFRAI_API_KEY"

sms.signature.list

GET /v1/sms/signature/list

分页列出短信签名。

参数

名称类型必填说明
cursorstring可选分页游标,从上一页的 next_cursor 取得。
limitnumber可选单页返回的最大条数。

返回

SmsSignatureListResult { items, next_cursor }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X GET https://api.infrai.cc/v1/sms/signature/list \
  -H "Authorization: Bearer $INFRAI_API_KEY"

sms.signature.delete

DELETE /v1/sms/signature/delete/{id}

删除一个短信签名。

参数

名称类型必填说明
idstring
必填
要删除的签名 ID。
idempotency_keystring可选去重键;相同重试返回相同结果。

返回

SmsDeleteResult { deleted }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X DELETE https://api.infrai.cc/v1/sms/signature/delete/ID \
  -H "Authorization: Bearer $INFRAI_API_KEY"

sms.template.create

POST /v1/sms/template/create

创建带命名变量的可复用短信模板。

参数

名称类型必填说明
namestring
必填
模板名称。
bodystring
必填
模板正文,可含 {变量} 占位符。
localestring可选模板语言区域,如 en、zh。
variablesstring[]可选模板中使用的变量名列表。
vendorstring可选固定使用某个供应商,而非自动路由。

返回

SmsTemplate { template_id, name, body, locale, variables, review_state, created_at }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X POST https://api.infrai.cc/v1/sms/template/create \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "otp", "body": "Your code is {{code}}", "locale": "zh"}'

sms.template.get

GET /v1/sms/template/get/{id}

读取单个短信模板。

参数

名称类型必填说明
idstring
必填
模板 ID。

返回

SmsTemplate

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X GET https://api.infrai.cc/v1/sms/template/get/ID \
  -H "Authorization: Bearer $INFRAI_API_KEY"

sms.template.list

GET /v1/sms/template/list

分页列出短信模板。

参数

名称类型必填说明
cursorstring可选分页游标,从上一页的 next_cursor 取得。
limitnumber可选单页返回的最大条数。

返回

SmsTemplateListResult { items, next_cursor }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X GET https://api.infrai.cc/v1/sms/template/list \
  -H "Authorization: Bearer $INFRAI_API_KEY"

sms.template.delete

DELETE /v1/sms/template/delete/{id}

删除一个短信模板。

参数

名称类型必填说明
idstring
必填
要删除的模板 ID。
idempotency_keystring可选去重键;相同重试返回相同结果。

返回

SmsDeleteResult { deleted }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X DELETE https://api.infrai.cc/v1/sms/template/delete/ID \
  -H "Authorization: Bearer $INFRAI_API_KEY"

sms.suppress

POST /v1/sms/suppress

将号码加入抑制(免打扰)列表。

参数

名称类型必填说明
phonestring
必填
要抑制的电话号码(E.164 格式)。
reasonstring可选抑制原因,如 opt_out、complaint。
scopestring可选抑制范围,如 account、global。
sender_scopestring可选限定到某发送号的抑制范围。
notesstring可选内部备注说明。
idempotency_keystring可选去重键;相同重试返回相同结果。

返回

SuppressionRecord { phone, scope, reason, created_at }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X POST https://api.infrai.cc/v1/sms/suppress \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phone": "..."}'

sms.suppression.check

POST /v1/sms/suppression/check

发送前检查号码是否已被抑制。

参数

名称类型必填说明
phonestring
必填
要检查的电话号码(E.164 格式)。
scopestring可选检查的抑制范围,如 account、global。
sender_scopestring可选限定到某发送号的检查范围。

返回

SmsSuppressionCheckResult { suppressed, record }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X POST https://api.infrai.cc/v1/sms/suppression/check \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phone": "..."}'

sms.suppression.list

GET /v1/sms/suppression/list

分页列出被抑制的号码。

参数

名称类型必填说明
cursorstring可选分页游标,从上一页的 next_cursor 取得。
limitnumber可选单页返回的最大条数。

返回

SmsSuppressionListResult { items, total_count, next_cursor }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X GET https://api.infrai.cc/v1/sms/suppression/list \
  -H "Authorization: Bearer $INFRAI_API_KEY"

sms.suppression.delete

POST /v1/sms/suppression/delete

从抑制列表移除号码以恢复发送。

参数

名称类型必填说明
phonestring
必填
要移除的电话号码(E.164 格式)。
scopestring可选移除的抑制范围,如 account、global。
sender_scopestring可选限定到某发送号的移除范围。
idempotency_keystring可选去重键;相同重试返回相同结果。

返回

SmsSuppressionRemoveResult { phone, removed }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X POST https://api.infrai.cc/v1/sms/suppression/delete \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phone": "..."}'

sms.suppression.gdpr_remove

POST /v1/sms/suppression/gdpr_remove

GDPR 删除:凭确认令牌硬删除某号码的抑制数据。

参数

名称类型必填说明
phonestring
必填
要执行 GDPR 删除的电话号码(E.164 格式)。
confirmation_tokenstring
必填
执行硬删除所需的确认令牌。
idempotency_keystring可选去重键;相同重试返回相同结果。

返回

SmsSuppressionRemoveResult { phone, removed }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X POST https://api.infrai.cc/v1/sms/suppression/gdpr_remove \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"phone": "...", "confirmation_token": "..."}'

sms.usage

GET /v1/sms/usage

按时间窗聚合短信用量与成本统计。

参数

名称类型必填说明
sincestring可选统计起始时间(ISO 8601)。
untilstring可选统计结束时间(ISO 8601)。
vendorstring可选固定使用某个供应商,而非自动路由。
bucketstring可选聚合粒度,如 day、hour。

返回

SmsUsageResult { sent, delivered, failed, segments, cost_usd, delivery_rate, buckets }

示例

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
curl -X GET https://api.infrai.cc/v1/sms/usage \
  -H "Authorization: Bearer $INFRAI_API_KEY"

全部能力

本模块全部已路由能力——完整的对外 REST 契约。上方方法是带讲解的入门示例,此表是完整参考。

能力端点说明
sms.batch.sendPOST /v1/sms/batch/sendSend a heterogeneous batch of SMS (each a full request) under one idempotency key, billed per message.
sms.cancelPOST /v1/sms/cancel/{id}Cancel a scheduled or queued SMS that has not yet been dispatched.
sms.eventsGET /v1/sms/events/{id}Retrieve the delivery event timeline for a single SMS message.
sms.inbound.listGET /v1/sms/inbound/listList inbound (reply) SMS received on registered sender numbers, with pagination.
sms.listGET /v1/sms/listList sent SMS message records with pagination.
sms.lookupPOST /v1/sms/lookupValidate a phone number and enrich it with carrier and line-type information.
sms.otpPOST /v1/sms/otpSend a one-time passcode via SMS with gateway-managed OTP lifecycle.
sms.resendPOST /v1/sms/resend/{id}Resend an SMS, optionally retrying only the failed recipients.
sms.sendPOST /v1/sms/sendSend an SMS message to one or more recipients (idempotent).
sms.sender.deleteDELETE /v1/sms/sender/delete/{id}Delete a registered sender number.
sms.sender.getGET /v1/sms/sender/get/{id}Retrieve details of a single registered sender number.
sms.sender.listGET /v1/sms/sender/listList registered sender numbers with pagination.
sms.sender.registerPOST /v1/sms/sender/registerRegister a sender number for verification.
sms.sender.reputationGET /v1/sms/sender/reputation/{id}Query a sender number's reputation score and throttling risk.
sms.sender.verifyPOST /v1/sms/sender/verifyVerify a registered sender number with a confirmation code.
sms.signature.createPOST /v1/sms/signature/createCreate an SMS signature (required for China delivery) and submit it for review.
sms.signature.deleteDELETE /v1/sms/signature/delete/{id}Delete an SMS signature.
sms.signature.getGET /v1/sms/signature/get/{id}Retrieve a single SMS signature and its review status.
sms.signature.listGET /v1/sms/signature/listList SMS signatures with pagination.
sms.statusGET /v1/sms/status/{id}Query the delivery status of an SMS message by ID.
sms.suppressPOST /v1/sms/suppressAdd a phone number to the suppression (do-not-contact) list.
sms.suppression.checkPOST /v1/sms/suppression/checkCheck whether a phone number is suppressed before sending.
sms.suppression.deletePOST /v1/sms/suppression/deleteRemove a number from the suppression list to resume sending.
sms.suppression.gdpr_removePOST /v1/sms/suppression/gdpr_removeHard-delete a number's suppression record under GDPR, authorized by a confirmation token.
sms.suppression.listGET /v1/sms/suppression/listList suppressed phone numbers with pagination.
sms.template.createPOST /v1/sms/template/createCreate a reusable SMS template with named variables.
sms.template.deleteDELETE /v1/sms/template/delete/{id}Delete an SMS template.
sms.template.getGET /v1/sms/template/get/{id}Retrieve a single SMS template.
sms.template.listGET /v1/sms/template/listList SMS templates with pagination.
sms.usageGET /v1/sms/usageAggregate SMS usage and cost statistics over a time window.
sms.verifyPOST /v1/sms/verifyVerify a user-submitted SMS one-time passcode.

完整示例

本模块的生产级端到端范例:先一次性配置,再运行业务流程,尽量覆盖本模块的多数 API。

一次性前置(每个范例都假定已完成):

bash
# No SDK to install — every call is a plain HTTPS request.
# Get a project key by signing in at the console: Google/GitHub gives you
# $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
# POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."
bash
# 1) Auth: every call is a raw HTTPS request to the Infrai gateway carrying
#    only your project key. No SDK, no install.
#    Get your key: sign in with Google/GitHub at the console for a project key
#    + $2 free credit (email sign-in starts at $0). On 402 INSUFFICIENT_CREDIT,
#    POST /v1/account/topup and open the returned checkout_url.
export INFRAI_API_KEY="ifr_pk_proj_..."   # from the console


# 2) sms.send
curl -X POST https://api.infrai.cc/v1/sms/send \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to": "+14155550100", "body": "Your code is 123456"}'

# 3) sms.otp
curl -X POST https://api.infrai.cc/v1/sms/otp \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to": "..."}'

# 4) sms.verify
curl -X POST https://api.infrai.cc/v1/sms/verify \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to": "...", "code": "..."}'

# 5) sms.status
curl -X GET https://api.infrai.cc/v1/sms/status/ID \
  -H "Authorization: Bearer $INFRAI_API_KEY"

# 6) sms.batch.send
curl -X POST https://api.infrai.cc/v1/sms/batch/send \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"messages": []}'

# 7) sms.cancel
curl -X POST https://api.infrai.cc/v1/sms/cancel/ID \
  -H "Authorization: Bearer $INFRAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message_id": "..."}'

# 8) sms.events
curl -X GET https://api.infrai.cc/v1/sms/events/ID \
  -H "Authorization: Bearer $INFRAI_API_KEY"

# 9) sms.inbound.list
curl -X GET https://api.infrai.cc/v1/sms/inbound/list \
  -H "Authorization: Bearer $INFRAI_API_KEY"