Publish GIFs to X and Facebook

Publish a hosted or local GIF to X and Facebook, compare official platform support with UniPost support, and convert GIFs for destinations that require video to preserve GIF animation.

Platform support

Direct GIF publishing is available in UniPost today for X and Facebook Pages. Other destinations fall into two groups: LinkedIn and Threads have upstream GIF capabilities that UniPost has not connected yet, while the remaining platforms need a video-based workflow instead of an unchanged GIF file.

PlatformOfficial GIF supportUniPost statusRecommended action
X / TwitterYes — direct GIF media uploadSupportedPublish the GIF directly.
Facebook PageYes — GIF photo postSupportedPublish the GIF directly.
LinkedInYes — through LinkedIn image APIsComing soonWait for native UniPost GIF support.
ThreadsYes — through provider-backed GIF attachmentsComing soonWait for UniPost GIF attachment support.
InstagramNo direct GIF publishing surfaceGIF-to-MP4 conversion available; destination-specific publishing guidance coming soonConvert the GIF to MP4, then use the destination's video workflow.
TikTokNo direct GIF publishing surfaceGIF-to-MP4 conversion available; destination-specific publishing guidance coming soonConvert the GIF to MP4, then use the destination's video workflow.
PinterestNo direct animated GIF publishing surface in the supported organic Pin API flowGIF-to-MP4 conversion available; destination-specific publishing guidance coming soonConvert the GIF to MP4, then use the destination's video workflow.
YouTubeNo GIF post type; publishing requires video mediaGIF-to-MP4 conversion available; destination-specific publishing guidance coming soonConvert the GIF to MP4, then use the destination's video workflow.
BlueskyNo direct GIF media type in the documented image and video embed APIsGIF-to-MP4 conversion available; destination-specific publishing guidance coming soonConvert the GIF to MP4, then use the destination's video workflow.
Current direct destinations: send GIF files only to connected X and Facebook Page accounts. LinkedIn and Threads direct GIF paths remain coming soon. For destinations that require video to preserve GIF animation, convert the GIF first; do not send the unchanged GIF and wait for the upstream platform to reject it.

Choose the media source

Use the recommended platform_posts[] request shape so each destination has its own account, caption, and media fields. UniPost accepts either of these GIF sources:

SourceRequest fieldWorkflow
Public hosted GIFplatform_posts[].media_urlsSend a direct, publicly reachable URL whose path ends in .gif. Query strings are allowed.
Local .gif fileplatform_posts[].media_idsReserve an upload, PUT the file bytes, wait for the media row, then publish its media_id.

Find destination IDs with GET/v1/accounts. If the accounts are not connected yet, complete the relevant X or Facebook connection flow before creating the post.

Publish a hosted GIF

If the GIF already has a stable public URL, send it directly in media_urls. The same URL can be reused for the X and Facebook destinations, while each platform post can keep a different caption.

The URL path must end in .gif; Query strings are allowed. If your CDN provides an extensionless URL, upload it and use media_ids instead so UniPost can identify the stored content as image/gif.

Validate with POST/v1/posts/validate, then publish the identical payload with POST/v1/posts.

Hosted URL validation:the validate endpoint does not download hosted media bytes. It can validate the URL shape and destination rules, but cannot confirm the hosted file's actual MIME type, dimensions, or size. Keep the URL public and confirm that it returns the expected GIF before publishing.

Publish a local GIF

Local files use the media library. Reserve the upload with POST/v1/media, upload the raw bytes to the returned upload_url, and poll GET/v1/media/:media_id until the status is uploaded or attached.

After publishing, the create response is asynchronous. Poll GET/v1/posts/:post_id and inspect each result row for the final X and Facebook outcome.

X and Facebook limits

RuleX / TwitterFacebook Page
GIF countExactly one GIFExactly one GIF
UniPost file-size cap5 MB10 MB
Mixed mediaDo not combine the GIF with images or videoDo not combine the GIF with other media
LinksCaption URLs follow normal X post behaviorDo not combine Facebook link options with media
SchedulingUniPost scheduling is supportedPublish the Facebook GIF immediately
Publishing to both platforms: the GIF must be 5 MB or smaller because one cross-platform request must satisfy the stricter X limit. Do not include scheduled_at when the request contains a Facebook GIF.
X validation boundary: POST /v1/posts/validatedoes not currently enforce X's one-GIF-only rule or reject a GIF combined with another image. Send exactly one GIF as the only X media item; otherwise X can reject the post after UniPost queues it.

Convert a GIF for video destinations

LinkedIn and Threads require native integrations with their upstream GIF capabilities. UniPost will add those destination-specific paths without pretending that the platforms themselves reject GIFs.

To preserve animation on Instagram, TikTok, Pinterest, YouTube, and Bluesky, convert the GIF to video media. Upload the GIF with POST/v1/media, create a job with POST/v1/media/gif-conversions, and poll GET /v1/media/gif-conversions/{id}. A successful job returns an MP4 output_media_id.

Conversion does not publish, edit a draft, or replace the original GIF. Use the returned Media ID in a normal video publishing request after validating the selected destination. Destination-specific publishing guides and the Dashboard conversion control are still coming soon.

Output profile: UniPost creates a silent H.264 MP4 at 30 FPS, composites transparency over white by default, preserves complete animation cycles, avoids upscaling, and limits the longest edge to 1920 pixels. Static GIFs and animations shorter than five seconds produce at least five seconds of video; short animations repeat complete cycles. TikTok requires both output dimensions to be at least 360 pixels; validation rejects smaller outputs before dispatch.

Common errors

Code or stateWhat it meansHow to fix it
unsupported_formatThe GIF targets a destination that UniPost does not currently support for direct GIF publishing.Target X or Facebook directly, or convert the GIF to MP4 before using a video destination.
file_too_largeThe GIF exceeds a destination's UniPost file-size limit.Use 5 MB or smaller when one request targets both X and Facebook.
media_not_uploadedA local media_id is still pending.PUT the GIF bytes, then poll GET/v1/media/:media_id until the media is ready.
mixed_media_unsupportedThe request combines image-family media with video.Do not combine the GIF with video. X and Facebook each require the GIF to be the only media item.
facebook_scheduled_media_unsupportedThe Facebook GIF request includes scheduled_at.Remove scheduled_at and publish the Facebook GIF immediately.
Asynchronous destination failureUniPost accepted and queued the post, but X or Facebook later rejected delivery.Poll GET/v1/posts/:post_id and inspect the failed destination's structured error fields.

API Reference