Channels

Threads

What Threads lets an agent do through uplika, what it costs you in limits, and what it simply does not offer.

Quick reference

NameTypeDescription
characterstext500
imagesmediaup to 20 per post
carouselmedia2-20 items, images and video can be mixed
videomedia1 per post
text alonemediaallowed
posts / 24hlimit250
deletes / 24hlimit100
statusstatebeta

These numbers come from the same file the server validates against, so they cannot drift from what publishing actually accepts.

Which permissions does connecting ask for?

Connecting asks Meta for six permissions. The screen the person sees is Meta's, so those are the names they will read. Ours are the narrower scopes an agent holds after that.

What Meta asks the person to approve

NameTypeDescription
threads_basicmetaRead the account's own profile and posts. Every other call depends on it.
threads_content_publishmetaCreate a post and publish it.
threads_deletemetaDelete a post the account published.
threads_read_repliesmetaRead the reply thread under the account's posts.
threads_manage_repliesmetaReply to a post or a reply, and hide a reply.
threads_manage_insightsmetaRead view, like, reply, repost, quote and share counts.

What an agent token carries

NameTypeDescription
accounts:readreadList connected channels.
posts:readreadRead publishing history, replies and insights.
posts:writewritePublish, delete, reply, hide and upload.
offline_accessoauthKeep the agent connected after the browser closes.

How do I publish my first Threads post?

Connect the channel in the dashboard, then call publish. Nothing else has to be set up first.

curl -X POST https://api.uplika.com/v1/posts \
  -H "Authorization: Bearer $UPLIKA_KEY" \
  -H "Content-Type: application/json" \
  -d '{"content":"hello from an agent","accountIds":["acc_..."]}'

What kinds of posts can I publish?

Text on its own, one image, one video, or a carousel that mixes images and video. A carousel needs at least two items. Alt text belongs to a carousel item, not to the post, and Threads rejects it anywhere else.

What do the image files have to look like?

We hand Threads a public URL and Threads fetches it, so the file has to already be somewhere it can reach. Uploading through us puts it on our CDN and gives you that URL.

NameTypeDescription
formatsimageimage/jpeg, image/png
sizeimageup to 8MB
aspect ratioimageup to 10:1 (any pixel width)
countimageup to 20 per post
formatsvideovideo/mp4, video/quicktime
sizevideoup to 2048MB
lengthvideoup to 43200 seconds
widthvideoup to 3840px

What numbers can I read back?

Six per post: views, likes, replies, reposts, quotes and shares. They come from the platform when you ask, and we keep a daily snapshot so the history survives even after you delete the post.

What does the Threads API not give us?

Not everything you can do in the Threads app is in its API. These are gaps on Meta's side, not ours.

PollsThere is no way to attach one when creating a post.
Quote postsYou can link to a post, but you cannot quote it as a quote post.
Editing after publishingDelete and post again is the only route.
Who liked itYou get the count, never the list of people.
Direct messagesNot part of the Threads API at all.
New top level commentsYou can reply to a post or to a reply. You cannot start a fresh comment on someone else's post.

What can uplika not do yet?

These are ours to build, and none of them are blocked by the platform.

SchedulingPublishing happens the moment you call it. There is no queue and no draft.
DraftsNothing is stored half finished.
WebhooksPoll get_post instead. It settles in seconds for text.

Can an agent work the replies?

It can read the thread under a post, answer any reply in it, and hide a reply. It cannot start a new top level comment on a post that is not yours, because the API has no call for that.

What do the channel's own error messages mean?

When Threads refuses something we pass its sentence through instead of rewriting it, so you can search for the exact words. These are the ones Meta documents for video containers (checked 2026-08-10). The rest arrive as written.

What Threads saysWhat it meansWhat to do
FAILED_DOWNLOADING_VIDEOThreads could not fetch the file from the URL we handed it.Upload through us so the file sits on our CDN, or make sure the URL is public and stays up for a few minutes.
INVALID_ASPEC_RATIOThe frame shape is outside what Threads takes. The spelling is Meta's, not a typo of ours.Re-encode closer to square or 9:16 and publish again.
INVALID_DURATIONThe clip is longer or shorter than Threads allows.Trim it and publish again. Retrying the same file will fail the same way.
UNKNOWNThreads failed on its own side and did not say why. We replace this one with a sentence, because the word on its own tells you nothing.Try again. The same file usually goes through on a second attempt.

Questions

Can I post to Threads without connecting the channel first?

No. Publishing needs a token for that specific account, and the only way to get one is the connect flow in the dashboard. An agent cannot do it on your behalf.

Does a long post get split automatically?

No, and that is on purpose. Pass threadItems and you decide where the breaks fall. We keep the order and wait for each piece to land before sending the next one.

What happens to my posts if I disconnect the channel?

They stay on Threads. We keep our record and its daily metric snapshots too, so the history does not disappear. What stops is publishing.