curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "seedance2_5",
"params": {
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": [
"https://example.com/character.jpg",
"https://example.com/product.jpg"
],
"video_url": ["https://example.com/motion-reference.mp4"],
"audio_url": ["https://example.com/music-reference.mp3"],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov"
},
"out_task_id": "seedance2_5_reference_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "seedance2_5",
"params": {
"prompt": "早朝の都市のスカイラインから夜の光へ自然に移行し、カメラをゆっくり前進させる",
"type": "first_last_frame",
"image_url": "https://example.com/first-frame.jpg",
"end_image_url": "https://example.com/last-frame.jpg",
"resolution": "720p",
"video_length": 10,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mp4"
},
"out_task_id": "seedance2_5_frames_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "seedance2_5",
"params": {
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": ["https://example.com/character.jpg", "https://example.com/product.jpg"],
"video_url": ["https://example.com/motion-reference.mp4"],
"audio_url": ["https://example.com/music-reference.mp3"],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": True,
"output_format": "mov"
},
"out_task_id": "seedance2_5_reference_123456"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://aireiter.com/api/openapi/submit";
const payload = {
model: "seedance2_5",
params: {
prompt: "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
type: "all_reference",
image_url: ["https://example.com/character.jpg", "https://example.com/product.jpg"],
video_url: ["https://example.com/motion-reference.mp4"],
audio_url: ["https://example.com/music-reference.mp3"],
resolution: "720p",
video_length: 8,
aspect_ratio: "16:9",
generate_audio: true,
output_format: "mov"
},
out_task_id: "seedance2_5_reference_123456"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://aireiter.com/api/openapi/submit"
payload := map[string]interface{}{
"model": "seedance2_5",
"params": map[string]interface{}{
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": []interface{}{
"https://example.com/character.jpg",
"https://example.com/product.jpg",
},
"video_url": []interface{}{
"https://example.com/motion-reference.mp4",
},
"audio_url": []interface{}{
"https://example.com/music-reference.mp3",
},
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov",
},
"out_task_id": "seedance2_5_reference_123456",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://aireiter.com/api/openapi/submit";
String payload = """
{
"model": "seedance2_5",
"params": {
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": [
"https://example.com/character.jpg",
"https://example.com/product.jpg"
],
"video_url": [
"https://example.com/motion-reference.mp4"
],
"audio_url": [
"https://example.com/music-reference.mp3"
],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov"
},
"out_task_id": "seedance2_5_reference_123456"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://aireiter.com/api/openapi/submit";
$payload = [
"model" => "seedance2_5",
"params" => [
"prompt" => "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type" => "all_reference",
"image_url" => ["https://example.com/character.jpg", "https://example.com/product.jpg"],
"video_url" => ["https://example.com/motion-reference.mp4"],
"audio_url" => ["https://example.com/music-reference.mp3"],
"resolution" => "720p",
"video_length" => 8,
"aspect_ratio" => "16:9",
"generate_audio" => true,
"output_format" => "mov"
],
"out_task_id" => "seedance2_5_reference_123456"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://aireiter.com/api/openapi/submit")
payload = {
model: "seedance2_5",
params: {
prompt: "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
type: "all_reference",
image_url: ["https://example.com/character.jpg", "https://example.com/product.jpg"],
video_url: ["https://example.com/motion-reference.mp4"],
audio_url: ["https://example.com/music-reference.mp3"],
resolution: "720p",
video_length: 8,
aspect_ratio: "16:9",
generate_audio: true,
output_format: "mov"
},
out_task_id: "seedance2_5_reference_123456"
}
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://aireiter.com/api/openapi/submit")!
let payload: [String: Any] = [
"model": "seedance2_5",
"params": [
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": ["https://example.com/character.jpg", "https://example.com/product.jpg"],
"video_url": ["https://example.com/motion-reference.mp4"],
"audio_url": ["https://example.com/music-reference.mp3"],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov"
],
"out_task_id": "seedance2_5_reference_123456"
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://aireiter.com/api/openapi/submit";
var payload = @"
{
""model"": ""seedance2_5"",
""params"": {
""prompt"": ""映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる"",
""type"": ""all_reference"",
""image_url"": [
""https://example.com/character.jpg"",
""https://example.com/product.jpg""
],
""video_url"": [
""https://example.com/motion-reference.mp4""
],
""audio_url"": [
""https://example.com/music-reference.mp3""
],
""resolution"": ""720p"",
""video_length"": 8,
""aspect_ratio"": ""16:9"",
""generate_audio"": true,
""output_format"": ""mov""
},
""out_task_id"": ""seedance2_5_reference_123456""
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
#include <stdio.h>
#include <curl/curl.h>
int main(void) {
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
const char *url = "https://aireiter.com/api/openapi/submit";
const char *payload = "{\"model\":\"seedance2_5\",\"params\":{\"prompt\":\"映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる\",\"type\":\"all_reference\",\"image_url\":[\"https://example.com/character.jpg\",\"https://example.com/product.jpg\"],\"video_url\":[\"https://example.com/motion-reference.mp4\"],\"audio_url\":[\"https://example.com/music-reference.mp3\"],\"resolution\":\"720p\",\"video_length\":8,\"aspect_ratio\":\"16:9\",\"generate_audio\":true,\"output_format\":\"mov\"},\"out_task_id\":\"seedance2_5_reference_123456\"}";
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSURL *url = [NSURL URLWithString:@"https://aireiter.com/api/openapi/submit"];
NSDictionary *payload = @{
@"model": @"seedance2_5",
@"params": @{
@"prompt": @"映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
@"type": @"all_reference",
@"image_url": @[
@"https://example.com/character.jpg",
@"https://example.com/product.jpg"
],
@"video_url": @[@"https://example.com/motion-reference.mp4"],
@"audio_url": @[@"https://example.com/music-reference.mp3"],
@"resolution": @"720p",
@"video_length": @8,
@"aspect_ratio": @"16:9",
@"generate_audio": @YES,
@"output_format": @"mov"
},
@"out_task_id": @"seedance2_5_reference_123456"
};
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:payload
options:0
error:&error];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"Bearer <token>" forHTTPHeaderField:@"Authorization"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:jsonData];
NSURLSessionDataTask *task = [[NSURLSession sharedSession]
dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"Error: %@", error);
return;
}
NSString *result = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
NSLog(@"%@", result);
}];
[task resume];
[[NSRunLoop mainRunLoop] run];
}
return 0;
}
(* Requires cohttp and yojson libraries *)
open Lwt
open Cohttp
open Cohttp_lwt_unix
let url = "https://aireiter.com/api/openapi/submit"
let payload = {|{
"model": "seedance2_5",
"params": {
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": [
"https://example.com/character.jpg",
"https://example.com/product.jpg"
],
"video_url": [
"https://example.com/motion-reference.mp4"
],
"audio_url": [
"https://example.com/music-reference.mp3"
],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov"
},
"out_task_id": "seedance2_5_reference_123456"
}|}
let () =
let headers = Header.init ()
|> fun h -> Header.add h "Authorization" "Bearer <token>"
|> fun h -> Header.add h "Content-Type" "application/json"
in
let body = Cohttp_lwt.Body.of_string payload in
let response = Client.post ~headers ~body (Uri.of_string url) >>= fun (resp, body) ->
body |> Cohttp_lwt.Body.to_string >|= fun body_str ->
print_endline body_str
in
Lwt_main.run response
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() async {
final url = Uri.parse('https://aireiter.com/api/openapi/submit');
final payload = {
"model": "seedance2_5",
"params": {
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": ["https://example.com/character.jpg", "https://example.com/product.jpg"],
"video_url": ["https://example.com/motion-reference.mp4"],
"audio_url": ["https://example.com/music-reference.mp3"],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov"
},
"out_task_id": "seedance2_5_reference_123456"
};
final response = await http.post(
url,
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json'
},
body: jsonEncode(payload),
);
print(response.body);
}
library(httr)
library(jsonlite)
url <- "https://aireiter.com/api/openapi/submit"
payload <- list(
model = "seedance2_5",
params = list(
prompt = "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
type = "all_reference",
image_url = list(
"https://example.com/character.jpg",
"https://example.com/product.jpg"
),
video_url = list(
"https://example.com/motion-reference.mp4"
),
audio_url = list(
"https://example.com/music-reference.mp3"
),
resolution = "720p",
video_length = 8,
aspect_ratio = "16:9",
generate_audio = TRUE,
output_format = "mov"
),
out_task_id = "seedance2_5_reference_123456"
)
response <- POST(
url,
add_headers(
Authorization = "Bearer <token>",
`Content-Type` = "application/json"
),
body = toJSON(payload, auto_unbox = TRUE),
encode = "raw"
)
cat(content(response, "text"))
{
"statusCode": 200,
"message": "",
"data": {
"out_task_id": "seedance2_5_reference_123456",
"status": "pending",
"estimated_credits": 100,
"created_at": "2025-12-22T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "リクエストパラメータが無効です",
"ok": false
}
{
"error": {
"code": 401,
"message": "認証に失敗しました。APIキーを確認してください"
}
}
{
"error": {
"code": 433,
"message": "アカウント残高が不足しています。チャージしてから再試行してください"
}
}
{
"error": {
"code": 500,
"message": "サーバー内部エラーです。しばらくしてから再試行してください"
}
}
Seedance 2.5
Seedance 2.5 Video Generation
- Supports both full-reference and first-and-last-frame video generation modes
- Supports image, video, and audio reference assets
- Supports 480p / 720p, 4-30 seconds, and synchronized AI audio
- Supports MP4 and high-color-accuracy MOV output
- Asynchronous processing mode, returning a task ID for subsequent queries
POST
/
api
/
openapi
/
submit
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "seedance2_5",
"params": {
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": [
"https://example.com/character.jpg",
"https://example.com/product.jpg"
],
"video_url": ["https://example.com/motion-reference.mp4"],
"audio_url": ["https://example.com/music-reference.mp3"],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov"
},
"out_task_id": "seedance2_5_reference_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "seedance2_5",
"params": {
"prompt": "早朝の都市のスカイラインから夜の光へ自然に移行し、カメラをゆっくり前進させる",
"type": "first_last_frame",
"image_url": "https://example.com/first-frame.jpg",
"end_image_url": "https://example.com/last-frame.jpg",
"resolution": "720p",
"video_length": 10,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mp4"
},
"out_task_id": "seedance2_5_frames_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "seedance2_5",
"params": {
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": ["https://example.com/character.jpg", "https://example.com/product.jpg"],
"video_url": ["https://example.com/motion-reference.mp4"],
"audio_url": ["https://example.com/music-reference.mp3"],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": True,
"output_format": "mov"
},
"out_task_id": "seedance2_5_reference_123456"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://aireiter.com/api/openapi/submit";
const payload = {
model: "seedance2_5",
params: {
prompt: "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
type: "all_reference",
image_url: ["https://example.com/character.jpg", "https://example.com/product.jpg"],
video_url: ["https://example.com/motion-reference.mp4"],
audio_url: ["https://example.com/music-reference.mp3"],
resolution: "720p",
video_length: 8,
aspect_ratio: "16:9",
generate_audio: true,
output_format: "mov"
},
out_task_id: "seedance2_5_reference_123456"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://aireiter.com/api/openapi/submit"
payload := map[string]interface{}{
"model": "seedance2_5",
"params": map[string]interface{}{
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": []interface{}{
"https://example.com/character.jpg",
"https://example.com/product.jpg",
},
"video_url": []interface{}{
"https://example.com/motion-reference.mp4",
},
"audio_url": []interface{}{
"https://example.com/music-reference.mp3",
},
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov",
},
"out_task_id": "seedance2_5_reference_123456",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://aireiter.com/api/openapi/submit";
String payload = """
{
"model": "seedance2_5",
"params": {
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": [
"https://example.com/character.jpg",
"https://example.com/product.jpg"
],
"video_url": [
"https://example.com/motion-reference.mp4"
],
"audio_url": [
"https://example.com/music-reference.mp3"
],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov"
},
"out_task_id": "seedance2_5_reference_123456"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://aireiter.com/api/openapi/submit";
$payload = [
"model" => "seedance2_5",
"params" => [
"prompt" => "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type" => "all_reference",
"image_url" => ["https://example.com/character.jpg", "https://example.com/product.jpg"],
"video_url" => ["https://example.com/motion-reference.mp4"],
"audio_url" => ["https://example.com/music-reference.mp3"],
"resolution" => "720p",
"video_length" => 8,
"aspect_ratio" => "16:9",
"generate_audio" => true,
"output_format" => "mov"
],
"out_task_id" => "seedance2_5_reference_123456"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://aireiter.com/api/openapi/submit")
payload = {
model: "seedance2_5",
params: {
prompt: "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
type: "all_reference",
image_url: ["https://example.com/character.jpg", "https://example.com/product.jpg"],
video_url: ["https://example.com/motion-reference.mp4"],
audio_url: ["https://example.com/music-reference.mp3"],
resolution: "720p",
video_length: 8,
aspect_ratio: "16:9",
generate_audio: true,
output_format: "mov"
},
out_task_id: "seedance2_5_reference_123456"
}
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://aireiter.com/api/openapi/submit")!
let payload: [String: Any] = [
"model": "seedance2_5",
"params": [
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": ["https://example.com/character.jpg", "https://example.com/product.jpg"],
"video_url": ["https://example.com/motion-reference.mp4"],
"audio_url": ["https://example.com/music-reference.mp3"],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov"
],
"out_task_id": "seedance2_5_reference_123456"
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://aireiter.com/api/openapi/submit";
var payload = @"
{
""model"": ""seedance2_5"",
""params"": {
""prompt"": ""映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる"",
""type"": ""all_reference"",
""image_url"": [
""https://example.com/character.jpg"",
""https://example.com/product.jpg""
],
""video_url"": [
""https://example.com/motion-reference.mp4""
],
""audio_url"": [
""https://example.com/music-reference.mp3""
],
""resolution"": ""720p"",
""video_length"": 8,
""aspect_ratio"": ""16:9"",
""generate_audio"": true,
""output_format"": ""mov""
},
""out_task_id"": ""seedance2_5_reference_123456""
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
#include <stdio.h>
#include <curl/curl.h>
int main(void) {
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
const char *url = "https://aireiter.com/api/openapi/submit";
const char *payload = "{\"model\":\"seedance2_5\",\"params\":{\"prompt\":\"映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる\",\"type\":\"all_reference\",\"image_url\":[\"https://example.com/character.jpg\",\"https://example.com/product.jpg\"],\"video_url\":[\"https://example.com/motion-reference.mp4\"],\"audio_url\":[\"https://example.com/music-reference.mp3\"],\"resolution\":\"720p\",\"video_length\":8,\"aspect_ratio\":\"16:9\",\"generate_audio\":true,\"output_format\":\"mov\"},\"out_task_id\":\"seedance2_5_reference_123456\"}";
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSURL *url = [NSURL URLWithString:@"https://aireiter.com/api/openapi/submit"];
NSDictionary *payload = @{
@"model": @"seedance2_5",
@"params": @{
@"prompt": @"映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
@"type": @"all_reference",
@"image_url": @[
@"https://example.com/character.jpg",
@"https://example.com/product.jpg"
],
@"video_url": @[@"https://example.com/motion-reference.mp4"],
@"audio_url": @[@"https://example.com/music-reference.mp3"],
@"resolution": @"720p",
@"video_length": @8,
@"aspect_ratio": @"16:9",
@"generate_audio": @YES,
@"output_format": @"mov"
},
@"out_task_id": @"seedance2_5_reference_123456"
};
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:payload
options:0
error:&error];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"Bearer <token>" forHTTPHeaderField:@"Authorization"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:jsonData];
NSURLSessionDataTask *task = [[NSURLSession sharedSession]
dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"Error: %@", error);
return;
}
NSString *result = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
NSLog(@"%@", result);
}];
[task resume];
[[NSRunLoop mainRunLoop] run];
}
return 0;
}
(* Requires cohttp and yojson libraries *)
open Lwt
open Cohttp
open Cohttp_lwt_unix
let url = "https://aireiter.com/api/openapi/submit"
let payload = {|{
"model": "seedance2_5",
"params": {
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": [
"https://example.com/character.jpg",
"https://example.com/product.jpg"
],
"video_url": [
"https://example.com/motion-reference.mp4"
],
"audio_url": [
"https://example.com/music-reference.mp3"
],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov"
},
"out_task_id": "seedance2_5_reference_123456"
}|}
let () =
let headers = Header.init ()
|> fun h -> Header.add h "Authorization" "Bearer <token>"
|> fun h -> Header.add h "Content-Type" "application/json"
in
let body = Cohttp_lwt.Body.of_string payload in
let response = Client.post ~headers ~body (Uri.of_string url) >>= fun (resp, body) ->
body |> Cohttp_lwt.Body.to_string >|= fun body_str ->
print_endline body_str
in
Lwt_main.run response
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() async {
final url = Uri.parse('https://aireiter.com/api/openapi/submit');
final payload = {
"model": "seedance2_5",
"params": {
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": ["https://example.com/character.jpg", "https://example.com/product.jpg"],
"video_url": ["https://example.com/motion-reference.mp4"],
"audio_url": ["https://example.com/music-reference.mp3"],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov"
},
"out_task_id": "seedance2_5_reference_123456"
};
final response = await http.post(
url,
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json'
},
body: jsonEncode(payload),
);
print(response.body);
}
library(httr)
library(jsonlite)
url <- "https://aireiter.com/api/openapi/submit"
payload <- list(
model = "seedance2_5",
params = list(
prompt = "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
type = "all_reference",
image_url = list(
"https://example.com/character.jpg",
"https://example.com/product.jpg"
),
video_url = list(
"https://example.com/motion-reference.mp4"
),
audio_url = list(
"https://example.com/music-reference.mp3"
),
resolution = "720p",
video_length = 8,
aspect_ratio = "16:9",
generate_audio = TRUE,
output_format = "mov"
),
out_task_id = "seedance2_5_reference_123456"
)
response <- POST(
url,
add_headers(
Authorization = "Bearer <token>",
`Content-Type` = "application/json"
),
body = toJSON(payload, auto_unbox = TRUE),
encode = "raw"
)
cat(content(response, "text"))
{
"statusCode": 200,
"message": "",
"data": {
"out_task_id": "seedance2_5_reference_123456",
"status": "pending",
"estimated_credits": 100,
"created_at": "2025-12-22T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "リクエストパラメータが無効です",
"ok": false
}
{
"error": {
"code": 401,
"message": "認証に失敗しました。APIキーを確認してください"
}
}
{
"error": {
"code": 433,
"message": "アカウント残高が不足しています。チャージしてから再試行してください"
}
}
{
"error": {
"code": 500,
"message": "サーバー内部エラーです。しばらくしてから再試行してください"
}
}
Seedance 2.5 の AIReiter におけるモデル名は
seedance2_5 です。Authorizations
string
必須
すべてのエンドポイントは Bearer Token による認証が必要です。API Key 管理ページ にアクセスして API Key を取得し、リクエストヘッダーに次を追加してください:
Authorization: Bearer YOUR_API_KEY
Body
string
必須
モデル名、固定値:
seedance2_5
object
必須
モデルパラメータオブジェクト。
表示 params オブジェクトの Properties
表示 params オブジェクトの Properties
string
必須
動画生成のテキスト説明。主体、シーン、アクション、カメラワーク、ビジュアルスタイル、セリフ、および環境音の説明を推奨します。
string
デフォルト:"all_reference"
参照モード。参照素材の使用方法を決定します。
all_reference- 全参照モード。参照画像、参照動画、参照音声を使用できますfirst_last_frame- 先頭・末尾フレームモード。先頭フレームと任意の末尾フレーム画像を使用します
string | string[]
参照画像 URL。
all_referenceモード: 最大 30 枚の画像; 1 枚あたり最大 50MB; 画像の最小辺は 300pxfirst_last_frameモード: 先頭フレーム画像として使用; 最大 10MB; 画像の最小辺は 300px
string
末尾フレーム画像の URL。
first_last_frame モードでのみ有効です。画像は最大 10MB、最小辺 300px で、URL はインターネットから直接アクセス可能である必要があります。string | string[]
参照動画 URL。
all_reference モードでのみ有効で、最大 9 本の参照動画をサポートします。動画要件:- 1 本あたりの再生時間は 2-30 秒で、参照動画の合計再生時間は 30 秒を超えないこと
- 1 本あたりの最大サイズは 200MB
- フレームレートは 24-60 FPS
- アスペクト比の範囲は 0.4-2.5
- 幅と高さの範囲は 300-6000px
- 総ピクセル数の範囲は 409600-8295044
first_last_frame モードではこのパラメータを渡さないでください。string | string[]
参照音声 URL。
all_reference モードでのみ有効で、最大 10 個の音声をサポートします。音声要件:- 1 つあたりの再生時間は 2-30 秒で、参照音声の合計再生時間は 30 秒を超えないこと
- WAV、MP3 をサポート
- 1 つあたりの最大サイズは 15MB
first_last_frame モードではこのパラメータを渡さないでください。string
デフォルト:"720p"
動画の解像度:
480p720p- デフォルト値
integer
デフォルト:"5"
出力動画の長さ。単位は秒です。
4 から 30 までの整数に対応しています。string
デフォルト:"16:9"
動画のアスペクト比:
21:9- ウルトラワイド16:9- 横長、デフォルト値9:16- 縦長4:3- 標準横長3:4- 標準縦版1:1- 正方形
boolean
デフォルト:"true"
動画と同期する AI 音声を生成するかどうか。
true- 音声を生成する、デフォルト値false- 音声を生成しない
string
デフォルト:"mp4"
出力動画形式:
mp4- 汎用形式、ファイルサイズが比較的小さい、デフォルト値mov- 高色精度形式(yuv444p)。後処理の拡張や結合に適しています
string
必須
呼び出し元のタスク ID。呼び出し側が生成し、一意性を保証する必要があります。英字、数字、アンダースコア、ハイフンをサポートし、長さは 1-64 文字です。後続ではこの ID を使用してタスクのステータスと結果を問い合わせます。
Response
string
発行側のタスクID。結果の問い合わせに使用できます。
string
初期状態。通常は
"pending" です。number
推定消費ポイント。
string
作成時刻。ISO 8601 形式。
Query Task
Seedance 2.5 は非同期処理を採用しています。送信に成功した後、同じout_task_id を使用してタスクを照会します。
curl --request POST \
--url https://aireiter.com/api/openapi/query \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"out_task_id": "seedance2_5_task_123456"
}'
output 配列には生成された動画の URL が含まれます。完全なフィールドについてはタスクのステータスを取得を参照してください。
Request Examples
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "seedance2_5",
"params": {
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": [
"https://example.com/character.jpg",
"https://example.com/product.jpg"
],
"video_url": ["https://example.com/motion-reference.mp4"],
"audio_url": ["https://example.com/music-reference.mp3"],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov"
},
"out_task_id": "seedance2_5_reference_123456"
}'
curl --request POST \
--url https://aireiter.com/api/openapi/submit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "seedance2_5",
"params": {
"prompt": "早朝の都市のスカイラインから夜の光へ自然に移行し、カメラをゆっくり前進させる",
"type": "first_last_frame",
"image_url": "https://example.com/first-frame.jpg",
"end_image_url": "https://example.com/last-frame.jpg",
"resolution": "720p",
"video_length": 10,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mp4"
},
"out_task_id": "seedance2_5_frames_123456"
}'
import requests
url = "https://aireiter.com/api/openapi/submit"
payload = {
"model": "seedance2_5",
"params": {
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": ["https://example.com/character.jpg", "https://example.com/product.jpg"],
"video_url": ["https://example.com/motion-reference.mp4"],
"audio_url": ["https://example.com/music-reference.mp3"],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": True,
"output_format": "mov"
},
"out_task_id": "seedance2_5_reference_123456"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://aireiter.com/api/openapi/submit";
const payload = {
model: "seedance2_5",
params: {
prompt: "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
type: "all_reference",
image_url: ["https://example.com/character.jpg", "https://example.com/product.jpg"],
video_url: ["https://example.com/motion-reference.mp4"],
audio_url: ["https://example.com/music-reference.mp3"],
resolution: "720p",
video_length: 8,
aspect_ratio: "16:9",
generate_audio: true,
output_format: "mov"
},
out_task_id: "seedance2_5_reference_123456"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://aireiter.com/api/openapi/submit"
payload := map[string]interface{}{
"model": "seedance2_5",
"params": map[string]interface{}{
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": []interface{}{
"https://example.com/character.jpg",
"https://example.com/product.jpg",
},
"video_url": []interface{}{
"https://example.com/motion-reference.mp4",
},
"audio_url": []interface{}{
"https://example.com/music-reference.mp3",
},
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov",
},
"out_task_id": "seedance2_5_reference_123456",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://aireiter.com/api/openapi/submit";
String payload = """
{
"model": "seedance2_5",
"params": {
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": [
"https://example.com/character.jpg",
"https://example.com/product.jpg"
],
"video_url": [
"https://example.com/motion-reference.mp4"
],
"audio_url": [
"https://example.com/music-reference.mp3"
],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov"
},
"out_task_id": "seedance2_5_reference_123456"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://aireiter.com/api/openapi/submit";
$payload = [
"model" => "seedance2_5",
"params" => [
"prompt" => "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type" => "all_reference",
"image_url" => ["https://example.com/character.jpg", "https://example.com/product.jpg"],
"video_url" => ["https://example.com/motion-reference.mp4"],
"audio_url" => ["https://example.com/music-reference.mp3"],
"resolution" => "720p",
"video_length" => 8,
"aspect_ratio" => "16:9",
"generate_audio" => true,
"output_format" => "mov"
],
"out_task_id" => "seedance2_5_reference_123456"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://aireiter.com/api/openapi/submit")
payload = {
model: "seedance2_5",
params: {
prompt: "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
type: "all_reference",
image_url: ["https://example.com/character.jpg", "https://example.com/product.jpg"],
video_url: ["https://example.com/motion-reference.mp4"],
audio_url: ["https://example.com/music-reference.mp3"],
resolution: "720p",
video_length: 8,
aspect_ratio: "16:9",
generate_audio: true,
output_format: "mov"
},
out_task_id: "seedance2_5_reference_123456"
}
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://aireiter.com/api/openapi/submit")!
let payload: [String: Any] = [
"model": "seedance2_5",
"params": [
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": ["https://example.com/character.jpg", "https://example.com/product.jpg"],
"video_url": ["https://example.com/motion-reference.mp4"],
"audio_url": ["https://example.com/music-reference.mp3"],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov"
],
"out_task_id": "seedance2_5_reference_123456"
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://aireiter.com/api/openapi/submit";
var payload = @"
{
""model"": ""seedance2_5"",
""params"": {
""prompt"": ""映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる"",
""type"": ""all_reference"",
""image_url"": [
""https://example.com/character.jpg"",
""https://example.com/product.jpg""
],
""video_url"": [
""https://example.com/motion-reference.mp4""
],
""audio_url"": [
""https://example.com/music-reference.mp3""
],
""resolution"": ""720p"",
""video_length"": 8,
""aspect_ratio"": ""16:9"",
""generate_audio"": true,
""output_format"": ""mov""
},
""out_task_id"": ""seedance2_5_reference_123456""
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
#include <stdio.h>
#include <curl/curl.h>
int main(void) {
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
const char *url = "https://aireiter.com/api/openapi/submit";
const char *payload = "{\"model\":\"seedance2_5\",\"params\":{\"prompt\":\"映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる\",\"type\":\"all_reference\",\"image_url\":[\"https://example.com/character.jpg\",\"https://example.com/product.jpg\"],\"video_url\":[\"https://example.com/motion-reference.mp4\"],\"audio_url\":[\"https://example.com/music-reference.mp3\"],\"resolution\":\"720p\",\"video_length\":8,\"aspect_ratio\":\"16:9\",\"generate_audio\":true,\"output_format\":\"mov\"},\"out_task_id\":\"seedance2_5_reference_123456\"}";
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
headers = curl_slist_append(headers, "Content-Type: application/json");
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, payload);
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}
curl_global_cleanup();
return 0;
}
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSURL *url = [NSURL URLWithString:@"https://aireiter.com/api/openapi/submit"];
NSDictionary *payload = @{
@"model": @"seedance2_5",
@"params": @{
@"prompt": @"映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
@"type": @"all_reference",
@"image_url": @[
@"https://example.com/character.jpg",
@"https://example.com/product.jpg"
],
@"video_url": @[@"https://example.com/motion-reference.mp4"],
@"audio_url": @[@"https://example.com/music-reference.mp3"],
@"resolution": @"720p",
@"video_length": @8,
@"aspect_ratio": @"16:9",
@"generate_audio": @YES,
@"output_format": @"mov"
},
@"out_task_id": @"seedance2_5_reference_123456"
};
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:payload
options:0
error:&error];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"Bearer <token>" forHTTPHeaderField:@"Authorization"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:jsonData];
NSURLSessionDataTask *task = [[NSURLSession sharedSession]
dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"Error: %@", error);
return;
}
NSString *result = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
NSLog(@"%@", result);
}];
[task resume];
[[NSRunLoop mainRunLoop] run];
}
return 0;
}
(* Requires cohttp and yojson libraries *)
open Lwt
open Cohttp
open Cohttp_lwt_unix
let url = "https://aireiter.com/api/openapi/submit"
let payload = {|{
"model": "seedance2_5",
"params": {
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": [
"https://example.com/character.jpg",
"https://example.com/product.jpg"
],
"video_url": [
"https://example.com/motion-reference.mp4"
],
"audio_url": [
"https://example.com/music-reference.mp3"
],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov"
},
"out_task_id": "seedance2_5_reference_123456"
}|}
let () =
let headers = Header.init ()
|> fun h -> Header.add h "Authorization" "Bearer <token>"
|> fun h -> Header.add h "Content-Type" "application/json"
in
let body = Cohttp_lwt.Body.of_string payload in
let response = Client.post ~headers ~body (Uri.of_string url) >>= fun (resp, body) ->
body |> Cohttp_lwt.Body.to_string >|= fun body_str ->
print_endline body_str
in
Lwt_main.run response
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() async {
final url = Uri.parse('https://aireiter.com/api/openapi/submit');
final payload = {
"model": "seedance2_5",
"params": {
"prompt": "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
"type": "all_reference",
"image_url": ["https://example.com/character.jpg", "https://example.com/product.jpg"],
"video_url": ["https://example.com/motion-reference.mp4"],
"audio_url": ["https://example.com/music-reference.mp3"],
"resolution": "720p",
"video_length": 8,
"aspect_ratio": "16:9",
"generate_audio": true,
"output_format": "mov"
},
"out_task_id": "seedance2_5_reference_123456"
};
final response = await http.post(
url,
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json'
},
body: jsonEncode(payload),
);
print(response.body);
}
library(httr)
library(jsonlite)
url <- "https://aireiter.com/api/openapi/submit"
payload <- list(
model = "seedance2_5",
params = list(
prompt = "映画的なプロダクトショートフィルム。人物と商品の外観の一貫性を保ち、カメラが滑らかに周回し、自然な環境音と合わせる",
type = "all_reference",
image_url = list(
"https://example.com/character.jpg",
"https://example.com/product.jpg"
),
video_url = list(
"https://example.com/motion-reference.mp4"
),
audio_url = list(
"https://example.com/music-reference.mp3"
),
resolution = "720p",
video_length = 8,
aspect_ratio = "16:9",
generate_audio = TRUE,
output_format = "mov"
),
out_task_id = "seedance2_5_reference_123456"
)
response <- POST(
url,
add_headers(
Authorization = "Bearer <token>",
`Content-Type` = "application/json"
),
body = toJSON(payload, auto_unbox = TRUE),
encode = "raw"
)
cat(content(response, "text"))
{
"statusCode": 200,
"message": "",
"data": {
"out_task_id": "seedance2_5_reference_123456",
"status": "pending",
"estimated_credits": 100,
"created_at": "2025-12-22T06:03:28.242Z"
}
}
{
"statusCode": 400,
"message": "リクエストパラメータが無効です",
"ok": false
}
{
"error": {
"code": 401,
"message": "認証に失敗しました。APIキーを確認してください"
}
}
{
"error": {
"code": 433,
"message": "アカウント残高が不足しています。チャージしてから再試行してください"
}
}
{
"error": {
"code": 500,
"message": "サーバー内部エラーです。しばらくしてから再試行してください"
}
}
Mode Rules
| type | Available Media | Media Limitations |
|---|---|---|
all_reference | image_url, video_url, audio_url | Up to 30 images, 9 videos, and 10 audio files |
first_last_frame | image_url, end_image_url | Provide the first and last frame images as needed; do not send videos or audio |
Please ensure that all media URLs are directly accessible from the public internet. Tasks are processed asynchronously, so do not wait for the final video on the HTTP connection used to submit the request.