Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?



  • I was using the TwilioClient 1.2 SDK and just migrated to the Programmable Voice SDK. Why am I getting “Authentication error” using my Capability Token?
    • The Programmable Voice SDK requires a new token format called the Twilio Access Token for authentication. Please update your token vending endpoint to generate Access Tokens for your application.
  • I’ve created an Access Token vending endpoint but why do I keep failing to register for incoming call push notifications?
    • Please make sure that you have added VoiceGrant to the access token for the Programmable Voice SDK.
    • You might have used the incorrect API key/secret pair to create the Access Token. Please make sure you keep the API secret safely once the API key is created, and use both the API key and secret to create the Access Token.
    • The maximum expiry duration allowed by Twilio is 24 hours, which equals 86,400 seconds. Please make sure that you have expiry <= (86400 -1).
    • The API keys/secrets are not sharable between main account and sub-accounts.
    • Please make sure the Access Token has non-empty identity.
  • Why am I not receiving any incoming call push notification although the SDK says it registered successfully?
    • The Twilio Programmable Voice iOS SDK requires Apple’s VoIP Service certificate so that Twilio can send VoIP Push Notifications to your mobile client on your behalf. Twilio will fail to send the push notifications to Apple's VoIP Service endpoint since it is using the regular APNS certificate.
    • Please use a fresh CSR (certificate signing request) for creating VoIP Service certificate. Using a CSR which was previously used for creating an APNS certificate will cause service type confusion in the VoIP Service certificate.
    • During the development phase, please create Push Credentials with the “sandbox” option checked and make sure the app’s plist has “APS Environment: development”. Once the app is ready for store submission, update the plist with “APS Environment: production” and create another Push Credential without checking the sandbox option.
    • Please make sure you have not modified the device token requested using the PKPushRegistry and use it in the registration methods.
    /* Obj-C */
    - (void)pushRegistry:(PKPushRegistry *)registry
            didUpdatePushCredentials:(PKPushCredentials *)credentials
                 forType:(NSString *)type {
        self.deviceToken = [credentials.token description];
        // Call registerWithAccessToken:deviceToken:completion: ...
    /* Swift */
    func pushRegistry(_ registry: PKPushRegistry, didUpdate credentials: PKPushCredentials, forType type: PKPushType) {
        let deviceToken = (credentials.token as NSData).description
        self.deviceTokenString = deviceToken
        // Call registerWithAccessToken:deviceToken:completion: ...


  • I ran pod install, but it couldn’t find the latest version of the SDK
    • If you are using Cocoapods v1.x, please run pod repo update before trying to install new versions of the Voice SDK.
  • I am getting “Include of non-modular header inside framework module 'TwilioVoiceClient’” and unable to install SDK with my Swift app using Cocoapods
    • Please update your Cocoapods library to the latest version.


  • I got a "@"" - code: 1" error when sending the CXStartCallAction request to the CXCallController and was not able to make outgoing calls using the SDK
    • Please go to the Capabilities page of the app's project settings and make sure you have the Voice over IP option enabled.


  • Why am I getting errors saying “failed to create audio device”?
    • The Programmable Voice iOS SDK requires the category of the AVAudioSession to be .playAndRecord so that it can access the system audio device properly. In case you need to do special manipulation to the AVAudioSession, please make sure the category is restored to .playAndRecord before making/accepting calls.
  • Can my application record the audio during the call?
    • You can use the AVAudioRecorder to record the audio during active calls, but the limitation is that it can only record the audio of the device’s input source.

Great tools and links

How to file a support ticket or create a Github issue

We love feedback and questions especially those with helpful debugging information so we can diagnose and respond in time. When submitting issues or support tickets, it would be awesome if you could also add the following:

  • Description - what are you trying to achieve, what steps did you take, and what issue did you have.
  • SDK version
  • SDK verbose log - SDK logs are always the best for the team to debug. Configure the SDK log level:
    /* Obj-C */
    [VoiceClient setLogLevel:TVOLogLevelVerbose];
    /* Swift */ 
    VoiceClient.logLevel = .verbose
  • Twilio account SID
  • Twilio call SID

When you have gathered all this helpful info, use the following links and contact us:

We prefer that you create GitHub issues - that way the entire community benefits.

Please make sure you do not include any sensitive info in your GitHub issue - auth tokens, signing key secrets, things of that nature. If you ever need to share any secrets with us please send an email to and reference your GitHub issue.

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.

Loading Code Sample...