The Threads API,without the app review
Publish posts, carousels, threads of up to 25 posts and polls to Threads. Answer replies and mentions, and read insights. One API key, on OmniSocials’ approved Meta app.
Webhooksyour-app.com/hooks
post.scheduledpost 1024just now200
post.publishedpost 10192 h ago200
post.approvedpost 10193 h ago200
POST/v1/posts/createapplication/json
01{
02 "content": "Reply to Threads replies from your own code.",
03 "accounts": ["threads"],
04 "media_urls": [
05 { "url": "https://cdn.example.com/inbox-api.png",
06 "alt": "The Social Inbox next to an API request" }
07 ],
08 "schedule_at": "2026-10-22T18:00:00Z"
09}
Sending201 Created412 ms
Send10{
11 "data": {
12 "id": "1024",
13 "status": "scheduled",
14 "app_url": "https://app.omnisocials.com/create-post/1024"
15 }
16}
A request creates a Threads image post with alt text for Thu at 18:00; it appears in the OmniSocials calendar and the webhook post.scheduled fires.
Your coding agent runs the same calls through the CLI
Skip the Meta app review
Threads’ own API needs a Meta app, an App Review for replies and mentions, long-lived tokens and a media container you poll before every post. OmniSocials already did that work.
On your own
threads_basicthreads_content_publishthreads_manage_insights
threads_manage_repliesthreads_read_repliesthreads_manage_mentions
threads_delete
Meta appApp reviewTokensHostingContainersPollingReply chainsRetriesFirst postOn OmniSocials
Sign inAPI keyPOSTFirst postAll 7 scopes already approvedEvery format, one request
Posts, carousels of images and videos, threads and polls share one request shape. Add media URLs with alt text, thread parts or poll options, and a time. OmniSocials checks the post against Threads’ rules before it publishes.
POST/v1/posts/create
01{
02 "content": "Reply to Threads replies from your own code.",
03 "accounts": ["threads"],
04 "media_urls": [
05 { "url": "https://cdn.example.com/inbox-api.png",
06 "alt": "The Social Inbox next to an API request" }
07 ],
08 "schedule_at": "2026-10-22T18:00:00Z"
09}
201 Createdstatus: "scheduled"
Posts and carousels
Text, one image or video, or a carousel of up to 20 images and videos mixed. Every image can carry alt text.
media_urls{ url, alt }
Threads
2 to 25 posts in one request, each with up to 500 characters and its own media. Every post replies to the one before.
threads.thread_parts
Polls
The post text is the question, with 2 to 4 options. Threads closes the poll after 24 hours.
threads.poll
A whole thread in one request
Send up to 25 posts in thread_parts. OmniSocials publishes them in order, each one as a reply to the one before, and keeps track of every post that went out.
POST/v1/posts/create-and-publishapplication/json
01{
02 "content": "",
03 "accounts": ["threads"],
04 "threads": {
05 "thread_parts": [
06 { "text": "Our SDKs are out: post to Threads from code.",
07 "media_urls": [
08 { "url": "https://cdn.example.com/sdks.png",
09 "alt": "Post from your own code, a Node.js sample" }
10 ] },
11 { "text": "Node, Python, PHP, Ruby, Go, Java, .NET, Rust." },
12 { "text": "Each one wraps the same REST API." }
13 ]
14 }
15}
201 Created388 ms
16{ "data": { "id": "1025", "status": "posting",
17 "accounts": { "threads": true } } }
Webhooksyour-app.com/hooks
post.publishedpost 1025just now200
post.scheduledpost 10244 min ago200
2 to 25 posts
Each post holds up to 500 characters and up to 20 images or videos, mixed, with alt text on every image.
threads.thread_parts{ url, alt }
Retries pick up where they stopped
The posts that went out are saved. A retry starts at the first post that did not, so nothing is published twice.
POST /v1/posts/:id/retry
A poll on the first post
Add threads.poll to a thread and the poll goes on its first post. Threads closes it after 24 hours; the results come with the analytics.
threads.pollmetrics.poll
One request with three thread parts goes to /v1/posts/create-and-publish; the webhook post.published fires and the post page shows the three posts as one thread on Threads.
Connect Threads once, post from code
Sign in with Threads once inside OmniSocials. Create an API key, and your code posts, replies and reports for that profile.
OmniSocials
Name, icon, social channels and who can open this workspace.
GeneralMembersClientsApproval workflowsAPI
Workspace iconJPG or PNG, up to 2 MB.
Workspace nameOmniSocials
Social channels
The accounts this workspace posts to.
Connected
@omnisocials_
Instagram
OmniSocials
LinkedIn Page
@omnisocials_
X
Add a channel
Coming soon




Danger zone
Delete workspace
Deletes this workspace with its posts, media and settings for good. This cannot be undone.
OmniSocials
Name, icon, social channels and who can open this workspace.
GeneralMembersClientsApproval workflowsAPI
API keys
Keys that can only reach this workspace.
| Name | Key | Last used | |
|---|---|---|---|
Claude | omsk_live_••••7c2e | Oct 20, 2026 |
GET/v1/accounts?platform=threads
200 OK88 ms
01{
02 "data": [
03 {
04 "id": "4127_threads",
05 "platform": "threads",
06 "username": "omnisocials_",
07 "content_types": ["post"],
08 "status": "active",
09 "needs_reconnect": false
10 }
11 ],
12 "workspace_name": "OmniSocials"
13}
Authorization: Bearer $OMNISOCIALS_API_KEY
Threads sign-in
Sign in with your Threads profile once. OmniSocials keeps the token fresh: it lasts 60 days and is renewed at day 30.
A key per workspace
A key only reaches its own workspace. Inbox access is switched on per key.
What the profile can post
The accounts call lists the connected profile with its formats, and says when the connection needs a reconnect.
GET /v1/accountsneeds_reconnect
Answer replies and mentions
List the replies on your Threads posts and the posts that mention you, then reply or hide a reply from your own code. Each answer goes out as a native Threads reply.
Social Inbox
AllUnread2CommentsDMs
@omnisocials_Replies and mentions



Comments on your postThreads post · 4 commentsOpen post
New: LinkedIn in the Social Inbox. Comments and mentions in one place.
4 replies2 new since you looked
priya.nairYesterday
Finally one place for every comment.
omnisocials_YouYesterday
That was the plan, Priya!
2 new
tomas.dev13:20
Can I hide spam replies through the API?
hana.studio13:58
Are Threads replies in the inbox API too?
Replies are public on Threads and post as omnisocials_
GET/v1/inbox/conversations?platform=threads&type=comment
200 OK104 ms
01{
02 "data": [
03 {
04 "conversation_id": "threads_comment_904",
05 "platform": "threads",
06 "type": "comment",
07 "participant": {
08 "name": "hana.studio"
09 },
10 "unread_count": 2,
11 "last_message": {
12 "direction": "incoming",
13 "text": "Are Threads replies in the inbox API too?"
14 }
15 }
16 ]
17}
Authorization: Bearer $OMNISOCIALS_API_KEY
Replies
Answer any reply on your posts as a native Threads reply. Each conversation comes with the post it sits on.
/conversations/:id/reply
Hide a reply
Hide or unhide a top-level reply on your own post. Nested replies can’t be hidden, and replies can’t be deleted.
/inbox/messages/:id/hide
Mentions
Posts that mention your profile land in the same list. New replies come in by webhook and a check every 15 minutes.
type=mention
“The MCP is the real game changer for me. It makes the whole workflow feel much faster and less messy.”

Ansub Khan
Founder of Supafast
Read what Threads reports
Views, likes, replies, reposts, quotes and shares per post, poll results, and the profile’s followers per day. For a thread, the API adds up all of its posts.
AnalyticsReports
Followers
4125.9%
Impressions
2,10422.6%
Engagements
21633.3%
Engagement Rate
10.3%0.8pt
Posts8Accounts7
Post | Channels | Impressions | Likes | Comments | Shares | Eng. rate | |
|---|---|---|---|---|---|---|---|
![]() New: Mastodon threads. Write the whole thread in one place. Oct 21, 2026 | 214 | 17 | 5 | 2 | 13.1% | ||
![]() New: LinkedIn in the Social Inbox. Comments and mentions in one place. Oct 20, 2026 | 342 | 21 | 4 | 3 | 9.1% | ||
New: OmniSocials SDKs in 8 languages. Oct 19, 2026 | 268 | 19 | 3 | 1 | 10.8% | ||
![]() New: PDF uploads. Every page of your PDF becomes a slide. Oct 19, 2026 | 297 | 15 | 2 | 4 | 8.1% | ||
Polls on X, Threads and Mastodon. Oct 12, 2026 | 231 | 14 | 6 | 2 | 10.8% | ||
![]() New: Bluesky threads, written in the same composer. Oct 6, 2026 | 186 | 11 | 1 | 1 | 8.1% | ||
![]() New: OmniSocials SDKs in 8 languages. Post from your own code. Sep 29, 2026 | 312 | 24 | 5 | 3 | 12.8% | ||
![]() New: Manage the Social Inbox through the API Sep 24, 2026 | 254 | 16 | 3 | 2 | 9.4% |
GET/v1/analytics/posts/1019
Authorization: Bearer $OMNISOCIALS_API_KEY
200 OK143 ms
01{
02 "data": {
03 "post_id": "1019",
04 "platforms": {
05 "threads": {
06 "thread_parts": 1,
07 "metrics": {
08 "views": 214, "likes": 17,
09 "replies": 5, "reposts": 3,
10 "quotes": 1, "shares": 2,
11 "engagement": 28
12 }
13 }
14 }
15 }
16}
Per post and per thread
Views, likes, replies, reposts, quotes and shares. A thread adds up its posts, and a poll adds the share of each option.
/analytics/posts/:idthread_parts
Per profile and workspace
A daily snapshot of the profile: followers, views, likes, replies, reposts and link clicks per URL. Plus a workspace overview.
/analytics/accounts/analytics/overview
Best times to post
Days and hours worked out from your own Threads history, once 15 of your posts are analyzed.
/analytics/best-times
Under the hood
Built for production
Signed webhooks, automatic retries, SDKs in 8 languages and a key per workspace. Create a key and send your first request in minutes.
Threads’ rules, in one place
OmniSocials checks every post against them before it reaches Threads, so a long post or a bad file fails in your request, not at publish time.
Text500 characters per post
LinksUp to 5 per post
MediaUp to 20 images or videos per post
ImagesJPEG, PNG or WebP, up to 8 MB
Video5 minutes, 100 MB in media_urls, 1 GB via upload-from-url
Threads2 to 25 posts
Polls2 to 4 options of 25 characters, 24 hours
Posts250 per profile in 24 hours
Replies1,000 a day per workspace
AccountsThreads profiles, one per workspace
Your first thread in three steps
About five minutes from sign-up to a scheduled thread on Threads. Then hand the key to your coding agent.
Create an API key
Start your trial, open Settings, API and create a key. It is shown once.
Settings › APIStep 1
Connect Threads
Sign in with Threads in OmniSocials once. Then list the profile from your code.
GET /v1/accountsStep 2
Send your first thread
Post now with create-and-publish, or add schedule_at to plan it.
POST /v1/posts/createStep 3
Frequently
Asked Questions
Robert LigthartFounder of OmniSocials
Ship your Threads
integration this week.
From $10 per seat a month, API included. 14-day free trial.
https://docs.omnisocials.com


