Add a phone number
Verify your own mobile number with an SMS one-time code so Pact recognizes you by caller ID for voice auth and can send SMS fallbacks.
Adding your phone number lets Pact recognize you by caller ID when you call the voice AI, and gives
it a target for "text me" fallbacks. This is a self-service flow at Settings → My account → Phone
(/settings/phone), backed by /v1/users/me/phone. The number is your personal
tenant_users.phone_e164 — always derived from your authenticated session, never from a request
body.
Add and verify your number
- 1
Open the phone settings
Go to /settings/phone. If you have no number on file yet, you'll see the add form with a country selector and a required consent checkbox.
- 2
Give explicit consent
Check the consent box — it is not pre-checked. The exact disclosure text (and its version) is served by the backend so what you agree to is recorded verbatim. Consent is mandatory: the code won't send without it.
- 3
Receive the SMS code
Submitting calls
POST /v1/users/me/phone/start, which validates the number, records the consent intent, and sends a one-time code by SMS. - 4
Enter the code
Enter the code to call
POST /v1/users/me/phone/verify. On success your number is persisted and a durable TCPA consent record is written. The UI then shows your number masked.
E.164 format
Numbers are stored and verified in E.164 form (+, country code, national number, no spaces or
dashes) — for example +14247228627. The country selector in the UI builds this for you.
Business outcomes come back as 200, not errors
The verify and start endpoints return HTTP 200 with a discriminated
body for expected states like a wrong code or a rate limit, so the UI can
render each inline. Only an unauthenticated request (401) or a malformed body (422) is an HTTP
error.
If SMS isn't registered yet
Outbound application-to-person (A2P) SMS in the US requires 10DLC registration on the sending number.
If your tenant's registration isn't live, start returns reason: "sms_unregistered" (Twilio error
30034) and the UI shows a wait state rather than a hard failure. This is transient and self-clearing —
retry once registration completes.
Removing your number (GDPR erasure)
Deleting your number via DELETE /v1/users/me/phone is treated as a data-subject erasure, not a soft
toggle. It nulls the number and wipes the voice data derived from it (voice preferences, per-user
memory, learned patterns, proactive-call settings, and any pending OTP challenges for that number).
The consent grant itself is revoked (a revoked_at timestamp is set) rather than deleted, because
TCPA requires you keep proof that consent existed.
Your number vs. your workspace's voice line
The number you add here is your personal caller-ID identity. It is different from the inbound voice number your workspace answers on — the phone customers call to reach your voice AI. Binding a workspace inbound number (buying or re-pointing a Twilio number, wiring the webhook) is a separate, admin-level setup under the voice wizard.
Workspace number provisioning is admin/staff-assisted today
Self-serve purchase of a workspace inbound number from the wizard is still maturing. The reliable
path today is to bind a number you already own — point its Voice webhook to
https://api.pact.place/v1/voice-mcp/incoming (POST) — or have Pact staff bind it for
you. See Make your first voice call for the demo
line you can use immediately with no provisioning at all.