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 per successful request.
About this endpoint
Creator and brand jobs often already have a Threads permalink from Instagram cross-posts, Slack alerts, or a CRM note. What they need next is one structured row: caption, shortcode, who posted it, likes and views when public, and whether the media is text, image, video, or a carousel. Scraping threads.net HTML for every paste breaks when Meta changes the client.
`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, takenAt, optional reply flags), `data.author`, `data.metrics` (likes, views, replies, reposts, quotes, reshares when available), and `data.media` (`mediaType` plus image/video renditions). 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`. Pricing is on the credit badge for this operation; bill from `meta.creditsCharged` on every response.
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. Full parameters and examples are in the API docs.
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, takenAt, 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), plus optional `replies` and `relatedPosts` arrays when Threads shows them.
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.