Products · /v1/brands

The paperwork of telecom, reduced to a POST

10DLC brands and campaigns are first-class API objects with statuses and webhooks — not support tickets and spreadsheets. Register your tenants' businesses programmatically and watch approval arrive as an event.

Brand · Ridge Plumbingvetted

Campaign · appointmentsapproved

EIN **-***6789 · encrypted

Brands as API objects

Register a tenant's legal entity with one call. EINs are encrypted at rest and always returned masked.

Campaigns with status webhooks

brand.status_changed and campaign.status_changed tell you the moment vetting or approval lands.

Send-time gating

Live messaging traffic is gated on an approved campaign, so a tenant can't accidentally send unregistered traffic.

Instant approval in test mode

Test-mode brands vet instantly and campaigns approve immediately, so your onboarding flow is testable end to end.

register-a-brand.sh
curl https://api.handset.dev/v1/brands \
  -d tenant_id="tnt_01kzv90afex…" \
  -d legal_name="Ridge Plumbing LLC" -d ein="12-3456789"
{ "id": "brd_01kzvc2…", "ein": "**-***6789", "status": "pending_vetting" }

# days later, no polling required:
→ webhook: brand.status_changed { "status": "vetted" }

Endpoints

POST/v1/brandsRegister a tenant's brand for 10DLC
GET/v1/brandsList brands and their vetting status
GET/v1/brands/{id}Retrieve one brand (EIN masked)
POST/v1/campaignsCreate a messaging campaign under a vetted brand
GET/v1/campaignsList campaigns and approval status
GET/v1/campaigns/{id}Retrieve one campaign

Ship compliance this sprint.

We're onboarding a small group of vertical SaaS platforms. Tell us what your customers need to say, and to whom.