Provider Options
Provider-specific fields and current implementation limits for each supported PostMantis provider.
Use providerOptions when a post needs provider-specific behavior. It does not select destinations — that is what profiles is for.
{
"post": { "body": "New video" },
"profiles": ["9aa032e9-bf7d-4355-b4c1-96f191c2f7ee", "4339a6bc-9cd3-455e-8f91-df8bc63f12d7"],
"media": [{ "artifactId": "8f5f3f18-3cf7-4aa8-a0ea-6fd204d4c4f1" }],
"providerOptions": {
"youtube": { "title": "New video", "privacyStatus": "public" },
"tiktok": { "format": "video", "privacyStatus": "PUBLIC_TO_EVERYONE" }
}
}Mental model
profiles answers where should this post go? — providerOptions answers how should a
provider handle it?
This page reflects the current PostMantis implementation
The fields and limits below describe what the current publish code actually supports. They do not try to mirror every capability each provider platform offers.
Provider identifiers
The provider field on a profile object and the key inside the providerOptions request object use these provider identifiers:
| Provider | Identifier |
|---|---|
facebook | |
instagram | |
| TikTok | tiktok |
linkedin | |
| YouTube | youtube |
| X | x |
| Threads | threads |
pinterest |
Supported fields
| Field | Type | Notes |
|---|---|---|
format | string | post (default) or story |
firstComment | string | Optional. Feed posts only |
link | string | Optional. Feed posts only |
Media limits in the current implementation
- feed posts support text, link, up to 10 images, or one video
- feed posts do not allow mixed images and video in one post
- stories require exactly one uploaded image or video
{ "providerOptions": { "facebook": { "format": "post" } } }Supported fields
| Field | Type | Notes |
|---|---|---|
format | string | post (default), reel, or story |
collaborators | string[] | Optional. Up to 3. Not supported for stories |
cover | object | Optional reel cover asset |
audioName | string | Optional. Reels only |
thumbOffset | string | Optional. Reels only |
trialStrategy | string | Optional. MANUAL or SS_PERFORMANCE. Reels only |
Media limits in the current implementation
- posts require uploaded media and support up to 10 items
- posts currently accept JPEG images and MP4 or MOV videos
- reels require exactly one uploaded video
- stories require exactly one uploaded image or video
TikTok
Supported fields
| Field | Type | Notes |
|---|---|---|
format | string | video (default) |
privacyStatus | string | Must be available for the connected account |
disableComment | boolean | Optional |
disableDuet | boolean | Video posts only |
disableStitch | boolean | Video posts only |
madeWithAi | boolean | Video posts only |
brandContentToggle | boolean | Supported |
brandOrganicToggle | boolean | Supported |
videoCoverTimestampMs | integer | Video posts only |
Media limits in the current implementation
| Format | Current implementation |
|---|---|
| Video | exactly 1 uploaded video (mp4, mov, or webm), up to 64 MB |
Notes
- video captions support up to 2,200 characters
- some requested options can still be rejected if the account does not allow them
Supported fields
No LinkedIn-specific providerOptions fields are currently supported. The selected profile is the publish author.
Media limits in the current implementation
- text-only posts supported
- uploaded image posts supported
- up to 20 images
- videos are not implemented yet
YouTube
Supported fields
| Field | Type | Notes |
|---|---|---|
title | string | Optional. Defaults to the first line of post.body or a generated title |
privacyStatus | string | public, private, or unlisted |
cover | object | Optional thumbnail artifact. Accepts { artifactId } |
madeForKids | boolean | Optional |
tags | string[] | Optional, up to 50 tags |
Media limits in the current implementation
- exactly 1 uploaded video
- optional thumbnail image in JPEG or PNG, up to 2 MB
X
Supported fields
No X-specific providerOptions fields are currently supported. The Public Preview publish path does not yet implement reply-control or thread extensions.
Media limits in the current implementation
- text-only posts supported
- uploaded media supported
- up to 4 images, or one GIF/video
Threads
Supported fields
| Field | Type | Notes |
|---|---|---|
replyControl | string | everyone, accountsYouFollow, or mentionedOnly |
Current implementation
- text posts supported
- uploaded media posts supported
- up to 20 media items
Supported fields
| Field | Type | Notes |
|---|---|---|
title | string | Optional, max 100 characters |
boardId | string | Required. Must match a board belonging to the connected account. |
destinationLink | string | Optional |
cover | object | Optional video cover artifact. Accepts { artifactId } |
thumbOffset | number | Optional. Cover frame offset for video pins, in seconds |
Media limits in the current implementation
- exactly 1 uploaded image or video per pin
- no mixed media
Notes
boardId must be a valid board ID belonging to the connected Pinterest account. There is no
automatic fallback — the board must be selected explicitly during post creation.
Pinterest OAuth scopes
PostMantis requests the following Pinterest scopes during OAuth:
| Scope | Why it is requested |
|---|---|
user_accounts:read | Identify the connected Pinterest account |
boards:read | List boards for the board picker |
boards:write | Pinterest API currently requires this scope to create Pins into boards |
pins:read | Read created Pin metadata and delivery status |
pins:write | Create Pins on behalf of the user |
PostMantis does not create boards. boards:write is requested only because Pinterest requires it
for Pin creation endpoints.