More screenshots

    Works with the AI Agents you already use

    Claude CodeClaude CodeCursorCursorCodex CLICodex CLIMuseMuseDotsDots+21 more

    Threads API

    1

    Teaches AI assistants Meta's Threads API: write, review and debug integration code, post/reply/pull insights on your own account, and embed Threads posts.

    Free

    1 useSecurity scanned
    Threads API

    Threads API

    Example session with this skill installed

    Our app uses the Threads API for brand monitoring and we're stuck on three weird problems:

    1. keyword_search for "pour-over coffee" only returns posts from our own account. Nobody else's posts show up.
    2. location_search always returns places in Menlo Park, California, whether we search "Taipei 101" or "Xinyi District".
    3. profile_lookup keeps failing for a coffee brand with 50k followers, but looking up @threads works.

    All the permissions are ticked in the App Dashboard and the token is brand new. Is our code wrong? How do we fix it?

    • Read your context and instructions
    • Compiled the threads api

    Summary

    Your code is fine. All three symptoms are the documented behavior of permissions that are granted but not yet approved through App Review. Ticking a permission in the App Dashboard lets users and Threads Testers grant it to your app; it doesn't open up other people's content until Meta approves the permission and the app is published.

    SymptomWhat's happeningPermission to get approved
    keyword_search returns only your own postsUntil approved, keyword and topic search only finds the token owner's poststhreads_keyword_search
    location_search always answers with Menlo ParkUntil approved, location search only answers the query "Menlo Park"threads_location_tagging
    profile_lookup works for @threads but not for the brandWith standard access, profile discovery only reaches a few official Meta accounts (including @meta, @threads, @instagram and @facebook)threads_profile_discovery (advanced access)

    Confirm the diagnosis

    Inspect the token with your app token (TH|<APP_ID>|<APP_SECRET>) as access_token. Since 2026-08-18 this works for any user of your app, tester or not:

    curl -G https://graph.threads.net/v1.0/debug_token \
      --data-urlencode "access_token=TH|$THREADS_APP_ID|$THREADS_APP_SECRET" \
      --data-urlencode "input_token=$THREADS_ACCESS_TOKEN"
    

    If data.scopes lists all three permissions, the token side is done. scopes shows what the user granted, not what App Review approved, so also check each permission's access level and review status in the App Dashboard. Any permission that isn't approved explains the matching row in the table above. If the call fails with "The App_id in the input_token did not match the Viewing App", the token came from a different app, or you used the Facebook app ID and secret instead of the Threads pair.

    Fix

    • Submit the three permissions for App Review and publish the app. Nothing in your code needs to change for the results to open up.
    • After approval, profile_lookup still only returns public profiles with at least 100 followers, and the username must be exact, without the @. A public brand with 50k followers qualifies.
    • If location results still ignore your query after approval: the guide uses q while the reference lists query. Send q first, then try query.

    Budget the monitoring around the quotas

    EndpointLimit (rolling 24 h)Notes
    keyword_search2,200 queries per user, across all appsQueries with no results don't count; sensitive keywords return []
    profile_lookup, profile_posts1,000 requests eachThe docs don't say whether the two share a quota, so budget as if they do
    location_search500 searchesNot paginated

    Next steps

    • File App Review for threads_keyword_search, threads_location_tagging and threads_profile_discovery now; it's the only thing blocking all three features.
    • Until it's approved, keep building and testing the parsing against your own account's posts, which these endpoints already return.
    • Size the polling schedule from the quota table so a busy day can't exhaust the 2,200 search queries.

    Connects securely to your tools. The creator never sees your data.

    About this skill

    Playbook for Meta's Threads API, distilled from the official docs (changelog through 2026-08-18), with some behavior checked against the live API. It covers three jobs:

    • Build: write, review and debug code that calls the Threads API, following your project's existing stack (Node/TypeScript, Python, C#, Go and more).
    • Operate: post, reply, repost, delete, hide replies and pull insights on your own Threads account. Anything public or destructive waits for your explicit yes.
    • Embed: show Threads posts on a website with oEmbed and embed.js, keep pages with many embeds from getting rate-limited, and add "share to Threads" buttons with Web Intents.

    What it gets right

    • The two-step publish flow (create a container, wait for FINISHED, then publish), container IDs vs media IDs, and the 24-hour container expiry
    • Write vs read enums (TEXT vs TEXT_POST, reply_control vs reply_audience)
    • Local checks before spending quota: the 500-character limit with emoji counted as UTF-8 bytes, the 5-link limit, and ghost-post and poll conflicts
    • OAuth, long-lived token refresh and the 90-day permission grant, plus checking what a user granted with debug_token and your app token (no tester needed)
    • Quotas, webhooks (including repeat deliveries of the same event), and the official doc examples that are broken and shouldn't be copied
    • Statements come from Meta's docs unless tagged (practice) or (observed)

    Tested

    In round 7 of the benchmark (all 10 tasks, same model, no web access for either setup), the answers with the skill passed all 77 checklist items; without it, the average pass rate was 77%. Rounds 8–10 focused on embedding (tasks 6, 11, 12 and 13) after section 11 was rewritten for 1.5: with the skill every check passed (24/24, 27/27 and 17/17); without it, the average pass rates were 42%, 41% and 54%. Each task ran once per setup, so read the numbers as a direction, not proof. Details: https://github.com/Scorpio-meow/Threads-skill/blob/main/evals/BENCHMARK_en.md

    Requirements

    • Build and Embed: nothing beyond your agent.
    • Operate: Python 3.8+ (standard library only), HTTPS access to graph.threads.net, and a Threads user access token in THREADS_ACCESS_TOKEN or a .env file. Installed from Agensi, the bundled client isn't saved to your machine; your agent fetches scripts/threads_client.py and runs it from standard input.

    Open source under MIT: https://github.com/Scorpio-meow/Threads-skill Project site with the benchmark and an in-browser "check before you send" tool: https://scorpio-meow.github.io/Threads-skill/

    Not an official Meta project.

    • The bundled client has been tested against a mock API only; it hasn't posted to a real account yet.
    • Benchmarks were run on Claude only. Other SKILL.md agents should follow the same flow, but that isn't verified.
    • Operate mode needs an agent that can run terminal commands with network access to graph.threads.net. Sandboxes that only reach package registries (such as the Claude apps by default) get a ready-to-run command to execute on your own machine instead.
    • Installed from Agensi, the bundled client isn't on disk, so the agent fetches scripts/threads_client.py and feeds it to Python on standard input. That path hasn't been benchmarked yet; for regular Operate use, install from GitHub instead.
    • Where Meta's docs contradict themselves or are unclear (location search q vs query, how ghost posts treat unsupported features, whether webhooks need App Review), the skill says so instead of guessing.
    • embed.js behavior (3 embeds at a time, instgrm.Embeds.process(), data-theme) is undocumented, observed in October 2026, and may change.
    • Docs snapshot: changelog through 2026-08-18. Threads ads (Marketing API) are out of scope.

    How to use

    1. 1

      Connect your agent to the Agensi MCP

      Copy the prompt and paste it into Claude, ChatGPT, Cursor or any agent that supports MCP. It sets up the connection for you. Manual setup

    2. 2

      Sign in to Agensi

      Your agent shows a sign-in link. Sign in and click Allow.

    3. 3

      Ask for what you need

      Your agent loads this skill and uses it on your task. It always asks before any payment.

    Reviews

    No reviews yet

    Be one of the first to try it. Every listed skill goes through the trust checks below.

    Security scanned

    Checked by our 8-point scan before listing

    1 use

    Times used to date

    Free forever

    No account required to browse

    Trust & safety

    Security scan

    Security scan passed 5 days ago

    • Free with an Agensi account

    Requires

    Threads
    Python 3.8+ (Operate mode only; standard library, no packages)
    Python

    Permissions

    Network Access
    Environment Variables
    Terminal / Shell
    Read Files
    Write Files

    Allowed Hosts

    graph.threads.net

    File Scopes

    .env
    spec.json
    scripts/threads_client.py

    Only Operate mode (acting on your own Threads account) uses these. The agent reads THREADS_ACCESS_TOKEN from the environment or a .env file in the working folder and never prints it or writes it into chat, scripts or commits. It runs the bundled client scripts/threads_client.py by its full path from the working folder, or, when the skill's files aren't on disk (as when loaded from Agensi), feeds it to Python on standard input without saving it. It writes the post's parameters to a spec.json in the working folder. Network calls go to graph.threads.net only. Posting, replying, reposting, deleting and hiding replies wait for your explicit confirmation. Build and Embed modes need none of these.

    Listed12 days ago
    Updated5 days ago

    What's inside

    Frequently Asked Questions

    Teaches AI assistants Meta's Threads API: write, review and debug integration code, post/reply/pull insights on your own account, and embed Threads posts.

    This skill uses the open SKILL.md standard. Use it through an MCP-compatible agent connected to Agensi, and check the compatibility information on this page for confirmed agents and required capabilities.

    Connect your AI agent to Agensi through MCP, then ask it to use Threads API on your task. Your agent loads the latest approved version each time. Paid skills require a purchase or active subscription. Skill files are not available for download; your licence does not allow you to save, copy or export any part of a skill.