Threads API · Text · Images · Videos · Carousels

Ship to Threads before the Meta App Review queue moves.

One REST call posts text, images, videos, and carousels to Threads. PostPulse owns the Meta audit, manages the 60-day token, and adds scheduling Meta's API doesn't have. 10 free publications on signup. No card.

No Meta audit on your sideScheduling built inNo credit card to test
Numbers from the last 12 months · see live stats →
0+
Threads posts shipped
0+
Total posts published
across all 9 platforms
9
Platforms — one API
Welcome — pick your camp

Two kinds of people land on this page.

The Threads API only opened up in mid-2024 and it still rides on Meta's developer platform. You either tried it already, or you're about to. Pick the panel that fits.

Then you know. The threads_content_publish scope is gated behind App Review. Until Meta approves you, your app can only post to your own account and hand-registered testers. Tokens expire at 60 days. Posting is a multi-step container API. Rate limits cap you at 250 posts per user per 24 hours.

Your hell ends here. PostPulse holds the Meta audit. Scheduling is one field. Carousels are one request. We catch broken media before Threads does.

Native Threads API · the actual cost

The 6 things you'd build yourself

Each line below is a real ticket the Threads API hands you on day one. PostPulse handles all of them.

01

Meta App Review

The threads_basic and threads_content_publish scopes both require manual review. Use-case justification, screencasts, privacy policy URLs, data-deletion endpoints. Multi-day reviews, and over-requesting permissions can get your app flagged.

✓ PostPulse is the audited Meta app. You inherit the access.
02

Tester-only sandbox

Until App Review approves you, you can only publish to your own account and accounts manually registered as testers in your Meta developer app. You can't onboard real users yet.

✓ PostPulse runs as a fully audited app. Real users from day one.
03

The 250 / 24h ceiling

Meta caps Threads at 250 posts and 1,000 replies per user every rolling 24 hours, plus a per-app call budget that scales with your impressions. You build the tracking, the back-pressure, the user-facing error.

✓ PostPulse manages the limit and surfaces clean errors back to your code.
04

The container API

Every Threads post goes through container creation → status polling → publish. Carousels add a per-item container step. You write the polling, the status switch, the carousel ordering.

✓ PostPulse polls and emits the result via webhook.
05

Long-lived token rotation

Threads access tokens expire after 60 days. You implement the short-lived → long-lived exchange, the refresh endpoint, the storage, and the replay logic for posts that landed during a refresh window.

✓ Token lifecycle handled server-side by PostPulse.
06

Scheduling and observability

Threads has no native "publish at" parameter. You build a queue, a cron, a retry ladder, alerting for failures, and a dashboard so you know what shipped.

scheduledTime is a field. 14 webhook events for the rest.
Minutes to your first Threads post

One API call. That's it.

Drop a public image or video URL into attachmentPaths (or skip it for a text-only post). PostPulse downloads, hands it to Threads, and publishes at the time you set. Prefer to upload bytes? Use a binary upload or a presigned URL — both work the same way.

curl -X POST https://api.post-pulse.com/v1/posts \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "scheduledTime": "2026-06-01T10:00:00Z",
    "isDraft": false,
    "publications": [{
      "socialMediaAccountId": 123,
      "platformSettings": {
        "type": "THREADS",
        "topicTag": "buildinpublic"
      },
      "posts": [{
        "content": "Day 47. Shipped via API. No Meta App Review on my side.",
        "attachmentPaths": ["https://your-cdn.com/screenshot.png"]
      }]
    }]
  }'
Carousel? Attach up to several image / MP4 URLs in attachmentPaths — the same request publishes them as one Threads carousel post.
What you ship on day one

Everything Threads lets you publish — actually shipped.

Each capability below maps to a real field on a real request. No roadmap items.

Text, image & video posts

Up to 500 characters of text. Single image (JPG / PNG, ≤ 8 MB) or single MP4 video (≤ 5 min). Same /v1/posts request shape as every other platform.

Carousels in one post

Attach multiple images and / or MP4 videos in attachmentPaths and PostPulse stitches them into a single Threads carousel container automatically.

Smart topic tags

Set topicTag explicitly (up to 100 chars) or leave it empty — PostPulse falls back to the first non-numeric hashtag in your text, matching the native Threads behaviour.

Scheduling

Pass an ISO-8601 scheduledTime and PostPulse fires the publish at the exact second you ask for. The native Threads API has no scheduling — that's all logic you'd otherwise own.

Insights API

Pull views, likes, replies, reposts, quotes, and shares per published post. We map Meta's metric IDs to a clean schema across every PostPulse-supported platform.

14 webhook events

Per-post, per-publication, and per-schedule outcomes — plus media-import lifecycle events — fired straight to your URL the moment they happen. See the Webhooks reference.

DIY vs PostPulse · in time

What you ship over six weeks

Both columns assume you know your stack. Only one has you doing undifferentiated platform plumbing.

DIY · Threads API
  1. Day 1–3 · Register Meta developer account · configure app · set OAuth redirect URLs
  2. Week 1 · Implement OAuth · short-lived → long-lived token swap · 60-day refresh
  3. Week 2 · Build the container API flow · status polling · carousel ordering
  4. Week 2–3 · Submit App Review for threads_content_publish · justify use case · wait
  5. Week 4–6 · Iterate on rejection. Resubmit. Wait again.
  6. Week 6+ · Approved. Now ship a queue, retry, scheduling, webhook receiver, alerts.
PostPulse
  1. Minute 0 · Sign up
  2. Minute 2 · 10 free credits
  3. Minute 5 · Connect a Threads account via OAuth
  4. Minute 8 · First post live · webhook calls your URL the second it lands
  5. Day 2+ · Build the actual product. Stop thinking about Threads.
Pricing

Built for indie hackers. Scales for the rest.

Three private-label paths plus a white-label tier. Start free — pick a plan only when the product makes sense.

Free
$0on signup
  • 10 publications, free
  • No credit card required
  • Every feature unlocked
  • Connect unlimited Threads accounts
Sign up
Subscription
$5/ seat / month
  • Unlimited publishing per seat
  • 1 seat = 1 connected Threads account
  • Add or remove seats anytime
  • Annual billing also available
Start subscription
Building Threads into a product your users connect their own accounts to? See the white-label / Connect tier →

Capability matrix · PostPulse vs. native Threads API

What you'd build yourself vs. what's already shipped.

CapabilityPostPulseNative Threads / Meta API
Meta App Review✓ Done by us✗ Manual review · resubmits common
Real-user posting✓ Day oneTester accounts only until approved
Token refresh (60-day)✓ Handled server-sideImplement + monitor per user
Text · image · video · carousel✓ One endpointContainer API · per-item polling
Topic tag handling✓ Auto-pick or explicitExplicit only — you build the fallback
Pre-flight validation✓ Size · format · char · tagErrors only after you've taken the user's request
SchedulingscheduledTime fieldBuild your own queue + cron
Real-time post status✓ 14 webhook eventsPoll yourself
Threads Insights✓ Views · likes · replies · reposts · quotes · sharesAvailable — your own implementation
White-label / Connect for end users✓ IncludedBuild your own OAuth bridge
Same API for 8 other platforms✓ Instagram · TikTok · YouTube · LinkedIn · X · FB · Telegram · Bluesky9 separate integrations

Why developers ship Threads with PostPulse

Reviewed on Product Hunt
James Mccarthy
James Mccarthy

I use PostPulse with an AI agent via their MCP server. My agent literally posts to social media on its own now. Didn’t expect that to work as smoothly as it did.

Antonio Widera
Antonio Widera

$5/month for what would otherwise require a full backend engineer to maintain? Easy yes. The REST API is clean and well-documented too, which is rare.

Shawn Padilla
Shawn Padilla

Tried to get TikTok API access myself. Three weeks, two rejections. Switched to PostPulse and was posting to TikTok the same day. Wish I hadn’t wasted that time.

Karen Rivers
Karen Rivers

I’m a Make.com power user and needed to post to 5 platforms from one scenario. The native PostPulse app for Make connected everything in one afternoon. Would’ve taken me weeks to do manually.

Douglas Finch
Douglas Finch

I built an n8n automation for a client and needed to add social publishing. The official PostPulse n8n node was literally drag and drop. No headache.

Andrea Scott
Andrea Scott

Saved me months of dev work. I was about to start integrating Instagram and TikTok APIs separately — then I found out Meta’s app review alone can take months. PostPulse just handled all of that. Shipped social posting in under a week.

William Dirks
William Dirks

The most flexible pricing model on the market!

I'm building an AI content factory as a side hustle. I'm still in the experimentation phase, so I don't have the budget for expensive tools — but I also needed to get everything up and running quickly, so I integrated with a ready-to-go API instead. PostPulse offers a flexible pay-as-you-go model that let me experiment first without commitment — and now that we have stable traffic, I’ve switched to their $5/month subscription.

Best support on the market — the founder personally emailed me when I hit a client error and walked me through the fix.

solo serg
solo serg

We optimized the posting to 20 twitter accounts. It was a problem to manage such a number, but through the platform everything works out perfectly. Very convenient dashboard for tracking errors. Great product.

Threads API · FAQ

Stop waiting on Meta. Start shipping Threads.

10 free publications. No credit card. Connect a Threads account, publish your first post, fire your first webhook — all under 10 minutes.