Skip to content

SMS

SMS sending, OTP and verification, and delivery status.

Overview

Base path: https://api.infrai.cc/v1/sms
Auth header: 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"

Methods

sms.send

POST /v1/sms/send

Send an SMS message; supports templates and BYOK vendors.

Parameters

NameTypeRequiredDescription
tostring
Required
Recipient phone number in E.164.
bodystringOptionalMessage text.
fromstringOptionalSender id or number.
template_idstringOptionalTemplate id to render instead of a body.
vendorstringOptionalPin a specific vendor instead of auto-routing.
idempotency_keystringOptionalOptional dedup key; identical retries return the same result.

Returns

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

Example

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

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

Send a one-time passcode to a phone number.

Parameters

NameTypeRequiredDescription
tostring
Required
Recipient phone number in E.164.

Returns

{ request_id, expires_at }

Example

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

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

Verify a one-time passcode.

Parameters

NameTypeRequiredDescription
tostring
Required
Recipient phone number in E.164.
codestring
Required
The one-time passcode to verify.

Returns

{ valid: boolean }

Example

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

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}

Fetch the delivery status of an SMS.

Parameters

NameTypeRequiredDescription
idstring
Required
The SMS record id.

Returns

SmsRecord

Example

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

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

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

Parameters

NameTypeRequiredDescription
messagesSmsSendRequest[]
Required
短信请求数组,最多 100 条,每条为完整的发送请求。
idempotency_keystringOptional整批共用的去重键;相同重试返回相同结果。

Returns

SmsBatchSendResult { results: SmsSendResult[] }

Example

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

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}

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

Parameters

NameTypeRequiredDescription
idstring
Required
要取消的短信消息 ID。

Returns

SmsCancelResult { message_id, cancelled, state }

Example

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

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}

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

Parameters

NameTypeRequiredDescription
idstring
Required
短信消息 ID。
cursorstringOptional分页游标,从上一页的 next_cursor 取得。
limitnumberOptional单页返回的最大条数。

Returns

SmsEventList { items: SmsEvent[], next_cursor }

Example

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

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

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

Parameters

NameTypeRequiredDescription
cursorstringOptional分页游标,从上一页的 next_cursor 取得。
limitnumberOptional单页返回的最大条数。

Returns

SmsListResult { items, next_cursor }

Example

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

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

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

Parameters

NameTypeRequiredDescription
cursorstringOptional分页游标,从上一页的 next_cursor 取得。
limitnumberOptional单页返回的最大条数。

Returns

SmsListResult { items, next_cursor }

Example

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

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

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

Parameters

NameTypeRequiredDescription
phonestring
Required
要查询的电话号码(E.164 格式)。
fieldsstring[]Optional需返回的补充字段列表,如 carrier、line_type。

Returns

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

Example

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

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}

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

Parameters

NameTypeRequiredDescription
message_idstring
Required
要重发的原短信消息 ID。
only_failedbooleanOptional为 true 时仅重试投递失败的收件人。
idempotency_keystringOptional去重键;相同重试返回相同结果。

Returns

SmsBatchSendResult { results }

Example

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

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

注册发送号码以供验证。

Parameters

NameTypeRequiredDescription
phone_numberstring
Required
要注册的发送号码(E.164 格式)。
regionstring
Required
发送号码所属区域,如 western、china。
methodsstring[]Optional可用的验证方式列表。
idempotency_keystringOptional去重键;相同重试返回相同结果。

Returns

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

Example

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

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

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

Parameters

NameTypeRequiredDescription
sender_idstring
Required
待验证的发送号 ID。
codestringOptional收到的验证码。
idempotency_keystringOptional去重键;相同重试返回相同结果。

Returns

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

Example

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

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}

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

Parameters

NameTypeRequiredDescription
idstring
Required
发送号 ID。

Returns

SenderVerification

Example

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

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

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

Parameters

NameTypeRequiredDescription
cursorstringOptional分页游标,从上一页的 next_cursor 取得。
limitnumberOptional单页返回的最大条数。

Returns

SmsSenderListResult { items, next_cursor }

Example

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

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}

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

Parameters

NameTypeRequiredDescription
idstring
Required
要删除的发送号 ID。
idempotency_keystringOptional去重键;相同重试返回相同结果。

Returns

SmsDeleteResult { deleted }

Example

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

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}

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

Parameters

NameTypeRequiredDescription
idstring
Required
发送号 ID。

Returns

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

Example

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

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

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

Parameters

NameTypeRequiredDescription
namestring
Required
签名内容文本。
typestringOptional签名类型,如 enterprise、individual。
proof_urlstringOptional资质证明文件的 URL。
remarkstringOptional提交审核时的备注说明。
vendorstringOptionalPin a specific vendor instead of auto-routing.

Returns

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

Example

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

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}

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

Parameters

NameTypeRequiredDescription
idstring
Required
签名 ID。

Returns

SmsSignature

Example

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

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

分页列出短信签名。

Parameters

NameTypeRequiredDescription
cursorstringOptional分页游标,从上一页的 next_cursor 取得。
limitnumberOptional单页返回的最大条数。

Returns

SmsSignatureListResult { items, next_cursor }

Example

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

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}

删除一个短信签名。

Parameters

NameTypeRequiredDescription
idstring
Required
要删除的签名 ID。
idempotency_keystringOptional去重键;相同重试返回相同结果。

Returns

SmsDeleteResult { deleted }

Example

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

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

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

Parameters

NameTypeRequiredDescription
namestring
Required
模板名称。
bodystring
Required
模板正文,可含 {变量} 占位符。
localestringOptional模板语言区域,如 en、zh。
variablesstring[]Optional模板中使用的变量名列表。
vendorstringOptionalPin a specific vendor instead of auto-routing.

Returns

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

Example

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

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}

读取单个短信模板。

Parameters

NameTypeRequiredDescription
idstring
Required
模板 ID。

Returns

SmsTemplate

Example

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

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

分页列出短信模板。

Parameters

NameTypeRequiredDescription
cursorstringOptional分页游标,从上一页的 next_cursor 取得。
limitnumberOptional单页返回的最大条数。

Returns

SmsTemplateListResult { items, next_cursor }

Example

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

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}

删除一个短信模板。

Parameters

NameTypeRequiredDescription
idstring
Required
要删除的模板 ID。
idempotency_keystringOptional去重键;相同重试返回相同结果。

Returns

SmsDeleteResult { deleted }

Example

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

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

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

Parameters

NameTypeRequiredDescription
phonestring
Required
要抑制的电话号码(E.164 格式)。
reasonstringOptional抑制原因,如 opt_out、complaint。
scopestringOptional抑制范围,如 account、global。
sender_scopestringOptional限定到某发送号的抑制范围。
notesstringOptional内部备注说明。
idempotency_keystringOptional去重键;相同重试返回相同结果。

Returns

SuppressionRecord { phone, scope, reason, created_at }

Example

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

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

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

Parameters

NameTypeRequiredDescription
phonestring
Required
要检查的电话号码(E.164 格式)。
scopestringOptional检查的抑制范围,如 account、global。
sender_scopestringOptional限定到某发送号的检查范围。

Returns

SmsSuppressionCheckResult { suppressed, record }

Example

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

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

分页列出被抑制的号码。

Parameters

NameTypeRequiredDescription
cursorstringOptional分页游标,从上一页的 next_cursor 取得。
limitnumberOptional单页返回的最大条数。

Returns

SmsSuppressionListResult { items, total_count, next_cursor }

Example

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

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

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

Parameters

NameTypeRequiredDescription
phonestring
Required
要移除的电话号码(E.164 格式)。
scopestringOptional移除的抑制范围,如 account、global。
sender_scopestringOptional限定到某发送号的移除范围。
idempotency_keystringOptional去重键;相同重试返回相同结果。

Returns

SmsSuppressionRemoveResult { phone, removed }

Example

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

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 删除:凭确认令牌硬删除某号码的抑制数据。

Parameters

NameTypeRequiredDescription
phonestring
Required
要执行 GDPR 删除的电话号码(E.164 格式)。
confirmation_tokenstring
Required
执行硬删除所需的确认令牌。
idempotency_keystringOptional去重键;相同重试返回相同结果。

Returns

SmsSuppressionRemoveResult { phone, removed }

Example

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

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

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

Parameters

NameTypeRequiredDescription
sincestringOptional统计起始时间(ISO 8601)。
untilstringOptional统计结束时间(ISO 8601)。
vendorstringOptionalPin a specific vendor instead of auto-routing.
bucketstringOptional聚合粒度,如 day、hour。

Returns

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

Example

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

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"

All capabilities

Every routed capability in this module — the complete public REST contract. The methods above are the guided walkthrough; this index is the full reference.

CapabilityEndpointDescription
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.

End-to-end example

A production-style walkthrough of this module: configure once, then run the flow. It exercises most of the module's APIs.

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

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"