On this page
Publishing HeyGen AI avatar or UGC-style videos to TikTok, Instagram Reels, Facebook Reels, YouTube Shorts and LinkedIn comes down to two non-negotiable rules: first, a realistic talking-head avatar always requires an AI disclosure label on every major social platform; second, if you automate rendering through HeyGen's API, its webhook and status endpoints return temporary presigned MP4 URLs that must be downloaded into permanent storage before they expire. Exporting in 1080p at 9:16 produces a 25 fps MP4 that passes every network in our social media video specs table.
HeyGen avatar export specs vs. social platform requirements
According to HeyGen's official developer documentation (Usage Limits and Digital Twin / Create Video guides, checked October 25, 2026), videos containing avatars render at a fixed 25 frames per second, with width and height between 128 and 4,096 pixels and a default output resolution of 1080p (720p and 1080p on Avatar IV and Avatar V; 4k on Avatar III). Each single-scene avatar request accepts up to 5,000 characters of script text or 10 minutes (600 seconds) of input audio, with a per-scene maximum of 30 minutes and up to 50 scenes in multi-scene studio videos.
Here is how HeyGen's documented output lines up against each social network's publishing API in our video spec checker and our complete guide to publishing AI-generated videos to social media:
Parameter | HeyGen avatar output (official docs) | TikTok & YouTube Shorts API | Instagram Reels & Facebook Reels API | LinkedIn Videos API |
|---|---|---|---|---|
Container |
| MP4, MOV, WebM accepted | Instagram: MP4, MOV; Facebook: MP4 only | MP4 only |
Frame rate | 25 fps for videos containing avatars | TikTok: 23–60 fps; Shorts: unrestricted | Instagram: 23–60 fps; Facebook: 24–60 fps | Accepted |
Resolution |
| TikTok: 360–4096 px per side | Instagram: max 1,920 px wide; Facebook: min 540×960 | Up to 500 MB file cap |
Aspect ratio |
| Shorts requires ≤ 1:1 (vertical or square); TikTok recommends 9:16 | 9:16 recommended | 9:16, 1:1, or 16:9 accepted |
Duration | Up to 30 min per scene (audio input up to 600 s) | Shorts: max 180 s; TikTok: max 600 s (per-account limit applies) | Instagram: 3 s – 15 min; Facebook Reels: 3 – 90 s | 3 s – 30 min |
Two practical settings avoid cross-posting failures: always keep output_format set to mp4 (since Instagram Reels, Facebook Reels and LinkedIn reject webm), and keep vertical videos under 90 seconds at 1080p if the same clip goes to Facebook Reels and Instagram Reels.
Why realistic talking-head avatars always need an AI label
Talking-head avatar videos sit at the exact center of every platform's synthetic-media policy. We checked both main HeyGen workflows against the decision table in our AI content labels guide:
HeyGen workflow | What AI generates | YouTube | TikTok | Instagram, Facebook & Threads | EU AI Act Art. 50(4) (professional use) |
|---|---|---|---|---|---|
Digital Twin or Instant/Professional Voice Clone ( | A real person's likeness or cloned voice speaking a script they did not record on camera | Required | Required | Required | Required |
Photorealistic stock or UGC avatar with synthetic voice ( | A lifelike human presenter and human-sounding speech generated by AI | Required | Required | Required | Required |
In both cases, the verdict is Required across all four targets. TikTok's Community Guidelines require disclosure whenever AI shows realistic-looking people or mimics a real person's voice; Meta requires a label on both photorealistic video and realistic-sounding AI audio; YouTube requires disclosure when a real person appears to say something they didn't or when a realistic scene is generated; and from August 2, 2026, Article 50(4) of the EU AI Act requires businesses, agencies and monetizing creators to disclose deepfakes.
How Uplonic handles the label: When you flag an imported HeyGen video as AI-generated in Uplonic, Uplonic automatically sends the API disclosure flag to TikTok, Instagram Reels and Facebook Reels at publishing time. YouTube's Data API field (status.containsSyntheticMedia) is not connected yet, so for YouTube Shorts or long-form uploads, also tick "Altered content" in YouTube Studio.
Clean renders vs. burned-in subtitles and vertical safe zones
When HeyGen finishes rendering an avatar video, its status response (GET /v3/videos/{video_id}) can return two different video links:
video_url: the clean MP4 render (unless a caption burn-instylewas explicitly requested).captioned_video_url: the MP4 with subtitles burned into the video frames, plus a separatesubtitle_urlfor the.srtsidecar file.
If you burn subtitles into a 9:16 avatar video, check a sample frame in our vertical video safe-zone checker before batch-rendering. TikTok, Instagram Reels and YouTube Shorts stack the creator handle, caption text and audio ticker across the bottom 20–25% of the screen, which easily covers low-placed subtitles.
Piping HeyGen webhook MP4 URLs into Uplonic's POST /videos/import
Whether you call HeyGen's legacy POST /v2/video/generate endpoint (which HeyGen marks for sunset after October 31, 2026) or the current POST /v3/videos endpoint, rendering is asynchronous. When the job reaches completed (or fires an avatar_video.success webhook to your callback_url), HeyGen returns a presigned video_url with a limited expiry window.
Instead of downloading the MP4 to a temporary server only to re-upload it, an n8n workflow or backend webhook handler can pass HeyGen's presigned URL straight to Uplonic's POST /videos/import endpoint (or the import_videos MCP tool):
curl --request POST "https://api.uplonic.com/videos/import" --header "Content-Type: application/json" --header "x-api-key: WORKSPACE_API_KEY" --data '{
"requireReview": true,
"items": [
{
"url": "https://files2.heygen.ai/aws_pacific/avatar_tmp/abc123/video.mp4?Expires=1793000000&Signature=xyz&Key-Pair-Id=K123",
"title": "Weekly product update — Digital Twin (9:16)",
"description": "Three new scheduling updates in 45 seconds.",
"tags": ["heygen", "avatar", "product-update"],
"idempotencyKey": "heygen-video-abc123xyz789"
}
]
}'
We verified this URL normalization against Uplonic's normalizeImportUrl implementation:
Immediate fetch, clean permanent record: Uplonic's background worker downloads the MP4 up to 500 MB using the full presigned
fetchUrlbefore the signature expires, sniff-checks the file header to confirm a real MP4/MOV/WebM container, and saves only the origin and path (https://files2.heygen.ai/aws_pacific/avatar_tmp/abc123/video.mp4) inVideo.sourceUrlso expired tokens aren't stored.Webhook deduplication: Setting
idempotencyKeyto HeyGen'svideo_id(8–200 characters) ensures that if HeyGen retries the webhook delivery, Uplonic returns the existing import record withdeduplicated: trueinstead of importing the video twice.Human review before publishing: Passing
requireReview: trueplaces the imported avatar video intopendingreview status so your team or client can verify lip-sync, pronunciation and AI disclosure flags before scheduling.
Working with non-avatar cinematic AI generators too? Read our companion guide on publishing Luma Dream Machine (Ray 2) videos across social channels.
Sources & methodology
Methodology: We verified HeyGen's output specifications, rate limits, v2-to-v3 deprecation schedule and presigned URL behavior directly from HeyGen's official developer documentation on October 25, 2026. We tested presigned URL stripping with Uplonic's normalizeImportUrl and verified disclosure rules with checkDisclosure.
Usage Limits — Output Video Specifications (25 fps, 1080p, 16:9 and 9:16, 30 min per scene) — HeyGen Developer Documentation, accessed October 25, 2026
Digital Twin & Avatar Video Guide (POST /v3/videos, resolution, aspect_ratio, presigned video_url and callback_url) — HeyGen Developer Documentation, accessed October 25, 2026
Endpoint Version Comparison (v1/v2 sunset on October 31, 2026 and migration to v3) — HeyGen Developer Documentation, accessed October 25, 2026
Create Video API Reference (POST /v3/videos OpenAPI 3.1 specification) — HeyGen Developer Documentation, accessed October 25, 2026




