# Overview
Source: https://docs.creatify.ai/api-documentation/ad-clone/ad-clone
Recreate high-performing ads using your product and a reference ad video.
## 🚀 Introduction
The **Ad Clone API** helps you recreate winning ads by combining your **product assets** (via a Link) with a **reference ad video**.\
By analyzing the structure, pacing, and style of the reference ad, Creatify generates a new ad tailored to your product.
***
## 1. Create Link from URL
Extract content (title, description, images, videos, etc.) from a product URL.
[`POST /api/links/`](/api-reference/links/post-apilinks)
```bash Example Request theme={null}
Example request and response:
curl --request POST \
--url https://api.creatify.ai/api/links/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: ' \
--header 'X-API-KEY: ' \
--data '{
"url": "https://www.amazon.com/ATTITUDE-Mineral-Based-Ingredients-Cruelty-free-Moisturizer/dp/B09JZXHJM7"
}'
```
```json Example Response [expandable] theme={null}
{
"id": "e63ce1e4-97cb-4ba6-937a-50e88925a321",
"url": "https://www.amazon.com/ATTITUDE-Mineral-Based-Ingredients-Cruelty-free-Moisturizer/dp/B09JZXHJM7",
"link": {
"id": "839668ff-ae2a-4500-8f53-c76a1840ed74",
"url": "https://www.amazon.com/ATTITUDE-Mineral-Based-Ingredients-Cruelty-free-Moisturizer/dp/B09JZXHJM7",
"title": "ATTITUDE Body Cream, Moisturizer for Dry Skin, EWG Verified, Vegan & Dermatologist-Tested, Deep Hydration, Pear & Amber Scent, 8 Fl Oz (Pack of 6)",
"description": "About this item EWG VERIFIED: This body cream for women and men is certified EWG Verified and made with clean ingredients that meet the Environmental Working Group's strict health and safety standards so you can feel confident that it does not contain any potentially concerning ingredients. CLEAN FORMULA: This ATTITUDE body cream is made with 98% natural-origin ingredients, and free from SLS, SLES, petrolatum, mineral oil, and artificial colors, for a worry-free experience. HIGH PERFORMANCE: Infused with watercress and Indian cress extracts, this fast-absorbing, non-greasy and non-sticky EWG Verified hand cream leaves hands soft and smooth. Suitable for both women and men. PEAR & AMBER: This bright and delicate fragrance features juicy pear with vibrant notes of nectarine and ginger for a naturally energizing and refreshing experience. RESPONSIBLE BEAUTY: Dermatologically tested, 100% vegan, and packaged in an easily recyclable reusable HDPE plastic bottle for a routine that’s kind to everything. \n › See more product details",
"image_urls": [
"https://m.media-amazon.com/images/I/71xB-ss26gL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/71H9i6r9TUL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/71PHtZce95L._SL1500_.jpg",
"https://m.media-amazon.com/images/I/81rjeQ6iLOL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/61YO5awH0OL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/61uAyKZ1WFL.jpg",
"https://m.media-amazon.com/images/I/71O3xDdrjTL.jpg",
"https://m.media-amazon.com/images/I/91BJZbo4nAL.jpg"
],
"video_urls": [
"https://d35ghwdno3nak3.cloudfront.net/videos/1984d47b-7110-86c3-f38d-b7b3daff27db.mp4",
"https://d35ghwdno3nak3.cloudfront.net/videos/ebf4c8b5-b774-55f1-28d9-f24a4aa436db.mp4",
"https://d35ghwdno3nak3.cloudfront.net/videos/3f036f62-d4e1-9a31-6257-6dfb93567cc9.mp4"
],
"reviews": [
"I can't get enough of this lotion. It's very moisturizing. It glides on without any stickiness and it has a very mild scent. The absolute best feature of this lotion is that it is EWG verified and is easy to apply. I also like that they include olive leaves and watercress leaves in their ingredients. I'm glad I gave this lotion a try."
],
"logo_url": null,
"ai_summary": "The ATTITUDE Body Cream is an EWG Verified moisturizer designed for dry skin, made with 98% natural-origin ingredients and free from SLS, SLES, petrolatum, mineral oil, and artificial colors. Suitable for both women and men, this dermatologist-tested, 100% vegan cream offers deep hydration with a fast-absorbing, non-greasy, and non-sticky formula enriched with watercress and Indian cress extracts. It features a refreshing pear and amber scent with notes of nectarine and ginger, providing an energizing fragrance. Packaged in a recyclable HDPE plastic bottle, this moisturizer combines effective skincare with environmental responsibility. This pack contains six 8 fl oz bottles.",
"ai_industry": "Beauty & Personal Care",
"ai_target_audiences": [
"Clean beauty enthusiasts",
"Vegan skincare users",
"EWG-conscious consumers",
"Dry skin sufferers",
"Eco-friendly shoppers",
"Fragrance lovers",
"Dermatology tested users"
],
"brand_color": null,
"qrcode_url": null,
"primary_image_url": null
},
"credits_used": 1
}
```
> 💡 Errors:
>
> 1. Successfully scraped the URL but it contains no images or videos.\
> status\_code: 400\
> body: \["Link must have at least one image or one video."]
> 2. Failed to scrape the URL (due to anti-scraping or other issues).\
> status\_code: 400\
> body: \["Failed to scrape url: "]
***
## 2. (Optional) Create Link with Parameters
If you don’t have a URL but have product data, create a link directly using parameters.
[`POST /api/links/link_with_params/`](/api-reference/links/post-apilink_with_params)
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/api/links/link_with_params/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: ' \
--header 'X-API-KEY: ' \
--data '{
"title": "ATTITUDE Body Cream, Moisturizer for Dry Skin, EWG Verified, Vegan & Dermatologist-Tested, Deep Hydration, Pear & Amber Scent, 8 Fl Oz (Pack of 6)",
"description": "About this item EWG VERIFIED: This body cream for women and men is certified EWG Verified and made with clean ingredients that meet the Environmental Working Group's strict health and safety standards so you can feel confident that it does not contain any potentially concerning ingredients. CLEAN FORMULA: This ATTITUDE body cream is made with 98% natural-origin ingredients, and free from SLS, SLES, petrolatum, mineral oil, and artificial colors, for a worry-free experience. HIGH PERFORMANCE: Infused with watercress and Indian cress extracts, this fast-absorbing, non-greasy and non-sticky EWG Verified hand cream leaves hands soft and smooth. Suitable for both women and men. PEAR & AMBER: This bright and delicate fragrance features juicy pear with vibrant notes of nectarine and ginger for a naturally energizing and refreshing experience. RESPONSIBLE BEAUTY: Dermatologically tested, 100% vegan, and packaged in an easily recyclable reusable HDPE plastic bottle for a routine that’s kind to everything. \n › See more product details",
"image_urls": [
"https://m.media-amazon.com/images/I/71xB-ss26gL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/71H9i6r9TUL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/71PHtZce95L._SL1500_.jpg",
"https://m.media-amazon.com/images/I/81rjeQ6iLOL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/61YO5awH0OL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/61uAyKZ1WFL.jpg",
"https://m.media-amazon.com/images/I/71O3xDdrjTL.jpg",
"https://m.media-amazon.com/images/I/91BJZbo4nAL.jpg"
],
"video_urls": [
"https://d35ghwdno3nak3.cloudfront.net/videos/1984d47b-7110-86c3-f38d-b7b3daff27db.mp4",
"https://d35ghwdno3nak3.cloudfront.net/videos/ebf4c8b5-b774-55f1-28d9-f24a4aa436db.mp4",
"https://d35ghwdno3nak3.cloudfront.net/videos/3f036f62-d4e1-9a31-6257-6dfb93567cc9.mp4"
]
}'
```
```json Example Response [expandable] theme={null}
{
"id": "21ce43ad-ae5e-4f3d-96fa-58a1e5b966f0",
"url": "placeholder-21ce43ad-ae5e-4f3d-96fa-58a1e5b966f0",
"link": {
"id": "e6bea53f-1f03-42a8-aee8-637f69714afd",
"url": "placeholder-21ce43ad-ae5e-4f3d-96fa-58a1e5b966f0",
"title": "ATTITUDE Body Cream, Moisturizer for Dry Skin, EWG Verified, Vegan & Dermatologist-Tested, Deep Hydration, Pear & Amber Scent, 8 Fl Oz (Pack of 6)",
"description": "About this item EWG VERIFIED: This body cream for women and men is certified EWG Verified and made with clean ingredients that meet the Environmental Working Group's strict health and safety standards so you can feel confident that it does not contain any potentially concerning ingredients. CLEAN FORMULA: This ATTITUDE body cream is made with 98% natural-origin ingredients, and free from SLS, SLES, petrolatum, mineral oil, and artificial colors, for a worry-free experience. HIGH PERFORMANCE: Infused with watercress and Indian cress extracts, this fast-absorbing, non-greasy and non-sticky EWG Verified hand cream leaves hands soft and smooth. Suitable for both women and men. PEAR & AMBER: This bright and delicate fragrance features juicy pear with vibrant notes of nectarine and ginger for a naturally energizing and refreshing experience. RESPONSIBLE BEAUTY: Dermatologically tested, 100% vegan, and packaged in an easily recyclable reusable HDPE plastic bottle for a routine that’s kind to everything. \n › See more product details",
"image_urls": [
"https://m.media-amazon.com/images/I/71xB-ss26gL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/71H9i6r9TUL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/71PHtZce95L._SL1500_.jpg",
"https://m.media-amazon.com/images/I/81rjeQ6iLOL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/61YO5awH0OL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/61uAyKZ1WFL.jpg",
"https://m.media-amazon.com/images/I/71O3xDdrjTL.jpg",
"https://m.media-amazon.com/images/I/91BJZbo4nAL.jpg"
],
"video_urls": [
"https://d35ghwdno3nak3.cloudfront.net/videos/1984d47b-7110-86c3-f38d-b7b3daff27db.mp4",
"https://d35ghwdno3nak3.cloudfront.net/videos/ebf4c8b5-b774-55f1-28d9-f24a4aa436db.mp4",
"https://d35ghwdno3nak3.cloudfront.net/videos/3f036f62-d4e1-9a31-6257-6dfb93567cc9.mp4"
],
"reviews": null,
"logo_url": null,
"ai_summary": "ATTITUDE Body Cream is an EWG Verified moisturizer designed for dry skin, made with 98% natural-origin ingredients and free from SLS, SLES, petrolatum, mineral oil, and artificial colors, ensuring a clean and safe formula. Suitable for both women and men, this fast-absorbing, non-greasy, and non-sticky cream is infused with watercress and Indian cress extracts to provide deep hydration, leaving skin soft and smooth. It features a bright, delicate pear and amber scent with notes of nectarine and ginger for a refreshing experience. Dermatologist-tested, 100% vegan, and packaged in a recyclable HDPE plastic bottle, this product supports a responsible and sustainable beauty routine. The pack contains six 8 fl oz bottles.",
"ai_industry": "Skincare",
"ai_target_audiences": [
"Clean beauty enthusiasts",
"Vegan skincare users",
"Dry skin sufferers",
"Eco-conscious consumers",
"Natural ingredient advocates",
"Fragrance lovers",
"Dermatologist-tested product users"
],
"brand_color": null,
"qrcode_url": null,
"primary_image_url": null
},
"credits_used": 0
}
```
> 💡 If no videos are included, provide at least **1 image.**.
***
## 3. (Optional) Update Link
Modify an existing link’s metadata (title, description, images, videos).
[`PUT /api/links/{id}/`](/api-reference/links/put-apilinks-)
```bash Example Request theme={null}
curl --request PUT \
--url https://api.creatify.ai/api/links/21ce43ad-ae5e-4f3d-96fa-58a1e5b966f0/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: ' \
--header 'X-API-KEY: ' \
--data '{
"title": "ATTITUDE Body Cream, Moisturizer for Dry Skin, EWG Verified, Vegan & Dermatologist-Tested, Deep Hydration, Pear & Amber Scent, 8 Fl Oz (Pack of 6)",
"description": "About this item EWG VERIFIED: This body cream for women and men is certified EWG Verified and made with clean ingredients that meet the Environmental Working Group's strict health and safety standards so you can feel confident that it does not contain any potentially concerning ingredients. CLEAN FORMULA: This ATTITUDE body cream is made with 98% natural-origin ingredients, and free from SLS, SLES, petrolatum, mineral oil, and artificial colors, for a worry-free experience. HIGH PERFORMANCE: Infused with watercress and Indian cress extracts, this fast-absorbing, non-greasy and non-sticky EWG Verified hand cream leaves hands soft and smooth. Suitable for both women and men.",
"image_urls": [
"https://m.media-amazon.com/images/I/71xB-ss26gL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/71H9i6r9TUL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/71PHtZce95L._SL1500_.jpg",
"https://m.media-amazon.com/images/I/81rjeQ6iLOL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/61YO5awH0OL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/61uAyKZ1WFL.jpg",
"https://m.media-amazon.com/images/I/71O3xDdrjTL.jpg"
],
"video_urls": [
"https://d35ghwdno3nak3.cloudfront.net/videos/1984d47b-7110-86c3-f38d-b7b3daff27db.mp4",
"https://d35ghwdno3nak3.cloudfront.net/videos/ebf4c8b5-b774-55f1-28d9-f24a4aa436db.mp4"
]
}'
```
```json Example Response [expandable] theme={null}
{
"id": "e6bea53f-1f03-42a8-aee8-637f69714afd",
"url": "placeholder-21ce43ad-ae5e-4f3d-96fa-58a1e5b966f0",
"title": "ATTITUDE Body Cream, Moisturizer for Dry Skin, EWG Verified, Vegan & Dermatologist-Tested, Deep Hydration, Pear & Amber Scent, 8 Fl Oz (Pack of 6)",
"description": "About this item EWG VERIFIED: This body cream for women and men is certified EWG Verified and made with clean ingredients that meet the Environmental Working Group's strict health and safety standards so you can feel confident that it does not contain any potentially concerning ingredients. CLEAN FORMULA: This ATTITUDE body cream is made with 98% natural-origin ingredients, and free from SLS, SLES, petrolatum, mineral oil, and artificial colors, for a worry-free experience. HIGH PERFORMANCE: Infused with watercress and Indian cress extracts, this fast-absorbing, non-greasy and non-sticky EWG Verified hand cream leaves hands soft and smooth. Suitable for both women and men.",
"image_urls": [
"https://m.media-amazon.com/images/I/71xB-ss26gL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/71H9i6r9TUL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/71PHtZce95L._SL1500_.jpg",
"https://m.media-amazon.com/images/I/81rjeQ6iLOL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/61YO5awH0OL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/61uAyKZ1WFL.jpg",
"https://m.media-amazon.com/images/I/71O3xDdrjTL.jpg"
],
"video_urls": [
"https://d35ghwdno3nak3.cloudfront.net/videos/1984d47b-7110-86c3-f38d-b7b3daff27db.mp4",
"https://d35ghwdno3nak3.cloudfront.net/videos/ebf4c8b5-b774-55f1-28d9-f24a4aa436db.mp4"
],
"reviews": null,
"logo_url": null,
"ai_summary": "ATTITUDE Body Cream is an EWG Verified moisturizer designed for dry skin, made with 98% natural-origin ingredients and free from SLS, SLES, petrolatum, mineral oil, and artificial colors, ensuring a clean and safe formula. Suitable for both women and men, this fast-absorbing, non-greasy, and non-sticky cream is infused with watercress and Indian cress extracts to provide deep hydration, leaving skin soft and smooth. It features a bright, delicate pear and amber scent with notes of nectarine and ginger for a refreshing experience. Dermatologist-tested, 100% vegan, and packaged in a recyclable HDPE plastic bottle, this product supports a responsible and sustainable beauty routine. The pack contains six 8 fl oz bottles.",
"ai_industry": "Skincare",
"ai_target_audiences": [
"Clean beauty enthusiasts",
"Vegan skincare users",
"Dry skin sufferers",
"Eco-conscious consumers",
"Natural ingredient advocates",
"Fragrance lovers",
"Dermatologist-tested product users"
],
"brand_color": null,
"qrcode_url": null,
"primary_image_url": null
}
```
***
## 4. Create Ad Clone Task
Create an Ad Clone task using the above **Link ID** and a reference ad video URL.
[`POST /api/ads_clone/`](/api-reference/ad-clone/post-ad-clone)
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/api/ads_clone/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: ' \
--header 'X-API-KEY: ' \
--data '{
"link": "e63ce1e4-97cb-4ba6-937a-50e88925a321,
"video_url": "https://d35ghwdno3nak3.cloudfront.net/media_file/18165/2caea2fb194664e5d736c0d8f73bf802.mp4",
"aspect_ratio": "9x16",
"language": null
}'
```
```json Example Response [expandable] theme={null}
{
"id": "a1cbde83-1be7-4ecd-9ee3-4c72f17af8e9",
"created_at": "2025-12-24T02:56:42.926254-08:00",
"updated_at": "2025-12-24T02:56:42.926303-08:00",
"link": "e63ce1e4-97cb-4ba6-937a-50e88925a321",
"video_url": null,
"aspect_ratio": "9x16",
"language": null,
"webhook_url": null,
"video_output": null,
"credits_used": 0,
"media_job": "a48e8d3a-1045-4830-90dd-c65792747bad",
"status": "running"
}
```
> 🎬 Save the returned `id` and use it to check the task status.
***
## 5. Check Ad Clone Status
Poll the status endpoint until `status` becomes `done`.
[`GET /api/ads_clone/{id}/`](/api-reference/ad-clone/get-ad-clone-)
```bash Example Request theme={null}
curl --request GET \
--url https://api.creatify.ai/api/ads_clone/a1cbde83-1be7-4ecd-9ee3-4c72f17af8e9/ \
--header 'X-API-ID: ' \
--header 'X-API-KEY: '
```
```json Example Response [expandable] theme={null}
{
"id": "a1cbde83-1be7-4ecd-9ee3-4c72f17af8e9",
"created_at": "2025-12-23T23:13:31.791310-08:00",
"updated_at": "2025-12-24T01:39:15.442115-08:00",
"link": "e63ce1e4-97cb-4ba6-937a-50e88925a321",
"video_url": "https://d35ghwdno3nak3.cloudfront.net/media_file/18165/2caea2fb194664e5d736c0d8f73bf802.mp4",
"aspect_ratio": "9x16",
"language": null,
"webhook_url": null,
"video_output": "https://s3.us-west-2.amazonaws.com/remotionlambda-uswest2-30tewi8y5c/renders/qlkkz11bn8/output.mp4",
"credits_used": 15,
"media_job": "3fedc33e-fcd7-4655-9585-6896167c0508",
"status": "done"
}
```
> ✅ When `status` is `done`, retrieve your video from the `video_output` field.
***
## 6. Webhook Option
Instead of polling, you can provide a `webhook_url` in the request to receive the result automatically when the video is ready.\
When processing completes, Aurora will send a POST request to your webhook with a payload like this:
```json theme={null}
{
"id": "a1cbde83-1be7-4ecd-9ee3-4c72f17af8e9",
"status": "done",
"failed_reason": "",
"video_output": "https://s3.us-west-2.amazonaws.com/remotionlambda-uswest2-30tewi8y5c/renders/qlkkz11bn8/output.mp4"
}
```
***
## 🎯 Summary
| Step | Endpoint |
| - | - |
| Create Link | `POST /api/links/` |
| Create Task | `POST /api/ads_clone/` |
| Check Status | `GET /api/ads_clone/{id}/` |
| API Reference | [Ad Clone Reference](/api-reference/ad-clone/post-ad-clone) |
***
## 💳 Pricing
Creating an Ad Clone video through this endpoint costs **12 credits per 5 seconds** of the **reference video** length.\
For example, a 30-second reference video costs **72 credits**.
***
## 🤝 Need Help?
If you run into any issues, check out our [API Reference](/api-reference) or contact [api@creatify.ai](mailto:api@creatify.ai).
# Overview (v1)
Source: https://docs.creatify.ai/api-documentation/ai-avatar/lipsync
API that converts text or audio files to vivid videos of people speaking.
🔁 We recommend upgrading to the `AI Avatar v2 API` for greater creative flexibility, including multi-scene composition, custom voices, backgrounds, and fine-grained control over captions and transitions.
## 🚀 Introduction
The **AI Avatar API** enables you to generate realistic, high-quality videos of virtual people speaking from any text or audio input. Whether you're building a marketing campaign, a product demo, or an educational assistant, this API offers an intuitive way to bring your content to life—powered by customizable personas and simple integration.
***
## ⚙️ Quickstart Guide
### ✅ Prerequisites
Before you begin, ensure you have:
* A [Creatify](https://app.creatify.ai) account with **API access**
* Your **API credentials** (see [Quickstart](/quickstart))
***
## 🧑🎤 Step 1: Choose a Persona
We offer **1500+ lifelike personas** with diverse styles and expressions to match your use case.
* Explore the full list here: [Get Personas API](/api-reference/personas/get-apipersonas/)
This API returns a list of available personas, each with a unique id field. Use the `id` of the selected persona as the `creator` parameter when generating your video.
***
## 📝 Step 2: Submit a Video Generation Request
Use this endpoint to generate a video of a person speaking from text.
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/api/lipsyncs/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"text": "hello world",
"creator": "18fccce8-86e7-5f31-abc8-18915cb872be",
"aspect_ratio": "9:16",
"model_version": "aurora_v1_fast"
}'
```
```json Example Response [expandable] theme={null}
{
"id": "4c0b2b3c-dcbb-4c12-8e98-a1e0643d5394",
"name": null,
"text": "hello world",
"creator": "18fccce8-86e7-5f31-abc8-18915cb872be",
"output": null,
"video_thumbnail": null,
"aspect_ratio": "9x16",
"green_screen": false,
"created_at": "2025-05-21T11:03:56.058716-07:00",
"updated_at": "2025-05-21T11:03:56.058742-07:00",
"credits_used": 0,
"progress": 0,
"failed_reason": null,
"media_job": null,
"status": "pending",
"is_hidden": false,
"audio_url": null,
"webhook_url": null,
"accent": null,
"preview": null,
"preview_audio": null,
"no_caption": true,
"no_music": true,
"caption_style": "normal-black",
"caption_offset_x": "0.00",
"caption_offset_y": "-0.40",
"background_asset_image_url": "https://app.creatify.ai/bg.jpg"
}
```
> ⚠️ Save the `id` — you'll need it to check the status.
***
## ⏳ Step 3: Check Video Generation Status
After submitting a video generation request, use the returned task ID to monitor progress and retrieve the completed video when it's ready.
```bash Example Request theme={null}
curl --request GET \
--url https://api.creatify.ai/api/lipsyncs/4c0b2b3c-dcbb-4c12-8e98-a1e0643d5394 \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key'
```
```json Example Response [expandable] theme={null}
{
"id": "4c0b2b3c-dcbb-4c12-8e98-a1e0643d5394",
"name": null,
"text": "hello world",
"creator": "18fccce8-86e7-5f31-abc8-18915cb872be",
"output": "https://s3.us-west-2.amazonaws.com/remotionlambda-uswest2-30tewi8y5c/renders/t1evol64tg/output.mp4",
"video_thumbnail": "https://dpbavq092lwjh.cloudfront.net/amzptv/d58c6c38-4910-420d-b6a0-78402e2ebcaf-1747850651/thumbnail.jpg",
"aspect_ratio": "9x16",
"green_screen": false,
"created_at": "2025-05-21T11:03:56.058716-07:00",
"updated_at": "2025-05-21T11:04:11.533648-07:00",
"credits_used": 5,
"progress": 1,
"failed_reason": null,
"media_job": "d58c6c38-4910-420d-b6a0-78402e2ebcaf",
"status": "done",
"is_hidden": false,
"audio_url": null,
"webhook_url": null,
"accent": null,
"preview": "https://app.creatify.ai/preview?layout=videos/20250521/3b7957ea-0efd-42df-90de-bd3e1ea3b451.json",
"preview_audio": "https://d35ghwdno3nak3.cloudfront.net/user/18165/2025-05-21/af7e-req-xUnTEy7jObxDLiRum8wh-0-s.mp3",
"no_caption": true,
"no_music": true,
"caption_style": "normal-black",
"caption_offset_x": "0.00",
"caption_offset_y": "-0.40",
"background_asset_image_url": "https://app.creatify.ai/bg.jpg"
}
```
> ⏳ Once the `status` is `done`, download the video from the `output` field.
***
## 🎯 Summary
| Step | Endpoint |
| - | - |
| List Personas | `GET /api/personas/` |
| Create Task | `POST /api/lipsyncs/` |
| Check Status | `GET /api/lipsyncs/{id}/` |
| API Reference | [AI Avatar API Reference](/api-reference/lipsyncs/post-apilipsyncs) |
***
## 🤝 Need Help?
If you run into any issues, check out our [API Reference](/api-reference) or contact [api@creatify.ai](mailto:api@creatify.ai).
# Overview (v2)
Source: https://docs.creatify.ai/api-documentation/ai-avatar/lipsync-v2
Generate vivid, personalized videos featuring multiple scenes — each with its own avatar, voice, background, and styling — using a structured list of inputs.
## 🚀 Introduction
We recommend trying our **AI Avatar V2 API** — a powerful and flexible way to generate rich, multi-scene videos tailored to your brand, message, or audience.
With this API, you can define a list of video segments and customize each with:
* 🎭 Character (avatar) selection
* 🗣️ Text-to-voiceover (with your chosen voice and accent)
* 🖼️ Background image or video
* 🎯 Call-to-action (CTA) options
* ✍️ Caption position, style, and formatting
This gives you full control to create immersive, story-driven content that matches your creative needs.
> 🚀 Follow our **Quickstart Guide** below to get up and running in minutes.
***
## ⚙️ Quickstart Guide
### ✅ Prerequisites
Before you begin, ensure you have:
* A [Creatify](https://app.creatify.ai) account with **API access**
* Your **API credentials** (see [Quickstart](/quickstart))
***
## 👤 Step 1: Choose Avatars and Voices
You’ll need an `avatar_id` and a `voice_id` for each speaking segment.
* Use the [Get Avatars API](/api-reference/personas/get-apipersonas) to retrieve `avatar_id`
* Use the [Get Voices API](/api-reference/voices/get-apivoices) to retrieve `voice_id`
Each avatar + voice combination represents one unique speaker.
### 👨🎤 Personas
[Browse Personas Here](/api-reference/personas/get-apipersonas/)
We offer 1500+ lifelike personas to bring your videos to life:
***
### 🎙️ Voices
[Browse Voices Here](/api-reference/voices/get-apivoices)
Creatify offers a wide range of AI voices that bring your avatars to life with natural, expressive speech. Each voice supports multiple accents so you can tailor the sound to your audience or region.
To select a voice, use the `voice_id` from the accent you want in your request. This provides fine-grained control over tone, language, and personality.
* Use `voice_id` to override the default voice associated with an avatar.
* If `voice_id` is not provided, the system will use the default voice linked to the selected avatar.
> 💡 Each voice includes multiple accents — select the one that fits your content best using the provided `id`.
### Example Response from `GET /api/voices/`
```json theme={null}
[
{
"name": "Fatima",
"gender": "female",
"accents": [
{
"id": "3480f048-8883-4bdc-b57f-4e7078e94b18",
"accent_name": "American English accent",
"preview_url": "https://d35ghwdno3nak3.cloudfront.net/accent_preview_new_/el-689d6bc2-c93e-4a50-a36b-3b171c729843_s.mp3"
}
]
}
]
```
Use the `id` from the `accents` list as your `voice_id` in the video generation request.
***
## 📅 Step 2: Submit a Video Generation Request
Use the [AI Avatar v2 Endpoint](/api-reference/lipsyncs_v2/post-apilipsyncs) to submit a video generation request.
```bash Example Request [expandable] theme={null}
curl --request POST \
--url https://api.creatify.ai/api/lipsyncs_v2/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"video_inputs": [
{
"character": {
"type": "avatar",
"avatar_id": "7350375b-9a98-51b8-934d-14d46a645dc2",
"avatar_style": "normal",
"offset": {
"x": -0.23,
"y": 0.35
}
},
"voice": {
"type": "text",
"input_text": "Absolutely mind-blowing! The Apple Vision Pro turns any room into a cinematic experience with its Spatial Audio and Immersive Video.",
"voice_id": "6f8ca7a8-87b9-4f5d-905d-cc4598e79717"
},
"background": {
"type": "image",
"url": "https://video.creatify.ai/bg.jpg"
},
"caption_setting": {
"style": "normal-black",
"offset": {
"x": 0,
"y": 0.45
}
}
},
{
"character": {
"type": "avatar",
"avatar_id": "18fccce8-86e7-5f31-abc8-18915cb872be",
"avatar_style": "normal",
"offset": {
"x": -0.23,
"y": 0.35
}
},
"voice": {
"type": "text",
"input_text": "Truly, a next-level entertainment device. Get yours now and experience the magic firsthand!",
"voice_id": "360ab221-d951-413b-ba1a-7037dc67da16"
},
"background": {
"type": "image",
"url": "https://video.creatify.ai/bg.jpg"
},
"caption_setting": {
"style": "normal-black",
"offset": {
"x": 0,
"y": 0.45
}
}
}
],
"aspect_ratio": "9x16",
"model_version": "aurora_v1_fast"
}'
```
```json Example Response [expandable] theme={null}
{
"id": "0a15fff5-8906-4de0-bbf2-511bd3b5db23",
"name": null,
"output": null,
"video_thumbnail": null,
"created_at": "2025-05-21T11:38:05.558338-07:00",
"updated_at": "2025-05-21T11:38:05.700088-07:00",
"credits_used": 0,
"progress": 0,
"failed_reason": null,
"media_job": "9f5e31fe-bf60-4e82-b6aa-36f8683a2157",
"status": "pending",
"webhook_url": null,
"preview": null,
"aspect_ratio": "9x16",
"video_inputs": [
{
"character": {
"type": "avatar",
"avatar_id": "7350375b-9a98-51b8-934d-14d46a645dc2",
"scale": 1.0,
"avatar_style": "normal",
"offset": {
"x": -0.23,
"y": 0.35
},
"hidden": false
},
"voice": {
"type": "text",
"input_text": "Absolutely mind-blowing! The Apple Vision Pro turns any room into a cinematic experience with its Spatial Audio and Immersive Video.",
"voice_id": "6f8ca7a8-87b9-4f5d-905d-cc4598e79717",
"volume": 0.8
},
"caption_setting": {
"style": "normal-black",
"offset": {
"x": 0.0,
"y": 0.45
},
"font_family": "Montserrat",
"font_size": 70,
"font_style": null,
"background_color": null,
"text_color": null,
"highlight_text_color": null,
"max_width": null,
"line_height": null,
"text_shadow": null,
"hidden": false
},
"background": {
"type": "image",
"url": "https://d35ghwdno3nak3.cloudfront.net/images/71648ae7.jpg",
"fit": "crop",
"effect": null
},
"transition_effect": {
"transition_in": null,
"transition_out": null
},
"visual_style": null
},
{
"character": {
"type": "avatar",
"avatar_id": "18fccce8-86e7-5f31-abc8-18915cb872be",
"scale": 1.0,
"avatar_style": "normal",
"offset": {
"x": -0.23,
"y": 0.35
},
"hidden": false
},
"voice": {
"type": "text",
"input_text": "Truly, a next-level entertainment device. Get yours now and experience the magic firsthand!",
"voice_id": "360ab221-d951-413b-ba1a-7037dc67da16",
"volume": 0.8
},
"caption_setting": {
"style": "normal-black",
"offset": {
"x": 0.0,
"y": 0.45
},
"font_family": "Montserrat",
"font_size": 70,
"font_style": null,
"background_color": null,
"text_color": null,
"highlight_text_color": null,
"max_width": null,
"line_height": null,
"text_shadow": null,
"hidden": false
},
"background": {
"type": "image",
"url": "https://d35ghwdno3nak3.cloudfront.net/images/71648ae7.jpg",
"fit": "crop",
"effect": null
},
"transition_effect": {
"transition_in": null,
"transition_out": null
},
"visual_style": null
}
]
}
```
> ⚠️ Save the `id` — you'll use it to check progress.
***
## ⏳ Step 3: Check Generation Status
After submitting a video generation request, use the returned task ID to monitor progress and retrieve the completed video when it's ready.
```bash Example Request theme={null}
curl --request GET \
--url https://api.creatify.ai/api/lipsyncs_v2/0a15fff5-8906-4de0-bbf2-511bd3b5db23/ \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key'
```
```json Example Response [expandable] theme={null}
{
"id": "0a15fff5-8906-4de0-bbf2-511bd3b5db23",
"name": null,
"output": "https://s3.us-west-2.amazonaws.com/remotionlambda-uswest2-30tewi8y5c/renders/qgyaj0flwt/output.mp4",
"video_thumbnail": "https://dpbavq092lwjh.cloudfront.net/amzptv/9f5e31fe-bf60-4e82-b6aa-36f8683a2157-1747852767/thumbnail.jpg",
"created_at": "2025-05-21T11:38:05.558338-07:00",
"updated_at": "2025-05-21T11:39:28.059339-07:00",
"credits_used": 5,
"progress": 1,
"failed_reason": null,
"media_job": "9f5e31fe-bf60-4e82-b6aa-36f8683a2157",
"status": "done",
"webhook_url": null,
"preview": "https://app.creatify.ai/preview?layout=videos/20250521/c45abe03-5aec-47c6-88da-303619e86df8.json",
"aspect_ratio": "9x16",
"video_inputs": [
{
"character": {
"type": "avatar",
"avatar_id": "7350375b-9a98-51b8-934d-14d46a645dc2",
"scale": 1.0,
"avatar_style": "normal",
"offset": {
"x": -0.23,
"y": 0.35
},
"hidden": false
},
"voice": {
"type": "text",
"input_text": "Absolutely mind-blowing! The Apple Vision Pro turns any room into a cinematic experience with its Spatial Audio and Immersive Video.",
"voice_id": "6f8ca7a8-87b9-4f5d-905d-cc4598e79717",
"volume": 0.8
},
"caption_setting": {
"style": "normal-black",
"offset": {
"x": 0.0,
"y": 0.45
},
"font_family": "Montserrat",
"font_size": 70,
"font_style": null,
"background_color": null,
"text_color": null,
"highlight_text_color": null,
"max_width": null,
"line_height": null,
"text_shadow": null,
"hidden": false
},
"background": {
"type": "image",
"url": "https://d35ghwdno3nak3.cloudfront.net/images/71648ae7.jpg",
"fit": "crop",
"effect": null
},
"transition_effect": {
"transition_in": null,
"transition_out": null
},
"visual_style": null
},
{
"character": {
"type": "avatar",
"avatar_id": "18fccce8-86e7-5f31-abc8-18915cb872be",
"scale": 1.0,
"avatar_style": "normal",
"offset": {
"x": -0.23,
"y": 0.35
},
"hidden": false
},
"voice": {
"type": "text",
"input_text": "Truly, a next-level entertainment device. Get yours now and experience the magic firsthand!",
"voice_id": "360ab221-d951-413b-ba1a-7037dc67da16",
"volume": 0.8
},
"caption_setting": {
"style": "normal-black",
"offset": {
"x": 0.0,
"y": 0.45
},
"font_family": "Montserrat",
"font_size": 70,
"font_style": null,
"background_color": null,
"text_color": null,
"highlight_text_color": null,
"max_width": null,
"line_height": null,
"text_shadow": null,
"hidden": false
},
"background": {
"type": "image",
"url": "https://d35ghwdno3nak3.cloudfront.net/images/71648ae7.jpg",
"fit": "crop",
"effect": null
},
"transition_effect": {
"transition_in": null,
"transition_out": null
},
"visual_style": null
}
]
}
```
> ⏳ Once the `status` is `done`, download the video from the `output` field.
***
## 🎯 Summary
| Step | Endpoint |
| - | - |
| Get Avatars | `GET /api/personas/` |
| Get Voices | `GET /api/voices/` |
| Create Task | `POST /api/lipsyncs/multi_avatar/` |
| Check Status | `GET /api/lipsyncs/{id}/` |
| API Reference | [Multi-Avatar Reference](/api-reference/lipsyncs/post-apilipsyncs-multi-avatar) |
***
## 🤝 Need Help?
If you run into any issues, check out our [API Reference](/api-reference) or contact [api@creatify.ai](mailto:api@creatify.ai).
# Overview
Source: https://docs.creatify.ai/api-documentation/ai-editing/ai-editing
Use AI to automatically enhance and stylize your videos with professional editing templates.
**Deprecated:** AI Editing API is deprecated and will be removed in a future release. Please use [URL to Video](/api-documentation/url-to-video/link-to-video) or [Custom Templates](/api-reference/custom-templates) instead.
## 🚀 Introduction
The **AI Editing API** allows you to upload a raw video and apply cinematic editing styles automatically. It's perfect for turning user-generated or brand footage into share-worthy content with minimal effort.
Whether you're creating marketing reels, tutorials, or social posts — our API applies consistent, high-quality editing based on your selected `editing_style`.
***
## ⚙️ Quickstart Guide
### ✅ Prerequisites
Before you begin, ensure you have:
* A [Creatify](https://app.creatify.ai) account with **API access**
* Your **API credentials** (see [Quickstart](/quickstart))
***
## 📝 Step 1: Submit a Video Editing Request
Use this endpoint to initiate AI-based editing on your video.
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/api/ai_editing/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"video_url": "https://d35ghwdno3nak3.cloudfront.net/media_file/2/20240805/038a9606-7b03-4fdd-a44d-122195a97afb_jun-16x9.mp4",
"editing_style": "film"
}'
```
```json Example Response theme={null}
{
"id": "7b8212dc-13ac-4719-948b-9ca1bc47f0e3",
"media_job": null,
"status": "pending",
"video_output": null,
"preview": null,
"credits_used": 0,
"is_hidden": false,
"progress": 0,
"created_at": "2025-05-21T22:52:36.132791-07:00",
"updated_at": "2025-05-21T22:52:36.132813-07:00",
"permission_type": "workspace",
"name": "Viral cut",
"script": "Imagine a day where every task feels effortless. Your home adjusts to your needs before you even ask. That's the promise of our smart home devices. Upgrade your living with the latest in technology, where convenience meets innovation. Discover gadgets that don't just simplify, but transform your daily routines. From sunrise to sunset, let your home do the work. It's not just smart, it's future ready. Explore our collection today and step into the home of tomorrow.",
"aspect_ratio": "16x9",
"is_talking_video": true,
"is_one_person_in_video": true,
"editing_style": "film",
"duration": 25.92,
"audio_url": "https://d35ghwdno3nak3.cloudfront.net/ai_viral_cut/audio_files/a62c947c_output.wav",
"video_url": "https://d35ghwdno3nak3.cloudfront.net/ai_viral_cut/temp_videos/37a4d253.mp4",
"size": 0.0,
"created_from_api": true,
"caption_setting": null,
"background_music_url": null,
"background_music_volume": null,
"voiceover_volume": null,
"webhook_url": null,
"user": 18165,
"workspace": "a1240918-1f02-47f1-bebe-832a555507f3"
}
```
> 🎬 The response includes a unique video ID. Save it to check status.
***
## ⏳ Step 2: Check Editing Status
Once submitted, your video will be processed asynchronously. Use the task ID to track progress and retrieve the final output.
```bash Example Request theme={null}
curl --request GET \
--url https://api.creatify.ai/api/ai_editing/7b8212dc-13ac-4719-948b-9ca1bc47f0e3/ \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key'
```
```json Example Response theme={null}
{
"id": "7b8212dc-13ac-4719-948b-9ca1bc47f0e3",
"media_job": "2caa4cd5-d071-4ee7-89c7-84bd64a32f9a",
"status": "done",
"video_output": "https://s3.us-west-2.amazonaws.com/remotionlambda-uswest2-30tewi8y5c/renders/g68go892x3/output.mp4",
"preview": "https://app.creatify.ai/preview?layout=videos/20250521/34a6ddd3-7651-4982-ba97-2fa15a8cc466.json",
"credits_used": 5,
"is_hidden": false,
"progress": 1,
"created_at": "2025-05-21T22:52:36.132791-07:00",
"updated_at": "2025-05-21T22:52:36.269271-07:00",
"permission_type": "workspace",
"name": "Viral cut",
"script": "Imagine a day where every task feels effortless. Your home adjusts to your needs before you even ask. That's the promise of our smart home devices. Upgrade your living with the latest in technology, where convenience meets innovation. Discover gadgets that don't just simplify, but transform your daily routines. From sunrise to sunset, let your home do the work. It's not just smart, it's future ready. Explore our collection today and step into the home of tomorrow.",
"aspect_ratio": "16x9",
"is_talking_video": true,
"is_one_person_in_video": true,
"editing_style": "film",
"duration": 25.92,
"audio_url": "https://d35ghwdno3nak3.cloudfront.net/ai_viral_cut/audio_files/a62c947c_output.wav",
"video_url": "https://d35ghwdno3nak3.cloudfront.net/ai_viral_cut/temp_videos/37a4d253.mp4",
"size": 0.0,
"created_from_api": true,
"caption_setting": null,
"background_music_url": null,
"background_music_volume": null,
"voiceover_volume": null,
"webhook_url": null,
"user": 18165,
"workspace": "a1240918-1f02-47f1-bebe-832a555507f3"
}
```
> ⏳ Once `status` is `done`, retrieve your final edited video from the `video_output` field.
***
## 🎯 Summary
| Step | Endpoint |
| - | - |
| Create Task | `POST /api/ai_editing/` |
| Check Status | `GET /api/ai_editing/{id}/` |
| API Reference | [AI Editing Reference](/api-reference/ai-editing/post-ai-editing) |
***
## 🤝 Need Help?
If you run into any issues, check out our [API Reference](/api-reference) or contact [api@creatify.ai](mailto:api@creatify.ai).
# Overview
Source: https://docs.creatify.ai/api-documentation/ai-generation/ai-generation
Unified endpoints for AI assets generation (image, video) with discoverable input schemas.
## 🚀 Introduction
The **Asset Generator API** provides a single interface to run **image / video** generations.\
First list available models and their **input parameter schemas**, then create a generation and **poll or receive a webhook** when it’s ready.
Check live processing times for each model on the [Model Status page](https://app.creatify.ai/ai-models/status).
***
## ✅ Prerequisites
* A Creatify account with **API access**
* Your **API credentials** (see [Quickstart](/quickstart))
***
## 0) Supported Models & Pricing
[Supported Models and Pricing](/api-reference/ai-generation/post-ai-generation#supported-models)
## 1) Discover Models & Input Schemas
Use this endpoint to list available models and the **JSON schema** for their `input_params`.\
Filter by `model_name` using a comma-separated list.
**Endpoint:** [GET /api/asset\_generator/schemas/](/api-reference/ai-generation/get-ai-generation-schema)
**Query params:** `model_name` (optional, comma-separated)
```bash Example Request theme={null}
curl --request GET \
--url "https://api.creatify.ai/api/asset_generator/schemas/" \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key'
```
```json Example Response [expandable] theme={null}
[
{
"model_name": "kling-video/v1.6/pro/image-to-video",
"input_params_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"prompt",
"image_url"
],
"properties": {
"prompt": {
"type": "string",
"title": "Prompt",
"maxLength": 2000,
"minLength": 1
},
"duration": {
"enum": [
"5",
"10"
],
"type": "string",
"title": "Duration",
"default": "5",
"description": "The duration of the generated video in seconds"
},
"cfg_scale": {
"type": "number",
"title": "Cfg Scale",
"default": 0.5,
"maximum": 1,
"minimum": 0,
"multipleOf": 0.1,
"description": "The CFG (Classifier Free Guidance) scale is a measure of how close you want the model to stick to your prompt when looking for a related image to show you.",
"x-advance-settings": true
},
"image_url": {
"type": "string",
"title": "Image Url",
"max_width": 5000,
"min_width": 300,
"x-ui-name": "start_image",
"max_height": 5000,
"min_height": 300,
"max_file_size": 10485760
},
"aspect_ratio": {
"enum": [
"16:9",
"9:16",
"1:1"
],
"type": "string",
"title": "Aspect Ratio",
"default": "16:9",
"description": "The aspect ratio of the generated video frame"
},
"tail_image_url": {
"type": "string",
"title": "Tail Image Url",
"max_width": 5000,
"min_width": 300,
"x-ui-name": "end_image",
"max_height": 5000,
"min_height": 300,
"description": "URL of the image to be used for the end of the video",
"max_file_size": 10485760
},
"negative_prompt": {
"type": "string",
"title": "Negative Prompt",
"default": "blur, distort, and low quality",
"maxLength": 2500,
"x-advance-settings": true
}
}
},
"generation_type": "image_to_video"
},
{
"model_name": "kling-video/v1.6/pro/text-to-video",
"input_params_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"prompt"
],
"properties": {
"prompt": {
"type": "string",
"title": "Prompt",
"maxLength": 2000,
"minLength": 1
},
"duration": {
"enum": [
"5",
"10"
],
"type": "string",
"title": "Duration",
"default": "5",
"description": "The duration of the generated video in seconds"
},
"cfg_scale": {
"type": "number",
"title": "Cfg Scale",
"default": 0.5,
"maximum": 1,
"minimum": 0,
"multipleOf": 0.1,
"description": "The CFG (Classifier Free Guidance) scale is a measure of how close you want the model to stick to your prompt when looking for a related image to show you.",
"x-advance-settings": true
},
"aspect_ratio": {
"enum": [
"16:9",
"9:16",
"1:1"
],
"type": "string",
"title": "Aspect Ratio",
"default": "16:9",
"description": "The aspect ratio of the generated video frame"
},
"negative_prompt": {
"type": "string",
"title": "Negative Prompt",
"default": "blur, distort, and low quality",
"maxLength": 2500,
"x-advance-settings": true
}
}
},
"generation_type": "text_to_video"
}
]
```
> **Notes**
>
> * `input_params_schema` is a JSON Schema containing \$schema, required, and properties; fields listed in required must be present, and all other entries in properties are optional when creating Asset Generator task.
***
## 2) Create a Generation Task
Send `model_name`, `input_params` (must satisfy the schema from step 1), and optional `webhook_url`.
**Endpoint:** [POST /api/asset\_generator/](/api-reference/ai-generation/post-ai-generation)
**Body:**
* `model_name` (string, required)
* `input_params` (json, required; must match schema)
* `webhook_url` (string URL, optional)
```bash Example Request (kling image-to-video) theme={null}
curl --request POST \
--url https://api.creatify.ai/api/asset_generator/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"model_name": "kling-video/v1.6/pro/image-to-video",
"webhook_url": "https://webhook.site/8de4fa26-a1aa-4e83-8795-ede39bb99d78",
"input_params": {
"prompt": "A man working in the snow moutains with small image logo.",
"duration": "5",
"cfg_scale": 0.5,
"image_url": "https://d35ghwdno3nak3.cloudfront.net/media_file/18165/d91443bdd92c82ed5d5992e38f3ff9d3.jpg",
"aspect_ratio": "16:9",
"negative_prompt": "blur, distort, and low quality"
}
}'
```
```json Example Response theme={null}
{
"id": "1ea584a7-4930-4892-90a0-d7c74c6623dd",
"model_name": "kling-video/v1.6/pro/image-to-video",
"gen_type": "video",
"status": "initializing",
"failed_reason": "",
"assets": [],
"aspect_ratio": "16:9",
"output_nums": 1,
"duration": 5,
"resolution": null,
"input_params": {
"prompt": "A man working in the snow moutains with small image logo.",
"duration": "5",
"cfg_scale": 0.5,
"image_url": "https://d35ghwdno3nak3.cloudfront.net/media_file/18165/d91443bdd92c82ed5d5992e38f3ff9d3.jpg",
"aspect_ratio": "16:9",
"negative_prompt": "blur, distort, and low quality"
},
"webhook_url": "https://webhook.site/8de4fa26-a1aa-4e83-8795-ede39bb99d78",
"created_at": "2025-11-04T20:20:36.051480-08:00",
"updated_at": "2025-11-04T20:20:36.051513-08:00"
}
```
***
## 3) Check Status (Poll) or Receive Webhook
You can **poll** the job until it’s `done`, or provide a **webhook** to be notified automatically. You can get the generated result from the `assets` field.
**Endpoint:** [`GET /api/asset_generator/{id}/`](/api-reference/ai-generation/get-ai-generation-)
### Poll
```bash Example Request theme={null}
curl --request GET \
--url https://api.creatify.ai/api/asset_generator/1ea584a7-4930-4892-90a0-d7c74c6623dd/ \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key'
```
```json Example Response theme={null}
{
"id": "1ea584a7-4930-4892-90a0-d7c74c6623dd",
"model_name": "kling-video/v1.6/pro/image-to-video",
"gen_type": "video",
"status": "done",
"failed_reason": "",
"assets": [
{
"id": "4238460a-bee5-4747-8be0-f267783f21fd",
"type": "video",
"url": "https://d35ghwdno3nak3.cloudfront.net/user/1/20251104/eb7e2f3e.mp4",
"thumbnail_url": "https://d35ghwdno3nak3.cloudfront.net/creative_assets/4238460a-bee5-4747-8be0-f267783f21fd/thumbnail.jpg",
"name": "Video-714bec31"
}
],
"aspect_ratio": "16:9",
"output_nums": 1,
"duration": 5,
"resolution": null,
"input_params": {
"prompt": "A man working in the snow moutains with small image logo.",
"duration": "5",
"cfg_scale": 0.5,
"image_url": "https://d35ghwdno3nak3.cloudfront.net/media_file/18165/d91443bdd92c82ed5d5992e38f3ff9d3.jpg",
"aspect_ratio": "16:9",
"negative_prompt": "blur, distort, and low quality"
},
"webhook_url": "https://webhook.site/8de4fa26-a1aa-4e83-8795-ede39bb99d78",
"created_at": "2025-11-04T20:20:36.051480-08:00",
"updated_at": "2025-11-04T20:20:36.051513-08:00"
}
```
### Webhook (Optional)
If you supplied a `webhook_url` when creating the job, we’ll POST a payload when it finishes. You can get the generated result from the `assets` field.
```json theme={null}
{
"id": "1ea584a7-4930-4892-90a0-d7c74c6623dd",
"status": "done",
"failed_reason": "",
"assets": [
{
"id": "4238460a-bee5-4747-8be0-f267783f21fd",
"type": "video",
"url": "https://d35ghwdno3nak3.cloudfront.net/user/1/20251104/eb7e2f3e.mp4",
"thumbnail_url": "https://d35ghwdno3nak3.cloudfront.net/creative_assets/4238460a-bee5-4747-8be0-f267783f21fd/thumbnail.jpg",
"name": "Video-714bec31"
}
]
}
```
> You can verify the job any time with a GET to `/api/asset_generator/{id}/`.
***
## 📚 Endpoint Reference
| Action | Endpoint |
| - | - |
| List models & input schemas | `GET /api/asset_generator/schemas/` |
| Create a generation task | `POST /api/asset_generator/` |
| Check task status / get result | `GET /api/asset_generator/{id}/` |
***
## 🎯 Summary
| Step | What you do |
| - | - |
| 1 | List **models** and get their **input schema** |
| 2 | Create a **generation** with `model_name` + `input_params` (+ optional `webhook_url`) |
| 3 | **Poll** `/api/asset_generator/{id}/` or receive a **webhook** with the final result |
# Overview
Source: https://docs.creatify.ai/api-documentation/ai-shorts/ai-shorts
API that converts text into high-impact, viral short-form videos — optimized for performance and shareability.
**Deprecated:** AI Shorts API is deprecated and will be removed in a future release. Please use [URL to Video](/api-documentation/url-to-video/link-to-video) or [AI Avatar](/api-documentation/ai-avatar/lipsync-v2) instead.
## 🚀 Introduction
The **AI Shorts API** allows you to turn any script into an engaging, short-form video designed for virality. Whether you're promoting a product, delivering a message, or testing content hooks, this tool offers fast, scalable video generation with cinematic quality.
***
## ⚙️ Quickstart Guide
### ✅ Prerequisites
Before you begin, ensure you have:
* A [Creatify](https://app.creatify.ai) account with **API access**
* Your **API credentials** (see [Quickstart](/quickstart))
***
## 📝 Step 1: Submit a Video Generation Request
Use this endpoint to generate a short-form video from a script.
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/api/ai_shorts/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"script": "Meet the Tesla Model X, where cutting-edge technology meets unparalleled performance. Designed with luxury and comfort in mind, the Model X offers a driving experience like no other.",
"aspect_ratio": "9x16",
"style": "4K realistic"
}'
```
```json Example Response theme={null}
{
"id": "c7f61ee0-97d5-49a4-bb85-e8c70d611030",
"media_job": null,
"status": "pending",
"video_output": null,
"preview": null,
"credits_used": 0,
"is_hidden": false,
"progress": 0,
"created_at": "2025-05-21T22:45:03.392489-07:00",
"updated_at": "2025-05-21T22:45:03.392515-07:00",
"permission_type": "workspace",
"name": "Artsy video",
"script": "Meet the Tesla Model X, where cutting-edge technology meets unparalleled performance. Designed with luxury and comfort in mind, the Model X offers a driving experience like no other.",
"aspect_ratio": "9x16",
"style": "4K realistic",
"created_from_api": true,
"caption_setting": null,
"background_music_url": null,
"background_music_volume": null,
"voiceover_volume": null,
"webhook_url": null,
"user": 18165,
"workspace": "a1240918-1f02-47f1-bebe-832a555507f3",
"accent": null
}
```
> 🎬 The response includes a unique video ID. Save it to check status.
***
## ⏳ Step 2: Check Video Generation Status
After submitting the request, monitor the generation progress using the returned ID.
```bash Example Request theme={null}
curl --request GET \
--url https://api.creatify.ai/api/ai_shorts/c7f61ee0-97d5-49a4-bb85-e8c70d611030/ \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key'
```
```json Example Response theme={null}
{
"id": "c7f61ee0-97d5-49a4-bb85-e8c70d611030",
"media_job": "2e243d9c-6570-4845-b749-d0aa25fd3be5",
"status": "done",
"video_output": "https://s3.us-west-2.amazonaws.com/remotionlambda-uswest2-30tewi8y5c/renders/rb8dnrq8nj/output.mp4",
"preview": "https://app.creatify.ai/preview?layout=videos/20250521/d336d0c6-3415-406e-94e9-324c46093ea0.json",
"credits_used": 5,
"is_hidden": false,
"progress": 1,
"created_at": "2025-05-21T22:45:03.392489-07:00",
"updated_at": "2025-05-21T22:45:03.545370-07:00",
"permission_type": "workspace",
"name": "Artsy video",
"script": "Meet the Tesla Model X, where cutting-edge technology meets unparalleled performance. Designed with luxury and comfort in mind, the Model X offers a driving experience like no other.",
"aspect_ratio": "9x16",
"style": "4K realistic",
"created_from_api": true,
"caption_setting": null,
"background_music_url": null,
"background_music_volume": null,
"voiceover_volume": null,
"webhook_url": null,
"user": 18165,
"workspace": "a1240918-1f02-47f1-bebe-832a555507f3",
"accent": null
}
```
> ⏳ When `status` is `done`, retrieve your video from the `video_output` field.
***
## 🎯 Summary
| Step | Endpoint |
| - | - |
| Create Task | `POST /api/ai_shorts/` |
| Check Status | `GET /api/ai_shorts/{id}/` |
| API Reference | [AI Shorts Reference](/api-reference/ai-shorts/post-ai-shorts) |
***
## 🤝 Need Help?
If you run into any issues, check out our [API Reference](/api-reference) or contact [api@creatify.ai](mailto:api@creatify.ai).
# Overview
Source: https://docs.creatify.ai/api-documentation/aurora/aurora
API that transforms a single image into a professional, studio-grade avatar video — lifelike, expressive, and ready for production.
## 🚀 Introduction
The **Aurora API** enables you to create **studio-quality, avatar-based videos** from just a **single photo** (real or AI-generated) and an **audio clip** (speech or song).\
Powered by a state-of-the-art image-to-avatar model, Aurora generates lifelike videos where the avatar **blinks, speaks, gestures, and emotes** as if it were real.
Whether you’re building user-generated content (UGC) ads, animated characters, or singing avatars, Aurora delivers unparalleled realism with professional-grade output.
***
## ⚙️ Quickstart Guide
### ✅ Prerequisites
Before you begin, ensure you have:
* A [Creatify](https://app.creatify.ai) account with **API access**
* Your **API credentials** (see [Quickstart](/quickstart))
***
## 📝 Step 1: Submit an Avatar Video Generation Request
Use this endpoint to generate a studio-grade avatar video from an **image** and an **audio** file.
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/api/aurora/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"image": "https://d35ghwdno3nak3.cloudfront.net/tutorial/avatar-aurora/recommendation-4.jpg",
"audio": "https://d35ghwdno3nak3.cloudfront.net/user/18165/2025-09-15/2d20-req-3VV9TLO6qlTOflMMQBRe-0-s.mp3",
"model_version": "aurora_v1_fast",
"webhook_url": "https://webhook.example"
}'
```
```json Example Response theme={null}
{
"id": "44e480c0-642e-4057-9a50-de00a958e81c",
"created_at": "2025-09-18T10:27:06.296630-07:00",
"updated_at": "2025-09-18T10:27:06.296681-07:00",
"name": null,
"audio": "https://d35ghwdno3nak3.cloudfront.net/user/18165/2025-09-15/2d20-req-3VV9TLO6qlTOflMMQBRe-0-s.mp3",
"image": "https://d35ghwdno3nak3.cloudfront.net/tutorial/avatar-aurora/recommendation-4.jpg",
"video_output": "null",
"credits_used": 0,
"duration": null,
"progress": 0,
"failed_reason": null,
"media_job": null,
"status": "pending",
"is_hidden": false,
"webhook_url": "https://webhook.example",
"preview": null,
"editor_url": null
}
```
> 🎬 The response includes a unique video ID. Save it to check status.
***
## ⏳ Step 2: Check Avatar Video Generation Status
You can monitor the video generation progress by **polling the status endpoint** using the returned ID until the status changes to `done`.
```bash Example Request theme={null}
curl --request GET \
--url https://api.creatify.ai/api/aurora/44e480c0-642e-4057-9a50-de00a958e81c/ \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key'
```
```json Example Response theme={null}
{
"id": "44e480c0-642e-4057-9a50-de00a958e81c",
"created_at": "2025-09-18T10:27:06.296630-07:00",
"updated_at": "2025-09-18T10:27:06.296681-07:00",
"name": null,
"audio": "https://d35ghwdno3nak3.cloudfront.net/user/18165/2025-09-15/2d20-req-3VV9TLO6qlTOflMMQBRe-0-s.mp3",
"image": "https://d35ghwdno3nak3.cloudfront.net/tutorial/avatar-aurora/recommendation-4.jpg",
"video_output": "https://s3.us-west-2.amazonaws.com/remotionlambda-uswest2-30tewi8y5c/renders/qpyttobqzy/output.mp4",
"credits_used": 20,
"duration": 10,
"progress": 1,
"failed_reason": null,
"media_job": null,
"status": "done",
"is_hidden": false,
"webhook_url": "https://webhook.example",
"preview": null,
"editor_url": null
}
```
> ✅ When `status` is `done`, retrieve your video from the `video_output` field.
### 🔔 Webhook Option
Instead of polling, you can provide a `webhook_url` in the request to receive the result automatically when the video is ready.\
When processing completes, Aurora will send a POST request to your webhook with a payload like this:
```json theme={null}
{
"id": "76cdd8b1-e337-4fe3-925f-513f86047104",
"status": "done",
"failed_reason": "",
"video_output": "https://s3.us-west-2.amazonaws.com/remotionlambda-uswest2-30tewi8y5c/renders/qpyttobqzy/output.mp4"
}
```
***
## 🎯 Summary
| Step | Endpoint |
| - | - |
| Create Task | `POST /api/aurora/` |
| Check Status | `GET /api/aurora/{id}/` |
| API Reference | [Aurora Reference](/api-reference/aurora/post-aurora) |
***
## 💳 Pricing
Creating a video through this endpoint costs **1 credit per second** with `aurora_v1`, or **0.5 credits per second** with `aurora_v1_fast`. Billing is per-second; partial seconds round up to the next whole second.
***
## 🤝 Need Help?
If you run into any issues, check out our [API Reference](/api-reference) or contact [api@creatify.ai](mailto:api@creatify.ai).
# Overview
Source: https://docs.creatify.ai/api-documentation/boreal/boreal
Creatify's video generation models: generate a video from a prompt, a start image, an audio track, or reference media.
## 🚀 Introduction
**Boreal** is Creatify's video generation model, built for video ads. Describe the scene in a prompt (subject, action, camera, dialogue and sound) and Boreal renders it. Add a start image to animate that frame, or an audio track to drive the video with speech or sound.
The same endpoint also serves **Boreal-H3** (`model: "boreal-h3"`), Creatify's post-trained H3 model. It adds a closing frame and reference to video, which builds a scene from up to 9 reference images, 3 videos and 3 audio tracks. See [Boreal-H3](#boreal-h3).
***
## ⚙️ Quickstart Guide
### ✅ Prerequisites
Before you begin, ensure you have:
* A [Creatify](https://app.creatify.ai) account with **API access**
* Your **API credentials** (see [Quickstart](/quickstart))
***
## 📝 Step 1: Submit a Video Generation Request
```bash Text to video theme={null}
curl --request POST \
--url https://api.creatify.ai/api/boreal/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"prompt": "A barista pours latte art into a white ceramic cup. Slow push-in, warm morning light, soft cafe chatter in the background.",
"resolution": "720p",
"aspect_ratio": "9:16",
"duration": 10,
"webhook_url": "https://webhook.example"
}'
```
```bash Image to video theme={null}
curl --request POST \
--url https://api.creatify.ai/api/boreal/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"prompt": "The woman looks into the camera and says with a warm smile: \"Planning your next trip just got easier.\" Handheld UGC sway, soft natural light.",
"image_url": "https://d35ghwdno3nak3.cloudfront.net/tutorial/avatar-aurora/recommendation-4.jpg",
"resolution": "720p",
"duration": 10,
"webhook_url": "https://webhook.example"
}'
```
```bash Audio driven theme={null}
curl --request POST \
--url https://api.creatify.ai/api/boreal/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"prompt": "The woman talks to the camera with natural hand gestures, soft natural light.",
"image_url": "https://d35ghwdno3nak3.cloudfront.net/tutorial/avatar-aurora/recommendation-4.jpg",
"audio_url": "https://d35ghwdno3nak3.cloudfront.net/user/18165/2025-09-15/2d20-req-3VV9TLO6qlTOflMMQBRe-0-s.mp3",
"resolution": "720p",
"webhook_url": "https://webhook.example"
}'
```
```json Example Response theme={null}
{
"id": "8f0b3c6e-2d4a-4a57-9c1e-5b7f2e9d1a34",
"created_at": "2026-09-15T10:30:06.296630-07:00",
"updated_at": "2026-09-15T10:30:06.296681-07:00",
"model": "boreal",
"prompt": "A barista pours latte art into a white ceramic cup. Slow push-in, warm morning light, soft cafe chatter in the background.",
"image_url": null,
"end_image_url": null,
"audio_url": null,
"reference_image_urls": [],
"reference_video_urls": [],
"reference_audio_urls": [],
"resolution": "720p",
"aspect_ratio": "9:16",
"duration": 10.0,
"negative_prompt": null,
"prompt_enhancement": null,
"webhook_url": "https://webhook.example",
"status": "pending",
"failed_reason": null,
"video_output": null,
"credits_used": 0,
"progress": 0
}
```
> 🎬 The response includes a unique video ID. Save it to check status.
### Parameters
| Parameter | Required | Description |
| - | - | - |
| `model` | No | `boreal` (default) or `boreal-h3`. This table describes `boreal`; see [Boreal-H3](#boreal-h3) for what changes. |
| `prompt` | Yes | What the video should show: subject, action, camera, and any dialogue or sound. |
| `image_url` | No | Start frame. The video follows the image's own aspect ratio unless `aspect_ratio` names one, which centre-crops the image to it. |
| `audio_url` | No | Audio track (`mp3` or `wav`) that drives the video. When set, the video is as long as the audio (within the same length limit as `duration`) and `duration` is ignored. |
| `resolution` | No | `720p` (default), `1080p` or `2k`. 2k is 2016 px on the long edge for 16:9 and 9:16, and 1440p for 1:1, 4:3 and 3:4. |
| `aspect_ratio` | No | `auto` (default), `16:9`, `9:16`, `1:1`, `4:3` or `3:4`. `auto` follows the start image, and is 16:9 without an image. |
| `duration` | No | Video length in seconds, greater than 0. Up to 60 at 720p, 30 at 1080p and 15 at 2k. Default `10`. |
| `negative_prompt` | No | What the video should avoid. |
| `webhook_url` | No | URL that receives the result when the video is ready. |
***
## ⏳ Step 2: Check Video Generation Status
Poll the status endpoint with the returned ID until `status` is `done`.
```bash Example Request theme={null}
curl --request GET \
--url https://api.creatify.ai/api/boreal/8f0b3c6e-2d4a-4a57-9c1e-5b7f2e9d1a34/ \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key'
```
```json Example Response theme={null}
{
"id": "8f0b3c6e-2d4a-4a57-9c1e-5b7f2e9d1a34",
"created_at": "2026-09-15T10:30:06.296630-07:00",
"updated_at": "2026-09-15T10:31:12.104522-07:00",
"model": "boreal",
"prompt": "A barista pours latte art into a white ceramic cup. Slow push-in, warm morning light, soft cafe chatter in the background.",
"image_url": null,
"end_image_url": null,
"audio_url": null,
"reference_image_urls": [],
"reference_video_urls": [],
"reference_audio_urls": [],
"resolution": "720p",
"aspect_ratio": "9:16",
"duration": 10.0,
"negative_prompt": null,
"prompt_enhancement": null,
"webhook_url": "https://webhook.example",
"status": "done",
"failed_reason": null,
"video_output": "https://cdn.creatify.ai/boreal_api/1/mj-3c9a7e2b-5f41-4d8e-a0b6-2e1f7c9d4b58/6d2f8a1c-9e3b-4c7d-b5a2-0f4e8c1d7b93.mp4",
"credits_used": 1,
"progress": 1
}
```
> ✅ When `status` is `done`, retrieve your video from the `video_output` field.
### 🔔 Webhook Option
Instead of polling, provide a `webhook_url` in the request. When processing completes, Boreal sends a POST request to your webhook with a payload like this:
```json theme={null}
{
"id": "8f0b3c6e-2d4a-4a57-9c1e-5b7f2e9d1a34",
"status": "done",
"failed_reason": "",
"video_output": "https://cdn.creatify.ai/boreal_api/1/mj-3c9a7e2b-5f41-4d8e-a0b6-2e1f7c9d4b58/6d2f8a1c-9e3b-4c7d-b5a2-0f4e8c1d7b93.mp4"
}
```
***
## Boreal-H3
Set `model` to `boreal-h3` to render with **Boreal-H3**, Creatify's post-trained H3 model. The request, the job and the webhook work as above, with these differences:
* **Three modes.** A prompt alone is text to video. `image_url` animates a start frame, and `end_image_url` adds a closing frame. The `reference_*_urls` parameters build the scene from reference media (reference to video).
* **Length.** `duration` is a whole number from 5 to 15 seconds. Default `10`.
* **Resolution.** `768p` (default), `1088p` or `2k` (1440 px on the short edge). `720p` and `1080p` are Boreal's tiers.
* **No `audio_url` or `negative_prompt`.** To add sound, send `reference_audio_urls` with an image or video reference.
* **Prompt rewrite.** Boreal-H3 rewrites the prompt into the form the model works best with. Set `prompt_enhancement` to `none` to render it as sent. Boreal always renders the prompt as sent.
```bash Text to video theme={null}
curl --request POST \
--url https://api.creatify.ai/api/boreal/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"model": "boreal-h3",
"prompt": "A barista pours latte art into a white ceramic cup. Slow push-in, warm morning light, soft cafe chatter in the background.",
"resolution": "768p",
"aspect_ratio": "9:16",
"duration": 10,
"webhook_url": "https://webhook.example"
}'
```
```bash Start and end frames theme={null}
curl --request POST \
--url https://api.creatify.ai/api/boreal/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"model": "boreal-h3",
"prompt": "The woman picks up her phone, glances at the screen and smiles at the camera. Handheld UGC sway, soft natural light.",
"image_url": "https://d35ghwdno3nak3.cloudfront.net/tutorial/avatar-aurora/recommendation-4.jpg",
"end_image_url": "https://example.com/end-frame.jpg",
"resolution": "1088p",
"duration": 8,
"webhook_url": "https://webhook.example"
}'
```
```bash Reference to video theme={null}
curl --request POST \
--url https://api.creatify.ai/api/boreal/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"model": "boreal-h3",
"prompt": "The woman from Image 1 unboxes the sneakers from Image 2 at her desk and holds them up to the camera. Handheld UGC framing, warm light.",
"reference_image_urls": [
"https://d35ghwdno3nak3.cloudfront.net/tutorial/avatar-aurora/recommendation-4.jpg",
"https://example.com/sneakers.jpg"
],
"aspect_ratio": "9:16",
"duration": 10,
"webhook_url": "https://webhook.example"
}'
```
### Boreal-H3 parameters
These parameters only apply to `boreal-h3`. With `model: "boreal"`, sending any of them, or `768p` or `1088p`, returns a 400 error.
| Parameter | Required | Description |
| - | - | - |
| `end_image_url` | No | Closing frame. Needs `image_url`. |
| `reference_image_urls` | No | Up to 9 reference images. |
| `reference_video_urls` | No | Up to 3 reference videos. |
| `reference_audio_urls` | No | Up to 3 reference audio tracks. Needs at least one image or video reference. |
| `prompt_enhancement` | No | `auto` (default) rewrites the prompt; `none` renders it as sent. |
* In a reference render, refer to the references by type and order in the prompt: Image 1, Image 2, Video 1, Audio 1.
* A reference render takes no `image_url` or `end_image_url`. Send those frames as reference images instead.
* With `image_url`, leave `aspect_ratio` at `auto`: the video follows the image's ratio. In a reference render, `auto` follows the first reference image. With no image, `auto` is 16:9.
* A `1088p` render with only video references needs a named `aspect_ratio`.
***
## 🎯 Summary
| Step | Endpoint |
| - | - |
| Create Task | `POST /api/boreal/` |
| Check Status | `GET /api/boreal/{id}/` |
| API Reference | [Boreal Reference](/api-reference/boreal/post-boreal) |
***
## 💳 Pricing and Length Limits
### Boreal
Billing is per started 10 seconds of video. Each resolution has a maximum video length, which applies to `duration` and to the length of `audio_url`:
| Resolution | Maximum length | Credits per 10 seconds |
| - | - | - |
| 720p | 60 seconds | 1 |
| 1080p | 30 seconds | 3 |
| 2k | 15 seconds | 12 |
For example, a 15-second 720p video costs 2 credits.
### Boreal-H3
Billing is per second of video, 5 to 15 seconds at every resolution. It is the same price as the `boreal-h3` models on the [Asset Generator](/api-reference/ai-generation/post-ai-generation#supported-models):
| Resolution | Credits per second |
| - | - |
| 768p | 0.4 |
| 1088p | 1.2 |
| 2k | 2.6 |
Reference inputs are billed on top of the video:
* Reference videos cost 0.4 credits (768p) or 0.6 credits (1088p and 2k) per second of their combined length, counting up to 15 seconds.
* The first five reference images are free. Each one after that costs 0.2 credits.
* Reference audio is free.
The total is rounded up to the next half credit. For example, a 5-second 768p video costs 2 credits, and a 15-second 2k video costs 39 credits.
Credits are charged when rendering starts and refunded if the video fails.
***
## 🤝 Need Help?
If you run into any issues, check out our [API Reference](/api-reference) or contact [api@creatify.ai](mailto:api@creatify.ai).
# Overview
Source: https://docs.creatify.ai/api-documentation/custom-avatar/byoa
Upload your own videos to create custom avatars with Creatify Custom Avatar API.
## 🚀 Introduction
With **Custom Avatar**, you can upload your own consent and lipsync videos to create a personalized speaking avatar within the Creatify platform.
This feature is designed for users who want to go beyond default personas and introduce custom characters for more control and brand alignment.
***
## 🧾 Step 1: Submit a Custom Avatar Request
### ➡️ **Option A – Upload Files Directly**
Use the `POST /api/personas_v2/` endpoint to upload your custom avatar assets as **files**.\
This must be a `multipart/form-data` request.
#### ✅ Required Fields
* `lipsync_input` – MP4 file used for lipsync training (e.g., a person speaking plain text)
* `creator_name` – Name for the avatar (e.g., "James")
* `gender` – Gender identifier (e.g., "m", "f")
* `video_scene` – Context or background category (e.g., "office")
#### 📤 Example Curl Request
```bash theme={null}
curl -X POST https://api.creatify.ai/api/personas_v2/ \
-H "X-API-ID: " \
-H "X-API-KEY: " \
-F "lipsync_input=@./lipsync_input.mp4" \
-F "creator_name=James" \
-F "gender=m" \
-F "video_scene=office"
```
> 🎬 Ensure both video files are valid formats: `video/mp4` or `video/quicktime`
***
### ➡️ **Option B – Provide File URLs**
Use the `POST /api/personas/` endpoint to submit **URLs** to your consent and lipsync videos instead of uploading files.
#### ✅ Required Fields
* `lipsync_input` – Publicly accessible URL to the lipsync MP4 file
* `creator_name` – Name for the avatar (e.g., "James")
* `gender` – Gender identifier (e.g., "m", "f")
* `video_scene` – Context or background category (e.g., "office")
#### 📤 Example Curl Request
```bash theme={null}
curl -X POST 'https://api.creatify.ai/api/personas/' \
--header 'Content-Type: application/json'
--header 'X-API-ID: ' \
--header 'X-API-KEY: ' \
-data '{
"lipsync_input": "https://d35ghwdno3nak3.cloudfront.net/creators/79ca02c3-2c72-44c9-b3f8-5e95937cec19/18fccce8-86e7-5f31-abc8-18915cb872be.mp4",
"creator_name": "James",
"gender": "m",
"video_scene": "office"
}'
```
> 🌐 The URLs must be **publicly accessible** so Creatify can retrieve the video files.
***
### Endpoint Summary
| Endpoint | Upload Type | Key Difference |
| - | - | - |
| `POST /api/personas_v2/` | **File Upload** (`multipart/form-data`) | Send actual MP4 files directly. |
| `POST /api/personas/` | **URL Upload** (`application/json`) | Provide direct URLs to existing MP4 files. |
***
## 🔍 Step 2: Check Custom Avatar Status
After submission, use `GET /api/personas/{id}/` to check the approval status of your avatar.
### Example Request
```bash theme={null}
curl --request GET \
--url https://api.creatify.ai/api/personas/{id}/ \
--header 'X-API-ID: ' \
--header 'X-API-KEY: '
```
### What to Look For
* `"is_active": false` – Avatar is still under review by Creatify
* `"is_active": true` – Avatar has been approved and is ready for use
> ⏱️ Reviews are typically completed within 24 hours
***
## 📌 Notes
* You can retrieve your avatars using [`GET /api/personas_v2/`](/api-reference/personas/get-apipersonas-v2)
* Your approved Custom Avatar avatar can then be used in any compatible API such as **AI Avatar**, **AI Avatar V2**, or **Create Video from URL**
***
## 🤝 Need Help?
If you have any issues or need assistance, please contact [api@creatify.ai](mailto:api@creatify.ai)
# Overview
Source: https://docs.creatify.ai/api-documentation/html-interactive-ads/html-interactive-ads
Generate playable HTML ads from a product page, one self-contained file per style, ready to upload to an ad network.
## 🚀 Introduction
The **HTML Interactive Ad API** turns a **product page** into **playable HTML ads**.
You give it one Link and a list of styles, and get back one ad per style. Every ad is a single
self-contained HTML file — images and fonts inlined, the click-through wired to MRAID, compressed
to fit the size limit ad networks accept — so you upload the file as it is, with no packaging step
of your own. Ads render as a 360×640 portrait card that scales to the screen, and a tap opens the
product URL.
***
## 1. Create Link from URL
Extract content (title, description, images, videos, etc.) from a product URL.
[`POST /api/links/`](/api-reference/links/post-apilinks)
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/api/links/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: ' \
--header 'X-API-KEY: ' \
--data '{
"url": "https://www.brooklinen.com/products/luxe-core-sheet-set"
}'
```
```json Example Response [expandable] theme={null}
{
"id": "052e333a-f308-4bad-96b1-ab58e5c413d3",
"url": "https://www.brooklinen.com/products/luxe-core-sheet-set",
"link": {
"id": "bd0fa6e5-2517-48e6-9173-3e534f21a12e",
"url": "https://www.brooklinen.com/products/luxe-core-sheet-set",
"title": "Luxe Sateen Core Sheet Set",
"description": "Why You’ll Love It \n Softness so indulgent, you’ll order room service at home. Our new Luxe Sateen Sheets are made with luxier upgrades like an increased thread count and 100% long-staple cotton for durability and breathability; a unique 4-over-1 weave pattern that’s soft as buttah’; and a silky-smooth, secret-finish softness you can’t get anywhere else but in bed with us. \n How It Feels\n Luxuriously soft, breathable, and smooth like buttah’\n How It Looks\n Indulgent & inviting, with a beautiful drape over your bed & body \n Best For\n Year-round comfort for most sleepers in four-season climates",
"image_urls": [
"https://cdn.shopify.com/s/files/1/0951/7126/files/BKL_25-11_Bedding_Luxe_White_CSS_1_x_PDP_WO_9a378fea-9426-49f3-86ef-f15ec88bdae4.jpg?v=1779223625",
"https://cdn.shopify.com/s/files/1/0951/7126/files/BKL_24-05_Bedding_Luxe_Pebble_Detail_1x_WOgrey_c2e8da80-c9a9-4728-a936-4e99aa7daa82.jpg?v=1779223624",
"https://cdn.shopify.com/s/files/1/0951/7126/files/BKL_25-01_Bedding_Luxe_TandemStripeinFreshMoss_Detail_1x_WOgrey_41b4c61f-a6ab-4ee6-a053-f469d4617ffb.jpg?v=1779223625",
"https://cdn.shopify.com/s/files/1/0951/7126/files/BKL_25-01_Bedding_Luxe_TandemStripeInPebble_Detail_1x_WOgrey_05de4385-fcf7-4c4f-940a-125e12178562.jpg?v=1779223624",
"https://cdn.shopify.com/s/files/1/0951/7126/files/BKL_25-01_Bedding_Luxe_OysterInPebble_COR_1x_WOgrey_b0022608-2095-433e-818f-43caf1ecf245.jpg?v=1779223625"
],
"video_urls": [
"https://www.brooklinen.com/cdn/shop/videos/c/vp/0a770688672e4f96bfae4252c0e516c1/0a770688672e4f96bfae4252c0e516c1.HD-720p-4.5Mbps-84497806.mp4?v=0"
],
"reviews": [],
"logo_url": "https://cdn.creatify.ai/products/bd0fa6e5-2517-48e6-9173-3e534f21a12e/logo_8463dc1c.png",
"ai_summary": "The Luxe Sateen Core Sheet Set includes a flat sheet, fitted sheet, and two pillowcases made from 100% long-staple cotton with a 495 thread count for durability, breathability, and softness. Crafted in Portugal, these sheets feature a unique 4-over-1 weave and a new secret finish that creates a silky-smooth, low-sheen look and luxurious softness.",
"ai_industry": "Daily Essentials",
"ai_target_audiences": [
"Luxury home bedding shoppers",
"Quality-conscious sleepers",
"Breathable fabric enthusiasts",
"Sateen fabric lovers",
"Eco-conscious cotton buyers",
"Four-season comfort seekers",
"Elegant bedroom decorators"
],
"brand_color": "#F0D7BF",
"qrcode_url": null,
"primary_image_url": null
},
"credits_used": 1
}
```
> 💡 Save the top-level `id` — that is the **Link ID** you pass in step 4.
> 💡 Errors:
>
> 1. Successfully scraped the URL but it contains no images or videos.
> status\_code: 400
> body: \["Link must have at least one image or one video."]
> 2. Failed to scrape the URL (due to anti-scraping or other issues).
> status\_code: 400
> body: \["Failed to scrape url: "]
***
## 2. (Optional) Create Link with Parameters
If you don’t have a URL but have product data, create a link directly using parameters.
[`POST /api/links/link_with_params/`](/api-reference/links/post-apilink_with_params)
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/api/links/link_with_params/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: ' \
--header 'X-API-KEY: ' \
--data '{
"title": "Luxe Sateen Core Sheet Set",
"description": "100% long-staple cotton, 495 thread count, woven in Portugal. Includes 1 flat sheet, 1 fitted sheet and 2 pillowcases.",
"image_urls": [
"https://cdn.shopify.com/s/files/1/0951/7126/files/BKL_25-11_Bedding_Luxe_White_CSS_1_x_PDP_WO_9a378fea-9426-49f3-86ef-f15ec88bdae4.jpg?v=1779223625",
"https://cdn.shopify.com/s/files/1/0951/7126/files/BKL_24-05_Bedding_Luxe_Pebble_Detail_1x_WOgrey_c2e8da80-c9a9-4728-a936-4e99aa7daa82.jpg?v=1779223624"
]
}'
```
The response has the same shape as step 1, and its top-level `id` is the Link ID.
> 💡 Provide at least **1 image** — an ad cannot be generated without one.
***
## 3. (Optional) Update Link
Modify an existing link’s metadata (title, description, images, logo). The ads are built from
exactly what the link holds, so fix anything the scraper got wrong before you generate.
[`PUT /api/links/{id}/`](/api-reference/links/put-apilinks-)
```bash Example Request theme={null}
curl --request PUT \
--url https://api.creatify.ai/api/links/052e333a-f308-4bad-96b1-ab58e5c413d3/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: ' \
--header 'X-API-KEY: ' \
--data '{
"title": "Luxe Sateen Core Sheet Set",
"image_urls": [
"https://cdn.shopify.com/s/files/1/0951/7126/files/BKL_25-11_Bedding_Luxe_White_CSS_1_x_PDP_WO_9a378fea-9426-49f3-86ef-f15ec88bdae4.jpg?v=1779223625"
]
}'
```
> 💡 A link needs a title and at least one image before it can be advertised.
***
## 4. Browse Styles
Each style produces one ad. Fetch the catalog once and keep the ids you like — they are stable, so
you can reuse them for every product.
[`GET /api/html_interactive_ads/styles/`](/api-reference/html-interactive-ads/get-html-interactive-ads-styles)
```bash Example Request theme={null}
curl --request GET \
--url https://api.creatify.ai/api/html_interactive_ads/styles/ \
--header 'X-API-ID: ' \
--header 'X-API-KEY: '
```
```json Example Response [expandable] theme={null}
[
{
"id": "wonderskin-01",
"name": "Wonderskin 01",
"type": "video",
"interactive": false,
"thumbnail_url": "https://cdn.creatify.ai/llm_editor/video_refs/thumbs/Wonderskin_01.jpg",
"preview_url": "https://cdn.creatify.ai/llm_editor/video_refs/Wonderskin_01.mp4"
},
{
"id": "scratch-card-reveal",
"name": "Scratch Card Reveal",
"type": "idea",
"interactive": true,
"thumbnail_url": "https://cdn.creatify.ai/user/1/llm_cta/9458d1c6.png",
"preview_url": "https://cdn.creatify.ai/llm_editor/idea_previews/scratch-card-reveal/health-and-wellness.mp4"
}
]
```
| Field | Meaning |
| - | - |
| `type` | `video` follows the layout of a real ad; `idea` follows a template concept. |
| `interactive` | The ad responds to taps or swipes beyond the call to action. |
| `preview_url` | A short video showing what the style looks like. |
***
## 5. Create HTML Interactive Ad Task
Create a task using the **Link ID** from step 1 and the style ids from step 4.
[`POST /api/html_interactive_ads/`](/api-reference/html-interactive-ads/post-html-interactive-ads)
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/api/html_interactive_ads/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: ' \
--header 'X-API-KEY: ' \
--data '{
"link": "052e333a-f308-4bad-96b1-ab58e5c413d3",
"style_ids": ["wonderskin-01", "scratch-card-reveal"],
"promotion_info": "20% off this week",
"max_size_mb": 5,
"webhook_url": "https://webhook.site/ea6d0ccb-9a41-4a05-bdaa-08664c5f9f84"
}'
```
```json Example Response theme={null}
{
"id": "57ccb485-fa7d-46aa-995a-9fb3eb5b4534",
"created_at": "2026-09-20T04:47:40.230348-07:00",
"updated_at": "2026-09-20T04:47:40.230348-07:00",
"link": "052e333a-f308-4bad-96b1-ab58e5c413d3",
"style_ids": ["wonderskin-01", "scratch-card-reveal"],
"promotion_info": "20% off this week",
"custom_prompt": null,
"max_size_mb": 5,
"webhook_url": "https://webhook.site/ea6d0ccb-9a41-4a05-bdaa-08664c5f9f84",
"status": "pending",
"failed_reason": null,
"ads": [],
"credits_used": 0
}
```
| Field | Required | Notes |
| - | - | - |
| `link` | Yes | The Link ID from step 1. |
| `style_ids` | Yes | 1–20 styles, no repeats. One ad per style. |
| `promotion_info` | No | An offer to feature, e.g. `20% off this week`. Without it the ads make no discount claim. |
| `custom_prompt` | No | Extra direction, e.g. tone or what to emphasize. |
| `max_size_mb` | No | Largest file size per ad, 5–15. Defaults to 5, the AppLovin limit. |
| `webhook_url` | No | Called once, when every ad has finished. |
> 🎬 Save the returned `id` and use it to check the task status.
***
## 6. Check Task Status
An ad takes a few minutes, and a task finishes when all of its ads do. Poll the status endpoint
until `status` becomes `done`.
[`GET /api/html_interactive_ads/{id}/`](/api-reference/html-interactive-ads/get-html-interactive-ads-)
```bash Example Request theme={null}
curl --request GET \
--url https://api.creatify.ai/api/html_interactive_ads/57ccb485-fa7d-46aa-995a-9fb3eb5b4534/ \
--header 'X-API-ID: ' \
--header 'X-API-KEY: '
```
```json Example Response [expandable] theme={null}
{
"id": "57ccb485-fa7d-46aa-995a-9fb3eb5b4534",
"created_at": "2026-09-20T04:47:40.230348-07:00",
"updated_at": "2026-09-20T04:51:35.286228-07:00",
"link": "052e333a-f308-4bad-96b1-ab58e5c413d3",
"style_ids": ["wonderskin-01", "scratch-card-reveal"],
"promotion_info": "20% off this week",
"custom_prompt": null,
"max_size_mb": 5,
"webhook_url": "https://webhook.site/ea6d0ccb-9a41-4a05-bdaa-08664c5f9f84",
"status": "done",
"failed_reason": null,
"ads": [
{
"id": "738a25b2-fd2c-4972-b7f5-8cf20d43df5b",
"style_id": "wonderskin-01",
"status": "done",
"html_url": "https://cdn.creatify.ai/llm_editor/download/738a25b2-fd2c-4972-b7f5-8cf20d43df5b/f7e87b53.html",
"size_bytes": 1840620,
"failed_reason": null
},
{
"id": "1f5fc4a0-b19b-4868-8d68-c513b3592e25",
"style_id": "scratch-card-reveal",
"status": "done",
"html_url": "https://cdn.creatify.ai/llm_editor/download/1f5fc4a0-b19b-4868-8d68-c513b3592e25/74fc00e7.html",
"size_bytes": 1024429,
"failed_reason": null
}
],
"credits_used": 20
}
```
> ✅ When `status` is `done`, download each `html_url` and upload the file to your ad network.
A task is `done` when at least one ad succeeded, and `failed` when none did. Ads are billed
individually, so `credits_used` counts only the ads you received — an ad that fails is refunded.
***
## 7. Webhook Option
Instead of polling, you can provide a `webhook_url` in the request to receive the result
automatically. Once every ad has finished, Creatify sends a POST request to your webhook with the
same body the status endpoint returns.
***
## 🎯 Summary
| Step | Endpoint |
| - | - |
| Create Link | `POST /api/links/` |
| Browse Styles | `GET /api/html_interactive_ads/styles/` |
| Create Task | `POST /api/html_interactive_ads/` |
| Check Status | `GET /api/html_interactive_ads/{id}/` |
| API Reference | [HTML Interactive Ad Reference](/api-reference/html-interactive-ads/post-html-interactive-ads) |
***
## 💳 Pricing
Each successfully generated ad costs **10 credits**. A request for 5 styles costs **50 credits**.
Ads that fail, or that cannot be compressed under `max_size_mb`, are refunded.
***
## 📌 Notes and Limits
* Ads are 360×640 portrait and the click-through always opens the product URL; a custom landing
page and a language setting are not supported.
* Files are validated against the AppLovin/MRAID requirements: assets inlined, no direct page
redirects, and a size under `max_size_mb`. An ad that does not pass is failed and refunded rather
than delivered.
* Generating ads for many products means one task per product.
***
## 🤝 Need Help?
If you run into any issues, check out our [API Reference](/api-reference) or contact [api@creatify.ai](mailto:api@creatify.ai).
# Overview
Source: https://docs.creatify.ai/api-documentation/iab-images/iab-images
Adapt an existing ad image into standard IAB banner sizes for display and mobile placements.
## 🚀 Introduction
The **IAB Images API** adapts an existing ad image into multiple
**standard IAB banner sizes** for display and mobile ad placements.
Provide a direct image-file URL in the `image` field. The API uses that image as
a style reference and redraws the ad to fit each banner size, so the output is
not a pixel-exact resize of the original.
The web app's **Image Ad** tool creates ads from a product or website URL.
This API requires an existing image and does not provide that URL-to-Image workflow.
***
## ⚙️ Quickstart Guide
### ✅ Prerequisites
Before you begin, ensure you have:
* A [Creatify](https://app.creatify.ai) account with **API access**
* Your **API credentials** (see [Quickstart](/quickstart))
***
## 📝 Step 1: Submit an IAB Images Request
Use this endpoint to adapt an existing ad image into standard IAB banner sizes.
[`POST /api/iab_images/`](/api-reference/iab-images/post-iab-images)
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/api/iab_images/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"image": "https://d35ghwdno3nak3.cloudfront.net/content-understanding/brand/the_doers_way/1204242384972303.jpg",
"webhook_url": "https://webhook.site/ea6d0ccb-9a41-4a05-bdaa-08664c5f9f84"
}'
```
```json Example Response theme={null}
{
"id": "0418ad79-405d-45e4-9794-3e4adeb809cf",
"created_at": "2025-12-30T05:16:04.084406-08:00",
"updated_at": "2025-12-30T05:16:04.084443-08:00",
"image": "https://d35ghwdno3nak3.cloudfront.net/content-understanding/brand/the_doers_way/1204242384972303.jpg",
"output": [],
"status": "running",
"failed_reason": null,
"webhook_url": "https://webhook.site/ea6d0ccb-9a41-4a05-bdaa-08664c5f9f84"
}
```
> 🎬 The response includes a unique task ID. Save it to check status.
***
## ⏳ Step 2: Check IAB Images Status
You can monitor progress by **polling the status endpoint** using the returned ID until the status changes to `done`.
[`GET /api/iab_images/{id}/`](/api-reference/iab-images/get-iab-images-)
```bash Example Request theme={null}
curl --request GET \
--url https://api.creatify.ai/api/iab_images/0418ad79-405d-45e4-9794-3e4adeb809cf/ \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key'
```
```json Example Response [expandable] theme={null}
{
"id": "0418ad79-405d-45e4-9794-3e4adeb809cf",
"created_at": "2025-12-30T05:16:04.084406-08:00",
"updated_at": "2025-12-30T05:16:41.584501-08:00",
"image": "https://d35ghwdno3nak3.cloudfront.net/content-understanding/brand/the_doers_way/1204242384972303.jpg",
"output": [
{
"name": "Mobile Leaderboard",
"size": "320x50",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_mobile_320x50.png",
"type": "Mobile"
},
{
"name": "Medium Rectangle (MPU)",
"size": "300x250",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_mobile_300x250.png",
"type": "Mobile"
},
{
"name": "Large Mobile Banner",
"size": "320x100",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_mobile_320x100.png",
"type": "Mobile"
},
{
"name": "Square / Small Square",
"size": "250x250",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_mobile_250x250.png",
"type": "Mobile"
},
{
"name": "Medium Rectangle (MPU)",
"size": "300x250",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_desktop_300x250.png",
"type": "Desktop"
},
{
"name": "Leaderboard",
"size": "728x90",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_desktop_728x90.png",
"type": "Desktop"
},
{
"name": "Wide Skyscraper",
"size": "160x600",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_desktop_160x600.png",
"type": "Desktop"
},
{
"name": "Half Page / Large Skyscraper",
"size": "300x600",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_desktop_300x600.png",
"type": "Desktop"
},
{
"name": "Billboard",
"size": "970x250",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_desktop_970x250.png",
"type": "Desktop"
},
{
"name": "Large Leaderboard",
"size": "970x90",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_desktop_970x90.png",
"type": "Desktop"
},
{
"name": "Banner",
"size": "468x60",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_desktop_468x60.png",
"type": "Desktop"
},
{
"name": "Square Pop-Up / Small Square",
"size": "250x250",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_desktop_250x250.png",
"type": "Desktop"
}
],
"status": "done",
"failed_reason": null,
"webhook_url": "https://webhook.site/ea6d0ccb-9a41-4a05-bdaa-08664c5f9f84"
}
```
> ✅ When `status` is `done`, retrieve your banners from the `output` field.
### 🔔 Webhook Option
Instead of polling, you can provide a `webhook_url` in the request to receive the result automatically when the images are ready.\
When processing completes, the API will send a POST request to your webhook with a payload like this:
```json [expandable] theme={null}
{
"id": "0418ad79-405d-45e4-9794-3e4adeb809cf",
"status": "done",
"failed_reason": "",
"output": [
{
"name": "Mobile Leaderboard",
"size": "320x50",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_mobile_320x50.png",
"type": "Mobile"
},
{
"name": "Medium Rectangle (MPU)",
"size": "300x250",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_mobile_300x250.png",
"type": "Mobile"
},
{
"name": "Large Mobile Banner",
"size": "320x100",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_mobile_320x100.png",
"type": "Mobile"
},
{
"name": "Square / Small Square",
"size": "250x250",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_mobile_250x250.png",
"type": "Mobile"
},
{
"name": "Medium Rectangle (MPU)",
"size": "300x250",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_desktop_300x250.png",
"type": "Desktop"
},
{
"name": "Leaderboard",
"size": "728x90",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_desktop_728x90.png",
"type": "Desktop"
},
{
"name": "Wide Skyscraper",
"size": "160x600",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_desktop_160x600.png",
"type": "Desktop"
},
{
"name": "Half Page / Large Skyscraper",
"size": "300x600",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_desktop_300x600.png",
"type": "Desktop"
},
{
"name": "Billboard",
"size": "970x250",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_desktop_970x250.png",
"type": "Desktop"
},
{
"name": "Large Leaderboard",
"size": "970x90",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_desktop_970x90.png",
"type": "Desktop"
},
{
"name": "Banner",
"size": "468x60",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_desktop_468x60.png",
"type": "Desktop"
},
{
"name": "Square Pop-Up / Small Square",
"size": "250x250",
"url": "https://d35ghwdno3nak3.cloudfront.net/image_ads/banner_generation/1/20251230/36476dbf-6369-414c-bb7d-1e19446ea111_desktop_250x250.png",
"type": "Desktop"
}
]
}
```
***
## 🎯 Summary
| Step | Endpoint |
| - | - |
| Create Task | `POST /api/iab_images/` |
| Check Status | `GET /api/iab_images/{id}/` |
| API Reference | [IAB Images Reference](/api-reference/iab-images/post-iab-images) |
***
## 💳 Pricing
Adapting an image through this endpoint costs **2 credits per request**.
***
## 🤝 Need Help?
If you run into any issues, check out our [API Reference](/api-reference) or contact [api@creatify.ai](mailto:api@creatify.ai).
# Overview
Source: https://docs.creatify.ai/api-documentation/product-to-video/product-to-video
APIs for creating short-form video ads from a product image by uploading, generating previews, and converting to videos.
## 🚀 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:
* A [Creatify](https://app.creatify.ai) account with **API access**
* Your **API credentials** (see [Quickstart](/quickstart))
***
## 🖼️ 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/`
```bash Example Request theme={null}
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"
}'
```
```json Example Response [expandable] theme={null}
{
"id": "7e5e8a6f-d0d5-4736-b390-03e696ffc969",
"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": "initializing",
"generated_video_url": null,
"generated_photo_url": null,
"created_at": "2025-05-30T06:51:34.826975-07:00",
"updated_at": "2025-05-30T06:51:34.827001-07:00",
"regen_source_id": "",
"regen_type": "",
"failed_reason": "",
"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.
```bash Example Request theme={null}
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'\
```
```json Example Response theme={null}
{
"id": "7e5e8a6f-d0d5-4736-b390-03e696ffc969",
"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",
"regen_source_id": "",
"regen_type": "",
"failed_reason": "",
"webhook_url": "https://webhook.example"
}
```
> ⏳ 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:
```json [expandable] theme={null}
{
"id": "7e5e8a6f-d0d5-4736-b390-03e696ffc969",
"type": "product_anyshot",
"failed_reason": "",
"regen_source_id": "",
"regen_type": "",
"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.
```bash Example Request theme={null}
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"
}'
```
```json Example Response theme={null}
{
"id": "45c9b7ec-f60b-4773-b298-7660328c0fb0",
"type": "product_anyshot",
"product_url": "https://m.media-amazon.com/images/I/71xUtGqbKQL._SL1500_.jpg",
"aspect_ratio": "16x9",
"override_avatar": null,
"motion_style": "talking",
"product_showcase_url": "https://d35ghwdno3nak3.cloudfront.net/",
"image_prompt": "update image",
"video_prompt": null,
"status": "image_generating",
"generated_video_url": null,
"generated_photo_url": null,
"created_at": "2025-05-30T07:04:51.334269-07:00",
"updated_at": "2025-05-30T07:04:51.363524-07:00",
"regen_source_id": "",
"regen_type": "",
"failed_reason": "",
"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:
```json [expandable] theme={null}
{
"regen_source_id": "7e5e8a6f-d0d5-4736-b390-03e696ffc969",
"regen_type": "regen_image",
"failed_reason": "",
"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/`
```bash Example Request theme={null}
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"
}'
```
```json Example Response theme={null}
{
"id": "7e5e8a6f-d0d5-4736-b390-03e696ffc969",
"type": "product_anyshot",
"product_url": "https://m.media-amazon.com/images/I/71xUtGqbKQL._SL1500_.jpg",
"aspect_ratio": "16x9",
"override_avatar": null,
"motion_style": "talking",
"product_showcase_url": null,
"image_prompt": null,
"video_prompt": "product example",
"status": "video_generating",
"generated_video_url": null,
"generated_photo_url": "https://creatify-user-uploads.s3.amazonaws.com/user/2/2025-05-30/823e2a39.jpg?AWSAccessKeyId=AKIA57I2VJP5NEUPBZBL&Signature=SSxEggaefxbFxFIKDVlo8ObCWJU%3D&Expires=1748617603",
"created_at": "2025-05-30T07:06:14.981415-07:00",
"updated_at": "2025-05-30T07:06:43.533566-07:00",
"regen_source_id": "",
"regen_type": "",
"failed_reason": "",
"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:
```json [expandable] theme={null}
{
"id": "7e5e8a6f-d0d5-4736-b390-03e696ffc969",
"type": "product_anyshot",
"failed_reason": "",
"regen_source_id": "",
"regen_type": "",
"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.
```bash Example Request theme={null}
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'\
```
```json Example Response theme={null}
{
"id": "7e5e8a6f-d0d5-4736-b390-03e696ffc969",
"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_generating",
"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",
"regen_source_id": "",
"regen_type": "",
"failed_reason": "",
"webhook_url": "https://webhook.example"
}
```
> ⏳ 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.
```bash Example Request theme={null}
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"
}'
```
```json Example Response theme={null}
{
"id": "45c9b7ec-f60b-4773-b298-7660328c0fb0",
"type": "product_anyshot",
"product_url": "https://m.media-amazon.com/images/I/71xUtGqbKQL._SL1500_.jpg",
"aspect_ratio": "16x9",
"override_avatar": null,
"motion_style": "talking",
"product_showcase_url": null,
"image_prompt": null,
"video_prompt": "",
"status": "video_generated",
"generated_video_url": null,
"generated_photo_url": "https://creatify-user-uploads.s3.amazonaws.com/xx",
"created_at": "2025-05-30T07:06:14.981415-07:00",
"updated_at": "2025-05-30T07:06:43.533566-07:00",
"regen_source_id": "",
"regen_type": "",
"failed_reason": "",
"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:
```json [expandable] theme={null}
{
"regen_source_id": "7e5e8a6f-d0d5-4736-b390-03e696ffc969",
"regen_type": "regen_video",
"failed_reason": "",
"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
| Step | Endpoint |
| - | - |
| Generate image | `POST /api/product_to_videos/gen_image/` |
| Check Status | `GET /api/product_to_videos/{id}/` |
| Generate Video | `POST /api/product_to_videos/{id}/gen_video/` |
| Regenerate image | `POST /api/product_to_videos/{id}/regen_image/` |
| Regenerate video | `POST /api/product_to_videos/{id}/regen_video/` |
| API Reference | [Product-to-Video Reference](/api-reference/product_to_video/post-apiproduct_to_videos-gen_image) |
***
## 🤝 Need Help?
If you run into any issues, check out our [API Reference](/api-reference) or contact [api@creatify.ai](mailto:api@creatify.ai).
# Overview
Source: https://docs.creatify.ai/api-documentation/text-to-speech/text-to-speech
API that generates ultra-realistic audio voiceovers from text using AI voices and accents.
## 🚀 Introduction
The **Text to Speech API** turns written scripts into studio-quality voiceovers using Creatify’s AI voices. Perfect for narration, educational content, promotional videos, and more — with support for natural-sounding accents and expressive delivery.
***
## ⚙️ Quickstart Guide
### ✅ Prerequisites
Before you begin, ensure you have:
* A [Creatify](https://app.creatify.ai) account with **API access**
* Your **API credentials** (see [Quickstart](/quickstart))
***
## 🧠 Step 1: Choose a Voice Accent
Call the [Get Voices API](/api-reference/voices/get-apivoices) to retrieve a list of available voices and their accents.
Each voice includes an `accents` list — select one of the `id` values from that list and use it as the `accent` in your TTS request.
### 🎧 Example Response from `GET /api/voices/`
```json theme={null}
[
{
"name": "Fatima",
"gender": "female",
"accents": [
{
"id": "7a258b67-e1d3-4025-8904-8429daa3a34d",
"accent_name": "American English accent",
"preview_url": "https://d35ghwdno3nak3.cloudfront.net/accent_preview_new_/el-689d6bc2-c93e-4a50-a36b-3b171c729843_s.mp3"
}
]
}
]
```
***
## 📝 Step 2: Submit a TTS Generation Request
Use this endpoint to generate voiceover audio from a script.
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/api/text_to_speech/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"script": "Welcome to Creatify dot AI!",
"accent": "7a258b67-e1d3-4025-8904-8429daa3a34d"
}'
```
```json Example Response theme={null}
{
"id": "819916b3-ec00-4baa-a6be-18635ad97d53",
"script": "Welcome to Creatify dot AI!",
"accent": "7a258b67-e1d3-4025-8904-8429daa3a34d",
"webhook_url": null,
"output": null,
"media_job": "6d22b88a-e408-435b-9065-0d565003754b",
"is_hidden": false,
"status": "pending",
"failed_reason": null,
"created_at": "2025-05-21T22:59:17.198342-07:00",
"updated_at": "2025-05-21T22:59:17.331673-07:00"
}
```
> ⚠️ Save the `id` — you’ll need it to check the generation status.
***
## ⏳ Step 3: Check Audio Generation Status
Use the ID returned from your generation request to retrieve the final voiceover file.
```bash Example Request theme={null}
curl --request GET \
--url https://api.creatify.ai/api/text_to_speech/819916b3-ec00-4baa-a6be-18635ad97d53/ \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key'
```
```json Example Response theme={null}
{
"id": "819916b3-ec00-4baa-a6be-18635ad97d53",
"script": "Welcome to Creatify dot AI!",
"accent": "7a258b67-e1d3-4025-8904-8429daa3a34d",
"webhook_url": null,
"output": "https://d35ghwdno3nak3.cloudfront.net/user/18165/2025-05-21/8896-req-irBrUV4MnMKznFwhTIeN-0-s.mp3",
"media_job": "6d22b88a-e408-435b-9065-0d565003754b",
"is_hidden": false,
"status": "done",
"failed_reason": null,
"created_at": "2025-05-21T22:59:17.198342-07:00",
"updated_at": "2025-05-21T22:59:17.331673-07:00"
}
```
> ⏳ Once `status` is `done`, download the voiceover from the `output` field.
***
## 🎯 Summary
| Step | Endpoint |
| - | - |
| Get Voices | `GET /api/voices/` |
| Create Audio | `POST /api/text_to_speech/` |
| Check Status | `GET /api/text_to_speech/{id}/` |
| API Reference | [Text to Speech Reference](/api-reference/text-to-speech/post-text-to-speech) |
***
## 🤝 Need Help?
If you run into any issues, check out our [API Reference](/api-reference) or contact [api@creatify.ai](mailto:api@creatify.ai).
# Create Video from URL
Source: https://docs.creatify.ai/api-documentation/url-to-video/link-to-video
APIs that convert any link to a short form video ad.
## 🚀 Introduction
With Creatify's **URL-to-Video API**, you can instantly turn any webpage into a customized, short-form video ad. Just submit a URL—our system will:
* Automatically scrape content (images, descriptions, etc.)
* Allow you to **customize** the script, visuals, and more
* Output a **ready-to-publish** video in seconds
***
## ⚙️ Quickstart Guide
### ✅ Prerequisites
Before you begin, ensure you have:
* A [Creatify](https://app.creatify.ai) account with **API access**
* Your **API credentials** (see [Quickstart](/quickstart))
***
## 🔗 Step 1: Create a New Link
Use this endpoint to submit a URL and extract metadata.
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/api/links/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"url": "https://www.amazon.com/ATTITUDE-Mineral-Based-Ingredients-Cruelty-free-Moisturizer/dp/B09JZXHJM7"
}'
```
```json Example Response [expandable] theme={null}
{
"id": "fb6ef50f-3c84-42a0-8b4b-55fb0a162808",
"url": "https://www.amazon.com/ATTITUDE-Mineral-Based-Ingredients-Cruelty-free-Moisturizer/dp/B09JZXHJM7",
"link": {
"id": "d5ed3593-5753-4fe4-bee5-9bd89b011d7b",
"url": "https://www.amazon.com/ATTITUDE-Mineral-Based-Ingredients-Cruelty-free-Moisturizer/dp/B09JZXHJM7",
"title": "ATTITUDE Body Cream, EWG Verified Moisturizer, Vegan Moisturizing Products For Dry Skin, Dermatologically Tested, Olive Leaves, 8 Fl Oz (Pack of 6)",
"description": "About this item EWG VERIFIED: clean ingredients and full transparency INGREDIENTS OF NATURAL ORIGIN : Formulated with 98.8% naturally sourced ingredients* including watercress and Indian cress to revitalize skin HIGH PERFORMANCE : Enriched with olive leaves extract to soothe and improve the appearance of dry skin DERMATOLOGICALLY TESTED VEGAN \n › See more product details",
"image_urls": [
"https://m.media-amazon.com/images/I/71P+UHIfT8L._SL1500_.jpg",
"https://m.media-amazon.com/images/I/71ca2Soc2AL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/71PHtZce95L._SL1500_.jpg",
"https://m.media-amazon.com/images/I/71xUtGqbKQL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/61YO5awH0OL._SL1500_.jpg",
"https://m.media-amazon.com/images/I/71O3xDdrjTL.jpg",
"https://m.media-amazon.com/images/I/91BJZbo4nAL.jpg",
"https://m.media-amazon.com/images/I/61uAyKZ1WFL.jpg"
],
"video_urls": [],
"reviews": [
"Fresh scent, not overpowering. Goes on smooth and soaks in and leaves skin soft, not greasy. Love that it's EWG approved so no dangerous ingredients to worry about.",
"Lightly scented (warm, slightly musk, powdery smell - but all pleasant). Good, creamy consistency and absorbs well. My hands feel well moisturized.",
"Smells nice. Goes on skin smooth and isn’t greasy. But requires more than other lotions I’ve used for even coverage.",
"This is a lovely moisturizer with a fantastic, subtle scent. It is very emollient and leaves my skin soft and moisturized. It goes on white, though, and takes a while for that to soak in, so you wouldn't want to put it on right before going out in shorts or a sundress. I highly recommend!",
"Leaves my skin so smooth and moisturized. I love how light yet still fragrant the scent is. I also love the non-toxic ingredients! Great value for the price!",
"I have purchased this product multiple times in the past, and was a satisfied customer. It had a nice viscosity and slightly pleasant aroma. As others have noted, recent purchase was different with a viscosity slightly above water (calling this a “body cream” is laughable), and an aroma that is a little off putting, though the scent wears off after a while. Unfortunately, I will not re-order. And the search continues.",
"Not an overwhelming scent, moisturizes my skin sufficiently, Ewg verified - all good things in my book! Will purchase again - probably in another scent just because I like to try different ones. :)",
"I liked this a lot. It’s thick and works well on my skin.",
"Smells great, feels nice on the skin, not greasy. Love that it's a Canadian company",
"I was looking for something that did not have chemicals and was good for your skin additude gives you that and more",
"It’s a nice big bottle and doesn’t leave a greasy feel like some lotions do. I use it mostly on my hands and arms, but will rub it on my face too. It’s gentle and has a very mild scent. It’s rated excellent on the Yuka app so I know it’s a healthy product. I will keep buying this.",
"Great for hands, pleasant light smell. Cruelty free and low EWG!",
"Works amazing for you skin. Works great to improve the appearance of my eczema. It's not a cure, but it will improve the appearance and slow the spread. Perhaps in time it will cure. But excellent product."
],
"logo_url": null,
"ai_summary": "ATTITUDE Body Cream is an 8 Fl Oz moisturizer, available in a pack of 6, designed for dry skin with 98.8% naturally sourced ingredients, including watercress, Indian cress, and olive leaves extract to soothe, revitalize, and improve skin appearance. This vegan, dermatologically tested formula is EWG Verified for clean ingredients and full transparency, providing a high-performance, nourishing solution for moisturizing dry skin.",
"ai_target_audiences": [
"Eco-conscious skincare users",
"Vegan beauty product buyers",
"Dry skin sufferers",
"Natural ingredient seekers",
"Sensitive skin caretakers",
"Health-focused consumers",
"Cruelty-free product supporters"
]
},
"credits_used": 1
}
```
> ⚠️ Save the `id` — you'll need it to generate the video.
***
## ✏️ Step 2: (Optional) Update the Link
Improve video quality by refining metadata.
### Why Update?
* Add a **logo** for better branding and a CTA
* Remove **low-quality** images/videos
* Enhance or rewrite the **description** for clarity
* Highlight specific **features or offers**
```bash Request theme={null}
curl --request PUT \
--url https://api.creatify.ai/api/links/{id}/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"title": "Your Custom Title",
"description": "Highlight key features or promo messages.",
"image_urls": ["https://example.com/image.jpg"],
"video_urls": ["https://example.com/video.mp4"],
"logo_url": "https://example.com/logo.png"
}'
```
***
## 🎮 Step 3: Create a Video from Link
### 🛠️ Customization Options
Refer to the [URL to Video API reference](/api-reference/link_to_videos/post-apilink_to_videos) for all enum values.
> ⚠️ Costs 4 credits per 30s.
### 📄 Request
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/api/link_to_videos/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"link": "fb6ef50f-3c84-42a0-8b4b-55fb0a162808",
"visual_style": "DynamicProductTemplate",
"script_style": "DontWorryWriter",
"aspect_ratio": "9x16",
"video_length": 15,
"language": "en",
"target_audience": "marketing experts who believe in AI",
"target_platform": "Tiktok",
"model_version": "aurora_v1_fast"
}'
```
```json Example Response [expandable] theme={null}
{
"id": "81123b51-aa76-467e-a6c4-0e5ca719a932",
"name": null,
"target_platform": "Tiktok",
"target_audience": "marketing experts who believe in AI",
"language": "en",
"video_length": 15,
"aspect_ratio": "9x16",
"script_style": "DontWorryWriter",
"visual_style": "DynamicProductTemplate",
"override_avatar": null,
"override_voice": null,
"override_script": null,
"background_music_url": null,
"background_music_volume": null,
"voiceover_volume": null,
"webhook_url": null,
"link": "fb6ef50f-3c84-42a0-8b4b-55fb0a162808",
"media_job": null,
"status": "pending",
"failed_reason": null,
"is_hidden": false,
"video_output": null,
"video_thumbnail": null,
"credits_used": 0,
"progress": 0,
"no_background_music": false,
"no_caption": false,
"no_emotion": false,
"no_cta": false,
"no_stock_broll": false,
"preview": null,
"previews": [],
"caption_style": null,
"caption_offset_x": null,
"caption_offset_y": null,
"caption_setting": null
}
```
> ⏳ Video status starts as `pending`. You’ll will use the id (81123b51-aa76-467e-a6c4-0e5ca719a932 in this example) to check progress.
***
## 📡 Step 4: Check Video Status
Use this endpoint to check if the video is ready and retrieve the final output.
```bash Example Request theme={null}
curl --request GET \
--url https://api.creatify.ai/api/link_to_videos/81123b51-aa76-467e-a6c4-0e5ca719a932/ \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key'
```
```json Example Response [expandable] theme={null}
{
"id": "81123b51-aa76-467e-a6c4-0e5ca719a932",
"name": null,
"target_platform": "Tiktok",
"target_audience": "marketing experts who believe in AI",
"language": "en",
"video_length": 15.0,
"aspect_ratio": "9x16",
"script_style": "DontWorryWriter",
"visual_style": "DynamicProductTemplate",
"override_avatar": null,
"override_voice": null,
"override_script": null,
"background_music_url": null,
"background_music_volume": null,
"voiceover_volume": null,
"webhook_url": null,
"link": "fb6ef50f-3c84-42a0-8b4b-55fb0a162808",
"media_job": "2b601ae6-ef8e-42f9-add3-8fccd6aa6a0d",
"status": "done",
"failed_reason": null,
"is_hidden": false,
"video_output": "https://s3.us-west-2.amazonaws.com/remotionlambda-uswest2-30tewi8y5c/renders/sqa7ihy9pb/output.mp4",
"video_thumbnail": "https://dpbavq092lwjh.cloudfront.net/amzptv/2b601ae6-ef8e-42f9-add3-8fccd6aa6a0d-1747848597/thumbnail.jpg",
"credits_used": 5,
"progress": 1,
"no_background_music": false,
"no_caption": false,
"no_emotion": false,
"no_cta": false,
"no_stock_broll": false,
"preview": "https://app.creatify.ai/preview?layout=videos/20250521/3da0bb41-9278-4483-87d5-c26b4198b670.json",
"previews": [],
"caption_style": null,
"caption_offset_x": null,
"caption_offset_y": null,
"caption_setting": null,
"visual_styles": [],
"aspect_ratios": []
}
```
> ⏳ You will find the status to be `done` when finished. Meanwhile you can find the video output in `video_output` field.
***
## 🎯 Summary
| Step | Endpoint |
| - | - |
| Create Link | `POST /api/links/` |
| Update Link | `PUT /api/links/{id}/` |
| Create Video | `POST /api/link_to_videos/` |
| Check Video | `GET /api/link_to_videos/{id}/` |
| API Reference | [Link-to-Video Reference](/api-reference/link_to_videos/post-apilink_to_videos) |
***
## 🤝 Need Help?
If you run into any issues, check out our [API Reference](/api-reference) or contact [api@creatify.ai](mailto:api@creatify.ai).
# Generate Previews and Render Video
Source: https://docs.creatify.ai/api-documentation/url-to-video/preview-list
This document explains how to use Creatify API to **generate a list of preview videos** asynchronously and then **render a final video** from one of those previews.
## 🚀 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/](/api-reference/link_to_videos/post-apilink_to_videos_preview_list_aysnc)
### 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.
```bash Example Request [expandable] theme={null}
curl --request POST \
--url https://api.creatify.ai/api/link_to_videos/preview_list_async/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: ' \
--header 'X-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",
"model_version": "aurora_v1_fast",
"webhook_url": "https://webhook.site/d94ac4fd-2384-4c21-b35d-2feb4f698cbc"
}'
```
```json Example Response [expandable] theme={null}
{
"id": "20b5d452-89f4-4245-9480-10defaa8fb4d",
"name": null,
"target_platform": "Instagram",
"target_audience": "Young Adults",
"language": "en",
"video_length": 30.0,
"aspect_ratio": "9x16",
"script_style": "DIY",
"override_avatar": null,
"override_voice": null,
"override_script": null,
"background_music_url": null,
"background_music_volume": null,
"voiceover_volume": null,
"webhook_url": "https://webhook.site/d94ac4fd-2384-4c21-b35d-2feb4f698cbc",
"link": "1d28aebc-3c23-43f7-8ce1-f5e522387ab4",
"media_job": null,
"status": "pending",
"failed_reason": null,
"is_hidden": false,
"video_output": null,
"video_thumbnail": null,
"credits_used": 0,
"progress": 0,
"no_background_music": false,
"no_caption": false,
"no_emotion": false,
"no_cta": false,
"no_stock_broll": false,
"preview": null,
"previews": [],
"caption_style": null,
"caption_offset_x": null,
"caption_offset_y": null,
"caption_setting": null,
"visual_styles": [
"GreenScreenEffectTemplate",
"SimpleAvatarOverlayTemplate",
"DynamicProductTemplate",
"FullScreenTemplate",
"QuickTransitionTemplate",
"EnhancedVanillaTemplate",
"DynamicGreenScreenEffect",
"FeatureHighlightTemplate",
"AvatarBubbleTemplate"
],
"aspect_ratios": []
}
```
***
## ✏️ 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:
```json [expandable] theme={null}
{
"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:
```bash Example Request theme={null}
curl --request GET \
--url https://api.creatify.ai/api/link_to_videos/20b5d452-89f4-4245-9480-10defaa8fb4d/ \
--header 'X-API-ID: ' \
--header 'X-API-KEY: '
```
```json Example Response [expandable] theme={null}
{
"id": "20b5d452-89f4-4245-9480-10defaa8fb4d",
"name": null,
"target_platform": "Instagram",
"target_audience": "Young Adults",
"language": "en",
"video_length": 30.0,
"aspect_ratio": "9x16",
"script_style": "DIY",
"visual_style": "GreenScreenEffectTemplate",
"override_avatar": null,
"override_voice": null,
"override_script": null,
"background_music_url": null,
"background_music_volume": null,
"voiceover_volume": null,
"webhook_url": "https://webhook.site/d94ac4fd-2384-4c21-b35d-2feb4f698cbc",
"link": "1d28aebc-3c23-43f7-8ce1-f5e522387ab4",
"media_job": null,
"status": "pending",
"failed_reason": null,
"is_hidden": false,
"video_output": null,
"video_thumbnail": null,
"credits_used": 1,
"progress": 0,
"no_background_music": false,
"no_caption": false,
"no_emotion": false,
"no_cta": false,
"no_stock_broll": false,
"preview": null,
"previews": [
{
"media_job": "43e2b17c-e272-453a-96d4-c047acd2ab0e",
"visual_style": "FullScreenTemplate",
"aspect_ratio": "9x16",
"url": "https://app.creatify.ai/preview?layout=videos/20250521/bdc461ad-cc18-449c-b4b2-43cc12db0013.json"
},
{
"media_job": "cd08733a-5067-4643-9237-346998c5849c",
"visual_style": "EnhancedVanillaTemplate",
"aspect_ratio": "9x16",
"url": "https://app.creatify.ai/preview?layout=videos/20250521/5ce154f9-6954-4c58-bc17-e33bb077e2f5.json"
},
{
"media_job": "02cdc0a9-17dc-44dc-9560-e8fd0b2f78a1",
"visual_style": "FeatureHighlightTemplate",
"aspect_ratio": "9x16",
"url": "https://app.creatify.ai/preview?layout=videos/20250521/c3341e4a-531d-48f1-b426-87e45f0badd2.json"
},
{
"media_job": "8323b4bc-d5c3-4976-9e04-f86c0cea7ee8",
"visual_style": "SimpleAvatarOverlayTemplate",
"aspect_ratio": "9x16",
"url": "https://app.creatify.ai/preview?layout=videos/20250521/61b40cc5-2cfb-4afb-81fe-0698ad796eb4.json"
},
{
"media_job": "50036921-ffbe-4b3f-ad1d-ef367847db7d",
"visual_style": "QuickTransitionTemplate",
"aspect_ratio": "9x16",
"url": "https://app.creatify.ai/preview?layout=videos/20250521/ae100137-e12f-4f0f-86d9-4b54e041ac4d.json"
},
{
"media_job": "188f92ac-6281-41e5-ac4b-94d0af4b2493",
"visual_style": "GreenScreenEffectTemplate",
"aspect_ratio": "9x16",
"url": "https://app.creatify.ai/preview?layout=videos/20250521/13cda7fd-e54f-44d3-acc3-5cc6c34beba7.json"
},
{
"media_job": "198080fa-6369-4724-829f-2e57bb8538b8",
"visual_style": "DynamicProductTemplate",
"aspect_ratio": "9x16",
"url": "https://app.creatify.ai/preview?layout=videos/20250521/41601095-6549-4898-89ab-b62879dbf88d.json"
},
{
"media_job": "0c6a5fda-e58a-442c-9681-a431b6195203",
"visual_style": "DynamicGreenScreenEffect",
"aspect_ratio": "9x16",
"url": "https://app.creatify.ai/preview?layout=videos/20250521/1f39ca8e-bdf8-4423-81c1-1629fcaeabbd.json"
},
{
"media_job": "d2110d2d-b2b5-4f0a-99dd-7d0ee07b8b13",
"visual_style": "AvatarBubbleTemplate",
"aspect_ratio": "9x16",
"url": "https://app.creatify.ai/preview?layout=videos/20250521/a67532d0-0764-40c3-b1f4-36d645b935f5.json"
}
],
"caption_style": null,
"caption_offset_x": null,
"caption_offset_y": null,
"caption_setting": null,
"visual_styles": [
"GreenScreenEffectTemplate",
"SimpleAvatarOverlayTemplate",
"DynamicProductTemplate",
"FullScreenTemplate",
"QuickTransitionTemplate",
"EnhancedVanillaTemplate",
"DynamicGreenScreenEffect",
"FeatureHighlightTemplate",
"AvatarBubbleTemplate"
],
"aspect_ratios": []
}
```
> ℹ️ You can **embed** the preview URLs using `