# model can be "veo3.1-fast", or the compatible alias "veo3.1-fast-ext"
curl --request POST \
--url https://api.apimart.ai/v1/videos/{task_id}/remix \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": false,
"aspect_ratio": "16:9",
"resolution": "720p"
}'
import requests
url = "https://api.apimart.ai/v1/videos/{task_id}/remix"
payload = {
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": False,
"aspect_ratio": "16:9",
"resolution": "720p"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/{task_id}/remix";
const payload = {
model: "veo3.1-fast",
prompt: "The cat continues running on the grass, butterflies fly into the distance",
raw: false,
aspect_ratio: "16:9",
resolution: "720p"
};
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://api.apimart.ai/v1/videos/{task_id}/remix"
payload := map[string]interface{}{
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": false,
"aspect_ratio": "16:9",
"resolution": "720p",
}
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://api.apimart.ai/v1/videos/{task_id}/remix";
String payload = """
{
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": false,
"aspect_ratio": "16:9",
"resolution": "720p"
}
""";
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://api.apimart.ai/v1/videos/{task_id}/remix";
$payload = [
"model" => "veo3.1-fast",
"prompt" => "The cat continues running on the grass, butterflies fly into the distance",
"raw" => false,
"aspect_ratio" => "16:9",
"resolution" => "720p"
];
$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://api.apimart.ai/v1/videos/{task_id}/remix")
payload = {
model: "veo3.1-fast",
prompt: "The cat continues running on the grass, butterflies fly into the distance",
raw: false,
aspect_ratio: "16:9",
resolution: "720p"
}
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 = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/videos/{task_id}/remix")!
let payload: [String: Any] = [
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": false,
"aspect_ratio": "16:9",
"resolution": "720p"
]
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://api.apimart.ai/v1/videos/{task_id}/remix";
var payload = @"{
""model"": ""veo3.1-fast"",
""prompt"": ""The cat continues running on the grass, butterflies fly into the distance"",
""raw"": false,
""aspect_ratio"": ""16:9"",
""resolution"": ""720p""
}";
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://api.apimart.ai/v1/videos/{task_id}/remix";
const char *payload = "{"
"\"model\":\"veo3.1-fast\","
"\"prompt\":\"The cat continues running on the grass, butterflies fly into the distance\","
"\"raw\":false,"
"\"aspect_ratio\":\"16:9\","
"\"resolution\":\"720p\""
"}";
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://api.apimart.ai/v1/videos/{task_id}/remix"];
NSDictionary *payload = @{
@"model": @"veo3.1-fast",
@"prompt": @"The cat continues running on the grass, butterflies fly into the distance",
@"raw": @NO,
@"aspect_ratio": @"16:9",
@"resolution": @"720p"
};
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://api.apimart.ai/v1/videos/{task_id}/remix"
let payload = {|{
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": false,
"aspect_ratio": "16:9",
"resolution": "720p"
}|}
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://api.apimart.ai/v1/videos/{task_id}/remix');
final payload = {
'model': 'veo3.1-fast',
'prompt': 'The cat continues running on the grass, butterflies fly into the distance',
'raw': false,
'aspect_ratio': '16:9',
'resolution': '720p'
};
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://api.apimart.ai/v1/videos/{task_id}/remix"
payload <- list(
model = "veo3.1-fast",
prompt = "The cat continues running on the grass, butterflies fly into the distance",
raw = FALSE,
aspect_ratio = "16:9",
resolution = "720p"
)
response <- POST(
url,
add_headers(
Authorization = "Bearer <token>",
`Content-Type` = "application/json"
),
body = toJSON(payload, auto_unbox = TRUE),
encode = "raw"
)
cat(content(response, "text"))
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JQXYZ9999NEWEXTENDID"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Invalid authentication credentials",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient balance. Please top up your account",
"type": "payment_required"
}
}
{
"error": {
"code": 403,
"message": "Access forbidden. You don't have permission to access this resource",
"type": "permission_error"
}
}
{
"error": {
"code": 404,
"message": "Video not found",
"type": "not_found_error"
}
}
{
"error": {
"code": 429,
"message": "Rate limit exceeded. Please try again later",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Internal server error. Please try again later",
"type": "server_error"
}
}
{
"error": {
"code": 502,
"message": "Bad gateway. The server is temporarily unavailable",
"type": "bad_gateway"
}
}
VEO3
VEO3 Video Remix
- Extend generated videos by continuing from 8 seconds to 15 seconds
- Asynchronous processing mode, returns task ID for subsequent queries
- Generated video links are valid for 24 hours, please save them promptly
POST
/
v1
/
videos
/
{task_id}
/
remix
# model can be "veo3.1-fast", or the compatible alias "veo3.1-fast-ext"
curl --request POST \
--url https://api.apimart.ai/v1/videos/{task_id}/remix \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": false,
"aspect_ratio": "16:9",
"resolution": "720p"
}'
import requests
url = "https://api.apimart.ai/v1/videos/{task_id}/remix"
payload = {
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": False,
"aspect_ratio": "16:9",
"resolution": "720p"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/{task_id}/remix";
const payload = {
model: "veo3.1-fast",
prompt: "The cat continues running on the grass, butterflies fly into the distance",
raw: false,
aspect_ratio: "16:9",
resolution: "720p"
};
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://api.apimart.ai/v1/videos/{task_id}/remix"
payload := map[string]interface{}{
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": false,
"aspect_ratio": "16:9",
"resolution": "720p",
}
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://api.apimart.ai/v1/videos/{task_id}/remix";
String payload = """
{
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": false,
"aspect_ratio": "16:9",
"resolution": "720p"
}
""";
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://api.apimart.ai/v1/videos/{task_id}/remix";
$payload = [
"model" => "veo3.1-fast",
"prompt" => "The cat continues running on the grass, butterflies fly into the distance",
"raw" => false,
"aspect_ratio" => "16:9",
"resolution" => "720p"
];
$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://api.apimart.ai/v1/videos/{task_id}/remix")
payload = {
model: "veo3.1-fast",
prompt: "The cat continues running on the grass, butterflies fly into the distance",
raw: false,
aspect_ratio: "16:9",
resolution: "720p"
}
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 = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/videos/{task_id}/remix")!
let payload: [String: Any] = [
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": false,
"aspect_ratio": "16:9",
"resolution": "720p"
]
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://api.apimart.ai/v1/videos/{task_id}/remix";
var payload = @"{
""model"": ""veo3.1-fast"",
""prompt"": ""The cat continues running on the grass, butterflies fly into the distance"",
""raw"": false,
""aspect_ratio"": ""16:9"",
""resolution"": ""720p""
}";
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://api.apimart.ai/v1/videos/{task_id}/remix";
const char *payload = "{"
"\"model\":\"veo3.1-fast\","
"\"prompt\":\"The cat continues running on the grass, butterflies fly into the distance\","
"\"raw\":false,"
"\"aspect_ratio\":\"16:9\","
"\"resolution\":\"720p\""
"}";
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://api.apimart.ai/v1/videos/{task_id}/remix"];
NSDictionary *payload = @{
@"model": @"veo3.1-fast",
@"prompt": @"The cat continues running on the grass, butterflies fly into the distance",
@"raw": @NO,
@"aspect_ratio": @"16:9",
@"resolution": @"720p"
};
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://api.apimart.ai/v1/videos/{task_id}/remix"
let payload = {|{
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": false,
"aspect_ratio": "16:9",
"resolution": "720p"
}|}
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://api.apimart.ai/v1/videos/{task_id}/remix');
final payload = {
'model': 'veo3.1-fast',
'prompt': 'The cat continues running on the grass, butterflies fly into the distance',
'raw': false,
'aspect_ratio': '16:9',
'resolution': '720p'
};
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://api.apimart.ai/v1/videos/{task_id}/remix"
payload <- list(
model = "veo3.1-fast",
prompt = "The cat continues running on the grass, butterflies fly into the distance",
raw = FALSE,
aspect_ratio = "16:9",
resolution = "720p"
)
response <- POST(
url,
add_headers(
Authorization = "Bearer <token>",
`Content-Type` = "application/json"
),
body = toJSON(payload, auto_unbox = TRUE),
encode = "raw"
)
cat(content(response, "text"))
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JQXYZ9999NEWEXTENDID"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Invalid authentication credentials",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient balance. Please top up your account",
"type": "payment_required"
}
}
{
"error": {
"code": 403,
"message": "Access forbidden. You don't have permission to access this resource",
"type": "permission_error"
}
}
{
"error": {
"code": 404,
"message": "Video not found",
"type": "not_found_error"
}
}
{
"error": {
"code": 429,
"message": "Rate limit exceeded. Please try again later",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Internal server error. Please try again later",
"type": "server_error"
}
}
{
"error": {
"code": 502,
"message": "Bad gateway. The server is temporarily unavailable",
"type": "bad_gateway"
}
}
Model name compatibility note: This endpoint also accepts the aliases
veo3.1-fast-ext (equivalent to veo3.1-fast) and veo3.1-quality-ext (equivalent to veo3.1-quality). Each alias is interchangeable with its model and produces identical results.# model can be "veo3.1-fast", or the compatible alias "veo3.1-fast-ext"
curl --request POST \
--url https://api.apimart.ai/v1/videos/{task_id}/remix \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": false,
"aspect_ratio": "16:9",
"resolution": "720p"
}'
import requests
url = "https://api.apimart.ai/v1/videos/{task_id}/remix"
payload = {
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": False,
"aspect_ratio": "16:9",
"resolution": "720p"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/videos/{task_id}/remix";
const payload = {
model: "veo3.1-fast",
prompt: "The cat continues running on the grass, butterflies fly into the distance",
raw: false,
aspect_ratio: "16:9",
resolution: "720p"
};
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://api.apimart.ai/v1/videos/{task_id}/remix"
payload := map[string]interface{}{
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": false,
"aspect_ratio": "16:9",
"resolution": "720p",
}
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://api.apimart.ai/v1/videos/{task_id}/remix";
String payload = """
{
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": false,
"aspect_ratio": "16:9",
"resolution": "720p"
}
""";
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://api.apimart.ai/v1/videos/{task_id}/remix";
$payload = [
"model" => "veo3.1-fast",
"prompt" => "The cat continues running on the grass, butterflies fly into the distance",
"raw" => false,
"aspect_ratio" => "16:9",
"resolution" => "720p"
];
$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://api.apimart.ai/v1/videos/{task_id}/remix")
payload = {
model: "veo3.1-fast",
prompt: "The cat continues running on the grass, butterflies fly into the distance",
raw: false,
aspect_ratio: "16:9",
resolution: "720p"
}
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 = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/videos/{task_id}/remix")!
let payload: [String: Any] = [
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": false,
"aspect_ratio": "16:9",
"resolution": "720p"
]
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://api.apimart.ai/v1/videos/{task_id}/remix";
var payload = @"{
""model"": ""veo3.1-fast"",
""prompt"": ""The cat continues running on the grass, butterflies fly into the distance"",
""raw"": false,
""aspect_ratio"": ""16:9"",
""resolution"": ""720p""
}";
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://api.apimart.ai/v1/videos/{task_id}/remix";
const char *payload = "{"
"\"model\":\"veo3.1-fast\","
"\"prompt\":\"The cat continues running on the grass, butterflies fly into the distance\","
"\"raw\":false,"
"\"aspect_ratio\":\"16:9\","
"\"resolution\":\"720p\""
"}";
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://api.apimart.ai/v1/videos/{task_id}/remix"];
NSDictionary *payload = @{
@"model": @"veo3.1-fast",
@"prompt": @"The cat continues running on the grass, butterflies fly into the distance",
@"raw": @NO,
@"aspect_ratio": @"16:9",
@"resolution": @"720p"
};
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://api.apimart.ai/v1/videos/{task_id}/remix"
let payload = {|{
"model": "veo3.1-fast",
"prompt": "The cat continues running on the grass, butterflies fly into the distance",
"raw": false,
"aspect_ratio": "16:9",
"resolution": "720p"
}|}
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://api.apimart.ai/v1/videos/{task_id}/remix');
final payload = {
'model': 'veo3.1-fast',
'prompt': 'The cat continues running on the grass, butterflies fly into the distance',
'raw': false,
'aspect_ratio': '16:9',
'resolution': '720p'
};
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://api.apimart.ai/v1/videos/{task_id}/remix"
payload <- list(
model = "veo3.1-fast",
prompt = "The cat continues running on the grass, butterflies fly into the distance",
raw = FALSE,
aspect_ratio = "16:9",
resolution = "720p"
)
response <- POST(
url,
add_headers(
Authorization = "Bearer <token>",
`Content-Type` = "application/json"
),
body = toJSON(payload, auto_unbox = TRUE),
encode = "raw"
)
cat(content(response, "text"))
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01JQXYZ9999NEWEXTENDID"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Invalid authentication credentials",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient balance. Please top up your account",
"type": "payment_required"
}
}
{
"error": {
"code": 403,
"message": "Access forbidden. You don't have permission to access this resource",
"type": "permission_error"
}
}
{
"error": {
"code": 404,
"message": "Video not found",
"type": "not_found_error"
}
}
{
"error": {
"code": 429,
"message": "Rate limit exceeded. Please try again later",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "Internal server error. Please try again later",
"type": "server_error"
}
}
{
"error": {
"code": 502,
"message": "Bad gateway. The server is temporarily unavailable",
"type": "bad_gateway"
}
}
Path Parameters
string
required
Original video task IDThis is the task_id returned from the video generation API. The original video task status must be
successAuthorization
string
required
All API endpoints require Bearer Token authenticationGet your API Key:Visit the API Key Management Page to get your API KeyAdd to the request header:
Authorization: Bearer YOUR_API_KEY
Request Parameters
string
required
Video model name, must match the model used for the original videoSupported models:
veo3.1-fast- Fast version (compatible aliasveo3.1-fast-ext)veo3.1-quality- High quality version (compatible aliasveo3.1-quality-ext)
"veo3.1-fast"For backward compatibility, the aliases
veo3.1-fast-ext (for veo3.1-fast) and veo3.1-quality-ext (for veo3.1-quality) remain usable.boolean
default:"false"
Whether to run content moderation before submitting the video task.
true: useomni-moderation-latestto review prompts and input imagesfalseor omitted: do not send a moderation request, adding no moderation cost or latency (default)
string
required
Continuation prompt describing the content for the extended portion
boolean
Whether to return only the extended portion of the video
true- Only returns the extended video
falsestring
Aspect ratio for the extended videoSupported values:
16:99:16
string
Video resolutionSupported values:
720p(default)1080p4k
Important Notes
Model must match: The model used for extension must be the same as the one used to generate the original video. Videos generated with
veo3.1-fast must also use veo3.1-fast for extension.Only completed videos supported: The original video task status must be
success.task_id in URL: This is the
task_id returned from the first step of video generation (not the upstream ID).Response
integer
Response status code