Create Post
Create or schedule a post across one or more connected platforms.
Connection Profiles
Useprofile_id to publish from a non-default connection profile. Omit it to use the default profile.
Connection profiles let one Mallary user connect multiple accounts on the same platform. Plan caps per platform are: Free 1, Starter 4, Pro 10, Business 50.
Scheduling
- If you already know the exact UTC or offset time, use
scheduled_atwith an absolute timestamp like2026-04-06T18:30:00Z. - To resolve the post in a specific timezone, use a local
scheduled_atlike2026-04-06T14:30plusscheduled_timezonewith an IANA timezone likeAmerica/New_York. - Mallary stores the resolved publish time in UTC and returns the original
scheduled_timezoneon grouped post reads.
Publish Results
Post creation is asynchronous. The create response returns one Mallary job ID per platform immediately, withplatform_post_id and platform_post_url set to null until that platform finishes publishing. After completion, use GET /api/v1/jobs/{id} or GET /api/v1/posts. These return the platform post ID and the public post URL that the platform exposes.
Video Thumbnails
Attach a custom thumbnail or cover to a video media item withthumbnail_url.
thumbnail_url must be a Mallary-hosted image URL, usually created with POST /api/v1/upload. Mallary skips a thumbnail that is unsupported for the platform, wrong for the post type, or rejected by the provider. It then continues to publish the post where possible.
Current thumbnail behavior:
- YouTube regular videos: supported. Mallary accepts
jpg,jpeg, orpngthumbnail images up to 2 MB. When the dimensions are known, Mallary requires at least 640px width. Mallary skips images that are not close to 16:9. Recommended:1280x72016:9. Mallary skips YouTube Shorts thumbnails. - Facebook videos: supported for video uploads. Mallary accepts
jpg,jpeg, orpngthumbnail images up to 10 MB and retries without the thumbnail if Meta rejects it. - Instagram videos/Reels: supported with a Mallary-hosted
cover_url. Use a cover image that matches the video placement, such as 9:16 for Reels/stories. If Meta rejects a cover variant, Mallary falls back to video creation without the cover. - TikTok video posts: TikTok currently exposes frame-based cover selection through
video_cover_timestamp_ms, not arbitrary image thumbnails. Ifthumbnail_urlis supplied, Mallary does not sendvideo_cover_timestamp_msand lets TikTok use its default cover behavior. - TikTok photo posts:
thumbnail_urlcan choose the photo cover only when it exactly matches one of the image URLs inmedia[]. Mallary then uses that image index asphoto_cover_index. Mallary does not upload it as an extra photo.
Platform-Specific Media Rules
Mallary validates media before it queues a platform job. The public API and the current publishers enforce these media rules. For a simple guide to each setting, see Platform Posting Options.- Feed posts can be text-only, link-only, up to 10 images, or 1 video.
- Facebook does not allow mixing images and video in the same post.
- Feed images accept
jpg,jpeg,png,gif, andwebp. Feed video acceptsmp4andmov. - Facebook stories support 1 image or 1 video.
platform_options.facebook.messagesets a Facebook-specific message. Omit it to use the top-levelmessage.
- Instagram requires media.
- The validator currently defines: feed = 1 image or 1 video, story = 1 image or 1 video, reel = 1 video, carousel = 2 to 10 mixed image/video items.
- The publisher uses the matching Instagram container flow for
feed,story,reel, andcarouselwhen selected throughplatform_options.instagram.post_type. platform_options.instagram.messagesets an Instagram-specific caption. Omit it to use the top-levelmessage.- Instagram’s publishing API does not support story captions or follow-up comments. Include story text in the media itself.
- Instagram image uploads use
jpg,jpeg, orpng. Video uploads usemp4ormov.
- LinkedIn supports text-only posts or one image attachment.
- Mallary rejects LinkedIn video attachments before queueing.
- LinkedIn image attachments accept
jpg,jpeg,png, orgif. platform_options.linkedin.messagesets a LinkedIn-specific message. Omit it to use the top-levelmessage.
Threads
- Threads supports four posting shapes:
text,image,video, andcarousel. - Text posts are text-only and cannot include media.
- Image posts support exactly 1 image in
jpg,jpeg,png, orwebp. - Video posts support exactly 1 video in
mp4ormov. - Carousel posts support 2 to 20 supported media items total.
platform_options.threads.post_typecan betext,image,video, orcarousel.- If you omit
platform_options.threads.post_type, Mallary chooses from the payload: no media =text, one image =image, one video =video, multiple supported media items =carousel. platform_options.threads.messagesets a Threads-specific message. Omit it to use the top-levelmessage.- Threads currently supports
comments_under_post.
YouTube
- YouTube requires exactly one video.
regularvideo supports one video up to 12 hours and up to 256 GB.shortssupports one video up to 3 minutes. Use vertical video.- YouTube posting does not support images.
platform_options.youtube.messagesets a YouTube-specific description/default-title source. Omit it to use the top-levelmessage.platform_options.youtube.titlesets the YouTube title and takes precedence over the first line of the effective message.
TikTok
- TikTok video posts support one video file in
mp4,mov, orwebm. - TikTok photo posts support up to 35 images in
jpg,jpeg, orwebp. platform_options.tiktok.post_typecan bevideoorphoto.platform_options.tiktok.post_modecan beDIRECT_POSTorMEDIA_UPLOAD.- TikTok defaults to
MEDIA_UPLOAD, which sends the upload to the creator inbox for final review and publishing inside TikTok. - Use
DIRECT_POSTonly when you want Mallary to publish directly to TikTok without that inbox review step. - For TikTok video posts,
platform_options.tiktok.sourcecan beFILE_UPLOADorPULL_FROM_URL. - For TikTok photo posts, TikTok only allows
PULL_FROM_URL. - For TikTok
PULL_FROM_URL, Mallary only accepts media already hosted on the Mallary CDN (https://files.mallary.ai/...). platform_options.tiktok.messagesets a TikTok-specific caption/title fallback. Omit it to use the top-levelmessage.platform_options.tiktok.titlesets the TikTok title and takes precedence over the effective message where TikTok accepts a title.platform_options.tiktok.descriptionsets the TikTok photo description.- Direct-post TikTok options include
privacy_level,disable_comment,disable_duet,disable_stitch,video_cover_timestamp_ms,auto_add_music,brand_content_toggle,brand_organic_toggle,is_aigc, andphoto_cover_indexwhere applicable. - TikTok posts do not currently support
comments_under_post.
- Pinterest requires exactly one image or GIF, or exactly one video.
- Pinterest does not allow mixing image and video in the same Pin.
- Image Pins accept one
jpg,jpeg,png,webp, orgiffile up to 32 MB. - Video Pins accept one
mp4ormovfile, 4 seconds to 15 minutes, up to 2 GB. - A Pinterest board is required. Send
boardId, or use the board saved with the Pinterest connection. platform_options.pinterest.messagesets a Pinterest-specific description/default title source. Omit it to use the top-levelmessage.
textandlinkposts do not upload media through the Mallary API.imageposts require one image or GIF up to 20 MB.- The current public API path does not support Reddit video upload. To point at externally hosted video, use a link post.
subredditorsubredditNameis required in platform options.platform_options.reddit.messagesets a Reddit-specific title/text source. Omit it to use the top-levelmessage.
Snapchat
- Snapchat posting requires Snapchat Public Profile or Marketing API access plus Mallary server credentials before any post can succeed.
- The validation target is:
storyorsaved_story= one image or onemp4video,spotlight= onemp4video. - Snapchat supports only one media item per post.
- Snapchat video must be 5 to 60 seconds.
- The current publisher implementation fails fast until you enable Snapchat partner access and credentials.
platform_options.snapchat.messagesets a Snapchat-specific message. Omit it to use the top-levelmessage.
X
- X allows up to 4 images, or 1 video, or 1 GIF.
- X does not allow mixing images and video in the same post.
- GIFs cannot be combined with other attachments.
- X images accept
jpg,jpeg,png,webp, andgif. Video acceptsmp4ormov. - X video supports up to 140 seconds and up to 512 MB.
platform_options.x.messageorplatform_options.twitter.messagesets an X-specific message. Omit it to use the top-levelmessage.
Authorizations
Use Authorization: Bearer {api_key}
Headers
Optional idempotency key to prevent duplicate submissions.
Body
11Supported publishing platform identifier.
twitter, x, facebook, instagram, linkedin, youtube, tiktok, pinterest, reddit, threads, snapchat Connection profile to publish from. Omit to use the default profile.
^[A-Za-z0-9]{6,32}$"AbC123xYz90"
Media URLs obtained from using the /api/v1/upload endpoint.
Up to 3 follow-up comments/replies under the main post when supported by the target platform/format.
3Optional scheduled publish timestamp. Send an absolute timestamp like 2026-04-06T18:30:00Z, or send a local datetime like 2026-04-06T14:30 together with scheduled_timezone.
Optional IANA timezone such as America/New_York. When provided with a local scheduled_at that omits an offset, Mallary resolves the wall-clock time in this timezone and stores the resulting UTC publish time.
Optional per-post override for AI auto-replies.
Optional per-platform overrides.
Optional callback URL for completion notifications.

