More screenshots

    Works with the AI Agents you already use

    Claude CodeClaude CodeCursorCursorCodex CLICodex CLIMuseMuseDotsDots+22 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

    Security 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%. 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.

    How to use

    Skills on Agensi run inside your AI agent. Copy the prompt, paste it into your agent, and it connects to Agensi and installs this skill for you. If a payment is needed, your agent shows it to you first.

    Reviews

    No reviews yet

    Be one of the first to try it. Every listed skill passes our trust checks below.

    Security scanned

    Passed our 8-point scan before listing

    Fresh listing

    Recently published to Agensi

    Free forever

    No account required to browse

    Trust & safety

    Security scanned

    Verified clean today

    • Free to download with an account

    Requires

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

    Listed2 days ago
    Updatedtoday

    What's inside

    Frequently Asked Questions