Threads Post API
Pass a public threads.net post URL and get caption, author, engagement, media, and reply samples in the shared Social Fetch JSON envelope.
GET /v1/threads/posts1 credit Failed requests are free
About this endpoint
GET /v1/threads/posts takes a required public post url (for example https://www.threads.net/@handle/post/{shortcode}). Send x-api-key and branch on data.lookupStatus before you write — found or not_found. On found, read data.post (id, shortcode, url, caption, createdAt (ISO-8601), optional reply flags), data.author, data.metrics (likes, views, replies, reposts, quotes, reshares when available), and data.media (mediaType plus image/video renditions). data.threadItems lists the author's own continuation posts in the thread, each with its caption, metrics, and media, which is useful when a creator posts the details in a follow-up reply. The payload can also include replies and relatedPosts when Threads exposes them. Optional trim=true shrinks the body.
This route is one post by URL. To page a handle's feed use GET /v1/threads/profiles/{handle}/posts. Keyword discovery is GET /v1/threads/search. Bill from meta.creditsCharged.
Threads Post API FAQ
How do I fetch a Threads post by URL via API?
Call GET /v1/threads/posts with your Social Fetch API key (x-api-key) and a public Threads post url query param. Read data.lookupStatus, then data.post, data.author, data.metrics, and data.media when the post is available. See the API docs for parameters and examples.
How much does the Threads Post API cost?
Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged — that field is the billing source of truth.
What URL format does the Threads post endpoint accept?
Pass a public Threads post permalink, typically https://www.threads.net/@{handle}/post/{shortcode} (or the equivalent threads.com host). Profile pages belong on GET /v1/threads/profiles/{handle}. Private or deleted posts resolve as not_found.
What fields are in the Threads post response?
When lookupStatus is found, you get post (id, shortcode, public URL, caption, createdAt (ISO-8601), optional isReply / replyControl), author (handle, display name, avatar, verified), metrics (likes, views, replies, reposts, quotes, reshares when present), media (mediaType plus image and video renditions), threadItems (the author's own continuation posts, each with caption, metrics, and media), plus optional replies and relatedPosts arrays when Threads shows them.
Does the Threads post API return the author's follow-up posts in a thread?
Yes. When you request the first post of a thread, data.threadItems lists the author's own continuation posts in order, each with its URL, caption, metrics, and media. Image-only continuations have a null caption and their images in media. Replies from other people stay in replies. threadItems is an empty array when the author didn't continue the thread. With trim=true the continuation media is left out.
What does the trim query parameter do?
Optional trim=true returns a smaller payload with fewer fields. Use it when you only need core post text and metrics and want less JSON per call.
Threads post by URL vs profile posts vs search?
Use GET /v1/threads/posts when you already have a post permalink. Use GET /v1/threads/profiles/{handle}/posts to list posts for a username. Use GET /v1/threads/search to find posts by keyword. They are separate paths on the Threads hub.
What happens when a Threads post URL is not found?
lookupStatus of not_found means Social Fetch could not return a public post for that URL. Post, author, metrics, and media are null. Keep meta.requestId if you need support on that row.