CLI First
Prerequisites
At the defaultstandard tier, provisioning a number requires a completed LLC formation and the company’s EIN — numbers are carrier-registered against your business entity, and the EIN is required for the carrier (10DLC) brand registration. The full chain is:
1
Verify identity (KYC)
naive verification start — verify the company’s members.2
Form the company
naive formation submit — form the LLC (Surge registers the number against this business).3
Provision the number
naive phone provision --ein 12-3456789 — buys the number and submits the carrier campaign.The EIN is required the first time you provision (it registers the carrier brand). Provide it as 9 digits, with or without the hyphen (e.g.
12-3456789).Sole proprietors (no LLC required)
If you operate as a sole proprietor, you can skip formation entirely: passtier: "sole_proprietor" (CLI: --sole-prop) and the carrier brand is registered against the KYC-verified individual instead of a business entity.
- Requires a KYC member with status
pass(naive verification start) — no formation, no EIN. - Surge texts an SMS OTP to the member’s verified mobile number for brand identity verification; the provision response includes
"brand_verification": "pending_otp". Resend it withnaive phone resend-otp(POST /v1/phone/brand-verification/resend). - Sole-proprietor brands have lower carrier throughput than EIN-registered brands — fine for notifications and 2FA-style volumes, not bulk campaigns.
How SMS gating works
Attempting
naive phone send before the campaign is approved returns compliance_pending — no message is sent and no credit is charged. The campaign auto-activates via a Surge webhook; check progress with naive phone status.
Provisioning a number
202):
Sending SMS
Receiving SMS
Inbound texts are captured automatically (Surgemessage.received webhook) and stored against the receiving number. List and read them:
sms.received webhook event to react in real time.
Agent assignment
Like cards and email, a phone number is a company resource that agents connect to with permissions (send_sms, receive_sms):
send_sms on a number is refused with forbidden when it tries to send.
Campaign statuses
Releasing a number
Release a number back to the provider when you no longer need it — this is permanent and stops further rental billing:JavaScript
Pricing
Approval gating: provisioning a number is approval-gated by default (it spends credits and registers a carrier campaign) and can be toggled per Account Kit. Sending SMS is not approval-gated — it’s a routine action like sending email.
Error handling
See also
- Introducing /phone — primitive overview
- How agents receive 2FA codes — inbound SMS for portal login
- Build an agentic no-API operator — browser + phone for legacy portals
- Introducing /browser — governed browser sessions