Threads
Create multi-post threads that publish as connected replies on X, Bluesky, Threads, Mastodon, and Telegram — threaded via comments on Reddit — or as standalone posts on LinkedIn, Instagram, Facebook, Pinterest, TikTok, YouTube, Google Business Profile, and Snapchat.
Create a Thread
Threads are arrays of 2-25 posts published in order as connected replies. Each post in the thread replies to the previous one. Threads work on X, Bluesky, Threads, Mastodon, and Telegram (native reply threading). Reddit threads via comments on the first post. On LinkedIn, Instagram, Facebook, Pinterest, TikTok, YouTube, Google Business Profile, and Snapchat, each post in the thread is published as a standalone post (these platforms do not support native threading).
Platform threading behavior:
- X/Twitter: Native threading via reply chains
- Bluesky: Native threading via reply chains
- Threads (Meta): Native threading via
reply_to_id - Mastodon: Native threading via
in_reply_to_id - Telegram: Native threading via
reply_to_message_id - Reddit: Threaded via comments on the first post
- LinkedIn: Each post is published as a standalone post (no native threading support)
- Instagram: Each post is published as a standalone post (no native threading support)
- Facebook: Each post is published as a standalone post (no native threading support)
- Pinterest: Each post is published as a standalone pin (no native threading support)
- TikTok: Each post is published as a standalone video/photo (no native threading support)
- YouTube: Each post is published as a standalone video (no native threading support)
- Google Business Profile: Each post is published as a standalone update (no native threading support)
- Snapchat: Each post is published as a standalone story/spotlight (no native threading support)
POST /api/v1/threads
Authorization: Bearer chirpie_sk_YOUR_KEY
Content-Type: application/jsonRequest Body
| Field | Type | Required | Description |
|---|---|---|---|
account_id | string (UUID) | Yes | ID of the connected account (any of 14 platforms). Note: LinkedIn, Instagram, Facebook, Pinterest, TikTok, YouTube, Google Business Profile, and Snapchat degrade to standalone posts. |
posts | array | Yes | Array of 2-25 post objects |
posts[].text | string | Yes | Post content. Max length depends on platform: 280 (X standard), 25,000 (X Premium), 300 (Bluesky), 3,000 (LinkedIn), 500 (Threads), 500 (Mastodon), 2,200 (Instagram), 63,206 (Facebook), 4,096 (Telegram), 40,000 (Reddit), 500 (Pinterest), 2,200 (TikTok), 5,000 (YouTube), 1,500 (Google Business Profile), or 160 (Snapchat) |
posts[].media_urls | string[] | No | Public image/video URLs per post. X: up to 4 images or 1 video. Bluesky: up to 4 images, no video. LinkedIn: up to 4 images (JPEG/PNG/GIF, 8MB max), no video. Threads: 1 image, no video. Mastodon: up to 4 images or video. Instagram: requires images, up to 10 (carousel), no video. Facebook: up to 4 images, no video. Telegram: up to 10 images or video. Reddit: 1 image. Pinterest: requires 1 image. TikTok: requires video/photo. YouTube: requires video. Google Business Profile: 1 image. Snapchat: requires media. |
schedule_at | string (ISO 8601) | No | Schedule the entire thread |
Example
curl -X POST https://chirpie.ai/api/v1/threads \
-H "Authorization: Bearer chirpie_sk_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"account_id": "550e8400-e29b-41d4-a716-446655440000",
"posts": [
{ "text": "I just shipped a feature using Chirpie. Here'\''s how it went 🧵" },
{ "text": "First, I connected my X account via OAuth. Took about 30 seconds." },
{ "text": "Then I created an API key and made my first POST request. Done." },
{ "text": "The whole thing took under 2 minutes. Try it: chirpie.ai" }
]
}'Response 201 Created
{
"data": {
"id": "thread-uuid-here",
"platform": "x",
"account_id": "550e8400-e29b-41d4-a716-446655440000",
"posts": [
{
"id": "post-1-uuid",
"text": "I just shipped a feature using Chirpie...",
"platform_post_id": "1234567890",
"status": "published",
"thread_order": 0,
"created_at": "2026-03-23T10:00:00.000Z"
},
{
"id": "post-2-uuid",
"text": "First, I connected my X account...",
"platform_post_id": "1234567891",
"status": "published",
"thread_order": 1,
"created_at": "2026-03-23T10:00:00.000Z"
}
],
"status": "published",
"scheduled_at": null,
"created_at": "2026-03-23T10:00:00.000Z"
}
}Billing
A thread counts as N posts where N is the number of posts in the thread. Both post and scheduled limits are checked against the thread size.
Error Responses
| Status | Code | Condition |
|---|---|---|
400 | bad_request | Less than 2 or more than 25 posts, invalid text, or schedule_at in the past |
401 | unauthorized | Invalid or missing API key |
404 | not_found | Account not found or inactive |
429 | rate_limited | Thread would exceed monthly post or scheduled limit |
502 | upstream_error | Platform API error during publishing |
Scheduled Threads
When schedule_at is provided, all posts in the thread are stored with status: "scheduled". The entire thread is published atomically by the scheduler — if any post fails, the whole thread is rescheduled for retry.