Loading...
Loading...
Migrate from Twilio to Telnyx. Covers voice (TwiML to TeXML with full verb reference), messaging, WebRTC, number porting via FastPort, and Verify. Includes product mapping, migration scripts, and key differences in auth, webhooks, and payload format.
npx skill4agent add team-telnyx/telnyx-ext-agent-skills telnyx-twilio-migrationStandalone skill: This skill is fully self-contained. For deeper SDK-specific code examples after migration, install the relevant language plugin (,telnyx-python,telnyx-javascript,telnyx-go, ortelnyx-java). For client-side WebRTC, installtelnyx-ruby.telnyx-webrtc-client
bash {baseDir}/scripts/preflight-check.shTELNYX_API_KEY| Twilio Product | Telnyx Equivalent | Migration Path |
|---|---|---|
| Programmable Voice (TwiML) | TeXML | Near drop-in XML compatibility |
| Programmable Voice (REST) | Call Control API | Event-driven, WebSocket-based |
| Programmable Messaging | Messaging API | New SDK integration |
| Elastic SIP Trunking | SIP Trunking | Direct replacement |
| Voice SDK (WebRTC) | WebRTC SDKs (JS, iOS, Android, Flutter, RN) | Concept remapping |
| Phone Numbers | Number Management | FastPort for same-day porting |
| Twilio Verify | Verify API | Different API surface, same functionality |
| Twilio Lookup | Number Lookup | Direct replacement |
| Twilio Video (retired Dec 2024) | Video Rooms API | Telnyx still supports video |
| Twilio Fax (deprecated) | Programmable Fax | Telnyx still supports fax |
| Super SIM / IoT | IoT SIM Cards | 650+ networks, 180+ countries |
{baseDir}/references/product-mapping.md# Twilio
curl -u "$TWILIO_ACCOUNT_SID:$TWILIO_AUTH_TOKEN" \
https://api.twilio.com/2010-04-01/Accounts/$TWILIO_ACCOUNT_SID/Messages.json
# Telnyx
curl -H "Authorization: Bearer $TELNYX_API_KEY" \
https://api.telnyx.com/v2/messagesimport telnyx
# Set your public key for webhook validation
telnyx.public_key = "YOUR_TELNYX_PUBLIC_KEY"
# In your webhook handler:
from telnyx.webhook import WebhookSignatureVerifier
signature = request.headers.get("telnyx-signature-ed25519")
timestamp = request.headers.get("telnyx-timestamp")
WebhookSignatureVerifier.verify(request.body, signature, timestamp)const telnyx = require('telnyx')('YOUR_API_KEY');
telnyx.webhooks.signature.verifySignature(
payload,
request.headers['telnyx-signature-ed25519'],
request.headers['telnyx-timestamp'],
PUBLIC_KEY
);data// Twilio webhook payload
{ "MessageSid": "SM...", "From": "+1555...", "Body": "Hello" }
// Telnyx webhook payload
{
"data": {
"event_type": "message.received",
"payload": {
"id": "...",
"from": { "phone_number": "+1555..." },
"text": "Hello"
}
}
}channels="single"recordingChannels="single"bash {baseDir}/scripts/validate-texml.sh /path/to/your/twiml.xml{baseDir}/references/voice-migration.md{baseDir}/references/texml-verbs.md<Say><Play><Gather><Dial><Record><Hangup><Pause><Redirect><Reject><Refer><Enqueue><Leave><Start><Stop><Connect><Transcription><Suppression><Siprec><Gather><Say><Pay>{baseDir}/references/messaging-migration.md# Twilio
from twilio.rest import Client
client = Client(account_sid, auth_token)
message = client.messages.create(to="+1555...", from_="+1666...", body="Hello")
# Telnyx
import telnyx
telnyx.api_key = "YOUR_API_KEY"
message = telnyx.Message.create(to="+1555...", from_="+1666...", text="Hello"){baseDir}/references/webrtc-migration.mdEnhanced coverage: Install theplugin for platform-specific implementation guides (JavaScript, iOS, Android, Flutter, React Native).telnyx-webrtc-client
{baseDir}/references/number-porting.md{baseDir}/references/verify-migration.mdbash {baseDir}/scripts/validate-texml.sh /path/to/file.xmlbash {baseDir}/scripts/preflight-check.shTELNYX_API_KEYapi.telnyx.com| Migration Area | Related Skills | What They Cover |
|---|---|---|
| Voice (Call Control) | | dial (with |
| Voice (Advanced) | | |
| Voice (Conferencing) | | conference create (with |
| Voice (Gather/IVR) | | DTMF gathering, AI gather, gather using speak/audio — with webhook payload schemas for |
| Voice (Media) | | play audio, start/stop recording, streaming — with optional params for recording format, channels, track |
| Voice (TeXML REST) | | TeXML API CRUD (JS only — other langs use Call Control) |
| WebRTC (Backend) | | telephony credential create/token, SIP connection setup |
| WebRTC (Client) | | platform SDKs (JS, iOS, Android, Flutter, React Native) — custom SIP headers, push notifications |
| SIP / Trunking | | outbound voice profiles (with |
| Messaging | | send/receive SMS/MMS with optional params and webhook payload schemas |
| Numbers | | number management, porting |
| Verify | | verification API (SMS, voice, flash calling) |
telnyx-pythontelnyx-javascripttelnyx-gotelnyx-javatelnyx-ruby