🚀 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.

curl --request POST \
  --url https://api.creatify.ai/api/link_to_videos/preview_list_async/ \
  --header 'Content-Type: application/json' \
  --header 'X-API-ID: <your-api-id>' \
  --header 'X-API-KEY: <your-api-key>' \
  --data '{
    "target_platform": "Instagram",
    "target_audience": "Young Adults",
    "language": "en",
    "video_length": 30,
    "aspect_ratio": "9x16",
    "script_style": "DIY",
    "visual_styles": [
        "GreenScreenEffectTemplate",
        "SimpleAvatarOverlayTemplate",
        "DynamicProductTemplate",
        "FullScreenTemplate",
        "QuickTransitionTemplate",
        "EnhancedVanillaTemplate",
        "DynamicGreenScreenEffect",
        "FeatureHighlightTemplate",
        "AvatarBubbleTemplate"
    ],
    "link": "1d28aebc-3c23-43f7-8ce1-f5e522387ab4",
    "webhook_url": "https://webhook.site/d94ac4fd-2384-4c21-b35d-2feb4f698cbc"
  }'

✏️ 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"
    }
  ]
}

🔄 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:

curl --request GET \
  --url https://api.creatify.ai/api/link_to_videos/20b5d452-89f4-4245-9480-10defaa8fb4d/ \
  --header 'X-API-ID: <your-api-id>' \
  --header 'X-API-KEY: <your-api-key>'

ℹ️ 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.

curl --request POST \
  --url https://api.creatify.ai/api/link_to_videos/20b5d452-89f4-4245-9480-10defaa8fb4d/render_single_preview/ \
  --header 'Content-Type: application/json' \
  --header 'X-API-ID: <your-api-id>' \
  --header 'X-API-KEY: <your-api-key>' \
  --data '{
    "media_job": "0c6a5fda-e58a-442c-9681-a431b6195203"
  }'

📡 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:

curl --request GET \
  --url https://api.creatify.ai/api/link_to_videos/20b5d452-89f4-4245-9480-10defaa8fb4d/ \
  --header 'X-API-ID: <your-api-id>' \
  --header 'X-API-KEY: <your-api-key>'

🤝 Tips & Extras

  • 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