- Home
- Skills
- APIs & Backend
- Threads API
More screenshots
Works with the AI Agents you already use
Threads API
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
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:
- keyword_search for "pour-over coffee" only returns posts from our own account. Nobody else's posts show up.
- location_search always returns places in Menlo Park, California, whether we search "Taipei 101" or "Xinyi District".
- 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.
| Symptom | What's happening | Permission to get approved |
|---|---|---|
keyword_search returns only your own posts | Until approved, keyword and topic search only finds the token owner's posts | threads_keyword_search |
location_search always answers with Menlo Park | Until approved, location search only answers the query "Menlo Park" | threads_location_tagging |
profile_lookup works for @threads but not for the brand | With 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_lookupstill 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
qwhile the reference listsquery. Sendqfirst, then tryquery.
Budget the monitoring around the quotas
| Endpoint | Limit (rolling 24 h) | Notes |
|---|---|---|
keyword_search | 2,200 queries per user, across all apps | Queries with no results don't count; sensitive keywords return [] |
profile_lookup, profile_posts | 1,000 requests each | The docs don't say whether the two share a quota, so budget as if they do |
location_search | 500 searches | Not paginated |
Next steps
- File App Review for
threads_keyword_search,threads_location_taggingandthreads_profile_discoverynow; 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 (
TEXTvsTEXT_POST,reply_controlvsreply_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_tokenand 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_TOKENor a.envfile. Installed from Agensi, the bundled client isn't saved to your machine; your agent fetchesscripts/threads_client.pyand 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