apithreads
Version:
Unofficial, Reverse-Engineered Node.js/TypeScript client for Meta's [Threads](https://threads.net).
136 lines (102 loc) • 3.64 kB
Markdown
# Threads API
[](https://www.npmjs.com/package/apithreads) [](https://github.com/junhoyeo/apithreads/blob/main/LICENSE) [](https://prettier.io)
Unofficial, Reverse-Engineered Node.js/TypeScript client for Meta's [Threads](https://threads.net).
<summary><h3>🚀 Usage (Read)</h3></summary>
```ts
import { ThreadsAPI } from "apithreads";
// or in Deno 🦖:
// import ThreadsAPI from "npm:apithreads";
const main = async () => {
const threadsAPI = new ThreadsAPI();
const username = "heyxviraj";
// 👤 Details for a specific user
const userID = await threadsAPI.getUserIDfromUsername(username);
if (!userID) {
return;
}
const user = await threadsAPI.getUserProfile(username, userID);
console.log(JSON.stringify(user));
const posts = await threadsAPI.getUserProfileThreads(username, userID);
console.log(JSON.stringify(posts));
const replies = await threadsAPI.getUserProfileReplies(username, userID);
console.log(JSON.stringify(replies));
// 📖 Details for a specific thread
const postID = await threadsAPI.getPostIDfromURL("[THREAD_URL]");
if (!postID) {
return;
}
const post = await threadsAPI.getThreads(postID);
console.log(JSON.stringify(post.containing_thread));
console.log(JSON.stringify(post.reply_threads));
const likers = await threadsAPI.getThreadLikers(postID);
console.log(JSON.stringify(likers));
};
main();
```
### 🚀 Usage (Write)
#### ✨ Text Threads
```ts
import { ThreadsAPI } from "apithreads";
const main = async () => {
const threadsAPI = new ThreadsAPI({
username: "heyxviraj", // Your username
password: "PASSWORD", // Your password
});
await threadsAPI.publish({
text: "🤖 Hello World",
});
};
main();
```
#### ✨ Threads with Image
```ts
await threadsAPI.publish({
text: "🤖 Threads with Image",
image: "[LINK_TO_IMAGE].jpg",
});
```
#### ✨ Threads with Link Attachment
```ts
await threadsAPI.publish({
text: "🤖 Threads with Link Attachment",
url: "https://github.com/virajbhartiya/apithreads",
});
```
#### ✨ Reply to Other Threads
```ts
const parentURL = "https://www.threads.net/t/[THREAD_ID]";
const parentPostID = await threadsAPI.getPostIDfromURL(parentURL); // or use `getPostIDfromThreadID`
await threadsAPI.publish({
text: "🤖 Beep",
link: "https://github.com/virajbhartiya/apithreads",
parentPostID: parentPostID,
});
```
#### ✨ Like/Unlike a Thread
```ts
const threadURL = "https://www.threads.net/t/[THREAD_ID]";
const postIDToLike = await threadsAPI.getPostIDfromURL(threadURL); // or use `getPostIDfromThreadID`
// 💡 Uses current credentials
await threadsAPI.like(postIDToLike);
await threadsAPI.unlike(postIDToLike);
```
#### ✨ Follow/Unfollow a User
```ts
const userIDToFollow = await threadsAPI.getUserIDfromUsername("heyxviraj");
// 💡 Uses current credentials
await threadsAPI.follow(userIDToFollow);
await threadsAPI.unfollow(userIDToFollow);
```
## Installation
```bash
yarn add apithreads
# or with npm
npm install apithreads
# or with pnpm
pnpm install apithreads
```
```typescript
// or in Deno 🦖
import ThreadsAPI from "npm:apithreads";
const threadsAPI = new ThreadsAPI.ThreadsAPI({});
```