# 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/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 [Authentication](/api-reference/authentication))
***
## 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/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/iab-images/iab-images
API that generates IAB-compliant advertising banner images in multiple standard sizes from a single input image.
## 🚀 Introduction
The **Image Ad API** allows you to generate **IAB-compliant advertising banner images**
from a single input image. The API automatically produces multiple standard banner sizes
suitable for display and mobile ad placements.
This endpoint is ideal for creating ready-to-use ad creatives that comply with
industry-standard IAB specifications, without manual resizing or design work.
***
## ⚙️ 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 Image Generation Request
Use this endpoint to generate IAB-compliant advertising banner images from a single input image.
[`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 image generation ID. Save it to check status.
***
## ⏳ Step 2: Check IAB Image Generation Status
You can monitor the image generation progress by **polling the status endpoint** using the returned ID until the status changes to `done`.
[`GET /api/iab_images/`](/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 generated banners from the `outptut` 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
Generating IAB images 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/inspiration/inspiration
Endpoints for retriving Inspirations and creating Inspiration Jobs with discoverable input schemas.
## 🚀 Introduction
The **AI Ad Template API** provides a simple interface to explore available **inspirations**, inspect their **input parameter schemas**, and create **inspiration jobs** that generate assets using those inspirations.
1. First, list available inspirations and their **JSON schemas**.
2. Then create an **inspiration job** and **poll or use a webhook** to retrieve the result.
***
## ✅ Prerequisites
* A **Creatify account** with API access
* Your **API credentials** (see [Authentication](/api-reference/authentication))
***
## 1) Discover Inspirations & Input Schemas
Use this endpoint to list all available **inspirations** and view the **JSON schema** for their `input_params`.
**Endpoint:** [GET /api/inspirations/](/api-reference/inspiration/get-inspirations)
```bash Example Request theme={null}
curl --request GET \
--url "https://api.creatify.ai/api/inspirations/" \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key'
```
```json Example Response [expandable] theme={null}
[
{
"id": "d749750d-4102-400d-949d-8e701bd0a800",
"name": "Luxurious Jewelry",
"description": "An image turning your jewelry into a luxurious jewelry shot.",
"gen_type": "image",
"input_params_schema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"Product Image": {
"type": "string",
"title": "Product Image",
"format": "uri",
"default": "https://v3b.fal.media/files/b/rabbit/p5uJwVMfOP7YriRl190xZ.jpg"
}
},
"required": [
"Product Image"
]
},
"preview_image": "https://d35ghwdno3nak3.cloudfront.net/community_creation/d749750d-4102-400d-949d-8e701bd0a800/preview_image_pacjBpkmhdxdCioG4glOM.jpg",
"preview_video": null,
"credit_cost": 1,
"categories": [
"IMAGE ADS"
],
"labels": [
"Apparel & Acc"
]
}
]
```
> **Notes**
>
> * `input_params_schema` is the schema of the input\_params for each inspiration.
***
## 2) Create an Inspiration Job
Submit the `inspiration_id` (inspiration ID) and `input_params` to start a new job.\
Optional: add a `webhook_url` to receive automatic notifications.
**Endpoint:** [POST /api/inspiration\_jobs/](/api-reference/inspiration/post-inspiration-job)
**Body:**
* `inspiration_id` (string, required)
* `input_params` (json, required — must match the input\_params\_schema)
* `webhook_url` (string URL, optional)
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/api/inspiration_jobs/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"inspiration_id": "d749750d-4102-400d-949d-8e701bd0a800",
"input_params": {
"Product Image": "https://d35ghwdno3nak3.cloudfront.net/images/d6ba29c096ae40a9ca7a78ff135b5efd56d990278ae58a6f825caa3942c3c12a.jpg"
},
"webhook_url": "https://webhook.site/c424cab8-8ed2-46d6-9b04-d1290ca04276"
}'
```
```json Example Response theme={null}
{
"id": "7c79daa6-db68-4d81-9ad7-2a88f866d6f6",
"inspiration_id": "d749750d-4102-400d-949d-8e701bd0a800",
"gen_type": "image",
"status": "in_queue",
"failed_reason": "",
"input_params": {},
"webhook_url": "https://webhook.site/c424cab8-8ed2-46d6-9b04-d1290ca04276",
"output": null,
"created_at": "2025-11-26T02:48:18.812765-08:00",
"updated_at": "2025-11-26T02:48:18.812799-08:00"
}
```
***
## 3) Check Job Status (Poll) or Receive Webhook
Poll the job by its ID until status becomes `done`, or use the webhook to receive the final result automatically.
**Endpoint:** [`GET /api/inspiration_jobs/{id}/`](/api-reference/inspiration/get-inspiration-job)
### Polling Example
```bash Example Request theme={null}
curl --request GET \
--url https://api.creatify.ai/api/inspiration_jobs/7c79daa6-db68-4d81-9ad7-2a88f866d6f6/ \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key'
```
```json Example Response theme={null}
{
"id": "7c79daa6-db68-4d81-9ad7-2a88f866d6f6",
"inspiration_id": "d749750d-4102-400d-949d-8e701bd0a800",
"gen_type": "image",
"status": "done",
"failed_reason": "",
"input_params": {},
"webhook_url": "https://webhook.site/c424cab8-8ed2-46d6-9b04-d1290ca04276",
"output": "https://v3b.fal.media/files/b/zebra/5wm4Y12i3eOf1zobSnbGd.jpg",
"created_at": "2025-11-26T02:48:18.812765-08:00",
"updated_at": "2025-11-26T02:48:18.812799-08:00"
}
```
### Webhook Example
If you provided `webhook_url`, Creatify sends:
```json theme={null}
{
"id": "7c79daa6-db68-4d81-9ad7-2a88f866d6f6",
"status": "done",
"failed_reason": "",
"output": "https://v3b.fal.media/files/b/zebra/5wm4Y12i3eOf1zobSnbGd.jpg"
}
```
> You can verify the job anytime via a GET request to `/api/inspiration_jobs/{id}/`.
***
## 📚 Endpoint Reference
| Action | Endpoint |
| ----------------------------- | --------------------------------- |
| List inspirations & schemas | `GET /api/inspirations/` |
| Create an inspiration job | `POST /api/inspiration_jobs/` |
| Check job status / get result | `GET /api/inspiration_jobs/{id}/` |
***
## 🎯 Summary
| Step | What you do |
| ---- | ------------------------------------------------------------------------------------- |
| 1 | List **inspirations** and view their **input schema** |
| 2 | Create an **inspiration job** with `inspiration_id` + `input_params` |
| 3 | **Poll** `/api/inspiration_jobs/{id}/` or receive a **webhook** with the final result |
# 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-generator/text-generator
Generate text with Gemini models — supports synchronous, asynchronous, and streaming modes. Send messages and get the result directly, poll / receive a webhook, or stream tokens in real time via SSE.
## 🚀 Introduction
The **Text Generator API** lets you run **text generation** with Gemini models.
It supports three modes:
* **Sync mode** (`sync: true`): The request blocks until generation completes and returns the result directly.
* **Async mode** (default): The request returns immediately with a `pending` status. Poll or receive a webhook when the result is ready.
* **Streaming mode** (SSE): Tokens are streamed back in real time via Server-Sent Events.
***
## ✅ Prerequisites
* A Creatify account with **API access**
* Your **API credentials** (see [Authentication](/api-reference/authentication))
***
## Supported Models
| Model Name |
| ------------------------------- |
| `gemini-2.5-flash` |
| `gemini-2.5-pro` |
| `gemini-3-flash-preview` |
| `gemini-3.1-pro-preview` |
| `gemini-3.1-flash-lite-preview` |
***
## 1) Create a Text Generation Task
Send `model_name`, `messages`, and optional parameters like `system_instruction`, `config`, and `webhook_url`.
**Endpoint:** [POST /sse/text\_generator/](/api-reference/text-generator/post-text-generator-hp)
**Body:**
* `model_name` (string, required) — Name of the Gemini model (e.g. `gemini-2.5-flash`)
* `messages` (array, required) — List of message objects with `role` (`user` or `model`) and `content`
* `system_instruction` (string, optional) — System instruction for the model
* `config` (object, optional) — Generation config parameters (temperature, max\_output\_tokens, etc.)
* `webhook_url` (string URL, optional) — Webhook URL for async status updates
* `sync` (boolean, optional, default: `false`) — If `true`, the request blocks until generation completes and returns the result directly
### Async Mode (default)
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/sse/text_generator/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"model_name": "gemini-2.5-flash",
"messages": [
{"role": "user", "content": "Write a short tagline for an AI video tool."}
],
"system_instruction": "You are a creative marketing copywriter.",
"config": {
"temperature": 0.8,
"max_output_tokens": 256
},
"webhook_url": "https://webhook.site/your-webhook-id"
}'
```
```json Example Response theme={null}
{
"id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"model_name": "gemini-2.5-flash",
"messages": [
{"role": "user", "content": "Write a short tagline for an AI video tool."}
],
"system_instruction": "You are a creative marketing copywriter.",
"config": {
"temperature": 0.8,
"max_output_tokens": 256
},
"status": "pending",
"response_text": "",
"response_function_calls": [],
"failed_reason": "",
"credits_used": 0,
"created_at": "2026-03-19T10:00:00.000000-08:00",
"updated_at": "2026-03-19T10:00:00.000000-08:00"
}
```
### Sync Mode
Set `"sync": true` to block until generation completes. The response will contain the final result directly — no polling or webhook needed.
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/sse/text_generator/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"model_name": "gemini-2.5-flash",
"messages": [
{"role": "user", "content": "Write a short tagline for an AI video tool."}
],
"system_instruction": "You are a creative marketing copywriter.",
"config": {
"temperature": 0.8,
"max_output_tokens": 256
},
"sync": true
}'
```
```json Example Response theme={null}
{
"id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"model_name": "gemini-2.5-flash",
"messages": [
{"role": "user", "content": "Write a short tagline for an AI video tool."}
],
"system_instruction": "You are a creative marketing copywriter.",
"config": {
"temperature": 0.8,
"max_output_tokens": 256
},
"status": "done",
"response_text": "Create stunning videos in seconds — powered by AI.",
"response_function_calls": [],
"failed_reason": "",
"credits_used": 0.0005,
"created_at": "2026-03-19T10:00:00.000000-08:00",
"updated_at": "2026-03-19T10:00:02.500000-08:00"
}
```
### Config Parameters
| Parameter | Type | Description |
| ---------------------- | --------- | ------------------------------------------------------------------------------------------------- |
| `temperature` | float | Controls randomness. Range: 0.0 – 2.0. Lower = more deterministic. |
| `max_output_tokens` | int | Maximum number of tokens to generate. |
| `top_p` | float | Nucleus sampling threshold. Range: 0.0 – 1.0. |
| `top_k` | int | Top-k sampling. Only sample from top k tokens. |
| `presence_penalty` | float | Penalize tokens already present. Range: -2.0 – 2.0. |
| `frequency_penalty` | float | Penalize tokens by frequency. Range: -2.0 – 2.0. |
| `seed` | int | Random seed for deterministic generation. |
| `stop_sequences` | string\[] | List of strings that stop generation when encountered. |
| `response_mime_type` | string | `text/plain` or `application/json`. |
| `response_json_schema` | object | JSON Schema for structured output. Automatically sets `response_mime_type` to `application/json`. |
***
### Multimodal Input (Image / Video)
Messages support multimodal content — send images or videos alongside text by providing a list of content parts. Each part specifies a `type` (`text`, `image`, or `video`) with the corresponding data.
**Limits:** Images up to **20 MB**, videos up to **100 MB**.
Multimodal requests — especially with video — can take significantly longer to process. We recommend using **async mode** (default) with polling or a webhook, rather than sync mode.
**Supported MIME types:**
* Image: `image/jpeg`, `image/png`, `image/gif`, `image/webp`
* Video: `video/mp4`, `video/mpeg`, `video/mov`, `video/avi`, `video/webm`, `video/quicktime`, and more
```bash Example Request (Image) theme={null}
curl --request POST \
--url https://api.creatify.ai/sse/text_generator/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"model_name": "gemini-2.5-flash",
"messages": [
{
"role": "user",
"content": [
{"type": "image", "data": "", "mime_type": "image/jpeg"},
{"type": "text", "text": "Describe what you see in this image."}
]
}
],
"webhook_url": "https://webhook.site/your-webhook-id"
}'
```
```bash Example Request (Video) theme={null}
curl --request POST \
--url https://api.creatify.ai/sse/text_generator/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"model_name": "gemini-2.5-flash",
"messages": [
{
"role": "user",
"content": [
{"type": "video", "data": "", "mime_type": "video/mp4"},
{"type": "text", "text": "Summarize this video in 3 bullet points."}
]
}
],
"webhook_url": "https://webhook.site/your-webhook-id"
}'
```
```json Example Response theme={null}
{
"id": "b2c3d4e5-6789-01bc-defg-234567890abc",
"model_name": "gemini-2.5-flash",
"status": "pending",
"response_text": "",
"response_function_calls": [],
"credits_used": 0,
"created_at": "2026-03-19T10:00:00.000000-08:00",
"updated_at": "2026-03-19T10:00:00.000000-08:00"
}
```
### Function Calling
Enable the model to call functions you define. Provide `tools` with function declarations and optionally configure calling behavior with `tool_config`.
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/sse/text_generator/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"model_name": "gemini-2.5-flash",
"messages": [
{"role": "user", "content": "What is the weather in San Francisco?"}
],
"tools": [
{
"function_declarations": [
{
"name": "get_weather",
"description": "Get the current weather for a given location.",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "City name"}
},
"required": ["location"]
}
}
]
}
],
"tool_config": {
"function_calling_config": {
"mode": "AUTO"
}
},
"sync": true
}'
```
```json Example Response (function call) theme={null}
{
"id": "c3d4e5f6-7890-12cd-efgh-345678901bcd",
"model_name": "gemini-2.5-flash",
"status": "done",
"response_text": "",
"response_function_calls": [
{
"name": "get_weather",
"args": {"location": "San Francisco"}
}
],
"credits_used": 0.001,
"created_at": "2026-03-19T10:00:00.000000-08:00",
"updated_at": "2026-03-19T10:00:01.500000-08:00"
}
```
After receiving a function call, you can send the result back in a follow-up message:
```bash Example Request (Function Response) theme={null}
curl --request POST \
--url https://api.creatify.ai/sse/text_generator/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"model_name": "gemini-2.5-flash",
"messages": [
{"role": "user", "content": "What is the weather in San Francisco?"},
{"role": "model", "function_call": {"name": "get_weather", "args": {"location": "San Francisco"}}},
{"role": "user", "function_response": {"name": "get_weather", "response": {"temperature": 62, "condition": "Foggy"}}}
],
"tools": [
{
"function_declarations": [
{
"name": "get_weather",
"description": "Get the current weather for a given location.",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "City name"}
},
"required": ["location"]
}
}
]
}
],
"sync": true
}'
```
```json Example Response theme={null}
{
"id": "d4e5f6a7-8901-23de-fghi-456789012cde",
"model_name": "gemini-2.5-flash",
"status": "done",
"response_text": "The weather in San Francisco is currently 62°F and foggy.",
"response_function_calls": [],
"credits_used": 0.001,
"created_at": "2026-03-19T10:00:00.000000-08:00",
"updated_at": "2026-03-19T10:00:01.500000-08:00"
}
```
**Function calling modes:**
| Mode | Description |
| ------ | ----------------------------------------------------------------------- |
| `AUTO` | Model decides whether to call a function or respond with text (default) |
| `ANY` | Model must call one of the provided functions |
| `NONE` | Model will not call any functions |
***
## 2) Streaming Mode (SSE)
For real-time token streaming, use the dedicated SSE endpoint. Tokens are delivered as they are generated — no polling needed.
**Endpoint:** [POST /sse/text\_generator/stream/](/api-reference/text-generator/post-text-generator-streaming)
The request body is the same as the standard endpoint (minus `sync` and `webhook_url`). The response is an SSE stream (`text/event-stream`) of Gemini-native response chunks. The final chunk includes a `creatify` object with the generation `id` and `credits_used`.
```bash Example Request theme={null}
curl --request POST \
--url https://api.creatify.ai/sse/text_generator/stream/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key' \
--data '{
"model_name": "gemini-2.5-flash",
"messages": [
{"role": "user", "content": "Write a short tagline for an AI video tool."}
],
"config": {
"temperature": 0.8,
"max_output_tokens": 256
}
}'
```
```text Example Response (SSE stream) theme={null}
data: {"candidates":[{"content":{"parts":[{"text":"Create"}],"role":"model"}}],"model_version":"gemini-2.5-flash"}
data: {"candidates":[{"content":{"parts":[{"text":" stunning videos"}],"role":"model"}}],"model_version":"gemini-2.5-flash"}
data: {"candidates":[{"content":{"parts":[{"text":" in seconds."}],"role":"model"},"finish_reason":"STOP"}],"usage_metadata":{"prompt_token_count":12,"candidates_token_count":8,"total_token_count":20},"model_version":"gemini-2.5-flash","creatify":{"id":"a1b2c3d4-5678-90ab-cdef-1234567890ab","credits_used":0.0005}}
```
The streaming endpoint uses the same authentication (X-API-KEY + X-API-ID) and credit system as the standard endpoint.
***
## 3) Check Status (Poll) or Receive Webhook (Async mode only)
When using async mode (default), you can **poll** the task until `status` is `done`, or provide a **webhook** to be notified automatically. The generated text is in the `response_text` field.
> If you used `"sync": true`, skip this step — the response already contains the completed result.
**Endpoint:** `GET /sse/text_generator/{id}/`
### Poll
```bash Example Request theme={null}
curl --request GET \
--url https://api.creatify.ai/sse/text_generator/a1b2c3d4-5678-90ab-cdef-1234567890ab/ \
--header 'X-API-ID: your-api-id' \
--header 'X-API-KEY: your-api-key'
```
```json Example Response theme={null}
{
"id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"model_name": "gemini-2.5-flash",
"messages": [
{"role": "user", "content": "Write a short tagline for an AI video tool."}
],
"system_instruction": "You are a creative marketing copywriter.",
"config": {
"temperature": 0.8,
"max_output_tokens": 256
},
"status": "done",
"response_text": "Create stunning videos in seconds — powered by AI.",
"response_function_calls": [],
"failed_reason": "",
"credits_used": 0.0005,
"created_at": "2026-03-19T10:00:00.000000-08:00",
"updated_at": "2026-03-19T10:00:02.500000-08:00"
}
```
### Webhook (Optional)
If you supplied a `webhook_url` when creating the task, we'll POST a payload when it finishes. The generated text is in the `response_text` field.
```json theme={null}
{
"id": "a1b2c3d4-5678-90ab-cdef-1234567890ab",
"status": "done",
"response_text": "Create stunning videos in seconds — powered by AI.",
"response_function_calls": [],
"failed_reason": "",
"credits_used": 0.0005
}
```
> You can verify the task any time with a GET to `/sse/text_generator/{id}/`.
***
## Status Values
| Status | Description |
| --------- | ------------------------------------------- |
| `pending` | Task created, waiting to be processed |
| `running` | Model is generating text |
| `done` | Generation complete — check `response_text` |
| `failed` | Generation failed — check `failed_reason` |
***
## 📚 Endpoint Reference
| Action | Endpoint |
| ----------------------------------------- | ---------------------------------- |
| Create a text generation task | `POST /sse/text_generator/` |
| Create a text generation task (streaming) | `POST /sse/text_generator/stream/` |
| List text generation tasks | `GET /sse/text_generator/` |
| Get task status / result | `GET /sse/text_generator/{id}/` |
***
## 🎯 Summary
| Step | What you do |
| ---- | -------------------------------------------------------------------------------------------------------------------------------- |
| 1 | Create a **text generation** task with `model_name` + `messages` (+ optional `config`, `sync`, `webhook_url`) |
| 2a | **Sync mode** (`sync: true`): Result is returned directly in the response — done! |
| 2b | **Async mode** (default): **Poll** `/sse/text_generator/{id}/` or receive a **webhook** with the final result in `response_text` |
| 2c | **Streaming mode**: POST to `/sse/text_generator/stream/` and consume the SSE stream in real time |
# 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 `