Threads API
Postproxy publishes feed posts and multi-post chains to Threads, and lets you read and reply to comments. Threads has no direct-message API.
Every request below uses the base URL https://api.postproxy.dev and an Authorization: Bearer YOUR_API_KEY header. Replace YOUR_API_KEY and the example IDs with your own.
At a glance
Section titled “At a glance”| Platform ID | threads |
| Formats | post (default) |
| Character limit | 500 |
| Media | Optional |
| Placements | None |
| Comments | List, reply, hide/unhide |
| Direct messages | No |
| Post chains | Yes |
Publishing
Section titled “Publishing”Parameters
Section titled “Parameters”Threads has no custom parameters — pass an empty object (or omit it).
| Media | Max size | Formats | Count | Duration |
|---|---|---|---|---|
| Image | 8 MB | jpg, png, gif, webp | 20 | — |
| Video | 1 GB | mp4, mov | 1 | up to 5 min |
- Text-only posts are allowed; media is optional.
- Images and a video can be mixed in a carousel (up to 20 items).
- Minimum image dimensions: 200×200 px.
# Simple post with an imagecurl -X POST "https://api.postproxy.dev/api/posts" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "post": { "body": "Exciting announcement coming soon! Stay tuned." }, "profiles": ["prof_abc123"], "media": ["https://example.com/image.jpg"], "platforms": { "threads": {} } }'Post chains
Section titled “Post chains”Threads supports native thread conversations. Pass a thread array of follow-up posts; each child can carry its own media.
# A 3-post threadcurl -X POST "https://api.postproxy.dev/api/posts" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "post": { "body": "1/ Here is a thread about our launch" }, "profiles": ["prof_abc123"], "thread": [ { "body": "2/ First, we built the foundation...", "media": ["https://example.com/shot.jpg"] }, { "body": "3/ Check it out at example.com" } ] }'Comments
Section titled “Comments”Threads comments are managed through the Comments API. All comment writes are asynchronous and need the profile_id query parameter.
| Action | Supported |
|---|---|
| List / read | Yes |
| Reply | Yes |
| Hide / unhide | Yes |
| Delete | No |
| Like / unlike | No |
- Comment
attachmentscan carryIMAGE,VIDEO,AUDIO, andGIFmedia on both top-level comments and replies. - A
comment.createdwebhook fires when a new comment is synced.
# List comments on a postcurl "https://api.postproxy.dev/api/posts/post_abc123/comments?profile_id=prof_abc123" \ -H "Authorization: Bearer YOUR_API_KEY"# Reply to a commentcurl -X POST "https://api.postproxy.dev/api/posts/post_abc123/comments?profile_id=prof_abc123" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "body": "Glad you liked it!", "parent_id": "cmt_abc123" }'# Hide / unhide a commentcurl -X POST "https://api.postproxy.dev/api/posts/post_abc123/comments/cmt_abc123/hide?profile_id=prof_abc123" \ -H "Authorization: Bearer YOUR_API_KEY"
curl -X POST "https://api.postproxy.dev/api/posts/post_abc123/comments/cmt_abc123/unhide?profile_id=prof_abc123" \ -H "Authorization: Bearer YOUR_API_KEY"Direct messages
Section titled “Direct messages”Not supported — Threads has no DM API. Calls to the Direct Messages API for a Threads profile return 422.
Webhooks
Section titled “Webhooks”Subscribe with the Webhooks API:
curl -X POST "https://api.postproxy.dev/api/webhooks" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com/webhooks/postproxy", "events": ["platform_post.published", "comment.created"] }'Events relevant to Threads:
| Event | When |
|---|---|
post.processed | A post is ready to publish |
platform_post.published | A post was published to the platform |
platform_post.failed | A post failed to publish (retries exhausted) |
platform_post.failed_waiting_for_retry | A publish attempt failed; will retry |
platform_post.insights | New analytics snapshot |
comment.created | A comment was synced on a Threads post |
profile.connected / .disconnected | Connection state changed |
profile.stats | New profile stats snapshot |
media.failed | A media attachment failed to process |
- The 500-character limit is strict — longer copy should be split across a post chain.
- Threads comments cannot be deleted or liked through the API.