🚀 Step 1: Generate a List of Video Previews (Async)
Use this endpoint to generate multiple video previews asynchronously before committing to a final render.
Endpoint
POST /api/link_to_videos/preview_list_async/
Purpose
This allows users to create preivews with multiple visual styles and choose the best one to render.
⚠️ Costs 1 credit per 30s per preview.
Example Request
Example Response
✏️ Step 2: Get preview generation result
🔄 Webhook Callback Example
If you provide a webhook_url
, Creatify will notify your backend of the preview generation result:
{
"id" : "20b5d452-89f4-4245-9480-10defaa8fb4d" ,
"status" : "pending" ,
"failed_reason" : null ,
"previews" : [
{
"media_job" : "43e2b17c-e272-453a-96d4-c047acd2ab0e" ,
"visual_style" : "FullScreenTemplate" ,
"url" : "https://app.creatify.ai/preview?layout=videos/20250521/bdc461ad-cc18-449c-b4b2-43cc12db0013.json" ,
"aspect_ratio" : "9x16"
},
{
"media_job" : "cd08733a-5067-4643-9237-346998c5849c" ,
"visual_style" : "EnhancedVanillaTemplate" ,
"url" : "https://app.creatify.ai/preview?layout=videos/20250521/5ce154f9-6954-4c58-bc17-e33bb077e2f5.json" ,
"aspect_ratio" : "9x16"
},
{
"media_job" : "02cdc0a9-17dc-44dc-9560-e8fd0b2f78a1" ,
"visual_style" : "FeatureHighlightTemplate" ,
"url" : "https://app.creatify.ai/preview?layout=videos/20250521/c3341e4a-531d-48f1-b426-87e45f0badd2.json" ,
"aspect_ratio" : "9x16"
},
{
"media_job" : "8323b4bc-d5c3-4976-9e04-f86c0cea7ee8" ,
"visual_style" : "SimpleAvatarOverlayTemplate" ,
"url" : "https://app.creatify.ai/preview?layout=videos/20250521/61b40cc5-2cfb-4afb-81fe-0698ad796eb4.json" ,
"aspect_ratio" : "9x16"
},
{
"media_job" : "50036921-ffbe-4b3f-ad1d-ef367847db7d" ,
"visual_style" : "QuickTransitionTemplate" ,
"url" : "https://app.creatify.ai/preview?layout=videos/20250521/ae100137-e12f-4f0f-86d9-4b54e041ac4d.json" ,
"aspect_ratio" : "9x16"
},
{
"media_job" : "188f92ac-6281-41e5-ac4b-94d0af4b2493" ,
"visual_style" : "GreenScreenEffectTemplate" ,
"url" : "https://app.creatify.ai/preview?layout=videos/20250521/13cda7fd-e54f-44d3-acc3-5cc6c34beba7.json" ,
"aspect_ratio" : "9x16"
},
{
"media_job" : "198080fa-6369-4724-829f-2e57bb8538b8" ,
"visual_style" : "DynamicProductTemplate" ,
"url" : "https://app.creatify.ai/preview?layout=videos/20250521/41601095-6549-4898-89ab-b62879dbf88d.json" ,
"aspect_ratio" : "9x16"
},
{
"media_job" : "0c6a5fda-e58a-442c-9681-a431b6195203" ,
"visual_style" : "DynamicGreenScreenEffect" ,
"url" : "https://app.creatify.ai/preview?layout=videos/20250521/1f39ca8e-bdf8-4423-81c1-1629fcaeabbd.json" ,
"aspect_ratio" : "9x16"
},
{
"media_job" : "d2110d2d-b2b5-4f0a-99dd-7d0ee07b8b13" ,
"visual_style" : "AvatarBubbleTemplate" ,
"url" : "https://app.creatify.ai/preview?layout=videos/20250521/a67532d0-0764-40c3-b1f4-36d645b935f5.json" ,
"aspect_ratio" : "9x16"
}
]
}
See all 61 lines
🔄 Poll API to get Result without Webhook
If you did not provide a webhook_url
, you will have to pool Creatify API to the preview generation result:
Example Request
Example Response
ℹ️ You can embed the preview URLs using <iframe>
tags in your UI to display them.
🎮 Step 3: Render One of the Previews
After selecting the best preview, use this endpoint to render the final video from it.
Endpoint
POST /api/link_to_videos/{id}/render_single_preview/
Purpose
Commit to rendering a final video using a specific preview.
⚠️ Costs 4 credits per 30s.
Example Request
Example Response
📡 Step 4: Get Render result
🔄 Webhook Callback Example
If you provide a webhook_url
, Creatify will notify your backend of the render result:
{
"id" : "20b5d452-89f4-4245-9480-10defaa8fb4d" ,
"status" : "done" ,
"failed_reason" : null ,
"video_output" : "https://s3.us-west-2.amazonaws.com/remotionlambda-uswest2-30tewi8y5c/renders/phnafddwja/output.mp4" ,
"video_thumbnail" : "https://dpbavq092lwjh.cloudfront.net/amzptv/0c6a5fda-e58a-442c-9681-a431b6195203-1747847145/thumbnail.jpg"
}
🔄 Poll API to get Result without Webhook
If you did not provide a webhook_url
, you will have to pool Creatify API to the render result:
Example Request
Example Response
Use override_avatar
and override_voice
to manually select avatar and voice
Previews let your users pick and compare before rendering
Preview URLs can be embedded in your product for a seamless experience
Webhooks let your backend stay in sync with preview/render status