Agent Skill · Sinch

sinch-10dlc

Registers US 10DLC brands and campaigns with Sinch for A2P SMS messaging. Use when the user needs to register a brand, create a 10DLC campaign, check registration status, troubleshoot a 10DLC rejection, fix an EIN mismatch, upgrade from simplified to full registration, or qualify a campaign for US SMS sending on 10-digit long codes. Do NOT use for non-US messaging or toll-free/short code registration.

Provider: Sinch Path in repo: skills/sinch-10dlc/SKILL.md

Skill body

Sinch 10DLC Registration

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.

Agent Instructions

Before generating code, gather from the user (skip any item already specified in the prompt or context):

  1. Goal — register a brand, register a campaign, check status, or troubleshoot a rejection?
  2. Brand ID? — if the user already has one, skip to Step 3 (qualify) or Step 4 (campaign).
  3. Registration typeSIMPLIFIED (faster, lower throughput, $10) or FULL (recommended for production, $50)?
  4. Language — any language, or curl. This API is REST-only; there is no SDK wrapper. Use curl, fetch, axios, requests, or equivalent HTTP clients.

This skill covers 10DLC only. The same Registration API also includes TFN (Toll-Free Number) verification endpoints — for toll-free registration, see the API spec directly.

Refer to the API reference linked in Links for request/response schemas.

Security: See the Security section below for url fetching policy and credential handling.

Getting Started

Agent Credentials handling

Store credentials in environment variables — never hardcode tokens or keys in commands or source code:

export SINCH_PROJECT_ID="your-project-id"
export SINCH_KEY_ID="your-key-id"
export SINCH_KEY_SECRET="your-key-secret"
export SINCH_ACCESS_TOKEN="your-oauth-token"

Authentication

Ensure that authentication headers are properly set when making API calls. The 10DLC API uses Bearer token authentication:

-H "Authorization: Bearer $SINCH_ACCESS_TOKEN"

See sinch-authentication for full setup, most importantly how to obtain {SINCH_ACCESS_TOKEN} (OAuth2 client-credentials — do not mint your own JWT).

Base URL

https://us10dlc.numbers.api.sinch.com

US-only — there are no regional variants for 10DLC.

First API Call

Register a brand:

curl -X POST \
  "https://us10dlc.numbers.api.sinch.com/v1/projects/$SINCH_PROJECT_ID/brandRegistrations:submit" \
  -H "Authorization: Bearer $SINCH_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "brandRegistrationType": "FULL",
  "displayName": "Sinch Mock",
  "companyDetails": {
    "companyName": "Sinch",
    "brandName": "Sinch Mock x",
    "companyEmail": "support@sinch.com",
    "country": "US",
    "state": "GA",
    "city": "Atlanta",
    "streetAddress": " 3500 Lenox Rd NE, Ste. 1875",
    "postalCode": "94105",
    "webAddress": "https://sinch.com"
  },
  "financialDetails": {
    "brandEntityType": "PRIVATE",
    "brandVerticalType": "TECHNOLOGY",
    "taxIdCountry": "US",
    "taxIdCorporate": "770505044",
    "stockSymbol": "SINCH",
    "exchange": "STO"
  },
  "contactDetails": {
    "firstName": "Jane",
    "lastName": "Doe",
    "phoneNumber": "+14155550100",
    "email": "admin@sinch.com"
  },
  "mock": true
}'

Key Concepts

Workflow: Complete 10DLC Setup

Follow these steps in order. Each step depends on the previous one succeeding. For detailed curl examples, response schemas, enum values, and polling strategies, see references/workflow.md.

Once approved, you can send A2P SMS on US 10-digit long codes through Sinch. To send messages, see the sinch-conversation-api skill.

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

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)

Messages blocked after registration

General

Security

Skill frontmatter

metadata: {"author" => "Sinch", "version" => "1.1.4", "category" => "Numbers", "tags" => "10dlc, sms, a2p, brand-registration, campaign-registration, us-messaging, brand, campaign, tcr, registration, a2p-sms", "uses" => ["sinch-authentication"]}