The Threads scheduling API

Create a Threads post with one HTTP call. It joins the same queue the dashboard uses, retries on failure, and reports back what actually went out.

Publish to Threads

# POST a text-and-media post to your connected Threads channel
curl -X POST https://api.postwharf.com/v1/posts \
  -H "Authorization: Bearer $POSTWHARF_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Shipping today.",
    "channels": ["ch_your_threads_channel"],
    "media": ["med_optional"]
  }'

Schedule it instead

curl -X POST https://api.postwharf.com/v1/posts \
  -H "Authorization: Bearer $POSTWHARF_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"Tuesday drop","channels":["ch_your_threads_channel"],"publish_at":"2026-09-01T09:00:00Z"}'

Find your Threads channel id

curl https://api.postwharf.com/v1/channels \
  -H "Authorization: Bearer $POSTWHARF_KEY"

Each connected account is a channel. The one you want has "platform": "threads".

Check what happened

curl https://api.postwharf.com/v1/posts/post_xxx \
  -H "Authorization: Bearer $POSTWHARF_KEY"

The response carries one delivery per channel with its status, the live URL once published, and the error text if it failed. Deliveries are re-checked after publishing, so a Threads post removed later stops reporting as live.

What Threads accepts

500 characters, counting one post. Up to 20 images or 20 videos per post — and the two can travel together.

Read from the table the API enforces, so a post over 500 is refused when you create it rather than truncated on the way to Threads.

Worth knowing about Threads

Publishing is tied to your linked Instagram account.

Every other network

Instagram · TikTok · X · LinkedIn · YouTube · Facebook · Pinterest · Bluesky · Reddit · Telegram · Discord · Snapchat · WordPress