Twilio Client iOS SDK

Please note that the Twilio Client iOS SDK is superseded by the newer Twilio Programmable Voice iOS SDK, which supports iOS 10 and uses Apple VoIP Services push notifications for signaling incoming calls. Please see our announcement for background information on this change and consult the Programmable Voice SDK documentation for technical details.


Want your iPad, iPhone, or iPod touch app to make and receive calls? Want to add voice-chat support to your iOS game for players to mock each other? There's an SDK for that!

Twilio Client iOS is an Objective-C library for iOS that enables voice communications with landlines or other Twilio Client devices, including web browsers and other mobile devices.

Download the iOS SDK

The easiest way to incorporate TwilioSDK to your project is using CocoaPods. Simply add the following line to your Podfile:

source ''
source ''

target 'MyTwilioApp' do
    pod 'TwilioClient', '~>1.2'

Alternatively, you may download the tar.bz2 file (80 MB).


There are three major pieces in a Twilio Client app:

  1. Your iOS app that uses the libTwilioClient.a library
  2. A server to grant capabilities to your Client app as well as to serve up TwiML and/or make Twilio REST API calls
  3. Twilio’s cloud services to handle the telephony and process TwiML and/or REST API calls

Twilio Client iOS SDK Architecture

Client-side Classes

The primary class for connecting to Twilio services from your app is TCDevice. This class coordinates service authorization with Twilio, listens for incoming connections, and establishes outgoing connections. An instance of this class is created using a "capability token", described in the next section.

Connections to Twilio, either incoming or outgoing, are represented by instances of the class TCConnection.

In addition, status callbacks are provided to objects that implement the delegate protocols TCDeviceDelegate and TCConnectionDelegate.

Server-side Security: Capability Tokens

The Twilio Client SDK uses a capability token to sign communications from your iOS app to Twilio. These tokens are created by you on your server and allow you to specify what capabilities are going to be available to your app, such as whether it can receive incoming connections, make outgoing connections, etc. These tokens always have an expiration, which means all tokens have a limited lifetime to protect you from abuse. It is up to you to determine how often these tokens must be refreshed.

Twilio capability tokens are based on the JSON Web Token standard. They can be generated with our helper libraries that come in a variety of languages.

For the security of your Twilio account, you should not embed a Capability Token or your Twilio Auth Token as strings in the app you submit to the App Store.

Class Reference

Protocol Reference

Need some help?

We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd browsing the Twilio tag on Stack Overflow.