Integrations

Threads

Connect Threads to publish posts, replies and polls, search public posts, moderate replies and mentions, and track post and account performance.

OAuth authorizationApproval, Meta publishes no timingAds & SocialThreads API docsThreads MCP server overview

You end up with one long-lived Threads access token, generated in your own Meta app, or the app's Threads app ID and secret if you prefer to sign in.

App review before this connector works

Connecting your own Threads account needs no approval: add it as a Threads Tester. Only an app serving people with no role on it, or reaching public posts and profiles, needs Meta's App Review and Business Verification.

Typical wait
Meta publishes no timing. Allow a few weeks end to end, as rejected rounds restart the clock and business verification can add over a week.
Cost
Free (Meta charges nothing for App Review or Business Verification, though verification may require official company documents)
Blocked until approved
Until a permission is approved, the app only works for accounts with a role on it, Threads Testers included. Keyword search covers only the account's own posts, location search only answers for Menlo Park, mentions come only from the app's testers, and profile discovery reaches only @meta, @threads, @instagram and @facebook.
Works meanwhile
Everything else works the same day. Create the app with the Access the Threads API use case, add your Threads account as a Threads Tester, accept the invitation, generate a token and connect. Publishing, replies, your own posts, mentions by testers and insights all work on that account.

Where to apply: Meta App Dashboard for the app: complete Verification, then under App review request each permission (threads_basic, threads_content_publish, threads_read_replies, threads_manage_replies, threads_manage_insights, threads_keyword_search, threads_manage_mentions, threads_profile_discovery, threads_location_tagging, threads_delete) with a screen recording of it in use, and publish the app.

  • The screencast must show the whole flow: the Threads consent screen, a real account, and that permission's data on screen.
  • The app needs a reachable privacy policy, a deauthorize callback URL and a data deletion URL before it can be published.
  • A scope the app has not added fails the whole sign-in, so add a permission on the app before asking for it.
  • Threads has its own app ID and secret on the use case's Settings page, separate from the Meta app's pair under App settings.
  • Permission grants last 90 days and a token 60. Refreshing the token extends both, which PopMCP does while the connection is in use.
Setup time
5 min (App Review only if people with no role on your app will connect)
Auth
OAuth authorization
API base URL
https://graph.threads.com/v1.0
Rate limits
Per rolling 24 hours: 250 posts (a carousel counts as one), 1,000 replies, 100 deletions, 500 location searches, 2,200 keyword searches and 1,000 profile lookups. Calls overall are counted per app and user, at 4,800 times impressions, with at least 10 impressions assumed.

Before you begin

  • A Threads account, public or private. It does not need a linked Instagram account, though follower counts and demographics are richer with one
  • A Facebook account registered as a developer at developers.facebook.com
  • Your own Threads account added as a Threads Tester on the app, which needs no App Review

Get your credentials

Create a Meta app with the Threads use case

At My Apps click Create app, name the app and click Next. Select the Access the Threads API use case, click through the business portfolio and publishing requirement pages, and click Go to dashboard. You can skip connecting a business for your own account.

Open this screen →

developers.facebook.com/apps/creation/
Search developer docsPopMCP Social
My Apps / Create an app

Add use cases

Your use case decides which products, permissions and settings are added to the app.

App detailsUse casesBusinessRequirementsOverview
Select one or more use cases for your app
Access the Threads APIPublish posts, read replies and insights on Threads.
Manage messaging and content on InstagramInstagram, not Threads.
OtherPick your own products manually.
NextBack

An app made for another use case cannot call the Threads API. Create a new one.

Add every Threads permission

On the dashboard click Customize the Access the Threads API use case, or open Use cases in the left nav and then Access the Threads API. On Permissions, click Add next to each permission: threads_content_publish, threads_delete, threads_keyword_search, threads_location_tagging, threads_manage_insights, threads_manage_mentions, threads_manage_replies, threads_profile_discovery and threads_read_replies. threads_basic is already there.

Open this screen →

developers.facebook.com/apps/1088123456789012/use_cases/customize/
Search developer docsPopMCP Social
Use cases / Access the Threads API

Customize use case

Access the Threads API

PermissionsSettings
PermissionLets PopMCPStatus
threads_basicRequiredRead the profile and postsAdded
threads_content_publishPublish posts, replies and repostsAdd
threads_read_repliesRead repliesAdd
threads_manage_repliesHide and approve repliesAdd
threads_manage_insightsRead post and account insightsAdd

A token only holds the permissions the app had when it was generated. Add them all first.

Add your Threads account as a Threads Tester

Open App roles and then Roles. Click Add People, select Threads Tester, type your Threads username and click Add. It shows as pending for a moment.

Open this screen →

developers.facebook.com/apps/1088123456789012/roles/roles/
Search developer docsPopMCP Social
App roles / Roles

Roles

People with a role can use the app before it goes through App Review.

Add people to your app
Role
Threads Tester
Threads username
yourusername
AddCancel

Accept the invitation in Threads

Signed in to the same account at threads.com or in the app, open Settings, then Account, then Website permissions. Under Invites, click Accept next to your app. If it is not there yet, wait a minute and refresh.

Open this screen →

Generate the access token and add it to PopMCP

Back in the dashboard open Use cases, Access the Threads API, then Settings. At the bottom click Generate access token, approve in the window that opens, and copy the token, which starts with TH. Put it in the Threads access token field in PopMCP. PopMCP keeps it renewed while the connection is in use.

Open this screen →

developers.facebook.com/apps/1088123456789012/use_cases/customize/settings/
Search developer docsPopMCP Social
Use cases / Access the Threads API

Customize use case

Access the Threads API

PermissionsSettings
App credentials
Threads app ID
1088123456789012
Threads app secret
3f9c****b41a
User token generator
Access token
THAAxxxxxxxxxxxx
Generate access token
If you use Graph API Explorer instead and get a token that lasts one hour, PopMCP says so: add your Threads app secret under More options and it is extended to 60 days.

Optional: sign in through your app instead

To connect accounts you do not log in to, such as clients you have added as Threads Testers, skip the token. On the same Settings page add PopMCP's callback URL to Redirect Callback URLs, and to the Deauthorize Callback URLs and Data Deletion Request URLs fields. Copy the Threads app ID and Threads app secret into More options in PopMCP, leave the token empty and click Connect Threads. Each client signs in and approves.

Open this screen →

Optional: App Review, to serve people with no role on your app

Only needed if people who are not on your app will connect, or to reach public data beyond your testers. Complete Verification, request each permission under App review with a screen recording of it in use, then Publish the app.

Open this screen →

Connect in PopMCP

Open your workspace, choose Threads in the marketplace, and fill in the connect dialog:

FieldWhat to enter
Threads access tokensecretIn your Meta app (Threads use case) open Use cases, Access the Threads API, Settings, and generate an access token at the bottom. Your Threads account must be a Threads Tester on the app and have accepted the invitation. Stored encrypted, and renewed for you while the connection is in use.Encrypted with AES-256-GCM on save and never shown again.
Threads app ID (your own Meta app)textTo sign in through your own app instead of pasting a token, for example to connect client accounts you added as Threads Testers. Use cases, Access the Threads API, Settings. This is the Threads app ID, not the Meta app ID under App settings. Fill both app fields, and leave the token empty.
Threads app secretsecretFrom the same Settings page. Stored encrypted and used only on our server.Encrypted with AES-256-GCM on save and never shown again.
Permissions to ask forchecklistOnly with your own app: each must be added on the app under Use cases, Access the Threads API, Permissions. Threads refuses a sign-in that asks for one the app lacks.
Callback URL
https://app.popmcp.com/api/providers/threads/callback

Only for your own app sign-in. Add this exact URL under Use cases, Access the Threads API, Settings, Redirect Callback URLs (also as the deauthorize and delete callback URLs). Not needed for a pasted token.

PopMCP verifies the credential against Threads immediately. On success the connection flips to Verified and its MCP tools are provisioned.

Permissions to request

PopMCP asks Threads for exactly the permissions you tick in the connect form. Unticked permissions leave their tools listed but failing, so keep the defaults unless you have a reason to narrow them.

Threads grants exactly what you tick. 10 of 11 are on by default.

Threads use case

  • threads_basicthreads_basic
  • threads_read_repliesthreads_read_replies
  • threads_manage_insightsthreads_manage_insights
  • threads_keyword_searchthreads_keyword_search
  • threads_manage_mentionsthreads_manage_mentions
  • threads_profile_discoverythreads_profile_discovery
  • threads_location_taggingthreads_location_tagging
  • threads_content_publishthreads_content_publish
  • threads_manage_repliesthreads_manage_replies
  • threads_deletethreads_delete

Only if your app has it

  • threads_share_to_instagramthreads_share_to_instagram

Verify it worked

PopMCP calls /me with the token right away, and shows your @username. It also reads when the token expires and which permissions it holds, and names any that are missing. Ask your AI client to call threads_get_profile to confirm, or threads_get_token_info to see the permissions.

Troubleshooting

"The user has not accepted the invite to test the app" when generating a token

Why: The Threads Tester invitation is still pending.

Fix: In Threads open Settings, Account, Website permissions, Invites, and accept it. Then generate the token again.

"Threads did not accept this token"

Why: The token expired, was revoked, or was copied incompletely.

Fix: Generate a new one under Use cases, Access the Threads API, Settings, and paste the whole value.

"This token lasts only an hour"

Why: The token came from a tool that issues short-lived tokens, such as Graph API Explorer.

Fix: Use the Generate access token button on the use case's Settings page, or add your Threads app secret under More options so PopMCP can extend it to 60 days.

"Invalid Scopes" on the Threads sign-in page

Why: An own-app sign-in asked for a permission the app has not added.

Fix: Add it under Use cases, Access the Threads API, Permissions, or untick it in the connect form.

The sign-in fails or the secret is refused

Why: The Meta app ID and secret under App settings were used. Threads has its own pair.

Fix: Copy the Threads app ID and Threads app secret from Use cases, Access the Threads API, Settings.

Redirect error on the Threads sign-in page

Why: The callback URL is missing or differs. The dashboard may add a trailing slash.

Fix: Paste PopMCP's callback URL exactly under Redirect Callback URLs and check the saved value.

Keyword search only finds your own posts, or profile lookup finds nobody

Why: Those permissions are limited until Meta approves them through App Review.

Fix: This is expected for an app in development. Request the permission under App review to reach public posts.

A tool reports a missing permission

Why: The token was generated before that permission was added to the app.

Fix: Add it on the app, generate a new token and reconnect. threads_get_token_info lists what the connection holds.

Reference

On this page