Working Java code samples for the X (formerly Twitter) API v2.
java --versionUsing Maven, add to your pom.xml:
<dependencies>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.9.1</version>
</dependency>
</dependencies>For read-only operations (search, lookup):
export BEARER_TOKEN='your_bearer_token'For user actions (post, like, repost, bookmark, etc.):
export CLIENT_ID='your_client_id'
export CLIENT_SECRET='your_client_secret'Note: Most user action examples require OAuth 2.0 authentication with CLIENT_ID and CLIENT_SECRET. Read-only examples (search, lookup) only require BEARER_TOKEN.
posts/FullArchiveSearchDemo.java- Full archive search demoposts/FullArchiveTweetCountsDemo.java- Full archive tweet counts demoposts/QuoteTweetsDemo.java- Get posts that quote a postposts/RecentSearchDemo.java- Recent search demo (last 7 days)posts/RecentTweetCountsDemo.java- Recent tweet counts demoposts/SearchRecent.java- Recent search (last 7 days)posts/TweetsDemo.java- Look up posts by ID
users/FollowersLookupDemo.java- Get user's followersusers/FollowingLookupDemo.java- Get users a user is followingusers/Lookup.java- Look up users by usernameusers/UsersDemo.java- Users lookup demo
timelines/reverse-chron-home-timeline-java-sdk.java- Get home timeline (reverse chronological)timelines/UserMentionsDemo.java- Get user mentions timelinetimelines/UserTweetsDemo.java- Get user's posts timeline
streams/FilteredStreamDemo.java- Filtered stream with rulesstreams/SampledStream.java- Sampled stream
spaces/SearchSpacesDemo.java- Search for Spacesspaces/SpacesLookupDemo.java- Look up Spaces by ID
usage/UsageTweetsDemo.java- Get API usage information
# Compile a single file
javac -cp ".:lib/*" posts/SearchRecent.java
# Or compile all files
find . -name "*.java" -exec javac -cp ".:lib/*" {} \;# Run a single example
java -cp ".:lib/*" posts.SearchRecent
# Or with package structure
java -cp ".:lib/*" posts/RecentSearchDemo