# What changed in tweepy

> 142 changes in tweepy 4 from its official release notes, upgrade guides and advisories: 79 breaking, 45 new APIs and options. Each one cited. Sources checked 2026-10-23. HTML: https://unstale.sh/pypi/tweepy/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## tweepy 4

### Breaking changes

- The initialization parameter auth_handler is renamed auth, and initialization no longer accepts positional arguments other than auth. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Several API method parameters are renamed, including id to place_id, screen_names to screen_name, environment_name to label, and file_ to file. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Parameters previously optional on listed API methods are now required, including query, status, id, and q on the specified methods. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Many API methods are renamed, including blocks to get_blocks, search to search_tweets, and update_with_media to update_status_with_media. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Listed API methods no longer accept positional arguments; arguments must be passed by keyword. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- API.api_root and API.upload_root are removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- API.compression is removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- API.configuration was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The id endpoint parameter was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The id endpoint parameter was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The id endpoint parameter was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The id endpoint parameter was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The id endpoint parameter was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The id endpoint parameter was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- API.geo_similar_places was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The id endpoint parameter was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The id endpoint parameter was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The id endpoint parameter was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The id endpoint parameter was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The id endpoint parameter was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The map_ keyword argument alias is no longer supported. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- API.me, AuthHandler.get_username, and OAuthHandler.get_username are removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- API.related_results was removed along with the Relation model. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The API is reworked around API.request, replacing bind_api and APIMethod; methods no longer use property decorators, and pagination uses a decorator. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Unexpected keyword arguments that are not endpoint parameters now produce a logged warning; allowed_param is renamed endpoint_parameters. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The accuracy and contained_within endpoint parameters were removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- API.search_host and API.search_root are removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Direct Messages can send Quick Reply Options; quick_reply_type was replaced by quick_reply_options. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The allow_contributor_request endpoint parameter was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The endpoint parameter offset_right was renamed to offset_top. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The enable_dmcommands and fail_dmcommands parameters were removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The method's parameters are reordered. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The in_reply_to_status_id_str and auto_populate_reply_metadata endpoint parameters were removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The id endpoint parameter was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Handling of HTTP status code 401 was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- API.wait_on_rate_limit_notify is removed; warnings are always logged when a rate limit is reached. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- return_cursors is now keyword-only. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- return_cursors is now keyword-only. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The created_at datetime value is now timezone-aware. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- models.List.is_member was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- models.List.is_subscribed was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The created_at datetime value is now timezone-aware. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The created_at datetime value is now timezone-aware. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The created_at datetime value is now timezone-aware. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- PageIterator now starts on page 1. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Parser.parse_error is removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The method parameter was removed from parse methods on Parser and its subclasses. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Support for Python 2 is dropped. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Support for Python 3.5 is dropped. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The Relation model was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- StreamListener is merged into Stream. Stream data and event handlers now log by default and disregard return values. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Stream.auth was replaced with separate credential parameters and attributes: consumer_key, consumer_secret, access_token, and access_token_secret. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The Stream parameter proxies was replaced by proxy. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Stream reconnect-wait parameters and attributes were removed, including retry_time_start, retry_420_start, retry_time_cap, snooze_time_step, snooze_time_cap, retry_time, and snooze_time. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Exceptions raised in Stream._connect are no longer reraised. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The Stream.api attribute was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The Stream.body attribute was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Positional arguments are no longer accepted by Stream.filter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The encoding parameter was removed from Stream.filter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The is_async parameter was renamed to threaded. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Stream.firehose was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The Stream.headers attribute was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The Stream.host attribute was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Stream.retry_count was renamed to Stream.max_retries. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The Stream.new_session attribute was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Stream.retweet was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Positional arguments are no longer accepted by Stream.sample. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The is_async parameter was renamed to threaded. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Stream.sitestream and Stream.userstream were removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The Stream.timeout attribute was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The Stream.url attribute was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Stream.sitestream and Stream.userstream were removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The stream can disconnect when any line of data is received, including keep-alive signals. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- StreamListener was removed and merged into Stream; migrate callbacks to Stream, including renamed callbacks on_disconnect_message, on_request_error, and on_connection_error. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The on_direct_message and on_friends callbacks were removed along with userstream and sitestream support. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The on_event callback was removed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- TooManyRequests replaces RateLimitError. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- TweepyException replaces TweepError. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Tweepy adds support for Twitter API v2 and replaces API v1.1 models in the package namespace. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)

### New APIs and options

- Adds the reset_time parameter to TooManyRequests. (4.17.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.17.0)
- Added include_entities and skip_status endpoint parameters. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the include_entities endpoint parameter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added include_entities and skip_status endpoint parameters. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the include_entities endpoint parameter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the trim_user endpoint parameter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the stringify_ids endpoint parameter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added include_entities and skip_status endpoint parameters. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the include_entities endpoint parameter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the stringify_ids endpoint parameter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added stringify_ids and count endpoint parameters. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added include_entities and skip_status endpoint parameters. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added count, include_entities, and skip_status endpoint parameters. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added an API method to retrieve list ownerships. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added include_entities and skip_status endpoint parameters. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the stringify_ids endpoint parameter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added API.get_profile_banner. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the count endpoint parameter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added trim_user, include_entities, and include_user_entities endpoint parameters. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the trim_user endpoint parameter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the include_entities endpoint parameter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the stringify_ids endpoint parameter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added media_category and additional_owners endpoint parameters. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added trim_user and include_entities endpoint parameters. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added API.no_retweets_friendships. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the stringify_ids endpoint parameter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added API.remove_profile_banner. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the trim_user endpoint parameter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the include_entities endpoint parameter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- API.send_direct_message can send Call-To-Action buttons with Direct Messages. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Each API instance exposes one requests.Session instance, reused across requests. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the trim_user endpoint parameter. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added API.update_friendship. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added include_entities and skip_status endpoint parameters. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added API.user_agent. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Tweepy adds support for asynchronous streaming. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The BadRequest exception is added. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The Forbidden exception is added. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Streaming now supports gevent. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the list_ownerships attribute to models.User. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The NotFound exception is added. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Added the Stream.on_disconnect method. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Exposed Stream.thread. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The TwitterServerError exception is added. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- The Unauthorized exception is added. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)

### Behavior and default changes

- All 2xx HTTP status codes are treated as successful responses. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Media uploading is reworked. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Defaults to models.Status more broadly for results when parsers or model factories lack the relevant attributes. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Defaults to models.User more broadly for the user attribute when parsers or model factories lack the relevant attributes. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- models.User instances are now hashable. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Stream.sample now uses the GET HTTP method. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Stream now uses a specific user agent. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Streaming no longer depends on string-length delimitation. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)

### Fixes and other changes

- Handles the Twitter API issue that returns duplicate pages. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Keyword arguments are now handled. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Keyword arguments are now handled. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- ChunkedEncodingError is handled during streaming. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Cursor iterators now handle initial negative or zero limits. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Threaded Stream.filter returns the thread. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Integer IDs are now allowed. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Threaded Stream.sample returns the thread. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Connection errors during streaming are handled. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
- Twitter API errors returned with successful HTTP status codes are handled. (4.0.0) — [release notes](https://github.com/tweepy/tweepy/releases/tag/v4.0.0)
