Threads API: how to post and read via the official API
Yes, Threads has an official API, and it is the friendliest one Meta ships. You publish in two calls, you can read your posts, replies and insights, and for your own profile there is no app review to pass. The cap is 250 published posts and 1,000 replies per 24 hours. Everything below comes from Meta's Threads documentation, read on September 10, 2026.
What the Threads API can do today
From the Threads API overview, the API covers four jobs: create and publish content on a user's behalf, display that user's posts inside your app, manage replies, and delete posts. The documentation index also lists profiles, mentions, insights, webhooks, keyword search and location tagging.
Calls go to graph.threads.com or graph.threads.net, with an access token. The scopes are granular, so ask only for what you use:
| Operation | Scopes required |
|---|---|
| Read a profile and its posts | threads_basic |
| Publish a post or a reply | threads_basic, threads_content_publish |
| Hide, approve or moderate replies | threads_basic, threads_content_publish, threads_manage_replies |
| Delete a post | threads_basic, threads_delete |
| Read insights | threads_basic, threads_manage_insights |
| Tag and search locations | threads_basic, threads_location_tagging |
Compare that with Instagram, where publishing needs a professional account linked to a Facebook Page plus App Review, and you see why Threads is where I tell people to test their publishing code first.
Threads posting API: the two step publish flow
Same shape as Instagram. Create a media container, then publish it, as described in the posts guide.
# 1. create the container
curl -X POST "https://graph.threads.net/v1.0/<THREADS_USER_ID>/threads" \
-d "media_type=TEXT" \
-d "text=Shipping notes for the week" \
-d "access_token=<TOKEN>"
# -> { "id": "17890000000000000" }
# 2. publish it
curl -X POST "https://graph.threads.net/v1.0/<THREADS_USER_ID>/threads_publish" \
-d "creation_id=17890000000000000" \
-d "access_token=<TOKEN>"
media_type takes TEXT, IMAGE or VIDEO, with image_url or video_url for media. Text posts are limited to 500 characters, and emojis count as their number of UTF-8 bytes, so an emoji heavy post runs out of room sooner than the character count suggests.
The step people skip is the wait. Meta's own advice: "wait on average 30 seconds before publishing a Threads media container to give our server enough time to fully process the upload". Publish too early on a video and you get an error, not a post. Build the delay in, or poll the container status before step 2.
Carousels, replies and who is allowed to answer
A carousel is the same flow with an extra layer: create each child container with is_carousel_item=true, create a parent container of type CAROUSEL listing the children, then publish the parent. Minimum two children, maximum 20, images and videos can be mixed. A carousel counts as a single post against your rate limit.
Replies use the same publish endpoints with a reply_to_id, and they have their own budget separate from posts.
Moderation is where the Threads API is genuinely ahead of Instagram's. From the reply management docs:
reply_controlis set when you create the post and takeseveryone,accounts_you_follow,mentioned_only,parent_post_author_onlyorfollowers_only.enable_reply_approvals=trueon the container holds replies for approval instead of publishing them.POST /<THREADS_REPLY_ID>/manage_replyhides or unhides a top level reply and everything nested under it.POST /<THREADS_REPLY_ID>/manage_pending_replyapproves or rejects one waiting in the queue, andGET /<threads-media-id>/pending_replieslists them.
If you are building any kind of auto reply, read that list twice. Being able to hold replies for approval is what makes an automated account survivable.
Rate limits: the numbers that shape your queue
All three are 24 hour moving windows, per Threads profile, from the API overview:
| Operation | Limit per 24 hours |
|---|---|
| Published posts | 250 |
| Replies | 1,000 |
| Deletions | 100 |
| Location searches | 500 |
There is also a call volume formula on top: 4800 times the number of impressions, with a minimum of 10 impressions. A brand new profile with no reach therefore gets a small call budget, which surprises people testing with an empty account.
Put next to its siblings, checked the same day: Instagram allows 100 API published posts per 24 hours, and Facebook Pages uses 4800 calls times the number of engaged users. Threads is the most generous of the three for publishing volume. The full cross platform table is in our social media API rate limits reference, and the wider picture is in the 2026 social media API guide.
Insights: what you can actually measure
Two endpoints, both needing threads_manage_insights, per the insights docs.
Per post, GET /<threads-media-id>/insights returns views, likes, replies, reposts, quotes and shares.
Per account, GET /<threads-user-id>/threads_insights returns views as a time series, then likes, replies, reposts, quotes, clicks, followers_count and follower_demographics as totals. Note that the replies account metric counts top level replies only, so it will read lower than the sum of your per post reply counts.
One hard edge: the earliest timestamp the API accepts is 1712991600, April 13, 2024. Any range starting before that is rejected, so a backfill job needs to clamp its start date.
Threads API news: what is in the docs in September 2026
The Threads API shipped in 2024 as publish plus basic reads. Reading the documentation today, four things go beyond that first version: reply moderation with pending approvals, keyword search, webhooks, and location tagging with its own threads_location_tagging scope and a 500 searches per day cap.
For most builds the webhooks matter most. Polling GET /<threads-media-id>/pending_replies on a schedule burns your call budget against that impressions formula; subscribing does not.
Do you need a Threads integration, or a layer over it
Honestly: if Threads is the only network you care about, build direct. It is the cheapest integration in this whole category. No review, two endpoints for publishing, granular scopes, decent docs. You will be posting in an afternoon.
The case for a layer is the same as everywhere else: you also want Instagram, LinkedIn, X, TikTok and YouTube, and you do not want six token stores, six media pipelines and three app reviews. PlugKit publishes to Threads, with the same constraints Meta sets, text only up to 500 characters, one image or video, or a carousel of 2 to 20. The publishing guide has the detail platform by platform.
For what a layer changes when an agent is the caller, rather than a cron job, see the Hermes Agent setup guide and the /social-media-api/ hub. PlugKit is $29 a month for 5 connected accounts, cancel anytime.
FAQ
Does Threads have an official API?
Yes. Meta shipped the Threads API in 2024 and it now covers publishing, reading your own posts and profile, replies and moderation, insights, webhooks, keyword search and location tagging. It runs on graph.threads.com or graph.threads.net with OAuth access tokens and granular scopes.
How many posts can I publish per day through the Threads API?
250 published posts within a 24 hour moving period, per Threads profile. Replies get a separate budget of 1,000 per 24 hours and deletions are capped at 100. A carousel counts as one post, not as one post per image.
Is the Threads API free to use?
Meta does not charge for Threads API calls. The cost is in the limits: the post, reply and deletion caps above, plus a call budget of 4800 times your number of impressions with a minimum of 10 impressions, so a profile with no audience gets a small allowance.
Do I need app review to post to Threads with the API?
Not for your own profile. Publishing needs the threads_basic and threads_content_publish scopes, which you can authorize yourself. App review comes into play when your app acts for other people's profiles, which is the same rule as the rest of Meta's platform.
Can I schedule Threads posts with the API?
Not on Meta's side. The API publishes when you call threads_publish, so your own scheduler holds the queue and fires at the right minute, or you use a service that holds it for you. Remember the recommended 30 second wait between creating the container and publishing it.
One plug for every platform your agent touches
$29 a month for 5 connected accounts, cancel anytime. Every feature in every plan.
Get your API key →