Skip to main content
The phone primitive gives your agents a real US phone number that can send and receive SMS. Numbers are provisioned through Surge and automatically registered with the carriers (10DLC) so messages actually deliver. Inbound SMS works the moment a number is provisioned. Outbound SMS is gated by carrier approval of the messaging campaign — this happens automatically (typically 1-2 business days) and unlocks sending with no further action.

CLI First

Prerequisites

At the default standard 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: pass tier: "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 with naive 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_pendingno 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

Response (202):

Sending SMS

Receiving SMS

Inbound texts are captured automatically (Surge message.received webhook) and stored against the receiving number. List and read them:
You can also subscribe to the 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):
An agent without 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