| article |
\Zernio\Model\XArticle |
|
[optional] |
| reply_to_tweet_id |
string |
ID of an existing tweet to reply to. The published tweet will appear as a reply in that tweet's thread. For threads, only the first tweet replies to the target; subsequent tweets chain normally. X only permits replying to your own posts or posts you are mentioned in; replying to an arbitrary other account's post is rejected by X. |
[optional] |
| quote_tweet_id |
string |
ID (or full status URL) of an existing tweet to quote-repost. The published tweet becomes a quote tweet of the target. Mutually exclusive with media and poll. X only permits quoting your own posts or posts you are mentioned in / part of the conversation thread of; quoting an arbitrary other account's post is rejected by X. Billed at the standard create rate ($0.015), unlike pasting a tweet URL into the text which is billed at the URL rate ($0.20). For threads, applies to the first tweet only. |
[optional] |
| reply_settings |
string |
Controls who can reply to the tweet. "following" allows only people you follow, "mentionedUsers" allows only mentioned users, "subscribers" allows only subscribers, "verified" allows only verified users. Omit for default (everyone can reply). For threads, applies to the first tweet only. Cannot be combined with replyToTweetId. |
[optional] |
| thread_items |
\Zernio\Model\TwitterPlatformDataThreadItemsInner[] |
Complete sequence of posts in a Bluesky thread. The first item becomes the root post, subsequent items are chained as replies. When threadItems is provided, the top-level content field is used only for display and search purposes, it is NOT published. You must include your first post as threadItems[0]. |
[optional] |
| poll |
\Zernio\Model\DiscordPlatformDataPoll |
|
[optional] |
| long_video |
bool |
Uploads the video with X's amplify_video media category instead of the standard tweet_video. Applied only when the connected X account has a paid X subscription; on other accounts the flag is accepted and ignored. It is not required to post long videos. The standard tweet_video path already publishes videos well past 140 seconds on free accounts, and maximum duration is set by X per account, not by Zernio. Zernio enforces only the 512 MB file-size limit. Some accounts additionally require X's long-video API allowlisting, without which X rejects an amplify_video upload. |
[optional] [default to false] |
| geo_restriction |
\Zernio\Model\GeoRestriction |
|
[optional] |
| paid_partnership |
bool |
When true, the post is labeled by X as a paid partnership / paid promotion. For threads, applies to the root tweet only. Field availability may depend on your X API access tier. |
[optional] [default to false] |
| made_with_ai |
bool |
When true, the post is labeled by X as containing AI-generated media. Per X, this label is for AI-generated media, not AI-written text. For threads, applies to the root tweet only. |
[optional] [default to false] |
| sensitive_media |
\Zernio\Model\TwitterPlatformDataSensitiveMedia |
|
[optional] |
| topic_tag |
string |
Topic tag for post categorization and discoverability on Threads. Must be 1-50 characters, cannot contain periods (.) or ampersands (&). Overrides auto-extraction from content hashtags when provided. |
[optional] |
| first_comment |
string |
Optional first comment to post immediately after video upload. Up to 10,000 characters (YouTube's comment limit). |
[optional] |
| content_type |
string |
Content type: story (ephemeral 24h, default), saved_story (permanent on Public Profile), spotlight (video feed) |
[optional] [default to 'story'] |
| title |
string |
Post title. Defaults to the first line of content, truncated to 300 characters. |
[optional] |
| page_id |
string |
Target Facebook Page ID for multi-page posting. If omitted, uses the default page. Use GET /v1/accounts/{id}/facebook-page to list pages. |
[optional] |
| facebook_settings |
\Zernio\Model\FacebookSettings |
|
[optional] |
| share_to_feed |
bool |
For Reels only. When true (default), the Reel appears on both the Reels tab and your main profile feed. Set to false to post to the Reels tab only. |
[optional] [default to true] |
| collaborators |
string[] |
Up to 3 Instagram usernames to invite as collaborators (feed/Reels only) |
[optional] |
| trial_params |
\Zernio\Model\InstagramPlatformDataTrialParams |
|
[optional] |
| user_tags |
\Zernio\Model\InstagramPlatformDataUserTagsInner[] |
Tag Instagram users by username. The tag shape depends on the media: photos require x/y coordinates, Reels and videos take username only (coordinates are ignored), stories accept optional coordinates. For carousels, use mediaIndex to target specific slides (defaults to 0); video slides take username-only tags. Photo tags without valid coordinates are skipped. |
[optional] |
| audio_name |
string |
Custom name for original audio in Reels. Replaces the default "Original Audio" label. Can only be set once. Unrelated to audioConfiguration, which attaches a catalog track. |
[optional] |
| audio_configuration |
\Zernio\Model\InstagramPlatformDataAudioConfiguration |
|
[optional] |
| mute_audio |
bool |
Publish the video without sound. Applies to Reels, Stories, and video carousel slides; ignored for images. Instagram has no mute parameter, so we strip the audio track from the file before handing it to Instagram: the published video is permanently silent and the original audio cannot be restored from Instagram. If the audio cannot be stripped the post fails rather than publishing with sound; videos above 200MB cannot be muted at all, so mute them before uploading. Unrelated to audioConfiguration.videoVolume, which only lowers the original sound when a catalog track is attached. |
[optional] [default to false] |
| thumb_offset |
int |
Millisecond offset from video start for the Reel cover frame. Ignored when instagramThumbnail or reelCover is provided. Defaults to 0. |
[optional] |
| instagram_thumbnail |
string |
Custom cover image URL for Instagram Reels (JPG or PNG, publicly accessible). Overrides thumbOffset when provided. Also accepted as reelCover (alias). |
[optional] |
| reel_cover |
string |
Alias for instagramThumbnail. If both are provided, instagramThumbnail takes priority. |
[optional] |
| is_ai_generated |
bool |
When true, the Pin is created with Pinterest's AI_MODIFIED disclosure (ai_disclosures), which shows an "AI modified" label. Applies to image and video Pins. Pinterest offers no "not AI" value, so false simply omits the disclosure. Pinterest may still label a Pin on its own detection. |
[optional] [default to false] |
| is_paid_partnership |
bool |
When true, Instagram shows the "Paid partnership" label on the post. Applies to feed posts, Reels, and carousels; not supported on Stories (400). Requires an Instagram account connected via Facebook Login; classic Instagram Login accounts get a 400 (instagram_paid_partnership_requires_facebook_login). Implied when brandedContentSponsors is set. |
[optional] [default to false] |
| branded_content_sponsors |
string[] |
Up to 2 brands to tag as sponsors, each an Instagram username (leading @ optional) or a numeric Instagram user ID. Usernames are resolved at publish time via the Business Discovery API on the publishing account; a sponsor that cannot be resolved (private, personal, or nonexistent account) fails the post with a user error naming it. Sponsors must be professional (Business or Creator) accounts. A brand that has pre-approved the creator shows as "Paid partnership with @brand" immediately; otherwise the plain label shows and the brand receives an approval request. Sets isPaidPartnership. Same login and content-type rules as isPaidPartnership. |
[optional] |
| comments_enabled |
bool |
When false, comments are turned off on the post right after it is published (Meta exposes this as comment_enabled on the media object). Applies to feed posts, Reels, and carousels; ignored for Stories, which have no comments. Works with both Instagram connection methods. Best-effort: if the toggle fails after a successful publish, the post still succeeds and stays live with comments on. |
[optional] [default to true] |
| location_id |
string |
Target GBP location ID (e.g. "locations/123456789"). If omitted, uses the default location. Use GET /v1/accounts/{id}/gmb-locations to list locations. |
[optional] |
| document_title |
string |
Title displayed on LinkedIn document (PDF/carousel) posts. Required by LinkedIn for document posts. If omitted, falls back to the media item title, then the filename. |
[optional] |
| organization_urn |
string |
Target LinkedIn Organization URN (e.g. "urn:li:organization:123456789"). If omitted, uses the default org. Use GET /v1/accounts/{id}/linkedin-organizations to list orgs. |
[optional] |
| disable_link_preview |
bool |
Set to true to disable automatic link previews for URLs in the post content (default is false) |
[optional] |
| reshare_url |
string |
LinkedIn post link to repost (use the post's "Copy link to post" action), or a urn:li:share / urn:li:ugcPost / urn:li:groupPost URN. The published post is always a reshare authored by your account with the original embedded underneath: with content your text is the commentary (LinkedIn's "repost with your thoughts"), and with no content it publishes as a text-free reshare. Note that a text-free reshare is NOT LinkedIn's one-click "Repost" (the feed treatment where the original author stays the author); LinkedIn's API exposes no way to create that, so the post still appears authored by you with the original embedded. Mutually exclusive with media. Works on personal profiles and organization pages. |
[optional] |
| board_id |
string |
Target Pinterest board ID. If omitted, the first available board is used. |
[optional] |
| board_section_id |
string |
Target section inside the board. Optional; the pin lands on the board itself when omitted. Pinterest rejects the pin if the section does not belong to boardId, so send both together. |
[optional] |
| link |
string |
Destination link (pin URL) |
[optional] |
| cover_image_url |
string |
Optional cover image for video pins |
[optional] |
| cover_image_key_frame_time |
int |
Optional key frame time in seconds for derived video cover |
[optional] |
| visibility |
string |
Video visibility: public (default, anyone can watch), unlisted (link only), private (invite only) |
[optional] [default to 'public'] |
| made_for_kids |
bool |
COPPA compliance flag. Set true for child-directed content (restricts comments, notifications, ad targeting). Defaults to false. YouTube may block views if not explicitly set. |
[optional] [default to false] |
| contains_synthetic_media |
bool |
AI-generated content disclosure. Set true if the video contains synthetic content that could be mistaken for real. YouTube may add a label. |
[optional] [default to false] |
| category_id |
string |
YouTube video category ID. Defaults to 22 (People & Blogs). Common: 1 (Film), 2 (Autos), 10 (Music), 15 (Pets), 17 (Sports), 20 (Gaming), 23 (Comedy), 24 (Entertainment), 25 (News), 26 (Howto), 27 (Education), 28 (Science & Tech). |
[optional] [default to '22'] |
| playlist_id |
string |
Optional YouTube playlist ID to add the video to after upload (e.g. 'PLxxxxxxxxxxxxx'). Use GET /v1/accounts/{id}/youtube-playlists to list available playlists. Works for both immediate and scheduled uploads. Quota cost: 50 YouTube API units per call. |
[optional] |
| language_code |
string |
BCP 47 language code (e.g. "en", "de", "es"). Auto-detected if omitted. Set explicitly for short or mixed-language posts. |
[optional] |
| topic_type |
string |
Post type. STANDARD is a regular update. EVENT requires the event object. OFFER requires the offer object. Defaults to STANDARD if omitted. |
[optional] [default to 'STANDARD'] |
| call_to_action |
\Zernio\Model\GoogleBusinessPlatformDataCallToAction |
|
[optional] |
| event |
\Zernio\Model\GoogleBusinessPlatformDataEvent |
|
[optional] |
| offer |
\Zernio\Model\GoogleBusinessPlatformDataOffer |
|
[optional] |
| draft |
bool |
When true, sends the post to the TikTok Creator Inbox as a draft instead of publishing immediately. The creator receives an inbox notification to complete posting via TikTok's editing flow. Maps to TikTok API post_mode: "MEDIA_UPLOAD" (photos) or the dedicated inbox endpoint (videos). When false or omitted, publishes directly via post_mode: "DIRECT_POST". Note: publish_type is not a supported field. Use this field instead. |
[optional] |
| privacy_level |
string |
One of the values returned by the TikTok creator info API for the account |
[optional] |
| allow_comment |
bool |
Allow comments on the post |
[optional] |
| allow_duet |
bool |
Allow duets (required for video posts) |
[optional] |
| allow_stitch |
bool |
Allow stitches (required for video posts) |
[optional] |
| commercial_content_type |
string |
Type of commercial content disclosure. Sufficient on its own: "brand_organic" ("Your Brand") implies isBrandOrganicPost and "brand_content" ("Branded Content", paid partnership) implies brandPartnerPromote, so you don't need to send the boolean flags separately. Branded content cannot be posted with privacyLevel SELF_ONLY. |
[optional] |
| brand_partner_promote |
bool |
Whether the post promotes a brand partner (branded content / paid partnership). Only needed to disclose BOTH types at once (set it alongside commercialContentType "brand_organic"), or to override the value implied by commercialContentType. |
[optional] |
| is_brand_organic_post |
bool |
Whether the post promotes the creator's own brand (brand organic). Only needed to disclose BOTH types at once (set it alongside commercialContentType "brand_content"), or to override the value implied by commercialContentType. |
[optional] |
| content_preview_confirmed |
bool |
User has confirmed they previewed the content |
[optional] |
| express_consent_given |
bool |
User has given express consent for posting |
[optional] |
| media_type |
string |
Optional override. Defaults based on provided media items. |
[optional] |
| video_cover_timestamp_ms |
int |
Optional for video posts. Timestamp in milliseconds to select which frame to use as thumbnail (defaults to 1000ms/1 second). Ignored when videoCoverImageUrl is provided. |
[optional] |
| video_cover_image_url |
string |
Optional for video posts. URL of a custom thumbnail image (JPG, PNG, or WebP, max 20MB). The image is stitched as a single frame at the start of the video and used as the cover. Overrides videoCoverTimestampMs when provided. |
[optional] |
| photo_cover_index |
int |
Optional for photo carousels. Index of image to use as cover, 0-based (defaults to 0/first image). |
[optional] |
| auto_add_music |
bool |
When true, TikTok may add recommended music (photos only) |
[optional] |
| video_made_with_ai |
bool |
Set true to disclose AI-generated content |
[optional] |
| description |
string |
Optional long-form description for photo posts (max 4000 chars). Recommended when content exceeds 90 chars, as photo titles are auto-truncated. |
[optional] |
| parse_mode |
string |
Text formatting mode for the message (default is HTML) |
[optional] |
| disable_web_page_preview |
bool |
Disable link preview generation for URLs in the message |
[optional] |
| disable_notification |
bool |
Send the message silently (users will receive notification without sound) |
[optional] |
| protect_content |
bool |
Protect message content from forwarding and saving |
[optional] |
| subreddit |
string |
Target subreddit name (without "r/" prefix). Overrides the default. Use GET /v1/accounts/{id}/reddit-subreddits to list options. |
[optional] |
| url |
string |
URL for link posts. If provided (and forceSelf is not true), creates a link post instead of a text post. |
[optional] |
| force_self |
bool |
When true, creates a text/self post even when a URL or media is provided. |
[optional] |
| flair_id |
string |
Flair ID for the post. Required by some subreddits. Use GET /v1/accounts/{id}/reddit-flairs?subreddit=name to list flairs. |
[optional] |
| flair_text |
string |
Custom flair text, for subreddits that allow free-text flair. Ignored when flairId is provided (flairId wins). |
[optional] |
| nsfw |
bool |
Mark the post as NSFW (Not Safe For Work / over 18). |
[optional] [default to false] |
| spoiler |
bool |
Mark the post as a spoiler. The subreddit must have spoiler tagging enabled for this to take effect. |
[optional] [default to false] |
| sendreplies |
bool |
Whether to receive inbox replies for comments on this post. Set to false to opt out. |
[optional] [default to true] |
| native_video |
bool |
Controls Reddit's native video upload flow. When true (default for video mediaItems), the video is uploaded to Reddit's CDN and submitted with kind=video so it renders as an embedded Reddit video player. Reddit transcodes server-side (1080p/30fps cap). Set to false to fall back to a legacy link post. If the subreddit blocks video posts, the upload falls back to a link post automatically. |
[optional] [default to true] |
| videogif |
bool |
When true (and nativeVideo is active), submits the video as a silent videogif (kind=videogif). Use for short looping clips without audio. |
[optional] |
| video_poster_url |
string |
Optional poster/thumbnail image URL for native video posts. If omitted, the first frame of the video is extracted and used automatically. |
[optional] |
| langs |
string[] |
Language(s) of the post text as 1-3 BCP-47 codes (e.g. "pt", "en-US"), written to the post record's langs field. Bluesky feed generators filter on this field, so posts without it never appear in language-scoped feeds. Can only be set at creation (Bluesky has no post editing). When threadItems is used, every item in the thread carries the same langs. When omitted, the account's default (set via PATCH /v1/accounts/{accountId}/bluesky-settings) applies; with no default either, the field is absent from the record. |
[optional] |
| channel_id |
string |
Target channel snowflake ID. Determines which channel in the connected server receives the message. |
|
| embeds |
\Zernio\Model\DiscordPlatformDataEmbedsInner[] |
Up to 10 Discord embed objects (combined max 6,000 characters across all embeds). Sent alongside or instead of plain-text content. |
[optional] |
| crosspost |
bool |
Auto-crosspost to every server following this announcement channel (type 5). No-op for regular text channels. |
[optional] |
| forum_thread_name |
string |
Thread title for forum channel posts (type 15). Required when posting to a forum channel. |
[optional] |
| forum_applied_tags |
string[] |
Tag snowflake IDs to apply to forum posts. Max 5 tags. |
[optional] |
| thread_from_message |
\Zernio\Model\DiscordPlatformDataThreadFromMessage |
|
[optional] |
| tts |
bool |
Send as text-to-speech message. Discord reads the message aloud in the channel. |
[optional] |
| webhook_username |
string |
Override the webhook display name for this post only (1-80 chars). Falls back to the account-level default set via PATCH /v1/connect/discord. |
[optional] |
| webhook_avatar_url |
string |
Override the webhook avatar URL for this post only. Falls back to the account-level default. |
[optional] |
| thread_ts |
string |
Parent message ts to post this message as a thread reply (e.g. "1503435956.000247"). |
[optional] |
| unfurl_links |
bool |
Expand links in the message into preview cards. Default true. |
[optional] |
| unfurl_media |
bool |
Expand media links into inline previews. Default true. |
[optional] |
| username |
string |
Override the bot display name for this message only (requires no setup; shown with an APP badge). Does not change the app identity in the sidebar. |
[optional] |
| icon_url |
string |
Override the bot avatar image URL for this message only. |
[optional] |