UNPKG

apithreads

Version:

Unofficial, Reverse-Engineered Node.js/TypeScript client for Meta's [Threads](https://threads.net).

136 lines (102 loc) 3.64 kB
# Threads API [![NPM](https://img.shields.io/npm/v/apithreads.svg?style=flat-square&labelColor=black)](https://www.npmjs.com/package/apithreads) [![MIT License](https://img.shields.io/badge/license-MIT-blue?style=flat-square&labelColor=black)](https://github.com/junhoyeo/apithreads/blob/main/LICENSE) [![Prettier Code Formatting](https://img.shields.io/badge/code_style-prettier-brightgreen.svg?style=flat-square&labelColor=black)](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({}); ```