Guides

Reputation & 10DLC

Monitor caller ID reputation, register 10DLC brands, and manage STIR/SHAKEN attestation.

At high volume, carriers flag numbers as spam. Reputation monitoring catches flags early and initiates remediation before numbers are blocked. This guide covers the full lifecycle — registration, monitoring, remediation, attestation, and 10DLC compliance.

Why Reputation Matters

A single flagged DID can tank your campaign connect rates. Carriers and blocking apps (Hiya, First Orion, TNS) maintain independent databases. A number marked as spam on one network may still work on others — but degradation spreads fast.

Proactive monitoring lets you pull flagged DIDs from rotation before they poison your metrics.

Three External Services

ServicePurposeCost
Free Caller RegistryRegister DIDs with First Orion, Hiya, TNS (400M+ subscribers)Free
Caller ID ReputationMonitor across carriers + blocking apps, remediation workflowsEnterprise
STIR/SHAKENCryptographic call authentication, A-attestationIncluded via carrier

Registration

Register DIDs with caller ID databases so your business name displays on recipient phones.

Auto-register on purchase

New DIDs are automatically registered when purchased through Trunx. For existing DIDs, use bulk registration.

Bulk register

curl -X POST https://api.trunx.io/reputation/register \
  -H "Authorization: Bearer $TRUNX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "numbers": ["+14155551234", "+14155555678", "+14155559012"]
  }'

Check registration status

curl https://api.trunx.io/reputation/register/status \
  -H "Authorization: Bearer $TRUNX_API_KEY"

Monitoring

Single number check

Get a full report: carrier flags, blocking app status, and attestation level.

curl https://api.trunx.io/reputation/check/+14155551234 \
  -H "Authorization: Bearer $TRUNX_API_KEY"

Bulk check

curl -X POST https://api.trunx.io/reputation/check/bulk \
  -H "Authorization: Bearer $TRUNX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "numbers": ["+14155551234", "+14155555678"]
  }'

Pool-wide report

curl https://api.trunx.io/reputation/report \
  -H "Authorization: Bearer $TRUNX_API_KEY"

Track how your pool's reputation changes over time.

curl https://api.trunx.io/reputation/report/trends \
  -H "Authorization: Bearer $TRUNX_API_KEY"

Remediation

When a DID gets flagged, initiate removal with the carrier or blocking app.

Remediate a single number

curl -X POST https://api.trunx.io/reputation/remediate/+14155551234 \
  -H "Authorization: Bearer $TRUNX_API_KEY"

Check remediation status

curl https://api.trunx.io/reputation/remediate/+14155551234 \
  -H "Authorization: Bearer $TRUNX_API_KEY"

Bulk remediation

curl -X POST https://api.trunx.io/reputation/remediate/bulk \
  -H "Authorization: Bearer $TRUNX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "numbers": ["+14155551234", "+14155555678"]
  }'

STIR/SHAKEN

STIR/SHAKEN is a cryptographic framework that verifies the caller actually owns the number they're calling from.

Check trunk attestation

curl https://api.trunx.io/reputation/attestation \
  -H "Authorization: Bearer $TRUNX_API_KEY"

Check per-DID attestation

curl https://api.trunx.io/reputation/attestation/+14155551234 \
  -H "Authorization: Bearer $TRUNX_API_KEY"

Attestation levels:

LevelMeaning
AFull — caller owns this number. Highest trust.
BPartial — caller is authorized but doesn't own the number
CGateway — call originated from a gateway, no verified relationship

A-attestation means "this caller owns this number." Carriers trust A-attested calls. If calls are downgraded to B or C, investigate immediately — this usually indicates a trunk configuration issue or carrier-side problem.

10DLC Registration

10DLC (10-Digit Long Code) registration is required for sending SMS at volume. Without it, carriers throttle or block your messages.

Register your brand

Submit your business details for carrier verification.

curl -X POST https://api.trunx.io/reputation/10dlc/brand \
  -H "Authorization: Bearer $TRUNX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "company_name": "Acme Plumbing",
    "ein": "12-3456789",
    "website": "https://acmeplumbing.com",
    "vertical": "home_services",
    "country": "US"
  }'

Vet the brand

Submit for third-party verification. This improves your throughput limits.

curl -X POST https://api.trunx.io/reputation/10dlc/brand/brand_abc123/vet \
  -H "Authorization: Bearer $TRUNX_API_KEY"

Create a campaign

Define your SMS use case. Carriers review this to set throughput limits.

curl -X POST https://api.trunx.io/reputation/10dlc/campaign \
  -H "Authorization: Bearer $TRUNX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "brand_id": "brand_abc123",
    "use_case": "appointment_reminders",
    "description": "Appointment confirmation and reminder messages for scheduled service visits",
    "sample_messages": [
      "Hi {{name}}, your plumbing appointment is confirmed for tomorrow at {{time}}. Reply STOP to opt out.",
      "Reminder: Your Acme Plumbing visit is in 1 hour. Reply HELP for support."
    ]
  }'

Assign DIDs to the campaign

Bind phone numbers to your 10DLC campaign so SMS from those numbers is recognized.

curl -X POST https://api.trunx.io/reputation/10dlc/campaign/camp_xyz789/numbers \
  -H "Authorization: Bearer $TRUNX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "numbers": ["+14155551234", "+14155555678"]
  }'

Automated Workflows

Trunx runs these reputation workflows automatically:

TriggerAction
DID purchasedAuto-register + verify attestation + set to warming
Weekly audit (REPUTATION_AUDIT_CRON)Bulk check all DIDs, auto-remediate flagged ones
DID burned eventConfirm external flag, initiate remediation, pull from rotation

Configure the weekly audit schedule with the REPUTATION_AUDIT_CRON environment variable. Default is daily at 6 AM UTC.

On this page