ChirpieDocs
API Reference

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/json

Request Body

FieldTypeRequiredDescription
account_idstring (UUID)YesID of the connected account (any of 14 platforms). Note: LinkedIn, Instagram, Facebook, Pinterest, TikTok, YouTube, Google Business Profile, and Snapchat degrade to standalone posts.
postsarrayYesArray of 2-25 post objects
posts[].textstringYesPost 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_urlsstring[]NoPublic 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_atstring (ISO 8601)NoSchedule 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

StatusCodeCondition
400bad_requestLess than 2 or more than 25 posts, invalid text, or schedule_at in the past
401unauthorizedInvalid or missing API key
404not_foundAccount not found or inactive
429rate_limitedThread would exceed monthly post or scheduled limit
502upstream_errorPlatform 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.

On this page