Twitter API SDK for TypeScript
Introduction
A TypeScript SDK for the Twitter API. This library is built with TypeScript developers in mind, but it also works with JavaScript.
Note: This SDK is in beta and is not ready for production
You can find examples of using the client in the examples/ directory
Note: Only Twitter API V2 is supported
Features
- Full type information for requests and responses
- OAuth2 support
- Supports Node.js 14+. Doesn't work in browser environments due to the Twitter API not supporting CORS
Installing
npm install twitter-api-sdk
Client
To setup the client we will authenticate with a bearer-token as follows
import { Client } from "twitter-api-sdk";
const client = new Client("MY-BEARER-TOKEN");
For more information about authentication go here
Examples
Consuming a Stream
import { Client } from "twitter-api-sdk";
const client = new Client(process.env.BEARER_TOKEN);
async function main() {
const stream = client.tweets.sampleStream({
"tweet.fields": ["author_id"],
});
for await (const tweet of stream) {
console.log(tweet.data?.author_id);
}
}
main();
Getting a Tweet
import { Client } from "twitter-api-sdk";
const client = new Client(process.env.BEARER_TOKEN);
async function main() {
const tweet = await client.tweets.findTweetById("20");
console.log(tweet.data.text);
}
main();
Streaming
For endpoints that return a stream you get sent back an Async Generator which you can iterate over:
const stream = client.tweets.sampleStream();
for await (const tweet of stream) {
console.log(tweet.data.text);
}
Pagination
For endpoints that have pagination you can
const followers = client.users.usersIdFollowers("20");
for await (const page of followers) {
console.log(page.data);
}
// This also works
const followers = await client.users.usersIdFollowers("20");
console.log(followers.data);
Authentication
This library supports App-only Bearer Token and OAuth 2.0
You can see various examples on how to use the authentication in examples/
Getting Started
Make sure you turn on OAuth2 in your apps user authentication settings, and set the type of app to be either a confidential client or a public client.
Creating a Public Auth Client
const authClient = new auth.OAuth2User({
client_id: process.env.CLIENT_ID,
callback: "http://127.0.0.1:3000/callback",
scopes: ["tweet.read", "users.read", "offline.access"],
});
const client = new Client(authClient);
Creating a Confidential Auth Client
const authClient = new auth.OAuth2User({
client_id: process.env.CLIENT_ID,
client_secret: process.env.CLIENT_SECRET,
callback: "http://127.0.0.1:3000/callback",
scopes: ["tweet.read", "users.read", "offline.access"],
});
const client = new Client(authClient);
Generating an Authentication URL
const authUrl = authClient.generateAuthURL({
code_challenge_method: "s256",
});
Requesting an Access Token
Once the user has approved the OAuth flow, you will receive a code
query parameter at the callback URL you specified.
await authClient.requestAccessToken(code);
Revoking an Access Token
const response = await authClient.revokeAccessToken();
Contributing
Note this is only for developers who want to contribute code to the SDK
Clone the Repository
git clone https://github.com/twitterdev/twitter-api-typescript-sdk
Running the Generation Script
Generating the SDK with the latest OpenAPI spec. The version is any valid SemVer version
yarn generate 1.0.0
Generating the SDK with a local OpenAPI specification file.
yarn generate 1.0.0 --specFile ~/path/to/file/openapi.json
The files generated are put in the src/gen directory, these files are not edited manually.
Building
yarn build
Testing
yarn test