Skip to Content

Platform settings & conditional validation

The create and update endpoints accept an optional settings object per platform. Which ones are required depends on the platforms of your selectedAccounts and whether a designId is attached.

PlatformSettings objectRequired whenDesign required?
InstagraminstagramPostSettingsAn Instagram account is selected and designId is set
TikToktiktokPostSettingsA TikTok account is selected and designId is set
LinkedInlinkedinPostSettingsA LinkedIn account is selectedYes, when status = "SCHEDULED"
ThreadsthreadsPostSettingsA Threads account is selected and designId is set
postSettingsAny resolved postType is "reel"

General content rule: a post must have either a non-empty postContent caption or a designId.


instagramPostSettings

{ "postType": "carousel | image | reel", "postAsStory": true // boolean, required }

tiktokPostSettings

{ "postType": "carousel | reel", "privacyLevel": "PUBLIC_TO_EVERYONE | MUTUAL_FOLLOW_FRIENDS | SELF_ONLY", // required when SCHEDULED "canComment": true, // boolean, required "canDuet": true, // boolean, required for reel (non-carousel) "canStitch": true, // boolean, required for reel (non-carousel) "autoAddMusic": true, // boolean, required for carousel "postTitle": "string | null", "isBrandedContent": false, // boolean, required "isYourBrand": false, // boolean, required "isThirdPartyBrand": false, // boolean, required "isAIGeneratedContent": false // boolean, required }

Cross-field rules (enforced when status = "SCHEDULED"):

  • If isBrandedContent is true, at least one of isYourBrand / isThirdPartyBrand must be true.
  • isBrandedContent cannot be true when privacyLevel = "SELF_ONLY".

linkedinPostSettings

{ "postType": "carousel | document | image | reel", "postTitle": "string | null" // required (5–90 chars) when postType=document and SCHEDULED }

For LinkedIn, a designId is required when status = "SCHEDULED" — text-only LinkedIn posts can only be saved as drafts, not scheduled.

threadsPostSettings

{ "postType": "carousel | image | reel" }

postSettings

Required only when any selected platform’s postType resolves to "reel". Carries video metadata.

{ "videoDuration": 30, // number, required "audioId": "string" }

Where validation happens

  • Shape checks (each *PostSettings must be an object; status, scheduledAt present and well-formed; postContent an object; selectedAccounts an array) are performed at the Embed API edge and return 422 { "status": false, "message": "..." }.
  • All the conditional/business rules above are enforced by PostNitro and relayed back as { "success": false, "message": "...", "error": ... }. See the error reference for the full list of messages.
Last updated on