Generate video
curl --request POST \
--url https://api.siray.ai/v1/video/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"audio": "example_value",
"duration": 2,
"end_image": "example_value",
"image": "example_value",
"model": "alibaba/wan-2.7-i2v-uncensored",
"negative_prompt": "example_value",
"prompt": "example_value",
"seed": -1,
"size": "720p",
"video": "example_value"
}
'import requests
url = "https://api.siray.ai/v1/video/generations"
payload = {
"audio": "example_value",
"duration": 2,
"end_image": "example_value",
"image": "example_value",
"model": "alibaba/wan-2.7-i2v-uncensored",
"negative_prompt": "example_value",
"prompt": "example_value",
"seed": -1,
"size": "720p",
"video": "example_value"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
audio: 'example_value',
duration: 2,
end_image: 'example_value',
image: 'example_value',
model: 'alibaba/wan-2.7-i2v-uncensored',
negative_prompt: 'example_value',
prompt: 'example_value',
seed: -1,
size: '720p',
video: 'example_value'
})
};
fetch('https://api.siray.ai/v1/video/generations', 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.siray.ai/v1/video/generations",
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' => 'example_value',
'duration' => 2,
'end_image' => 'example_value',
'image' => 'example_value',
'model' => 'alibaba/wan-2.7-i2v-uncensored',
'negative_prompt' => 'example_value',
'prompt' => 'example_value',
'seed' => -1,
'size' => '720p',
'video' => 'example_value'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.siray.ai/v1/video/generations"
payload := strings.NewReader("{\n \"audio\": \"example_value\",\n \"duration\": 2,\n \"end_image\": \"example_value\",\n \"image\": \"example_value\",\n \"model\": \"alibaba/wan-2.7-i2v-uncensored\",\n \"negative_prompt\": \"example_value\",\n \"prompt\": \"example_value\",\n \"seed\": -1,\n \"size\": \"720p\",\n \"video\": \"example_value\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.siray.ai/v1/video/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"audio\": \"example_value\",\n \"duration\": 2,\n \"end_image\": \"example_value\",\n \"image\": \"example_value\",\n \"model\": \"alibaba/wan-2.7-i2v-uncensored\",\n \"negative_prompt\": \"example_value\",\n \"prompt\": \"example_value\",\n \"seed\": -1,\n \"size\": \"720p\",\n \"video\": \"example_value\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.siray.ai/v1/video/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"audio\": \"example_value\",\n \"duration\": 2,\n \"end_image\": \"example_value\",\n \"image\": \"example_value\",\n \"model\": \"alibaba/wan-2.7-i2v-uncensored\",\n \"negative_prompt\": \"example_value\",\n \"prompt\": \"example_value\",\n \"seed\": -1,\n \"size\": \"720p\",\n \"video\": \"example_value\"\n}"
response = http.request(request)
puts response.read_body{
"code": "success",
"data": {
"task_id": "<string>"
},
"message": "<string>",
"fail_code": "<string>"
}Alibaba
Wan 2.7 i2v Uncensored
POST
/
v1
/
video
/
generations
Generate video
curl --request POST \
--url https://api.siray.ai/v1/video/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"audio": "example_value",
"duration": 2,
"end_image": "example_value",
"image": "example_value",
"model": "alibaba/wan-2.7-i2v-uncensored",
"negative_prompt": "example_value",
"prompt": "example_value",
"seed": -1,
"size": "720p",
"video": "example_value"
}
'import requests
url = "https://api.siray.ai/v1/video/generations"
payload = {
"audio": "example_value",
"duration": 2,
"end_image": "example_value",
"image": "example_value",
"model": "alibaba/wan-2.7-i2v-uncensored",
"negative_prompt": "example_value",
"prompt": "example_value",
"seed": -1,
"size": "720p",
"video": "example_value"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
audio: 'example_value',
duration: 2,
end_image: 'example_value',
image: 'example_value',
model: 'alibaba/wan-2.7-i2v-uncensored',
negative_prompt: 'example_value',
prompt: 'example_value',
seed: -1,
size: '720p',
video: 'example_value'
})
};
fetch('https://api.siray.ai/v1/video/generations', 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.siray.ai/v1/video/generations",
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' => 'example_value',
'duration' => 2,
'end_image' => 'example_value',
'image' => 'example_value',
'model' => 'alibaba/wan-2.7-i2v-uncensored',
'negative_prompt' => 'example_value',
'prompt' => 'example_value',
'seed' => -1,
'size' => '720p',
'video' => 'example_value'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.siray.ai/v1/video/generations"
payload := strings.NewReader("{\n \"audio\": \"example_value\",\n \"duration\": 2,\n \"end_image\": \"example_value\",\n \"image\": \"example_value\",\n \"model\": \"alibaba/wan-2.7-i2v-uncensored\",\n \"negative_prompt\": \"example_value\",\n \"prompt\": \"example_value\",\n \"seed\": -1,\n \"size\": \"720p\",\n \"video\": \"example_value\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.siray.ai/v1/video/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"audio\": \"example_value\",\n \"duration\": 2,\n \"end_image\": \"example_value\",\n \"image\": \"example_value\",\n \"model\": \"alibaba/wan-2.7-i2v-uncensored\",\n \"negative_prompt\": \"example_value\",\n \"prompt\": \"example_value\",\n \"seed\": -1,\n \"size\": \"720p\",\n \"video\": \"example_value\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.siray.ai/v1/video/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"audio\": \"example_value\",\n \"duration\": 2,\n \"end_image\": \"example_value\",\n \"image\": \"example_value\",\n \"model\": \"alibaba/wan-2.7-i2v-uncensored\",\n \"negative_prompt\": \"example_value\",\n \"prompt\": \"example_value\",\n \"seed\": -1,\n \"size\": \"720p\",\n \"video\": \"example_value\"\n}"
response = http.request(request)
puts response.read_body{
"code": "success",
"data": {
"task_id": "<string>"
},
"message": "<string>",
"fail_code": "<string>"
}Authorizations
Bearer authentication using API key
Body
application/json
Request payload
Request format for video generation models
Fixed duration
Available options:
2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 Model name to use for the request
Available options:
alibaba/wan-2.7-i2v-uncensored Text prompt for generation
Size
Available options:
720p, 1080p Input audio URL
End frame image URL for image-to-video generation
Input image for generation, it can be data URL or image URL
Negative prompt to specify what should not appear in the generation
Random seed for generation
Required range:
-1 <= x <= 2147483647Input video URL
Response
200 - application/json
Successful response
Standard async task creation response
