Supported Platforms
Connect channels in the Schedulin dashboard, then post to any of them through the API. Each
channel's platform (from GET /v0/social-accounts) is one of the slugs below.
curl https://api.schedulin.app/v0/platforms \ -H "x-api-key: $SCHEDULIN_API_KEY"
Platforms
| Platform | platform | Media | platformConfiguration |
|---|---|---|---|
| X (Twitter) | twitter | — | Optional |
instagram | 1–10 images/videos | Optional | |
facebook | Up to 10 images/videos | Optional | |
linkedin | — | Optional | |
| Threads | threads | Up to 20 images/videos | Optional |
| TikTok | tiktok | 1–35 images/videos | Optional (defaults applied) |
| YouTube | youtube | Exactly 1 video | Required |
pinterest | 1–5 images/videos | Required | |
reddit | Up to 20 images/videos | Required | |
| Bluesky | bluesky | Up to 4 images | Optional |
| Mastodon | mastodon | — | — |
| Telegram | telegram | Up to 10 images/videos | Optional |
| Discord | discord | — | — |
| Slack | slack | — | — |
| Twitch | twitch | — | — |
| Kick | kick | — | — |
| DEV.to | devto | — | — |
| Hashnode | hashnode | — | — |
| WordPress | wordpress | — | — |
| Dribbble | dribbble | Exactly 1 image | Required |
| Whop | whop | — | Required |
In the Media column, "—" means the API enforces no media count rule up front; the platform's own limits still apply at publish time (Twitch and Kick, for example, post chat messages, so media isn't used).
Omitting a required platformConfiguration returns 400 (platformConfiguration is required for <platform>); an invalid one returns 400 listing the offending fields. Unknown fields are
not validated for platforms without a schema.
Required settings
YouTube
{ "title": "How we schedule 1,000 posts a day", "categoryId": "28", "visibility": "public" }
visibility is public, unlisted, or private. Optional fields include tags,
madeForKids, notifySubscribers, publishAt, and containsSyntheticMedia.
{ "board_ids": ["1234567890"], "title": "Spring lookbook", "link": "https://example.com" }
A board is required — pass board_ids (or a single boardId). List the channel's boards
with GET /v0/social-accounts/{id}/pinterest-boards. Optional: board_section_id, title,
description, link, alt_text.
{ "subreddit": "programming", "title": "We open-sourced our scheduler" }
Optional: flair_id / flair_text, nsfw, spoiler, sendreplies, and link_url for a
link post. Subreddit rules (required flair, allowed post types) are checked before
publishing.
Dribbble
{ "title": "Dashboard redesign" }
The image must be 400×300, 800×600, or 1600×1200.
Whop
{ "experience": "exp_XXXXXXXX" }
experience is the forum to post in. Find it with
GET /v0/social-accounts/{id}/whop-companies, then
GET /v0/social-accounts/{id}/whop-forums?companyId=....
Common optional settings
TikTok
Every field has a default, so platformConfiguration can be omitted. Before posting, call
GET /v0/social-accounts/{id}/tiktok-creator-info to get the privacy levels the account
allows and its maximum video duration.
{ "privacy_status": "public", "allow_comment": true, "allow_duet": true, "allow_stitch": true, "is_ai_generated": false }
Other fields: disclose_your_brand, disclose_branded_content, auto_add_music, and
photo_cover_index (photo posts).
placement is reels (default), feed, or stories. Also: first_comment,
collaborators, share_to_feed, location, trial_reel_type.
placement is feed (default), reels, or stories. Also: first_comment, location.
X (Twitter)
poll ({ "options": [...], "duration_minutes": 1440 }), reply_settings,
quote_tweet_id, in_reply_to_tweet_id, and community_id. For threads, use the post's
parts array — see Create a thread.
visibility (PUBLIC by default), first_comment, poll, article (link preview), and
author_kind / organization_id to post as a company page.
Threads
reply_control, topic_tag, poll, quote_post_id, link_attachment.
Bluesky
langs, labels, external (link card), quote_post_uri, reply_to, threadgate,
postgate.
Telegram
disable_link_preview, disable_notification.
See GET /v0/platforms for each platform's full schema.