api/go/telnyx-texml-go/SKILL.md
Build voice applications using TeXML markup language (TwiML-compatible). Manage applications, calls, conferences, recordings, queues, and streams. This skill provides Go SDK examples.
npx skillsauth add team-telnyx/telnyx-toolkit telnyx-texml-goInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
go get github.com/team-telnyx/telnyx-go
import (
"context"
"fmt"
"os"
"github.com/team-telnyx/telnyx-go"
"github.com/team-telnyx/telnyx-go/option"
)
client := telnyx.NewClient(
option.WithAPIKey(os.Getenv("TELNYX_API_KEY")),
)
All examples below assume client is already initialized as shown above.
Returns a list of your TeXML Applications.
GET /texml_applications
page, err := client.TexmlApplications.List(context.TODO(), telnyx.TexmlApplicationListParams{})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", page)
Creates a TeXML Application.
POST /texml_applications — Required: friendly_name, voice_url
texmlApplication, err := client.TexmlApplications.New(context.TODO(), telnyx.TexmlApplicationNewParams{
FriendlyName: "call-router",
VoiceURL: "https://example.com",
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", texmlApplication.Data)
Retrieves the details of an existing TeXML Application.
GET /texml_applications/{id}
texmlApplication, err := client.TexmlApplications.Get(context.TODO(), "1293384261075731499")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", texmlApplication.Data)
Updates settings of an existing TeXML Application.
PATCH /texml_applications/{id} — Required: friendly_name, voice_url
texmlApplication, err := client.TexmlApplications.Update(
context.TODO(),
"1293384261075731499",
telnyx.TexmlApplicationUpdateParams{
FriendlyName: "call-router",
VoiceURL: "https://example.com",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", texmlApplication.Data)
Deletes a TeXML Application.
DELETE /texml_applications/{id}
texmlApplication, err := client.TexmlApplications.Delete(context.TODO(), "1293384261075731499")
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", texmlApplication.Data)
Returns multiple call resources for an account.
GET /texml/Accounts/{account_sid}/Calls
response, err := client.Texml.Accounts.Calls.GetCalls(
context.TODO(),
"account_sid",
telnyx.TexmlAccountCallGetCallsParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Calls)
Initiate an outbound TeXML call.
POST /texml/Accounts/{account_sid}/Calls — Required: To, From, ApplicationSid
response, err := client.Texml.Accounts.Calls.Calls(
context.TODO(),
"account_sid",
telnyx.TexmlAccountCallCallsParams{
ApplicationSid: "example-app-sid",
From: "+13120001234",
To: "+13121230000",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.From)
Returns an individual call identified by its CallSid.
GET /texml/Accounts/{account_sid}/Calls/{call_sid}
call, err := client.Texml.Accounts.Calls.Get(
context.TODO(),
"call_sid",
telnyx.TexmlAccountCallGetParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", call.AccountSid)
Update TeXML call.
POST /texml/Accounts/{account_sid}/Calls/{call_sid}
call, err := client.Texml.Accounts.Calls.Update(
context.TODO(),
"call_sid",
telnyx.TexmlAccountCallUpdateParams{
AccountSid: "account_sid",
UpdateCall: telnyx.UpdateCallParam{},
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", call.AccountSid)
Lists conference participants
GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants
response, err := client.Texml.Accounts.Conferences.Participants.GetParticipants(
context.TODO(),
"conference_sid",
telnyx.TexmlAccountConferenceParticipantGetParticipantsParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.End)
Dials a new conference participant
POST /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants
response, err := client.Texml.Accounts.Conferences.Participants.Participants(
context.TODO(),
"conference_sid",
telnyx.TexmlAccountConferenceParticipantParticipantsParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.AccountSid)
Gets conference participant resource
GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label}
participant, err := client.Texml.Accounts.Conferences.Participants.Get(
context.TODO(),
"call_sid_or_participant_label",
telnyx.TexmlAccountConferenceParticipantGetParams{
AccountSid: "account_sid",
ConferenceSid: "conference_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", participant.AccountSid)
Updates a conference participant
POST /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label}
participant, err := client.Texml.Accounts.Conferences.Participants.Update(
context.TODO(),
"call_sid_or_participant_label",
telnyx.TexmlAccountConferenceParticipantUpdateParams{
AccountSid: "account_sid",
ConferenceSid: "conference_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", participant.AccountSid)
Deletes a conference participant
DELETE /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Participants/{call_sid_or_participant_label}
err := client.Texml.Accounts.Conferences.Participants.Delete(
context.TODO(),
"call_sid_or_participant_label",
telnyx.TexmlAccountConferenceParticipantDeleteParams{
AccountSid: "account_sid",
ConferenceSid: "conference_sid",
},
)
if err != nil {
panic(err.Error())
}
Lists conference resources.
GET /texml/Accounts/{account_sid}/Conferences
response, err := client.Texml.Accounts.Conferences.GetConferences(
context.TODO(),
"account_sid",
telnyx.TexmlAccountConferenceGetConferencesParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Conferences)
Returns a conference resource.
GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}
conference, err := client.Texml.Accounts.Conferences.Get(
context.TODO(),
"conference_sid",
telnyx.TexmlAccountConferenceGetParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", conference.AccountSid)
Updates a conference resource.
POST /texml/Accounts/{account_sid}/Conferences/{conference_sid}
conference, err := client.Texml.Accounts.Conferences.Update(
context.TODO(),
"conference_sid",
telnyx.TexmlAccountConferenceUpdateParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", conference.AccountSid)
Lists queue resources.
GET /texml/Accounts/{account_sid}/Queues
page, err := client.Texml.Accounts.Queues.List(
context.TODO(),
"account_sid",
telnyx.TexmlAccountQueueListParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", page)
Creates a new queue resource.
POST /texml/Accounts/{account_sid}/Queues
queue, err := client.Texml.Accounts.Queues.New(
context.TODO(),
"account_sid",
telnyx.TexmlAccountQueueNewParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", queue.AccountSid)
Returns a queue resource.
GET /texml/Accounts/{account_sid}/Queues/{queue_sid}
queue, err := client.Texml.Accounts.Queues.Get(
context.TODO(),
"queue_sid",
telnyx.TexmlAccountQueueGetParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", queue.AccountSid)
Updates a queue resource.
POST /texml/Accounts/{account_sid}/Queues/{queue_sid}
queue, err := client.Texml.Accounts.Queues.Update(
context.TODO(),
"queue_sid",
telnyx.TexmlAccountQueueUpdateParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", queue.AccountSid)
Delete a queue resource.
DELETE /texml/Accounts/{account_sid}/Queues/{queue_sid}
err := client.Texml.Accounts.Queues.Delete(
context.TODO(),
"queue_sid",
telnyx.TexmlAccountQueueDeleteParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
Returns multiple recording resources for an account.
GET /texml/Accounts/{account_sid}/Recordings.json
response, err := client.Texml.Accounts.GetRecordingsJson(
context.TODO(),
"account_sid",
telnyx.TexmlAccountGetRecordingsJsonParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.End)
Returns recording resource identified by recording id.
GET /texml/Accounts/{account_sid}/Recordings/{recording_sid}.json
texmlGetCallRecordingResponseBody, err := client.Texml.Accounts.Recordings.Json.GetRecordingSidJson(
context.TODO(),
"6a09cdc3-8948-47f0-aa62-74ac943d6c58",
telnyx.TexmlAccountRecordingJsonGetRecordingSidJsonParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", texmlGetCallRecordingResponseBody.AccountSid)
Deletes recording resource identified by recording id.
DELETE /texml/Accounts/{account_sid}/Recordings/{recording_sid}.json
err := client.Texml.Accounts.Recordings.Json.DeleteRecordingSidJson(
context.TODO(),
"6a09cdc3-8948-47f0-aa62-74ac943d6c58",
telnyx.TexmlAccountRecordingJsonDeleteRecordingSidJsonParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
Returns recordings for a call identified by call_sid.
GET /texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings.json
response, err := client.Texml.Accounts.Calls.RecordingsJson.GetRecordingsJson(
context.TODO(),
"call_sid",
telnyx.TexmlAccountCallRecordingsJsonGetRecordingsJsonParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.End)
Starts recording with specified parameters for call idientified by call_sid.
POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings.json
response, err := client.Texml.Accounts.Calls.RecordingsJson.RecordingsJson(
context.TODO(),
"call_sid",
telnyx.TexmlAccountCallRecordingsJsonRecordingsJsonParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.AccountSid)
Updates recording resource for particular call.
POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Recordings/{recording_sid}.json
response, err := client.Texml.Accounts.Calls.Recordings.RecordingSidJson(
context.TODO(),
"6a09cdc3-8948-47f0-aa62-74ac943d6c58",
telnyx.TexmlAccountCallRecordingRecordingSidJsonParams{
AccountSid: "account_sid",
CallSid: "call_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.AccountSid)
Lists conference recordings
GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Recordings
response, err := client.Texml.Accounts.Conferences.GetRecordings(
context.TODO(),
"conference_sid",
telnyx.TexmlAccountConferenceGetRecordingsParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.End)
Returns recordings for a conference identified by conference_sid.
GET /texml/Accounts/{account_sid}/Conferences/{conference_sid}/Recordings.json
response, err := client.Texml.Accounts.Conferences.GetRecordingsJson(
context.TODO(),
"conference_sid",
telnyx.TexmlAccountConferenceGetRecordingsJsonParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.End)
Create a TeXML secret which can be later used as a Dynamic Parameter for TeXML when using Mustache Templates in your TeXML.
POST /texml/secrets — Required: name, value
response, err := client.Texml.Secrets(context.TODO(), telnyx.TexmlSecretsParams{
Name: "My Secret Name",
Value: "My Secret Value",
})
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.Data)
Starts siprec session with specified parameters for call idientified by call_sid.
POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Siprec.json
response, err := client.Texml.Accounts.Calls.SiprecJson(
context.TODO(),
"call_sid",
telnyx.TexmlAccountCallSiprecJsonParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.AccountSid)
Updates siprec session identified by siprec_sid.
POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Siprec/{siprec_sid}.json
response, err := client.Texml.Accounts.Calls.Siprec.SiprecSidJson(
context.TODO(),
"siprec_sid",
telnyx.TexmlAccountCallSiprecSiprecSidJsonParams{
AccountSid: "account_sid",
CallSid: "call_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.AccountSid)
Starts streaming media from a call to a specific WebSocket address.
POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Streams.json
response, err := client.Texml.Accounts.Calls.StreamsJson(
context.TODO(),
"call_sid",
telnyx.TexmlAccountCallStreamsJsonParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.AccountSid)
Updates streaming resource for particular call.
POST /texml/Accounts/{account_sid}/Calls/{call_sid}/Streams/{streaming_sid}.json
response, err := client.Texml.Accounts.Calls.Streams.StreamingSidJson(
context.TODO(),
"6a09cdc3-8948-47f0-aa62-74ac943d6c58",
telnyx.TexmlAccountCallStreamStreamingSidJsonParams{
AccountSid: "account_sid",
CallSid: "call_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.AccountSid)
Returns multiple recording transcription resources for an account.
GET /texml/Accounts/{account_sid}/Transcriptions.json
response, err := client.Texml.Accounts.GetTranscriptionsJson(
context.TODO(),
"account_sid",
telnyx.TexmlAccountGetTranscriptionsJsonParams{},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.End)
Returns the recording transcription resource identified by its ID.
GET /texml/Accounts/{account_sid}/Transcriptions/{recording_transcription_sid}.json
response, err := client.Texml.Accounts.Transcriptions.Json.GetRecordingTranscriptionSidJson(
context.TODO(),
"6a09cdc3-8948-47f0-aa62-74ac943d6c58",
telnyx.TexmlAccountTranscriptionJsonGetRecordingTranscriptionSidJsonParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
fmt.Printf("%+v\n", response.AccountSid)
Permanently deletes a recording transcription.
DELETE /texml/Accounts/{account_sid}/Transcriptions/{recording_transcription_sid}.json
err := client.Texml.Accounts.Transcriptions.Json.DeleteRecordingTranscriptionSidJson(
context.TODO(),
"6a09cdc3-8948-47f0-aa62-74ac943d6c58",
telnyx.TexmlAccountTranscriptionJsonDeleteRecordingTranscriptionSidJsonParams{
AccountSid: "account_sid",
},
)
if err != nil {
panic(err.Error())
}
The following webhook events are sent to your configured webhook URL.
All webhooks include telnyx-timestamp and telnyx-signature-ed25519 headers for verification (Standard Webhooks compatible).
| Event | Description |
|-------|-------------|
| TexmlCallAnsweredWebhook | TeXML Call Answered. Webhook sent when a TeXML call is answered |
| TexmlCallCompletedWebhook | TeXML Call Completed. Webhook sent when a TeXML call is completed |
| TexmlCallInitiatedWebhook | TeXML Call Initiated. Webhook sent when a TeXML call is initiated |
| TexmlCallRingingWebhook | TeXML Call Ringing. Webhook sent when a TeXML call is ringing |
| TexmlCallAmdWebhook | TeXML Call AMD. Webhook sent when Answering Machine Detection (AMD) completes during a TeXML call |
| TexmlCallDtmfWebhook | TeXML Call DTMF. Webhook sent when a DTMF digit is received during a TeXML call |
| TexmlGatherWebhook | TeXML Gather. Webhook sent when a Gather command completes (sent to the action URL) |
| TexmlHttpRequestWebhook | TeXML HTTP Request. Webhook sent as response to an HTTP Request instruction |
| TexmlAiGatherWebhook | TeXML AI Gather. Webhook sent when AI Gather completes with transcription results |
| TexmlConferenceJoinWebhook | TeXML Conference Join. Webhook sent when a participant joins a TeXML conference |
| TexmlConferenceLeaveWebhook | TeXML Conference Leave. Webhook sent when a participant leaves a TeXML conference |
| TexmlConferenceSpeakerWebhook | TeXML Conference Speaker. Webhook sent when a participant starts or stops speaking in a TeXML conference |
| TexmlConferenceEndWebhook | TeXML Conference End. Webhook sent when a TeXML conference ends |
| TexmlConferenceStartWebhook | TeXML Conference Start. Webhook sent when a TeXML conference starts |
| TexmlQueueWebhook | TeXML Queue. Webhook sent for queue status events (triggered by Enqueue command waitUrl) |
| TexmlRecordingCompletedWebhook | TeXML Recording Completed. Webhook sent when a recording is completed during a TeXML call (triggered by recordingStatusCallbackEvent) |
| TexmlRecordingInProgressWebhook | TeXML Recording In-Progress. Webhook sent when a recording starts during a TeXML call (triggered by recordingStatusCallbackEvent) |
| TexmlSiprecWebhook | TeXML SIPREC. Webhook sent for SIPREC session status updates |
| TexmlStreamWebhook | TeXML Stream. Webhook sent for media streaming status updates |
| TexmlTranscriptionWebhook | TeXML Transcription. Webhook sent when a recording transcription is completed |
tools
Build cross-platform VoIP calling apps with React Native using Telnyx Voice SDK. High-level reactive API with automatic lifecycle management, CallKit/ConnectionService integration, and push notifications. Use for mobile VoIP apps with minimal setup.
tools
Build browser-based VoIP calling apps using Telnyx WebRTC JavaScript SDK. Covers authentication, voice calls, events, debugging, call quality metrics, and AI Agent integration. Use for web-based real-time communication.
tools
Build VoIP calling apps on iOS using Telnyx WebRTC SDK. Covers authentication, making/receiving calls, CallKit integration, PushKit/APNS push notifications, call quality metrics, and AI Agent integration. Use when implementing real-time voice communication on iOS.
tools
Build cross-platform VoIP calling apps with Flutter using Telnyx WebRTC SDK. Covers authentication, making/receiving calls, push notifications (FCM + APNS), call quality metrics, and AI Agent integration. Works on Android, iOS, and Web.