Skip to main content

πŸš€ Introduction

With this Product Video API, you can transform a product image into a customized short-form video ad. The workflow includes:
  • Uploading a product image to create a record and generate a preview image.
  • Converting the preview image into a video using a specified record ID.
  • Regenerating a new record from an existing preview image or video for further customization.

βš™οΈ Quickstart Guide

βœ… Prerequisites

Before you begin, ensure you have:

πŸ–ΌοΈ Step 1: Upload Product Image and Create Record

Use this endpoint to upload a product image, create a record, and generate a preview image.

🎧 Example Response from POST /api/product_to_videos/gen_image/

curl --request POST \
  --url https://api.creatify.ai/api/product_to_videos/gen_image/ \
  --header 'Content-Type: application/json' \
  --header 'X-API-ID: your-api-id' \
  --header 'X-API-KEY: your-api-key' \
  --data '{
    "product_url": "https://m.media-amazon.com/images/I/71xUtGqbKQL._SL1500_.jpg",
    "webhook_url": "https://webhook.example"
  }'
⚠️ Save the id β€” you’ll need it to generate the video or regen the image.

Step 1.1: Check the generating image status.

Use this endpoint to check if the image is generated and retrieve the final output.
curl --request GET \
  --url https://api.creatify.ai/api/product_to_videos/7e5e8a6f-d0d5-4736-b390-03e696ffc969/ \
  --header 'Content-Type: application/json' \
  --header 'X-API-ID: your-api-id' \
  --header 'X-API-KEY: your-api-key'\
⏳ ProductToVideo is generating preview image status starts as initializing, and the status is image_generating when image generating, it’s will return image_generated until the image generated successful.

πŸ”„ Webhook Callback Example

If you provide a webhook_url, Creatify will notify your backend of the generation result:
{
  "id": "7e5e8a6f-d0d5-4736-b390-03e696ffc969",
  "type": "product_anyshot",
  "failed_reason": "<string>",
  "regen_source_id": "<string>",
  "regen_type": "<string>",
  "product_url": "https://m.media-amazon.com/images/I/71xUtGqbKQL._SL1500_.jpg",
  "aspect_ratio": "16x9",
  "override_avatar": null,
  "motion_style": "",
  "product_showcase_url": null,
  "image_prompt": null,
  "video_prompt": null,
  "status": "image_generated",
  "generated_video_url": null,
  "generated_photo_url": "https://creatify-user-uploads.s3.amazonaws.com/",
  "created_at": "2025-05-30T04:11:05.449603-07:00",
  "updated_at": "2025-05-30T04:11:05.751592-07:00",
  "webhook_url": "https://webhook.example"
}

Step 1.2:(Optional) Regen the image.

Use this endpoint to regen the preview image using a task ID. It will return a new ProductToVideo task ID, allowing you to select different tasks for the next step.
curl --request POST \
  --url https://api.creatify.ai/api/product_to_videos/7e5e8a6f-d0d5-4736-b390-03e696ffc969/regen_image/ \
  --header 'Content-Type: application/json' \
  --header 'X-API-ID: your-api-id' \
  --header 'X-API-KEY: your-api-key'\
  --data '{
    "image_prompt": "update image",
    "webhook_url": "https://webhook.example"
}'
⏳ This response will keep the same as first step you had invoke gen_image to generated image.

πŸ”„ Webhook Callback Example

If you provide a webhook_url, Creatify will notify your backend of the generation result:
{
  "regen_source_id": "7e5e8a6f-d0d5-4736-b390-03e696ffc969",
  "regen_type": "regen_image",
  "failed_reason": "<string>",
  "id": "6754f806-59d6-4c22-85ce-6cc030d86b48",
  "type": "product_anyshot",
  "product_url": "https://m.media-amazon.com/images/I/71xUtGqbKQL._SL1500_.jpg",
  "aspect_ratio": "16x9",
  "override_avatar": null,
  "motion_style": "",
  "product_showcase_url": null,
  "image_prompt": null,
  "video_prompt": null,
  "status": "image_generated",
  "generated_video_url": null,
  "generated_photo_url": "https://creatify-user-uploads.s3.amazonaws.com/",
  "created_at": "2025-05-30T04:11:05.449603-07:00",
  "updated_at": "2025-05-30T04:11:05.751592-07:00",
  "webhook_url": "https://webhook.example"
}

🎞️ Step 2: Generate Video from Preview Image Task.

Use this endpoint to convert the preview image associated with a task ID into a video.

🎧 Example Response from POST /api/product_to_videos/{id}/gen_video/

curl --request POST \
  --url https://api.creatify.ai/api/product_to_videos/7e5e8a6f-d0d5-4736-b390-03e696ffc969/gen_video/ \
  --header 'Content-Type: application/json' \
  --header 'X-API-ID: your-api-id' \
  --header 'X-API-KEY: your-api-key'\
  --data '{
    "video_prompt": "product example",
    "webhook_url": "https://webhook.example"
  }'
⚠️ Save the id β€” you’ll need it to regen video.

πŸ”„ Webhook Callback Example

If you provide a webhook_url, Creatify will notify your backend of the generation result:
{
  "id": "7e5e8a6f-d0d5-4736-b390-03e696ffc969",
  "type": "product_anyshot",
  "failed_reason": "<string>",
  "regen_source_id": "<string>",
  "regen_type": "<string>",
  "product_url": "https://m.media-amazon.com/images/I/71xUtGqbKQL._SL1500_.jpg",
  "aspect_ratio": "16x9",
  "override_avatar": null,
  "motion_style": "",
  "product_showcase_url": null,
  "image_prompt": null,
  "video_prompt": null,
  "status": "video_generated",
  "generated_video_url": "https://creatify-user-uploads.s3.amazonaws.com/xx.mp4",
  "generated_photo_url": "https://creatify-user-uploads.s3.amazonaws.com/xx.jpg",
  "created_at": "2025-05-30T04:11:05.449603-07:00",
  "updated_at": "2025-05-30T04:11:05.751592-07:00",
  "webhook_url": "https://webhook.example"
}

Step 2.1: Check the generating video status.

Use this endpoint to check if the video is generated and retrieve the final output.
curl --request GET \
  --url https://api.creatify.ai/api/product_to_videos/7e5e8a6f-d0d5-4736-b390-03e696ffc969/ \
  --header 'Content-Type: application/json' \
  --header 'X-API-ID: your-api-id' \
  --header 'X-API-KEY: your-api-key'\
⏳ ProductToVideo is generating video status starts as video_generating, it’s will return video_generated until the video generated successful.
Also can wait the webhook response about this id backing result if you had sent webhook_url on API request.

Step 2.2:(Optional) Regenerate the video.

Use this endpoint to regen the video using a task ID. It will return a new ProductToVideo task ID.
curl --request POST \
  --url https://api.creatify.ai/api/product_to_videos/7e5e8a6f-d0d5-4736-b390-03e696ffc969/regen_video/ \
  --header 'Content-Type: application/json' \
  --header 'X-API-ID: your-api-id' \
  --header 'X-API-KEY: your-api-key'\
  --data '{
    "video_prompt": "",
    "webhook_url": "https://webhook.example"
}'
⏳ This response will keep the same as first step you had invoke gen_video to generated video.

πŸ”„ Webhook Callback Example

If you provide a webhook_url, Creatify will notify your backend of the generation result:
{
  "regen_source_id": "7e5e8a6f-d0d5-4736-b390-03e696ffc969",
  "regen_type": "regen_video",
  "failed_reason": "<string>",
  "id": "6754f806-59d6-4c22-85ce-6cc030d86b49",
  "type": "product_anyshot",
  "product_url": "https://m.media-amazon.com/images/I/71xUtGqbKQL._SL1500_.jpg",
  "aspect_ratio": "16x9",
  "override_avatar": null,
  "motion_style": "",
  "product_showcase_url": null,
  "image_prompt": null,
  "video_prompt": null,
  "status": "video_generated",
  "generated_video_url": null,
  "generated_photo_url": "https://creatify-user-uploads.s3.amazonaws.com/",
  "created_at": "2025-05-30T04:11:05.449603-07:00",
  "updated_at": "2025-05-30T04:11:05.751592-07:00",
  "webhook_url": "https://webhook.example"
}

🎯 Summary

StepEndpoint
Generate imagePOST /api/product_to_videos/gen_image/
Check StatusGET /api/product_to_videos/{id}/
Generate VideoPOST /api/product_to_videos/{id}/gen_video/
Regenerate imagePOST /api/product_to_videos/{id}/regen_image/
Regenerate videoPOST /api/product_to_videos/{id}/regen_video/
API ReferenceProduct-to-Video Reference

🀝 Need Help?

If you run into any issues, check out our API Reference or contact api@creatify.ai.