Text to Video
curl --request POST \
--url https://api.modelhunter.ai/api/v1/veo/text-to-video \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"input": {
"prompt": "<string>",
"aspect_ratio": "<string>",
"seed": 123,
"enable_translation": true,
"watermark": "<string>"
},
"webhookUrl": "<string>",
"metadata": {}
}
'import requests
url = "https://api.modelhunter.ai/api/v1/veo/text-to-video"
payload = {
"model": "<string>",
"input": {
"prompt": "<string>",
"aspect_ratio": "<string>",
"seed": 123,
"enable_translation": True,
"watermark": "<string>"
},
"webhookUrl": "<string>",
"metadata": {}
}
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({
model: '<string>',
input: {
prompt: '<string>',
aspect_ratio: '<string>',
seed: 123,
enable_translation: true,
watermark: '<string>'
},
webhookUrl: '<string>',
metadata: {}
})
};
fetch('https://api.modelhunter.ai/api/v1/veo/text-to-video', 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.modelhunter.ai/api/v1/veo/text-to-video",
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([
'model' => '<string>',
'input' => [
'prompt' => '<string>',
'aspect_ratio' => '<string>',
'seed' => 123,
'enable_translation' => true,
'watermark' => '<string>'
],
'webhookUrl' => '<string>',
'metadata' => [
]
]),
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.modelhunter.ai/api/v1/veo/text-to-video"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"input\": {\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"seed\": 123,\n \"enable_translation\": true,\n \"watermark\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\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.modelhunter.ai/api/v1/veo/text-to-video")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"input\": {\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"seed\": 123,\n \"enable_translation\": true,\n \"watermark\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.modelhunter.ai/api/v1/veo/text-to-video")
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 \"model\": \"<string>\",\n \"input\": {\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"seed\": 123,\n \"enable_translation\": true,\n \"watermark\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "task_veo_t2v_123",
"status": "pending",
"type": "text-to-video",
"provider": "veo",
"model": "veo3",
"created_at": "2026-03-14T10:00:00Z",
"estimated_seconds": 180
}
}
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "input.prompt is required"
}
}
Gemini
Text to Video
Generate a video from text using Veo 3.1.
POST
/
api
/
v1
/
veo
/
text-to-video
Text to Video
curl --request POST \
--url https://api.modelhunter.ai/api/v1/veo/text-to-video \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "<string>",
"input": {
"prompt": "<string>",
"aspect_ratio": "<string>",
"seed": 123,
"enable_translation": true,
"watermark": "<string>"
},
"webhookUrl": "<string>",
"metadata": {}
}
'import requests
url = "https://api.modelhunter.ai/api/v1/veo/text-to-video"
payload = {
"model": "<string>",
"input": {
"prompt": "<string>",
"aspect_ratio": "<string>",
"seed": 123,
"enable_translation": True,
"watermark": "<string>"
},
"webhookUrl": "<string>",
"metadata": {}
}
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({
model: '<string>',
input: {
prompt: '<string>',
aspect_ratio: '<string>',
seed: 123,
enable_translation: true,
watermark: '<string>'
},
webhookUrl: '<string>',
metadata: {}
})
};
fetch('https://api.modelhunter.ai/api/v1/veo/text-to-video', 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.modelhunter.ai/api/v1/veo/text-to-video",
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([
'model' => '<string>',
'input' => [
'prompt' => '<string>',
'aspect_ratio' => '<string>',
'seed' => 123,
'enable_translation' => true,
'watermark' => '<string>'
],
'webhookUrl' => '<string>',
'metadata' => [
]
]),
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.modelhunter.ai/api/v1/veo/text-to-video"
payload := strings.NewReader("{\n \"model\": \"<string>\",\n \"input\": {\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"seed\": 123,\n \"enable_translation\": true,\n \"watermark\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\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.modelhunter.ai/api/v1/veo/text-to-video")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"<string>\",\n \"input\": {\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"seed\": 123,\n \"enable_translation\": true,\n \"watermark\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.modelhunter.ai/api/v1/veo/text-to-video")
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 \"model\": \"<string>\",\n \"input\": {\n \"prompt\": \"<string>\",\n \"aspect_ratio\": \"<string>\",\n \"seed\": 123,\n \"enable_translation\": true,\n \"watermark\": \"<string>\"\n },\n \"webhookUrl\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "task_veo_t2v_123",
"status": "pending",
"type": "text-to-video",
"provider": "veo",
"model": "veo3",
"created_at": "2026-03-14T10:00:00Z",
"estimated_seconds": 180
}
}
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "input.prompt is required"
}
}
Body Parameters
string
required
Veo model to use. In this phase:
veo3— billed at$3.20per requestveo3_fast— billed at$1.20per request
8s clip.object
required
Input parameters for the generation.
Show properties
Show properties
string
required
Text description of the video to generate.
string
default:"16:9"
Output aspect ratio. Options:
16:9, 9:16, Auto.number
Optional deterministic seed. Must be an integer between
10000 and 99999.boolean
Enable upstream prompt translation before generation.
string
Optional watermark mode passed through to the upstream Veo provider.
string
URL to receive a webhook when the task completes.
object
Custom key-value metadata to attach to the task.
{
"success": true,
"data": {
"id": "task_veo_t2v_123",
"status": "pending",
"type": "text-to-video",
"provider": "veo",
"model": "veo3",
"created_at": "2026-03-14T10:00:00Z",
"estimated_seconds": 180
}
}
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "input.prompt is required"
}
}
⌘I