← Files SimplifiedARCHIVED FILE
skills/simplified-social/references/platform-settings.md
11.5 KB · Sep 30, 2026 · 22:54 UTC
# Platform Reference Guide
Detailed per-platform parameter reference for `social_createSocialMediaPost`. All
platform settings go inside the `additional` object, grouped by platform name.
## Character Limits
Always respect these limits when composing post messages:
| Platform | Message limit |
|-----------------|--------------|
| LinkedIn | 3000 chars |
| Facebook | 2200 chars |
| Instagram | 2200 chars |
| TikTok | 2200 chars |
| YouTube | 2200 chars |
| Pinterest | 500 chars |
| Threads | 500 chars |
| Google Business | 1500 chars |
| Bluesky | 300 chars |
| Mastodon | 500 chars |
| Reddit | Platform and subreddit rules |
| Telegram | 4096 chars |
---
```json
"additional": {
"instagram": {
"postType": { "value": "story" },
"channel": { "value": "direct" }
}
}
```
**Bold** = required field.
---
## Facebook
Required additionals: **`postType`**
### `facebook.postType` *(required)*
| Property | Type | Values | Default |
|-----------|--------|-------------------------|---------|
| **value** | string | `post`, `reel`, `story` | `post` |
**Post type constraints:**
| Type | Message | Photos | Videos |
|---------|----------|---------|---------------------------------------------|
| `post` | max 2200 | max 10 | max 1, up to 4h |
| `reel` | max 2200 | ✗ | max 1, 4s–90s, 9:16, min 540×960 *(video required)* |
| `story` | ✗ (must be empty) | max 1 | max 1, 3s–60s, 9:16 *(media required)* |
---
## Instagram
Required additionals: **`postType`**, **`channel`**
### `instagram.postType` *(required)*
| Property | Type | Values | Default |
|-----------|--------|-------------------------|---------|
| **value** | string | `post`, `reel`, `story` | `post` |
### `instagram.channel` *(required)*
| Property | Type | Values | Default |
|-----------|--------|----------------------|----------|
| **value** | string | `direct`, `reminder` | `direct` |
- **`direct`** — publish immediately
- **`reminder`** — send as a reminder notification instead of direct publish
### `instagram.postReel`
Only applies when `postType.value` is `reel`.
| Property | Type | Default | Description |
|---------------|---------|---------|-------------------------------------|
| `audioName` | string | — | Audio track name (max 255 chars) |
| `shareToFeed` | boolean | `true` | Also show the reel in the main feed |
**Post type constraints:**
| Type | Message | Photos | Videos |
|---------|---------|--------|---------------------------------------------|
| `post` | max 2200 | max 10 | max 10, 3s–15min |
| `reel` | max 2200 | ✗ | max 1, 3s–60s *(video required)* |
| `story` | ✗ (must be empty) | max 1 | max 1, 3s–60s |
---
## TikTok
Required additionals: **`postType`**, **`channel`**, **`post`**
### `tiktok.postType` *(required)*
| Property | Type | Values | Default |
|-----------|--------|-----------------|---------|
| **value** | string | `video`, `photo` | `video` |
### `tiktok.channel` *(required)*
| Property | Type | Values | Default |
|-----------|--------|----------------------|----------|
| **value** | string | `direct`, `reminder` | `direct` |
- **`direct`** — publish immediately
- **`reminder`** — send as a reminder notification instead of direct publish
### `tiktok.post` *(required for video)*
| Property | Type | Values / Default |
|-----------------|---------|--------------------------------------------------------------------------|
| **privacyStatus** | string | `PUBLIC_TO_EVERYONE`, `MUTUAL_FOLLOW_FRIENDS`, `FOLLOWER_OF_CREATOR`, `SELF_ONLY` / `PUBLIC_TO_EVERYONE` |
| `brandContent` | boolean | `false` |
| `brandOrganic` | boolean | `false` |
| `duetDisabled` | boolean | `true` |
| `stitchDisabled`| boolean | `true` |
| `commentDisabled`| boolean | `true` |
### `tiktok.postPhoto` *(required for photo)*
Only when `postType.value` is `photo`.
| Property | Type | Default |
|------------------|---------|----------------------|
| `title` | string | `""` (max 90 chars) |
| **privacyStatus**| string | `PUBLIC_TO_EVERYONE` |
| `commentDisabled`| boolean | `true` |
| `autoAddMusic` | boolean | `false` |
| `brandContent` | boolean | `false` |
| `brandOrganic` | boolean | `false` |
---
## TikTok Business
Required additionals: **`postType`**, **`post`**
### `tiktokBusiness.postType` *(required)*
Same values as TikTok: `video`, `photo`.
### `tiktokBusiness.post` *(required)*
Same as `tiktok.post` plus:
| Property | Type | Default |
|----------------|---------|---------|
| `aiGenerated` | boolean | `false` |
| `uploadToDraft`| boolean | `false` |
### `tiktokBusiness.postPhoto`
Same fields as `tiktok.postPhoto`.
---
## YouTube
Required additionals: **`postType`**
### `youtube.postType` *(required)*
| Property | Type | Values | Default |
|-----------|--------|-----------------|---------|
| **value** | string | `video`, `short` | `video` |
- **`short`** constraints: max 60s, max ratio 1:1, min 600×600
### `youtube.post`
| Property | Type | Values | Default |
|---------------------------|--------|----------------------------------------|---------|
| **title** | string | max 100 chars (required) | — |
| **privacyStatus** | string | `""`, `public`, `private`, `unlisted` | `""` |
| `license` | string | `""`, `youtube`, `creativeCommon` | `""` |
| `selfDeclaredMadeForKids` | string | `""`, `yes`, `no` | `""` |
| `publishAt` | string | datetime string | `""` |
---
## LinkedIn
Required additionals: **`audience`**
### `linkedin.audience` *(required)*
| Property | Type | Values | Default |
|-----------|--------|---------------------------------|----------|
| **value** | string | `PUBLIC`, `CONNECTIONS`, `LOGGED_IN` | `PUBLIC` |
**Message limit:** 3000 chars.
---
## Pinterest
Required additionals: **`post`**
### `pinterest.post` *(required)*
| Property | Type | Description |
|------------|--------|--------------------------------|
| `title` | string | Pin title (max 100 chars) |
| `link` | string | Destination URL |
| `imageAlt` | string | Alt text (max 500 chars) |
Pinterest always requires at least one image in `media`.
---
## Threads
Required additionals: **`channel`**
### `threads.channel` *(required)*
| Property | Type | Values | Default |
|-----------|--------|----------------------|----------|
| **value** | string | `direct`, `reminder` | `direct` |
- **`direct`** — publish immediately
- **`reminder`** — send as a reminder notification instead of direct publish
---
## Google Business Profile
Required additionals: **`post`**
### `google.post` *(required)*
| Property | Type | Values / Description |
|--------------------|--------|---------------------------------------------------------------|
| **topicType** | string | `STANDARD`, `EVENT`, `OFFER` (default: `STANDARD`) |
| `title` | string | Post title (max 58 chars) |
| `callToActionType` | string | `""`, `BOOK`, `ORDER`, `SHOP`, `LEARN_MORE`, `SIGN_UP`, `CALL` |
| `callToActionUrl` | string | URL for CTA (required when CTA is not `CALL` or empty) |
| `startDate` | string | Required for `EVENT` and `OFFER` |
| `endDate` | string | Required for `OFFER` |
| `couponCode` | string | Required for `OFFER` |
| `redeemOnlineUrl` | string | Required for `OFFER` |
| `termsConditions` | string | Required for `OFFER` |
**Message limit:** 1500 chars. No videos allowed.
---
## Bluesky
No required additionals. No platform-specific `additional` settings.
**Message limit:** 300 chars. Max 4 photos or 1 video (max 60s).
---
## Mastodon
No required additionals. No platform-specific `additional` settings.
**Message limit:** 500 chars.
---
## Reddit
Required additionals: **`post.targets`**
Reddit uses `additional.reddit.post.targets`. The array must contain at least one
target, and each target requires `subreddit`, `title`, and `type`.
```json
"reddit": {
"post": {
"targets": [
{
"subreddit": "devtestsmp",
"title": "What we learned from shipping",
"type": "self",
"flairId": null,
"flairText": null,
"nsfw": false,
"url": null
}
]
}
}
```
| Field | Type / values | Required | Notes |
|---|---|---|---|
| `post.targets` | array | Yes | At least one entry; add entries to post to multiple subreddits |
| `post.targets[].subreddit` | string | Yes | Subreddit name without the `r/` prefix |
| `post.targets[].title` | string | Yes | Reddit post title |
| `post.targets[].type` | `self`, `link` | Yes | `self` is a text post; `link` requires `url` |
| `post.targets[].url` | URL | For `link` | Link-post destination |
| `post.targets[].flairId` | string or `null` | No | Subreddit flair ID |
| `post.targets[].flairText` | string or `null` | No | Flair text |
| `post.targets[].nsfw` | boolean | No | Defaults to `false` |
---
## Telegram
No required additionals. No platform-specific `additional` settings.
**Message limit:** 4096 chars.
---
## Gotchas
- **Date format** for `schedule` must be `YYYY-MM-DD HH:MM` (24-hour, no seconds, no timezone — uses account timezone).
- **`date` is required** when `action` is `schedule`; omit it for `add_to_queue` and `draft`.
- **Media** must be a Simplified asset UUID (from `generate-image` with `storage:"asset"`) or a publicly accessible URL — localhost does not work.
- **Reddit requires targets** — `additional.reddit.post.targets` must contain at
least one entry with `subreddit`, `title`, and `type`; `url` is required for
`type: "link"`.
- **Instagram always requires `channel`** — include `channel: { value: "direct" }` for every Instagram post.
- **TikTok `postType`** values are `video` and `photo` (not `image`); **channel** values are `direct` and `reminder` (not `business`).
- **LinkedIn audience** value is `LOGGED_IN` (not `LOGGED_IN_MEMBERS`).
- **Google `topicType`** only has `STANDARD`, `EVENT`, `OFFER` (no `PRODUCT`).
- **Instagram story** — message must be empty (`""`), max 1 photo.
- **Reels and Shorts require video** — Instagram reel, Facebook reel, YouTube short all require a video file in `media`; images are not allowed.
- **YouTube always requires `post.title`** — include `additional.youtube.post` with a `title` for every YouTube video or short.
SHA-256: e0ebec340d5cfd4cfc7021bda6f78f326f859e4f070bec3f4fc1338a978c738c