curl --request POST \
--url https://api.creatify.ai/api/aurora/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: <api-key>' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"audio": "<string>",
"image": "<string>",
"name": "<string>",
"text_prompt": "<string>",
"prompt_guidance_scale": 1,
"model_version": "aurora_v1",
"ttl_days": 4,
"output_upload_url": "<string>",
"webhook_url": "<string>"
}
'import requests
url = "https://api.creatify.ai/api/aurora/"
payload = {
"audio": "<string>",
"image": "<string>",
"name": "<string>",
"text_prompt": "<string>",
"prompt_guidance_scale": 1,
"model_version": "aurora_v1",
"ttl_days": 4,
"output_upload_url": "<string>",
"webhook_url": "<string>"
}
headers = {
"X-API-ID": "<api-key>",
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-API-ID': '<api-key>',
'X-API-KEY': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
audio: '<string>',
image: '<string>',
name: '<string>',
text_prompt: '<string>',
prompt_guidance_scale: 1,
model_version: 'aurora_v1',
ttl_days: 4,
output_upload_url: '<string>',
webhook_url: '<string>'
})
};
fetch('https://api.creatify.ai/api/aurora/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.creatify.ai/api/aurora/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'audio' => '<string>',
'image' => '<string>',
'name' => '<string>',
'text_prompt' => '<string>',
'prompt_guidance_scale' => 1,
'model_version' => 'aurora_v1',
'ttl_days' => 4,
'output_upload_url' => '<string>',
'webhook_url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-ID: <api-key>",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.creatify.ai/api/aurora/"
payload := strings.NewReader("{\n \"audio\": \"<string>\",\n \"image\": \"<string>\",\n \"name\": \"<string>\",\n \"text_prompt\": \"<string>\",\n \"prompt_guidance_scale\": 1,\n \"model_version\": \"aurora_v1\",\n \"ttl_days\": 4,\n \"output_upload_url\": \"<string>\",\n \"webhook_url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-ID", "<api-key>")
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.creatify.ai/api/aurora/")
.header("X-API-ID", "<api-key>")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"audio\": \"<string>\",\n \"image\": \"<string>\",\n \"name\": \"<string>\",\n \"text_prompt\": \"<string>\",\n \"prompt_guidance_scale\": 1,\n \"model_version\": \"aurora_v1\",\n \"ttl_days\": 4,\n \"output_upload_url\": \"<string>\",\n \"webhook_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.creatify.ai/api/aurora/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-ID"] = '<api-key>'
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"audio\": \"<string>\",\n \"image\": \"<string>\",\n \"name\": \"<string>\",\n \"text_prompt\": \"<string>\",\n \"prompt_guidance_scale\": 1,\n \"model_version\": \"aurora_v1\",\n \"ttl_days\": 4,\n \"output_upload_url\": \"<string>\",\n \"webhook_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"audio": "<string>",
"image": "<string>",
"expires_at": "<string>",
"video_output": "<string>",
"credits_used": 123,
"duration": 123,
"progress": 123,
"failed_reason": "<string>",
"media_job": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"is_hidden": true,
"preview": "<string>",
"editor_url": "<string>",
"name": "<string>",
"text_prompt": "<string>",
"prompt_guidance_scale": 1,
"model_version": "aurora_v1",
"resolution": "480p",
"ttl_days": 4,
"webhook_url": "<string>"
}Create an Aurora task
With Aurora, you only need one photo (real or AI-generated) and an audio clip (speech or song) to create a lifelike talking-head video where the avatar blinks, speaks, gestures, and emotes as if it were real. Choose aurora_v1 (Aurora 1.0), aurora_v1_fast (Aurora 1.0 Fast) or aurora_v2 (Aurora 2.0) with model_version; prices and limits are on the Aurora overview page.
curl --request POST \
--url https://api.creatify.ai/api/aurora/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: <api-key>' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"audio": "<string>",
"image": "<string>",
"name": "<string>",
"text_prompt": "<string>",
"prompt_guidance_scale": 1,
"model_version": "aurora_v1",
"ttl_days": 4,
"output_upload_url": "<string>",
"webhook_url": "<string>"
}
'import requests
url = "https://api.creatify.ai/api/aurora/"
payload = {
"audio": "<string>",
"image": "<string>",
"name": "<string>",
"text_prompt": "<string>",
"prompt_guidance_scale": 1,
"model_version": "aurora_v1",
"ttl_days": 4,
"output_upload_url": "<string>",
"webhook_url": "<string>"
}
headers = {
"X-API-ID": "<api-key>",
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-API-ID': '<api-key>',
'X-API-KEY': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
audio: '<string>',
image: '<string>',
name: '<string>',
text_prompt: '<string>',
prompt_guidance_scale: 1,
model_version: 'aurora_v1',
ttl_days: 4,
output_upload_url: '<string>',
webhook_url: '<string>'
})
};
fetch('https://api.creatify.ai/api/aurora/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.creatify.ai/api/aurora/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'audio' => '<string>',
'image' => '<string>',
'name' => '<string>',
'text_prompt' => '<string>',
'prompt_guidance_scale' => 1,
'model_version' => 'aurora_v1',
'ttl_days' => 4,
'output_upload_url' => '<string>',
'webhook_url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-ID: <api-key>",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.creatify.ai/api/aurora/"
payload := strings.NewReader("{\n \"audio\": \"<string>\",\n \"image\": \"<string>\",\n \"name\": \"<string>\",\n \"text_prompt\": \"<string>\",\n \"prompt_guidance_scale\": 1,\n \"model_version\": \"aurora_v1\",\n \"ttl_days\": 4,\n \"output_upload_url\": \"<string>\",\n \"webhook_url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-ID", "<api-key>")
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.creatify.ai/api/aurora/")
.header("X-API-ID", "<api-key>")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"audio\": \"<string>\",\n \"image\": \"<string>\",\n \"name\": \"<string>\",\n \"text_prompt\": \"<string>\",\n \"prompt_guidance_scale\": 1,\n \"model_version\": \"aurora_v1\",\n \"ttl_days\": 4,\n \"output_upload_url\": \"<string>\",\n \"webhook_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.creatify.ai/api/aurora/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-ID"] = '<api-key>'
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"audio\": \"<string>\",\n \"image\": \"<string>\",\n \"name\": \"<string>\",\n \"text_prompt\": \"<string>\",\n \"prompt_guidance_scale\": 1,\n \"model_version\": \"aurora_v1\",\n \"ttl_days\": 4,\n \"output_upload_url\": \"<string>\",\n \"webhook_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"audio": "<string>",
"image": "<string>",
"expires_at": "<string>",
"video_output": "<string>",
"credits_used": 123,
"duration": 123,
"progress": 123,
"failed_reason": "<string>",
"media_job": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"is_hidden": true,
"preview": "<string>",
"editor_url": "<string>",
"name": "<string>",
"text_prompt": "<string>",
"prompt_guidance_scale": 1,
"model_version": "aurora_v1",
"resolution": "480p",
"ttl_days": 4,
"webhook_url": "<string>"
}Authorizations
Body
Optional text prompt describing the desired visual style, atmosphere, or scene composition for the video. This can include details such as camera angles, lighting, mood, environment, subject expression, pose, motion, and other cinematic or artistic elements to guide video generation.
Aurora model version to use for video generation. Default is 'aurora_v1'. 'aurora_v1' produces higher-quality videos (1 credit per second), while 'aurora_v1_fast' renders faster with lower quality (0.5 credits per second). 'aurora_v2' (Aurora 2.0) is priced by resolution (0.7 credits per second at the default 720p), takes up to 59.7 seconds of audio and ignores prompt_guidance_scale.
aurora_v1- Aurora v1aurora_v1_fast- Aurora v1 Fastaurora_v2- Aurora v2
aurora_v1, aurora_v1_fast, aurora_v2 Output resolution. Only applies to model_version 'aurora_v2' (Aurora 2.0): '480p' (0.4 credits per second), '720p' (0.7, the default), '1080p' (1.4) or '2k' (2.8, for audio up to 14.375 seconds).
480p- 480p720p- 720p1080p- 1080p2k- 2k
480p, 720p, 1080p, 2k Optional. An https presigned PUT URL you own (for example S3 or GCS). When set, the finished mp4 is uploaded there with Content-Type: video/mp4 and deleted from Creatify's storage, so video_output stays null. If the upload fails, the job fails and is refunded. Never echoed back in responses.
4096Response
Optional text prompt describing the desired visual style, atmosphere, or scene composition for the video. This can include details such as camera angles, lighting, mood, environment, subject expression, pose, motion, and other cinematic or artistic elements to guide video generation.
Aurora model version to use for video generation. Default is 'aurora_v1'. 'aurora_v1' produces higher-quality videos (1 credit per second), while 'aurora_v1_fast' renders faster with lower quality (0.5 credits per second). 'aurora_v2' (Aurora 2.0) is priced by resolution (0.7 credits per second at the default 720p), takes up to 59.7 seconds of audio and ignores prompt_guidance_scale.
aurora_v1- Aurora v1aurora_v1_fast- Aurora v1 Fastaurora_v2- Aurora v2
aurora_v1, aurora_v1_fast, aurora_v2 Output resolution. Only applies to model_version 'aurora_v2' (Aurora 2.0): '480p' (0.4 credits per second), '720p' (0.7, the default), '1080p' (1.4) or '2k' (2.8, for audio up to 14.375 seconds).
480p- 480p720p- 720p1080p- 1080p2k- 2k
480p, 720p, 1080p, 2k 
