curl --request POST \
--url https://api.creatify.ai/api/boreal/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: <api-key>' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"prompt": "<string>",
"image_url": "<string>",
"audio_url": "<string>",
"resolution": "720p",
"aspect_ratio": "auto",
"duration": 10,
"negative_prompt": "<string>",
"webhook_url": "<string>"
}
'import requests
url = "https://api.creatify.ai/api/boreal/"
payload = {
"prompt": "<string>",
"image_url": "<string>",
"audio_url": "<string>",
"resolution": "720p",
"aspect_ratio": "auto",
"duration": 10,
"negative_prompt": "<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({
prompt: '<string>',
image_url: '<string>',
audio_url: '<string>',
resolution: '720p',
aspect_ratio: 'auto',
duration: 10,
negative_prompt: '<string>',
webhook_url: '<string>'
})
};
fetch('https://api.creatify.ai/api/boreal/', 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/boreal/",
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([
'prompt' => '<string>',
'image_url' => '<string>',
'audio_url' => '<string>',
'resolution' => '720p',
'aspect_ratio' => 'auto',
'duration' => 10,
'negative_prompt' => '<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/boreal/"
payload := strings.NewReader("{\n \"prompt\": \"<string>\",\n \"image_url\": \"<string>\",\n \"audio_url\": \"<string>\",\n \"resolution\": \"720p\",\n \"aspect_ratio\": \"auto\",\n \"duration\": 10,\n \"negative_prompt\": \"<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/boreal/")
.header("X-API-ID", "<api-key>")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"<string>\",\n \"image_url\": \"<string>\",\n \"audio_url\": \"<string>\",\n \"resolution\": \"720p\",\n \"aspect_ratio\": \"auto\",\n \"duration\": 10,\n \"negative_prompt\": \"<string>\",\n \"webhook_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.creatify.ai/api/boreal/")
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 \"prompt\": \"<string>\",\n \"image_url\": \"<string>\",\n \"audio_url\": \"<string>\",\n \"resolution\": \"720p\",\n \"aspect_ratio\": \"auto\",\n \"duration\": 10,\n \"negative_prompt\": \"<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",
"prompt": "<string>",
"status": "pending",
"failed_reason": "<string>",
"video_output": "<string>",
"credits_used": 123,
"progress": 123,
"image_url": "<string>",
"audio_url": "<string>",
"resolution": "720p",
"aspect_ratio": "auto",
"duration": 10,
"negative_prompt": "<string>",
"webhook_url": "<string>"
}Create a Boreal task
Generate a video with Boreal from a prompt, an optional start image and an optional audio track. Maximum length is 60 seconds at 720p, 30 seconds at 1080p and 15 seconds at 2k. Each started 10 seconds of video costs 1 credit at 720p, 3 credits at 1080p and 12 credits at 2k.
curl --request POST \
--url https://api.creatify.ai/api/boreal/ \
--header 'Content-Type: application/json' \
--header 'X-API-ID: <api-key>' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"prompt": "<string>",
"image_url": "<string>",
"audio_url": "<string>",
"resolution": "720p",
"aspect_ratio": "auto",
"duration": 10,
"negative_prompt": "<string>",
"webhook_url": "<string>"
}
'import requests
url = "https://api.creatify.ai/api/boreal/"
payload = {
"prompt": "<string>",
"image_url": "<string>",
"audio_url": "<string>",
"resolution": "720p",
"aspect_ratio": "auto",
"duration": 10,
"negative_prompt": "<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({
prompt: '<string>',
image_url: '<string>',
audio_url: '<string>',
resolution: '720p',
aspect_ratio: 'auto',
duration: 10,
negative_prompt: '<string>',
webhook_url: '<string>'
})
};
fetch('https://api.creatify.ai/api/boreal/', 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/boreal/",
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([
'prompt' => '<string>',
'image_url' => '<string>',
'audio_url' => '<string>',
'resolution' => '720p',
'aspect_ratio' => 'auto',
'duration' => 10,
'negative_prompt' => '<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/boreal/"
payload := strings.NewReader("{\n \"prompt\": \"<string>\",\n \"image_url\": \"<string>\",\n \"audio_url\": \"<string>\",\n \"resolution\": \"720p\",\n \"aspect_ratio\": \"auto\",\n \"duration\": 10,\n \"negative_prompt\": \"<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/boreal/")
.header("X-API-ID", "<api-key>")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"prompt\": \"<string>\",\n \"image_url\": \"<string>\",\n \"audio_url\": \"<string>\",\n \"resolution\": \"720p\",\n \"aspect_ratio\": \"auto\",\n \"duration\": 10,\n \"negative_prompt\": \"<string>\",\n \"webhook_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.creatify.ai/api/boreal/")
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 \"prompt\": \"<string>\",\n \"image_url\": \"<string>\",\n \"audio_url\": \"<string>\",\n \"resolution\": \"720p\",\n \"aspect_ratio\": \"auto\",\n \"duration\": 10,\n \"negative_prompt\": \"<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",
"prompt": "<string>",
"status": "pending",
"failed_reason": "<string>",
"video_output": "<string>",
"credits_used": 123,
"progress": 123,
"image_url": "<string>",
"audio_url": "<string>",
"resolution": "720p",
"aspect_ratio": "auto",
"duration": 10,
"negative_prompt": "<string>",
"webhook_url": "<string>"
}Authorizations
API ID, from your settings page.
API Key, from your settings page.
Body
Describe the video: subject, action, camera, and any dialogue or sound it should contain.
Optional start frame. The video follows the image's own aspect ratio unless aspect_ratio names one, which centre-crops the image to it.
2000Optional audio track ('mp3' or 'wav') that drives the video. When set, the video is as long as the audio, within the same per-resolution limit, and duration is ignored.
2000Delivery tier. 2k is 2016 px on the long edge for 16:9 and 9:16, and the 1440p row for 1:1, 4:3 and 3:4. Each started 10 seconds of video costs 1 credit at 720p, 3 credits at 1080p and 12 credits at 2k.
720p- 720p1080p- 1080p2k- 2k
720p, 1080p, 2k Frame ratio. auto follows the start image's own ratio, and is 16:9 without an image. A named ratio renders that ratio; with an image it centre-crops the image to it.
auto- auto16:9- 16:99:16- 9:161:1- 1:14:3- 4:33:4- 3:4
auto, 16:9, 9:16, 1:1, 4:3, 3:4 Video length in seconds, greater than 0 and at most 60 at 720p, 30 at 1080p and 15 at 2k.
What the video should avoid.
200Response
Describe the video: subject, action, camera, and any dialogue or sound it should contain.
pending- Pendingin_queue- In Queuerunning- Runningfailed- Faileddone- Donerejected- Rejected
pending, in_queue, running, failed, done, rejected Failed reason
Video output URL
Credits used in this API call
Progress of the job
Optional start frame. The video follows the image's own aspect ratio unless aspect_ratio names one, which centre-crops the image to it.
2000Optional audio track ('mp3' or 'wav') that drives the video. When set, the video is as long as the audio, within the same per-resolution limit, and duration is ignored.
2000Delivery tier. 2k is 2016 px on the long edge for 16:9 and 9:16, and the 1440p row for 1:1, 4:3 and 3:4. Each started 10 seconds of video costs 1 credit at 720p, 3 credits at 1080p and 12 credits at 2k.
720p- 720p1080p- 1080p2k- 2k
720p, 1080p, 2k Frame ratio. auto follows the start image's own ratio, and is 16:9 without an image. A named ratio renders that ratio; with an image it centre-crops the image to it.
auto- auto16:9- 16:99:16- 9:161:1- 1:14:3- 4:33:4- 3:4
auto, 16:9, 9:16, 1:1, 4:3, 3:4 Video length in seconds, greater than 0 and at most 60 at 720p, 30 at 1080p and 15 at 2k.
What the video should avoid.
200
