sinch-10dlc

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Sinch 10DLC Registration

Sinch 10DLC 注册流程

Overview

概述

10DLC (10-Digit Long Code) is the required US registration system for Application-to-Person (A2P) SMS on standard 10-digit phone numbers. You must register a brand (the sending company) and a campaign (the messaging use case) with The Campaign Registry (TCR) via Sinch before sending any US A2P SMS.
10DLC(10位长码)是美国针对标准10位电话号码的应用到个人(A2P)短信服务的强制注册系统。在发送任何美国A2P短信之前,您必须通过Sinch向活动注册中心(TCR)注册品牌(短信发送企业)和活动(短信使用场景)。

Agent Instructions

Agent操作指引

Before writing code, determine the user's goal:
  1. What do you need? Register a brand, register a campaign, check status, or troubleshoot a rejection?
  2. Do you already have a brand ID? If yes, skip to Step 3 (qualify) or Step 4 (campaign).
  3. Registration type?
    SIMPLIFIED
    (faster, lower throughput, $10) or
    FULL
    (recommended for production, $50)?
This API is REST-only — there is no SDK wrapper. Use curl,
fetch
,
axios
,
requests
, or equivalent HTTP clients.
在编写代码前,先明确用户的目标:
  1. 您的需求是什么? 注册品牌、注册活动、查询状态,还是排查被拒绝的问题?
  2. 您是否已有品牌ID? 如果有,直接跳至步骤3(资格预审)或步骤4(活动注册)。
  3. 注册类型?
    SIMPLIFIED
    (快速注册,较低吞吐量,费用10美元)或
    FULL
    (生产环境推荐,较高吞吐量,费用50美元)?
此API仅支持REST调用——没有SDK封装。请使用curl、
fetch
axios
requests
或其他等效的HTTP客户端。

Getting Started

快速开始

Auth: HTTP Basic (
keyId:keySecret
) or OAuth2 bearer token. All examples use Basic auth. See sinch-authentication for setup.
First API call — register a brand:
bash
curl -X POST https://us10dlc.numbers.api.sinch.com/v1/projects/{PROJECT_ID}/brandRegistrations:submit \
  -u {KEY_ID}:{KEY_SECRET} \
  -H "Content-Type: application/json" \
  -d '{
    "brandRegistrationType": "FULL",
    "displayName": "Acme Corp 10DLC",
    "companyDetails": {
      "companyName": "Acme Corp",
      "brandName": "Acme",
      "companyEmail": "support@acme.com",
      "businessContactEmail": "admin@acme.com",
      "country": "US",
      "state": "CA",
      "city": "San Francisco",
      "streetAddress": "123 Main St",
      "postalCode": "94105",
      "webAddress": "https://acme.com"
    },
    "financialDetails": {
      "brandEntityType": "PRIVATE",
      "brandVerticalType": "TECHNOLOGY",
      "taxIdCountry": "US",
      "taxIdCorporate": "12-3456789",
      "stockSymbol": "",
      "exchange": ""
    },
    "contactDetails": {
      "firstName": "Jane",
      "lastName": "Doe",
      "phoneNumber": "+14155550100",
      "email": "admin@acme.com"
    }
  }'
身份验证: HTTP Basic(
keyId:keySecret
)或OAuth2 Bearer令牌。所有示例均使用Basic认证。设置方法请参考sinch-authentication
首次API调用——注册品牌:
bash
curl -X POST https://us10dlc.numbers.api.sinch.com/v1/projects/{PROJECT_ID}/brandRegistrations:submit \
  -u {KEY_ID}:{KEY_SECRET} \
  -H "Content-Type: application/json" \
  -d '{
    "brandRegistrationType": "FULL",
    "displayName": "Acme Corp 10DLC",
    "companyDetails": {
      "companyName": "Acme Corp",
      "brandName": "Acme",
      "companyEmail": "support@acme.com",
      "businessContactEmail": "admin@acme.com",
      "country": "US",
      "state": "CA",
      "city": "San Francisco",
      "streetAddress": "123 Main St",
      "postalCode": "94105",
      "webAddress": "https://acme.com"
    },
    "financialDetails": {
      "brandEntityType": "PRIVATE",
      "brandVerticalType": "TECHNOLOGY",
      "taxIdCountry": "US",
      "taxIdCorporate": "12-3456789",
      "stockSymbol": "",
      "exchange": ""
    },
    "contactDetails": {
      "firstName": "Jane",
      "lastName": "Doe",
      "phoneNumber": "+14155550100",
      "email": "admin@acme.com"
    }
  }'

Key Concepts

核心概念

Brand — The company sending messages. Must be registered first. ID starts with
B
(e.g.,
BESINCH
). Campaign — A messaging use case tied to a brand. Defines what, to whom, and why. TCR — The Campaign Registry. Sinch submits to TCR on your behalf as your CSP. Registration type (
brandRegistrationType
) —
SIMPLIFIED
(basic, lower throughput, $10) or
FULL
(complete vetting, higher throughput, $50). Default is
SIMPLIFIED
. Prefer
FULL
for production. Trust score — Assigned by TCR after vetting. Higher score = more messages per second. This is a TCR concept; the Sinch API does not return it in the brand response. Use case — The campaign's messaging purpose. Use cases are categorized as Standard or Special, with different vetting requirements and fees.
Standard Use Cases: 2FA, ACCOUNT_NOTIFICATION, CUSTOMER_CARE, DELIVERY_NOTIFICATION, FRAUD_ALERT, HIGHER_EDUCATION, MARKETING, POLLING_VOTING, PUBLIC_SERVICE_ANNOUNCEMENT, SECURITY_ALERT.
Special Use Cases: AGENTS_FRANCHISES, CARRIER_EXEMPT, CHARITY, EMERGENCY, K12_EDUCATION, POLITICAL, PROXY, SOCIAL, SWEEPSTAKE.
Mixed/Low Volume: LOW_VOLUME or MIXED can be used for campaigns that combine multiple standard use cases but have low traffic requirements. CSP — Campaign Service Provider. Sinch typically acts as your CSP, managing the registration process. It's also possible for you to register as your own CSP directly with TCR and use Sinch for number provisioning and connectivity, though this is a more advanced setup.
Brand(品牌)——发送短信的企业。必须先注册品牌,ID以
B
开头(例如
BESINCH
)。 Campaign(活动)——与品牌绑定的短信使用场景,定义短信内容、接收人群及发送原因。 TCR——活动注册中心。Sinch作为您的CSP,代表您向TCR提交注册信息。 注册类型(
brandRegistrationType
——
SIMPLIFIED
(基础版,吞吐量低,费用10美元)或
FULL
(完整版,审核严格,吞吐量高,费用50美元)。默认值为
SIMPLIFIED
,生产环境推荐使用
FULL
信任分数——TCR审核后分配的分数,分数越高,每秒可发送的短信数量越多。这是TCR的概念,Sinch API不会在品牌响应中返回该分数。 使用场景——活动的短信发送目的,分为标准场景和特殊场景,不同场景的审核要求和费用不同。
标准使用场景:2FA、ACCOUNT_NOTIFICATION(账户通知)、CUSTOMER_CARE(客户服务)、DELIVERY_NOTIFICATION(配送通知)、FRAUD_ALERT(欺诈预警)、HIGHER_EDUCATION(高等教育)、MARKETING(营销)、POLLING_VOTING(投票调研)、PUBLIC_SERVICE_ANNOUNCEMENT(公共服务公告)、SECURITY_ALERT(安全预警)。
特殊使用场景:AGENTS_FRANCHISES(代理/特许经营)、CARRIER_EXEMPT(运营商豁免)、CHARITY(慈善)、EMERGENCY(紧急情况)、K12_EDUCATION(基础教育)、POLITICAL(政治)、PROXY(代理)、SOCIAL(社交)、SWEEPSTAKE(抽奖)。
混合/低流量场景:LOW_VOLUME(低流量)或MIXED(混合场景)适用于结合多种标准使用场景但流量需求较低的活动。 CSP——活动服务提供商。Sinch通常作为您的CSP,管理注册流程。您也可以直接向TCR注册成为自己的CSP,仅使用Sinch的号码分配和连接服务,但这属于高级配置。

Workflow: Complete 10DLC Setup

完整10DLC设置流程

Follow these steps in order. Each step depends on the previous one succeeding.
请按以下顺序执行步骤,每一步都依赖上一步成功完成。

Step 1: Register the Brand

步骤1:注册品牌

Gather from the user: company name, brand name, organization type (
brandEntityType
), EIN (
taxIdCorporate
), tax ID country, address (street, city, state, postal code, country), website (
webAddress
), company email, business contact email, contact person (first name, last name, phone, email), vertical, display name, and whether this is a public company (stock exchange/symbol).
The request body uses nested objects:
companyDetails
,
financialDetails
, and
contactDetails
. See the curl example in Getting Started for the full structure.
Required enums (inside
financialDetails
):
  • brandEntityType
    (default:
    PUBLIC
    ):
    PUBLIC
    (publicly traded),
    PRIVATE
    (privately held),
    CHARITY_NON_PROFIT
    (registered nonprofit/charity)
  • brandVerticalType
    — pick the one that best matches the company's primary industry:
    • Tech/Comms:
      TECHNOLOGY
      ,
      COMMUNICATION
    • Finance/Insurance:
      FINANCIAL
      ,
      INSURANCE
    • Healthcare:
      HEALTHCARE
    • Retail/Hospitality:
      RETAIL
      ,
      HOSPITALITY
    • Professional services (legal, accounting, consulting):
      PROFESSIONAL
    • Property:
      REAL_ESTATE
      ,
      CONSTRUCTION
    • Public sector:
      GOVERNMENT
      ,
      POLITICAL
      ,
      NGO
    • Education:
      EDUCATION
    • Energy/Agriculture/Manufacturing:
      ENERGY
      ,
      AGRICULTURE
      ,
      MANUFACTURING
    • Transport/Postal:
      TRANSPORTATION
      ,
      POSTAL
    • HR/Staffing:
      HUMAN_RESOURCES
    • Media/Entertainment/Gambling:
      ENTERTAINMENT
      ,
      GAMBLING
    • Legal:
      LEGAL
    When unclear, ask the user. The vertical does not affect approval but must be accurate.
  • exchange
    : A free-form string field (not an enum). Use an empty string
    ""
    for private/nonprofit companies. For public companies, pass the exchange name (e.g.,
    "NYSE"
    ,
    "NASDAQ"
    ,
    "AMEX"
    ,
    "TSX"
    ,
    "LSE"
    ).
See Register a Brand for request/response details.
Success: Response includes
brandRegistrationId
. Save it for all subsequent steps.
向用户收集以下信息:企业名称、品牌名称、组织类型(
brandEntityType
)、雇主识别号(EIN,即
taxIdCorporate
)、税号所属国家、地址(街道、城市、州、邮政编码、国家)、官网地址(
webAddress
)、企业邮箱、业务联系人邮箱、联系人信息(姓名、电话、邮箱)、行业垂直领域、显示名称,以及是否为上市公司(股票交易所/代码)。
请求体使用嵌套对象
companyDetails
financialDetails
contactDetails
。完整结构请参考快速开始中的curl示例。
必填枚举值(位于
financialDetails
内):
  • brandEntityType
    (默认值:
    PUBLIC
    ):
    PUBLIC
    (上市公司)、
    PRIVATE
    (私有企业)、
    CHARITY_NON_PROFIT
    (注册非营利组织/慈善机构)
  • brandVerticalType
    ——选择最符合企业核心行业的选项:
    • 科技/通信:
      TECHNOLOGY
      COMMUNICATION
    • 金融/保险:
      FINANCIAL
      INSURANCE
    • 医疗健康:
      HEALTHCARE
    • 零售/ hospitality:
      RETAIL
      HOSPITALITY
    • 专业服务(法律、会计、咨询):
      PROFESSIONAL
    • 房地产/建筑:
      REAL_ESTATE
      CONSTRUCTION
    • 公共部门:
      GOVERNMENT
      POLITICAL
      NGO
    • 教育:
      EDUCATION
    • 能源/农业/制造:
      ENERGY
      AGRICULTURE
      MANUFACTURING
    • 交通/邮政:
      TRANSPORTATION
      POSTAL
    • 人力资源/招聘:
      HUMAN_RESOURCES
    • 媒体/娱乐/博彩:
      ENTERTAINMENT
      GAMBLING
    • 法律:
      LEGAL
    若不确定,请询问用户。行业垂直领域不影响审批结果,但必须准确填写。
  • exchange
    :自由格式字符串字段(非枚举值)。私有/非营利企业请填空字符串
    ""
    。上市公司请填写交易所名称(例如
    "NYSE"
    "NASDAQ"
    "AMEX"
    "TSX"
    "LSE"
    )。
请求/响应详情请参考注册品牌
成功响应: 返回内容包含
brandRegistrationId
,请保存该ID用于后续所有步骤。

Step 2: Wait for Brand Approval

步骤2:等待品牌审批

Registration is asynchronous — it takes minutes to days. There are no webhooks; you must poll.
bash
curl https://us10dlc.numbers.api.sinch.com/v1/projects/{PROJECT_ID}/brandRegistrations/{BRAND_REGISTRATION_ID} \
  -u {KEY_ID}:{KEY_SECRET}
Example response:
json
{
  "brandRegistrationId": "01JGR7TNKQ7Y3GHMAXAMPLEID",
  "brandId": "BEXAMPLE",
  "brandRegistrationStatus": "APPROVED",
  "brandRegistrationType": "FULL",
  "identityStatus": "VERIFIED",
  "displayName": "Acme Corp 10DLC",
  "companyDetails": {
    "companyName": "Acme Corp",
    "brandName": "Acme",
    "country": "US",
    "webAddress": "https://acme.com"
  },
  "financialDetails": {
    "brandEntityType": "PRIVATE",
    "brandVerticalType": "TECHNOLOGY",
    "taxIdCorporate": "12-3456789"
  },
  "contactDetails": {
    "firstName": "Jane",
    "lastName": "Doe",
    "phoneNumber": "+14155550100"
  }
}
See Check Brand Registration Status for full response details.
Decision tree:
  • Status
    APPROVED
    → proceed to Step 3
  • Status
    IN_PROGRESS
    → poll again (see polling strategy below)
  • Status
    DRAFT
    → brand was created via dashboard but not yet submitted; submit it to proceed
  • Status
    UPGRADE
    → brand is being upgraded from SIMPLIFIED to FULL; poll again until it resolves
  • Status
    REJECTED
    → check brand feedback for rejection reason, then fix and re-register
Common rejection categories:
TAX_ID
(EIN mismatch),
STOCK_SYMBOL
(stock info mismatch),
GOVERNMENT_ENTITY
,
NONPROFIT
.
Polling strategy:
  • Poll every 60 minutes — not more often. There are no rate-limit headers, but aggressive polling has no benefit since TCR review is manual.
  • SIMPLIFIED
    brands typically resolve in minutes to a few hours.
  • FULL
    brands typically resolve in 1–5 business days; some verticals (GOVERNMENT, POLITICAL) may take longer.
  • Set a maximum polling window: stop automated polling after 7 days and prompt the user to check manually or contact Sinch support.
  • If the API returns an HTTP error (5xx or timeout), use exponential backoff (wait 5 min, 10 min, 20 min, then resume hourly) rather than retrying immediately.
注册流程为异步——审批时间从几分钟到几天不等。没有Webhook通知,您必须主动轮询状态。
bash
curl https://us10dlc.numbers.api.sinch.com/v1/projects/{PROJECT_ID}/brandRegistrations/{BRAND_REGISTRATION_ID} \
  -u {KEY_ID}:{KEY_SECRET}
示例响应:
json
{
  "brandRegistrationId": "01JGR7TNKQ7Y3GHMAXAMPLEID",
  "brandId": "BEXAMPLE",
  "brandRegistrationStatus": "APPROVED",
  "brandRegistrationType": "FULL",
  "identityStatus": "VERIFIED",
  "displayName": "Acme Corp 10DLC",
  "companyDetails": {
    "companyName": "Acme Corp",
    "brandName": "Acme",
    "country": "US",
    "webAddress": "https://acme.com"
  },
  "financialDetails": {
    "brandEntityType": "PRIVATE",
    "brandVerticalType": "TECHNOLOGY",
    "taxIdCorporate": "12-3456789"
  },
  "contactDetails": {
    "firstName": "Jane",
    "lastName": "Doe",
    "phoneNumber": "+14155550100"
  }
}
完整响应详情请参考查询品牌注册状态
状态处理逻辑:
  • 状态
    APPROVED
    → 进入步骤3
  • 状态
    IN_PROGRESS
    → 继续轮询(轮询策略见下文)
  • 状态
    DRAFT
    → 品牌已通过控制台创建但未提交,需提交后继续
  • 状态
    UPGRADE
    → 品牌正在从SIMPLIFIED升级为FULL,继续轮询直至状态变更
  • 状态
    REJECTED
    → 查询品牌反馈信息了解拒绝原因,修正后重新注册
常见拒绝原因分类:
TAX_ID
(EIN不匹配)、
STOCK_SYMBOL
(股票信息不匹配)、
GOVERNMENT_ENTITY
(政府实体问题)、
NONPROFIT
(非营利组织问题)。
轮询策略:
  • 60分钟轮询一次——不要过于频繁。虽然没有速率限制头,但TCR审核为人工操作,频繁轮询没有意义。
  • SIMPLIFIED
    品牌通常在几分钟到几小时内完成审核
  • FULL
    品牌通常需要1-5个工作日完成审核;部分行业(政府、政治)可能需要更长时间
  • 设置最大轮询窗口:自动轮询7天后停止,提示用户手动检查或联系Sinch支持
  • 若API返回HTTP错误(5xx或超时),使用指数退避策略(等待5分钟、10分钟、20分钟,之后恢复每小时轮询),而非立即重试

Step 3: Qualify the Campaign (Pre-check)

步骤3:活动资格预审(预检查)

Before creating a campaign, verify requirements and estimated fees:
bash
curl "https://us10dlc.numbers.api.sinch.com/v1/projects/{PROJECT_ID}/campaignRegistrations:qualify?brandId={BRAND_ID}&useCase=MARKETING" \
  -u {KEY_ID}:{KEY_SECRET}
useCase
is optional — omit it to get qualification data for all use cases at once (useful when the user hasn't decided yet).
Check the response for
monthlyFee
,
setupFee
,
mnoMetadata
(per-carrier restrictions and throughput), and
minSubUseCases
/
maxSubUseCases
(required sub-use-case count for
MIXED
campaigns). If any carrier shows the campaign as unsupported, reconsider the use case before proceeding.
See Qualify a Campaign for full response details.
创建活动前,先验证要求和预估费用:
bash
curl "https://us10dlc.numbers.api.sinch.com/v1/projects/{PROJECT_ID}/campaignRegistrations:qualify?brandId={BRAND_ID}&useCase=MARKETING" \
  -u {KEY_ID}:{KEY_SECRET}
useCase
可选参数——若省略,将返回所有使用场景的资格预审数据(适用于用户尚未确定使用场景的情况)。
查看响应中的
monthlyFee
(月费)、
setupFee
(设置费)、
mnoMetadata
(运营商限制和吞吐量),以及
minSubUseCases
/
maxSubUseCases
(MIXED场景所需的子场景数量)。若有运营商显示该场景不支持,请重新考虑使用场景后再继续。
完整响应详情请参考活动资格预审

Step 4: Create the Campaign

步骤4:创建活动

Gather from the user: use case (
useCase
— one of the enums in Key Concepts), campaign name, description of who sends and receives, sample messages (realistic, matching use case), opt-in flow description (
messageFlow
), HELP/STOP/opt-in messages and keywords, and boolean flags. You also need the
brandId
from Step 2's response.
CRITICAL — campaigns are rejected for vague descriptions.
Bad: "We send texts to customers about their orders." Good: "Acme Corp sends order delivery notifications to customers who opted in during checkout at acme.com. Messages include tracking links and estimated delivery times."
Key points:
  • description
    and
    messageFlow
    each have a 40-character minimum — be specific and detailed
  • sample1
    sample3
    are required (separate string fields, not an array);
    sample4
    is optional
  • affiliateMarketing
    has no default — must be explicitly set to
    true
    or
    false
  • All keyword fields (
    optinKeywords
    ,
    optoutKeywords
    ,
    helpKeywords
    ) are comma-separated with no spaces
For the full field reference, constraints, and a complete curl example, see Campaign Registration Fields. For the raw API schema, see Create a Campaign (API reference).
Success: Response includes
campaignRegistrationId
(Sinch ULID format — not the TCR campaign ID, which is assigned after TCR approval).
向用户收集以下信息:使用场景(
useCase
——核心概念中列出的枚举值之一)、活动名称、短信发送方和接收方说明、示例短信内容(需符合使用场景)、 opt-in流程说明(
messageFlow
)、HELP/STOP/opt-in短信内容及关键词,以及布尔标志。您还需要步骤2中获取的
brandId
重要提示——活动描述模糊会导致被拒绝。
错误示例: "我们向客户发送订单相关短信。" 正确示例: "Acme Corp向在acme.com结账时选择opt-in的客户发送订单配送通知,短信包含跟踪链接和预计送达时间。"
关键点:
  • description
    messageFlow
    的最小长度为40个字符——请填写具体详细的内容
  • sample1
    sample3
    为必填项(独立字符串字段,非数组);
    sample4
    为可选项
  • affiliateMarketing
    无默认值——必须显式设置为
    true
    false
  • 所有关键词字段(
    optinKeywords
    optoutKeywords
    helpKeywords
    )使用逗号分隔,无空格
完整字段参考、约束条件及curl示例请参考活动注册字段。API原始架构请参考创建活动(API参考)
成功响应: 返回内容包含
campaignRegistrationId
(Sinch ULID格式——并非TCR活动ID,TCR活动ID在TCR审批后分配)。

Step 5: Upload Supporting Documents (if required)

步骤5:上传支持文档(如有需要)

Set
attachments: true
when creating the campaign (Step 4) to delay submission until documents are uploaded.
  • Endpoint:
    POST /v1/projects/{projectId}/uploadCampaignFiles:submit
  • Required fields:
    campaignInternalId
    (the
    campaignRegistrationId
    from Step 4),
    submitCampaign
    (boolean)
  • File object:
    fileName
    ,
    fileContent
    (base64-encoded),
    fileCategory
    (integer enum: 1=PRIVACY_POLICY, 2=TERMS_AND_CONDITIONS, 3=CALL_TO_ACTION, 4=OPT_IN, 5=MMS)
  • Limits: max 10MB per file, max 5 files per category
  • Workflow: set
    submitCampaign: false
    for all but the last file, then
    submitCampaign: true
    on the final upload to submit the campaign
See Upload Supporting Documents for request/response details.
在步骤4创建活动时设置
attachments: true
,可延迟提交活动直至文档上传完成。
  • 接口地址:
    POST /v1/projects/{projectId}/uploadCampaignFiles:submit
  • 必填字段:
    campaignInternalId
    (步骤4中获取的
    campaignRegistrationId
    )、
    submitCampaign
    (布尔值)
  • 文件对象:
    fileName
    fileContent
    (base64编码)、
    fileCategory
    (整数枚举:1=隐私政策, 2=服务条款, 3=行动号召, 4=Opt-in流程, 5=MMS相关)
  • 限制: 单文件最大10MB,每个分类最多5个文件
  • 流程: 除最后一个文件外,其余文件上传时设置
    submitCampaign: false
    ,最后一个文件上传时设置
    submitCampaign: true
    以提交活动
请求/响应详情请参考上传支持文档

Step 6: Wait for Campaign Approval

步骤6:等待活动审批

Same async pattern as brand: poll and wait. No webhooks.
See Check Campaign Status for request/response details.
Campaign status flow:
SINCH_REVIEW
SINCH_APPROVED
SUBMITTED
APPROVED
/
ACTIVE
(or
SINCH_REJECTED
/
REJECTED
/
SUBMISSION_FAILED
at various stages).
Polling strategy:
  • Poll every 60 minutes.
  • Campaigns typically take 1–7 business days to reach a final status (Sinch internal review + TCR review).
  • Stop automated polling after 14 days and advise the user to contact Sinch support.
  • On API errors, apply exponential backoff as described in Step 2.
Once approved, you can send A2P SMS on US 10-digit long codes through Sinch. To send messages, see the sinch-conversation-api skill.
与品牌审批相同,采用异步模式——轮询等待,无Webhook通知。
请求/响应详情请参考查询活动状态
活动状态流转:
SINCH_REVIEW
(Sinch内部审核)→
SINCH_APPROVED
(Sinch审核通过)→
SUBMITTED
(已提交至TCR)→
APPROVED
/
ACTIVE
(已通过)(或在各个阶段出现
SINCH_REJECTED
/
REJECTED
/
SUBMISSION_FAILED
)。
轮询策略:
  • 60分钟轮询一次
  • 活动通常需要1-7个工作日才能达到最终状态(Sinch内部审核 + TCR审核)
  • 自动轮询14天后停止,建议用户联系Sinch支持
  • 若API返回错误,采用步骤2中描述的指数退避策略
活动通过后,您即可通过Sinch发送美国10位长码的A2P短信。短信发送方法请参考sinch-conversation-api技能文档。

Common Patterns

常见操作

Gotchas and Best Practices

常见问题与最佳实践

Brand rejected

品牌被拒绝

  1. Fetch brand feedback (see Step 2 above)
  2. Common fixes: correct EIN format (
    XX-XXXXXXX
    ), match company name to IRS records exactly, fix stock symbol if public
  3. Re-register with corrected data
  1. 获取品牌反馈信息(参考步骤2)
  2. 常见修复方法:修正EIN格式(
    XX-XXXXXXX
    )、确保企业名称与IRS记录完全一致、修正上市公司股票代码
  3. 使用修正后的数据重新注册品牌

Campaign rejected

活动被拒绝

  1. Fetch campaign feedback via Campaign Registration Feedback — includes TCR errors and internal errors
  2. Fix the issue — the most common causes and their fixes are described in Step 4's CRITICAL block
  3. Create a new campaign with corrected data (campaigns cannot be edited after submission)
  1. 通过活动注册反馈获取反馈信息——包含TCR错误和内部错误
  2. 修复问题——最常见的原因及修复方法请参考步骤4中的重要提示部分
  3. 使用修正后的数据创建新活动(活动提交后无法编辑)

Messages blocked after registration

注册成功后短信被拦截

  • Verify campaign status is
    APPROVED
    (not just brand)
  • Check throughput limits — brand trust score (assigned by TCR, not returned by Sinch API) affects messages per second
  • Ensure the sending number is associated with the approved campaign
  • 验证活动状态为
    APPROVED
    (仅品牌通过是不够的)
  • 检查吞吐量限制——品牌信任分数(TCR分配,Sinch API不返回)会影响每秒短信发送量
  • 确保发送号码已关联到已通过审批的活动

General

通用最佳实践

  • Always use
    FULL
    registration type for production — it yields higher trust scores and throughput than
    SIMPLIFIED
    .
  • Use
    campaignRegistrations:qualify
    before submitting a campaign to check requirements and fees upfront.
  • Poll registration status hourly — there are no webhooks for state transitions.
  • Match company name and
    taxIdCorporate
    (EIN) to IRS records exactly to avoid brand rejection.
  • If a campaign is rejected, the safest and most common approach is to create a new one with corrected data.
  • Brands and campaigns can also be registered via the Sinch Build Dashboard UI.
  • This API is REST-only (no SDK). Use direct HTTP calls.
  • 生产环境始终使用
    FULL
    注册类型——相比
    SIMPLIFIED
    ,它能获得更高的信任分数和吞吐量
  • 提交活动前使用
    campaignRegistrations:qualify
    检查要求和费用
  • 每小时轮询一次注册状态——状态变更没有Webhook通知
  • 确保企业名称和
    taxIdCorporate
    (EIN)与IRS记录完全一致,避免品牌被拒绝
  • 若活动被拒绝,最安全且最常用的方法是创建新活动并提交修正后的数据
  • 品牌和活动也可通过Sinch Build Dashboard控制台进行注册
  • 此API仅支持REST调用(无SDK),请使用直接HTTP调用

Links

相关链接

Note: The same Registration API also includes TFN (Toll-Free Number) verification endpoints. This skill covers 10DLC only. For toll-free registration, see the API spec directly.
注意: 此注册API还包含TFN(免费号码)验证接口。本技能仅覆盖10DLC相关内容。免费号码注册请直接参考API规范。