Platform settings
Supported targets.settings fields for the Social Service publish API
targets[].settings is optional. If it is omitted, the service uses the platform defaults below and maps content from draft.title, draft.text, and draft.assets.
The target platform is resolved from targets[].channelId. Send only the settings fields for that channel's platform.
Common Media Override
Several platforms support mediaOverrides. If present, those media items replace the media selected from draft.assets for that target.
{
"mediaOverrides": [
{
"type": "image",
"source": "https://files.example.com/image.png",
"sourceType": "url",
"mimeType": "image/png",
"order": 0
}
]
}Media override fields:
assetId Optional string.
type Required. "image" | "video" | "document". Documents are only supported by LinkedIn.
source Required. Remote URL, base64 data URL, or blob preview URL in local UI contexts.
sourceType Optional. "url" | "base64" | "blob".
mimeType Optional MIME type.
order Optional sort order.
thumbnail Optional thumbnail URL.
metadata Optional object.For public API calls, remote URLs are recommended. For local files, first use /api/social/v1/media/upload, upload the bytes, then use the returned temporaryUrl.url.
X
Defaults:
{
"threadMode": false,
"paidPartnership": false,
"madeWithAi": false,
"replyVisibility": "everyone",
"mediaOverrides": []
}Fields:
| Field | Type | Valid values | Default | Notes |
|---|---|---|---|---|
mediaOverrides | array | image or video media items | [] | Optional X media override. X supports up to 4 images or 1 video. |
threadMode | boolean | true, false | false | Long text is split into multiple tweets when enabled. |
paidPartnership | boolean | true, false | false | Marks the post as a paid partnership disclosure. |
madeWithAi | boolean | true, false | false | Marks the post as containing AI-generated media. |
replyVisibility | string | everyone, mentionedUsers, following | everyone | Controls who can reply to the first tweet. |
Example:
{
"channelId": "sch_x_123",
"settings": {
"threadMode": true,
"replyVisibility": "everyone"
}
}YouTube
Defaults:
{
"title": "",
"description": "",
"privacyStatus": "private",
"tags": [],
"madeForKids": false,
"notifySubscribers": true,
"videoSource": "",
"thumbnailSource": ""
}Fields:
| Field | Type | Valid values | Default | Notes |
|---|---|---|---|---|
title | string | max 100 chars | "" | Visible video title. Falls back to draft.title when empty. |
description | string | max 5000 chars | "" | Falls back to draft.text when empty. |
privacyStatus | string | private, public, unlisted | private | YouTube privacy status. |
tags | string array | up to 20 tags, each max 30 chars | [] | Combined tag length should stay within 500 chars. |
madeForKids | boolean | true, false | false | Maps to YouTube self declared made for kids. |
notifySubscribers | boolean | true, false | true | Whether subscribers should be notified. |
videoSource | string | URL, base64 data URL, or blob preview URL | "" | Optional video override. If empty, the first draft video is used. |
thumbnailSource | string | URL, base64 data URL, or blob preview URL | "" | Optional thumbnail override. |
Example:
{
"channelId": "sch_youtube_123",
"settings": {
"title": "Product demo",
"privacyStatus": "unlisted",
"tags": ["demo", "launch"],
"notifySubscribers": false,
"thumbnailSource": "https://files.example.com/thumb.jpg"
}
}TikTok
Defaults:
{
"contentType": "auto",
"postMode": "DIRECT_POST",
"title": "",
"description": "",
"privacyLevel": "SELF_ONLY",
"disableComment": false,
"disableDuet": false,
"disableStitch": false,
"autoAddMusic": true,
"brandContentToggle": false,
"brandOrganicToggle": false,
"isAigc": false,
"videoTransferMethod": "FILE_UPLOAD",
"videoCoverTimestampMs": "",
"photoCoverIndex": "0",
"mediaOverrides": []
}Fields:
| Field | Type | Valid values | Default | Notes |
|---|---|---|---|---|
mediaOverrides | array | image or video media items | [] | Use one video or up to 35 photos. |
contentType | string | auto, video, photo | auto | Auto uses the first video when present, otherwise photos. |
postMode | string | DIRECT_POST, MEDIA_UPLOAD | DIRECT_POST | Direct Post publishes immediately. Media Upload sends media to TikTok for completion in the app. |
title | string | video caption or photo title | "" | Video caption max is 2200 chars. Photo title max is 90 chars. |
description | string | photo description | "" | Photo description max is 4000 chars. Falls back to draft.text when empty. |
privacyLevel | string | PUBLIC_TO_EVERYONE, MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY | SELF_ONLY | Must be allowed by the connected TikTok account. |
disableComment | boolean | true, false | false | Disables comments. |
disableDuet | boolean | true, false | false | Disables duets. |
disableStitch | boolean | true, false | false | Disables stitch. |
autoAddMusic | boolean | true, false | true | Applies to photo posts. |
brandContentToggle | boolean | true, false | false | Branded content disclosure. |
brandOrganicToggle | boolean | true, false | false | Brand organic disclosure. |
isAigc | boolean | true, false | false | Labels supported video content as AI generated. |
videoTransferMethod | string | FILE_UPLOAD, PULL_FROM_URL | FILE_UPLOAD | Pull from URL requires a TikTok verified URL prefix or domain. |
videoCoverTimestampMs | string | non-negative integer string | "" | Optional cover frame timestamp in milliseconds. |
photoCoverIndex | string | non-negative integer string | "0" | Zero-based photo cover index. |
Example:
{
"channelId": "sch_tiktok_123",
"settings": {
"contentType": "video",
"privacyLevel": "SELF_ONLY",
"disableComment": true,
"isAigc": true,
"videoCoverTimestampMs": "1000"
}
}Defaults:
{
"message": "",
"linkUrl": "",
"mediaOverrides": []
}Fields:
| Field | Type | Valid values | Default | Notes |
|---|---|---|---|---|
mediaOverrides | array | image or video media items | [] | Use up to 10 photos or 1 video. |
message | string | max 63206 chars | "" | Falls back to draft.title and draft.text when empty. |
linkUrl | string | http:// or https:// URL | "" | Optional link for text or link posts. Ignored when media is selected. |
Example:
{
"channelId": "sch_facebook_123",
"settings": {
"message": "Facebook-specific post text",
"linkUrl": "https://example.com"
}
}Defaults:
{
"caption": "",
"contentType": "auto",
"imageProcessingMode": "auto",
"shareToFeed": true,
"thumbOffsetMs": "",
"coverSource": "",
"mediaOverrides": []
}Fields:
| Field | Type | Valid values | Default | Notes |
|---|---|---|---|---|
mediaOverrides | array | image or video media items | [] | Use one image, one video, or 2-10 carousel images. |
caption | string | max 2200 chars | "" | Falls back to draft.title and draft.text when empty. |
contentType | string | auto, image, carousel, reel | auto | Auto publishes the first video as a Reel, otherwise multiple images become a carousel. |
imageProcessingMode | string | auto, 1:1, 4:5, 16:9 | auto | Invalid image ratios are center-cropped to Auto 1:1 or the selected ratio. |
shareToFeed | boolean | true, false | true | Applies to Reel publishing. |
thumbOffsetMs | string | non-negative integer string | "" | Optional Reel thumbnail timestamp in milliseconds. |
coverSource | string | URL, base64 data URL, or blob preview URL | "" | Optional Reel cover image. |
Example:
{
"channelId": "sch_instagram_123",
"settings": {
"contentType": "reel",
"caption": "Instagram-specific caption",
"shareToFeed": true,
"coverSource": "https://files.example.com/reel-cover.jpg"
}
}Defaults:
{
"contentType": "auto",
"commentary": "",
"articleUrl": "",
"articleTitle": "",
"articleDescription": "",
"documentTitle": "",
"mediaOverrides": []
}Fields:
| Field | Type | Valid values | Default | Notes |
|---|---|---|---|---|
mediaOverrides | array | image, video, or document media items | [] | Use up to 20 images, one MP4 video, or one document. |
contentType | string | auto, text, article, image, multiImage, video, document | auto | Auto chooses document, video, multi-image, image, article, then text. |
commentary | string | text | "" | Falls back to draft.title and draft.text when empty. |
articleUrl | string | http:// or https:// URL | "" | Required for article posts. |
articleTitle | string | text | "" | Falls back to draft.title or URL host. |
articleDescription | string | text | "" | Falls back to draft.text. |
documentTitle | string | text | "" | Used for document posts. Falls back to file name or draft title. |
Example:
{
"channelId": "sch_linkedin_123",
"settings": {
"contentType": "article",
"commentary": "LinkedIn-specific post text",
"articleUrl": "https://example.com/report",
"articleTitle": "Report title"
}
}Document example:
{
"channelId": "sch_linkedin_123",
"settings": {
"contentType": "document",
"documentTitle": "Product overview"
}
}Defaults:
{
"contentType": "auto",
"title": "",
"description": "",
"link": "",
"altText": "",
"coverSource": "",
"mediaOverrides": []
}Fields:
| Field | Type | Valid values | Default | Notes |
|---|---|---|---|---|
mediaOverrides | array | image or video media items | [] | Use one video, one image, or 2-5 images. |
contentType | string | auto, image, multiImage, video | auto | Auto uses the first video when present, otherwise 2-5 images become a multi-image Pin. |
title | string | max 100 chars | "" | Falls back to draft.title when empty. |
description | string | max 800 chars | "" | Falls back to draft.text when empty. |
link | string | http:// or https:// URL, max 2048 chars | "" | Optional destination URL. |
altText | string | max 500 chars | "" | Optional image alt text. |
coverSource | string | URL, base64 data URL, or blob preview URL | "" | Required for video Pins when the video has no thumbnail. |
Example:
{
"channelId": "sch_pinterest_123",
"settings": {
"contentType": "image",
"title": "Pin title",
"description": "Pin description",
"link": "https://example.com",
"altText": "Product photo"
}
}Video example:
{
"channelId": "sch_pinterest_123",
"settings": {
"contentType": "video",
"title": "Video Pin",
"coverSource": "https://files.example.com/video-cover.jpg"
}
}