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
| Service | Purpose | Cost |
|---|---|---|
| Free Caller Registry | Register DIDs with First Orion, Hiya, TNS (400M+ subscribers) | Free |
| Caller ID Reputation | Monitor across carriers + blocking apps, remediation workflows | Enterprise |
| STIR/SHAKEN | Cryptographic call authentication, A-attestation | Included 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"Flag rate trends
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:
| Level | Meaning |
|---|---|
| A | Full — caller owns this number. Highest trust. |
| B | Partial — caller is authorized but doesn't own the number |
| C | Gateway — 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:
| Trigger | Action |
|---|---|
| DID purchased | Auto-register + verify attestation + set to warming |
Weekly audit (REPUTATION_AUDIT_CRON) | Bulk check all DIDs, auto-remediate flagged ones |
| DID burned event | Confirm 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.