Threads API
The Threads API (by Meta) enables programmatic publishing, reply management, and analytics for Threads — Meta's text-based conversation platform. Supports text, images, videos, carousels, GIFs, polls, and spoilers.
API Overview
2026 EditionThe Threads API is Meta's official developer interface for Threads, the text-based social platform. Developers can publish posts, manage replies, moderate conversations, and retrieve account and media analytics. The API uses OAuth 2.0 with a 60-day token refresh cycle and has a container-based publishing model similar to Instagram.
New in 2026: GIF support (via GIPHY), Polls with vote tracking, Spoiler tags for text/images/video, cross-sharing to Instagram Stories, pending reply approval management, and a Tokenless oEmbed API for embedding public posts.
API Features
| Feature | Description | Permission | Status |
|---|---|---|---|
| Text Post | Publish plain text posts up to 500 characters | threads_content_publish | Available |
| Image Post | Publish single image posts via public URL | threads_content_publish | Available |
| Video Post | Publish video posts via public URL | threads_content_publish | Available |
| Carousel Post | Publish carousels with 2–20 items | threads_content_publish | Available |
| GIF Posts | Publish animated GIFs via GIPHY integration | threads_content_publish | New 2026 |
| Polls | Create polls with vote tracking (total_votes) | threads_content_publish | New 2026 |
| Spoiler Tags | Add spoiler tags to text, image, and video posts | threads_content_publish | New 2026 |
| Reply Moderation | Hide replies, manage pending reply approvals | threads_manage_replies | Available |
| Account Insights | Views, followers, engagement metrics | threads_read_engagement | Available |
| oEmbed (Tokenless) | Embed public Threads posts without access token | None required | New 2026 |
| Cross-Share to Instagram | Share Threads posts to linked Instagram Stories | threads_share_to_instagram | New 2026 |
Rate Limits
| Limit Type | Value | Window | Notes |
|---|---|---|---|
| Publishing Cap | 250 posts / 24 hours | Rolling 24 hours | Per Threads profile. Carousels count as 1 post. |
| Reply Cap | 1,000 replies / 24 hours | Rolling 24 hours | Per profile |
| Deletion Cap | 100 deletions / 24 hours | Rolling 24 hours | Per profile |
| API Call Budget (BUC) | 4,800 × Impressions | Rolling 24 hours | Minimum impressions value: 10 |
| Token Refresh | Every 60 days | — | Access tokens expire and must be refreshed |
When rate limits are exceeded, the API returns HTTP 429. Use the Retry-After header value and implement exponential backoff with jitter in all retry logic.
Media Requirements
Container-Based Model: The Threads API does not support direct file uploads. All media URLs must be publicly accessible by Meta's servers. Create a media container first with the URL, then publish the container.
| Media Type | Details |
|---|---|
| Text Posts | Maximum 500 characters per post. Unicode supported. |
| Images | JPG, PNG — hosted at publicly accessible URL. Max 8 MB recommended. |
| Videos | MP4 (H.264 + AAC) — hosted at publicly accessible URL. Up to 5 minutes. |
| Carousel | 2 to 20 items per carousel. Mix of images and videos supported. |
| GIFs | Via GIPHY integration — use a GIPHY URL. Animated GIFs not directly uploaded. |
Authentication & Access
| Requirement | Details |
|---|---|
| Auth Method | OAuth 2.0 via Meta App |
| Token Expiry | 60-day cycle — access tokens must be refreshed every 60 days |
| Meta App Review | Required for production access to all publishing and management permissions |
| Developer Account | Meta Developer account at developers.facebook.com |
Permission Scopes
Quick Start Guide
Create a Threads Container
POST https://graph.facebook.com/v26.0/{threads-user-id}/threads
?media_type=TEXT
&text=Hello+from+the+Threads+API%21
&access_token=YOUR_ACCESS_TOKENReturns a id (container ID).
Publish the Container
POST https://graph.facebook.com/v26.0/{threads-user-id}/threads_publish
?creation_id=CONTAINER_ID
&access_token=YOUR_ACCESS_TOKENRetrieve Media Insights
GET https://graph.facebook.com/v26.0/{threads-media-id}/insights
?metric=views,likes,replies,reposts
&access_token=YOUR_ACCESS_TOKENCommon Errors & Solutions
| Error | Meaning | Solution |
|---|---|---|
| HTTP 429 | Rate limit exceeded | Check Retry-After header and implement exponential backoff with jitter |
| 190 | Expired access token | Refresh the access token — Threads tokens expire every 60 days |
| 200 / 10 | Permission denied | Request and be approved for the required permission scope via App Review |
| 2207001 | Publishing limit reached | Reduce posting frequency — 250 posts per 24-hour rolling window is the maximum |
| Media URL Error | Media URL not publicly accessible | Ensure media is hosted on a publicly reachable server without authentication barriers |
Best Practices
Automate Token Refresh
Build a scheduled job that refreshes Threads access tokens before the 60-day expiry. A missed refresh will break all API operations.
Host Media on Public CDN
Always serve media from a publicly accessible CDN. Meta's servers fetch the URL — ensure no authentication is required to access it.
Respect Publishing Limits
Stay well within the 250 posts/day and 1,000 replies/day limits. Build a queue with a rate-aware scheduler for high-volume use cases.
Use oEmbed for Display
For embedding public Threads posts on websites, use the Tokenless oEmbed API — no access token required for read-only embeds.