Skip to content
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
Cannot retrieve contributors at this time

Upgrade Guide

MAJOR version bumps will have upgrade notes posted here.

[2023-04-05] 7.x.x to 8.x.x

  • Supported Python versions updated

    • Dropped support for Python 3.6 (#632)
    • Python 3.7 is the new required minimum version to use twilio-python helper library
  • Deletion of TwiML Voice Deprecated Methods (#643)

    • <Refer>

      • Refer.refer_sip() replaced by Refer.sip()
    • <Say>

      • Say.ssml_break() replaced by Say.break_()
      • Say.ssml_emphasis() replaced by Say.emphasis()
      • Say.ssml_lang() replaced by Say.lang()
      • Say.ssml_p() replaced by Say.p()
      • Say.ssml_phoneme() replaced by Say.phoneme()
      • Say.ssml_prosody() replaced by Say.prosody()
      • Say.ssml_s() replaced by Say.s()
      • Say.ssml_say_as() replaced by Say.say_as()
      • Say.ssml_sub() replaced by Say.sub()
      • Say.ssml_w() replaced by Say.w()


      from twilio.twiml.voice_response import VoiceResponse
      resp = VoiceResponse()
      say = resp.say("Hello")


      from twilio.twiml.voice_response import VoiceResponse
      resp = VoiceResponse()
      say = resp.say("Hello")
  • JWT token building deprecations (#644)

    • ConversationsGrant has been deprecated in favor of VoiceGrant
    • IpMessagingGrant has been removed
  • has been renamed to

  • TaskRouter Workers Statistics operations updated (#653)

    • Cumulative and Real-Time Workers Statistics no longer accept a WorkerSid

    • GET /v1/Workspaces/{WorkspaceSid}/Workers/CumulativeStatistics

      Old: client.taskrouter.v1.workspaces('WS...').workers('WK...).cumulative_statistics()

      New: client.taskrouter.v1.workspaces('WS...').workers.cumulative_statistics()

    • GET /v1/Workspaces/{WorkspaceSid}/Workers/RealTimeStatistics

      Old: client.taskrouter.v1.workspaces('WS...').workers('WK...).real_time_statistics()

      New: client.taskrouter.v1.workspaces('WS...').workers.real_time_statistics()

  • Internal refactor of instance._properties

    • Instance properties moved out of the generic _properties dict (#696)
    • This is an implementation detail that should not be depended upon

[2021-09-22] 6.x.x to 7.x.x


Version 7.x.x is the first version that officially drops support for Python versions 2.7, 3.4, and 3.5.

Removal of files and dependencies that were added to support Python 2.7, 3.4, and 3.5

  • Six
    • Removed use of u a fake unicode literal
    • Removed use of b a fake bytes literal
    • Removed PY3 a boolean indicating if the code is running on Python 3
    • text_type type for representing (Unicode) textual data --> str
    • iteritems returns an iterator over dictionary’s items --> items
    • string_types possible types for text data like basestring() in Python 2 and str in Python 3.--> str
  • twilio/
    • from twilio.compat import urlencode --> from urllib.parse import urlencode
    • izip --> zip
  • twilio/jwt/
    • Removed compat.compare_digest
  • twilio/jwt/
    • Removed import for simplejson and json

Updated dependencies

CHANGED - Remove the ability to override the algorithm in Jwt.to_jwt()

Removed the ability to override the algorithm while using a jwt access token

// 6.x.x
from twilio.jwt.access_token import AccessToken
// 7.x.x
from twilio.jwt.access_token import AccessToken

[2017-09-28] 6.6.x to 6.7.x

CHANGED - Body parameter on Chat Message creation is no longer required


This was changed to add support for sending media in Chat messages, users can now either provide a body or a media_sid.


from import Client

client = Client('AC123', 'auth')'IS123').channels('CH123').messages.create("this is the body")


from import Client

client = Client('AC123', 'auth')'IS123').channels('CH123').messages.create(body="this is the body")