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",
"audio_enable": false,
"duration": 2,
"image": "example_value",
"model": "alibaba/wan-2.7-i2v-spicy",
"negative_prompt": "example_value",
"prompt": "example_value",
"prompt_expansion_enable": true,
"seed": -1,
"size": "720p"
}
'import requests
url = "https://api.siray.ai/v1/video/generations"
payload = {
"audio": "example_value",
"audio_enable": False,
"duration": 2,
"image": "example_value",
"model": "alibaba/wan-2.7-i2v-spicy",
"negative_prompt": "example_value",
"prompt": "example_value",
"prompt_expansion_enable": True,
"seed": -1,
"size": "720p"
}
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',
audio_enable: false,
duration: 2,
image: 'example_value',
model: 'alibaba/wan-2.7-i2v-spicy',
negative_prompt: 'example_value',
prompt: 'example_value',
prompt_expansion_enable: true,
seed: -1,
size: '720p'
})
};
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',
'audio_enable' => false,
'duration' => 2,
'image' => 'example_value',
'model' => 'alibaba/wan-2.7-i2v-spicy',
'negative_prompt' => 'example_value',
'prompt' => 'example_value',
'prompt_expansion_enable' => true,
'seed' => -1,
'size' => '720p'
]),
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 \"audio_enable\": false,\n \"duration\": 2,\n \"image\": \"example_value\",\n \"model\": \"alibaba/wan-2.7-i2v-spicy\",\n \"negative_prompt\": \"example_value\",\n \"prompt\": \"example_value\",\n \"prompt_expansion_enable\": true,\n \"seed\": -1,\n \"size\": \"720p\"\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 \"audio_enable\": false,\n \"duration\": 2,\n \"image\": \"example_value\",\n \"model\": \"alibaba/wan-2.7-i2v-spicy\",\n \"negative_prompt\": \"example_value\",\n \"prompt\": \"example_value\",\n \"prompt_expansion_enable\": true,\n \"seed\": -1,\n \"size\": \"720p\"\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 \"audio_enable\": false,\n \"duration\": 2,\n \"image\": \"example_value\",\n \"model\": \"alibaba/wan-2.7-i2v-spicy\",\n \"negative_prompt\": \"example_value\",\n \"prompt\": \"example_value\",\n \"prompt_expansion_enable\": true,\n \"seed\": -1,\n \"size\": \"720p\"\n}"
response = http.request(request)
puts response.read_body{
"code": "success",
"data": {
"task_id": "<string>"
},
"message": "<string>"
}Alibaba
Wan 2.7 i2v Spicy
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",
"audio_enable": false,
"duration": 2,
"image": "example_value",
"model": "alibaba/wan-2.7-i2v-spicy",
"negative_prompt": "example_value",
"prompt": "example_value",
"prompt_expansion_enable": true,
"seed": -1,
"size": "720p"
}
'import requests
url = "https://api.siray.ai/v1/video/generations"
payload = {
"audio": "example_value",
"audio_enable": False,
"duration": 2,
"image": "example_value",
"model": "alibaba/wan-2.7-i2v-spicy",
"negative_prompt": "example_value",
"prompt": "example_value",
"prompt_expansion_enable": True,
"seed": -1,
"size": "720p"
}
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',
audio_enable: false,
duration: 2,
image: 'example_value',
model: 'alibaba/wan-2.7-i2v-spicy',
negative_prompt: 'example_value',
prompt: 'example_value',
prompt_expansion_enable: true,
seed: -1,
size: '720p'
})
};
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',
'audio_enable' => false,
'duration' => 2,
'image' => 'example_value',
'model' => 'alibaba/wan-2.7-i2v-spicy',
'negative_prompt' => 'example_value',
'prompt' => 'example_value',
'prompt_expansion_enable' => true,
'seed' => -1,
'size' => '720p'
]),
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 \"audio_enable\": false,\n \"duration\": 2,\n \"image\": \"example_value\",\n \"model\": \"alibaba/wan-2.7-i2v-spicy\",\n \"negative_prompt\": \"example_value\",\n \"prompt\": \"example_value\",\n \"prompt_expansion_enable\": true,\n \"seed\": -1,\n \"size\": \"720p\"\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 \"audio_enable\": false,\n \"duration\": 2,\n \"image\": \"example_value\",\n \"model\": \"alibaba/wan-2.7-i2v-spicy\",\n \"negative_prompt\": \"example_value\",\n \"prompt\": \"example_value\",\n \"prompt_expansion_enable\": true,\n \"seed\": -1,\n \"size\": \"720p\"\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 \"audio_enable\": false,\n \"duration\": 2,\n \"image\": \"example_value\",\n \"model\": \"alibaba/wan-2.7-i2v-spicy\",\n \"negative_prompt\": \"example_value\",\n \"prompt\": \"example_value\",\n \"prompt_expansion_enable\": true,\n \"seed\": -1,\n \"size\": \"720p\"\n}"
response = http.request(request)
puts response.read_body{
"code": "success",
"data": {
"task_id": "<string>"
},
"message": "<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 Input image for generation, it can be data URL or image URL
Model name to use for the request
Available options:
alibaba/wan-2.7-i2v-spicy Text prompt for generation
Size
Available options:
720p, 1080p Input audio URL
Whether to generate audio along with video
Negative prompt to specify what should not appear in the generation
Whether to automatically expand the prompt for better results
Random seed for generation
Required range:
-1 <= x <= 2147483647Response
200 - application/json
Successful response
⌘I
