The dashboard has a guided version of this whole flow under
Connections → VoIP (
/dashboard/voip-connections): a Telnyx
guided setup that walks account creation and API keys, a
connect-existing-account path, and a manual SIP form with an AI
setup-guide generator.Supported providers
1. Test credentials
Before you create a persisted VoIP connection, probe the provider credentials to confirm they work. This returns averification_evidence_id that you pass to the create step so the
credentials aren’t double-charged for testing.
Response
status will be fail and checks will
show which step blew up. Fix the provider-side config (trunk
assignment, IP allowlist, outbound authorization) and retry.
2. Create the connection
Pass theverification_evidence_id you just got:
status="connected". Credentials are stored server-side and never
returned in plain text by subsequent GETs — to rotate, run a fresh
test and PATCH with the new evidence.
3. List and import numbers
Inspect the numbers visible to your credentials that aren’t already in a ThunderPhone org:source="voip" and status="provisioning".
4. Verify each imported number
Importing registers the number as available; actually routing calls through it needs a round-trip verification (inbound dial-in check + outbound authorization probe).voip_verification_status flips to verified and the
number enters status="active". On failure, the response spells out
what failed — fix it (often a missing trunk assignment in the
provider dashboard) and call again.
5. Assign agents and take a call
With the number verified, you assign inbound / outbound agents the same way as a demo number. See Handle inbound calls and Place outbound calls.Rotating credentials
When a provider key rotates, re-run the test-then-update flow:Next steps
VoIP connections reference
Every field on the connection, evidence, and import responses.
Phone numbers reference
Assign agents, transfer between orgs, release numbers.
Place outbound calls
Now that you own the number, start placing outbound.