Async Format
Veo 3 Create
Use DeerAPI to call the Veo 3 Create endpoint with request details, response details, examples, and an OpenAPI playground.
POST
/
v1
/
videos
cURL
curl -s 'https://api.deerapi.com/v1/videos' \
-H "Authorization: Bearer $DEERAPI_KEY" \
-F 'prompt=A whimsical flying elephant soaring over a vibrant candy-colored cityscape at sunset, with rainbow trails behind its wings, playful monkeys riding on its back throwing confetti, in a whimsical animated style like a Pixar movie, camera panning smoothly from ground level to aerial view,' \
-F 'model=veo3.1'import os
import requests
url = "https://api.deerapi.com/v1/videos"
headers = {"Authorization": "Bearer " + os.environ["DEERAPI_KEY"]}
data = {
"prompt": "A whimsical flying elephant soaring over a vibrant candy-colored cityscape at sunset, with rainbow trails behind its wings, playful monkeys riding on its back throwing confetti, in a whimsical animated style like a Pixar movie, camera panning smoothly from ground level to aerial view,",
"model": "veo3.1"
}
files = {}
response = requests.post(url, headers=headers, data=data, files=files)
print(response.json())
const form = new FormData();
form.append("prompt", "A whimsical flying elephant soaring over a vibrant candy-colored cityscape at sunset, with rainbow trails behind its wings, playful monkeys riding on its back throwing confetti, in a whimsical animated style like a Pixar movie, camera panning smoothly from ground level to aerial view,");
form.append("model", "veo3.1");
const response = await fetch("https://api.deerapi.com/v1/videos", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.DEERAPI_KEY}` },
body: form,
});
console.log(await response.json());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.deerapi.com/v1/videos",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"prompt\"\r\n\r\nA whimsical flying elephant soaring over a vibrant candy-colored cityscape at sunset, with rainbow trails behind its wings, playful monkeys riding on its back throwing confetti, in a whimsical animated style like a Pixar movie, camera panning smoothly from ground level to aerial view,\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"input_reference\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data; boundary=---011000010111000001101001"
],
]);
$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.deerapi.com/v1/videos"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"prompt\"\r\n\r\nA whimsical flying elephant soaring over a vibrant candy-colored cityscape at sunset, with rainbow trails behind its wings, playful monkeys riding on its back throwing confetti, in a whimsical animated style like a Pixar movie, camera panning smoothly from ground level to aerial view,\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"input_reference\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
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.deerapi.com/v1/videos")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"prompt\"\r\n\r\nA whimsical flying elephant soaring over a vibrant candy-colored cityscape at sunset, with rainbow trails behind its wings, playful monkeys riding on its back throwing confetti, in a whimsical animated style like a Pixar movie, camera panning smoothly from ground level to aerial view,\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"input_reference\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.deerapi.com/v1/videos")
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"] = 'multipart/form-data; boundary=---011000010111000001101001'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"prompt\"\r\n\r\nA whimsical flying elephant soaring over a vibrant candy-colored cityscape at sunset, with rainbow trails behind its wings, playful monkeys riding on its back throwing confetti, in a whimsical animated style like a Pixar movie, camera panning smoothly from ground level to aerial view,\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"input_reference\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"object": "<string>",
"created_at": 123,
"status": "<string>",
"completed_at": null,
"error": null,
"expires_at": null,
"model": "<string>",
"progress": 123,
"remixed_from_video_id": null,
"seconds": "<string>",
"size": "<string>"
}Overview
Use this endpoint to call the Veo 3 Create workflow through DeerAPI. The API reference on this page shows the request schema, response schema, authentication requirements, and runnable examples for the configured endpoint.Before you start
Use the DeerAPI base URL and pass your API Key in theAuthorization header:
https://api.deerapi.com
Authorization: Bearer $DEERAPI_KEY
Model selection
Choose a current model ID from the live pricing page. Model availability changes over time, so avoid copying a model ID from an old project without checking the live list first.Implementation notes
- Use the OpenAPI playground for the exact request fields accepted by this endpoint.
- Keep API Keys on the server side when you build production applications.
- Log the request ID from failed calls so support can investigate the request.
- Retry
429,500, and503responses with exponential backoff.
Authorizations
Use a DeerAPI API Key as a Bearer token.
Body
multipart/form-data
Use this field according to the endpoint schema.
Example:
"A whimsical flying elephant soaring over a vibrant candy-colored cityscape at sunset, with rainbow trails behind its wings, playful monkeys riding on its back throwing confetti, in a whimsical animated style like a Pixar movie, camera panning smoothly from ground level to aerial view,"
Use this field according to the endpoint schema.
Available options:
veo3, veo3-fast, veo3-pro, veo3.1, veo3.1-pro Example:
"veo3.1"
Use this field according to the endpoint schema.
Example:
"16x9"
Use this field according to the endpoint schema.
Response
200 - application/json
Successful Response
⌘I
cURL
curl -s 'https://api.deerapi.com/v1/videos' \
-H "Authorization: Bearer $DEERAPI_KEY" \
-F 'prompt=A whimsical flying elephant soaring over a vibrant candy-colored cityscape at sunset, with rainbow trails behind its wings, playful monkeys riding on its back throwing confetti, in a whimsical animated style like a Pixar movie, camera panning smoothly from ground level to aerial view,' \
-F 'model=veo3.1'import os
import requests
url = "https://api.deerapi.com/v1/videos"
headers = {"Authorization": "Bearer " + os.environ["DEERAPI_KEY"]}
data = {
"prompt": "A whimsical flying elephant soaring over a vibrant candy-colored cityscape at sunset, with rainbow trails behind its wings, playful monkeys riding on its back throwing confetti, in a whimsical animated style like a Pixar movie, camera panning smoothly from ground level to aerial view,",
"model": "veo3.1"
}
files = {}
response = requests.post(url, headers=headers, data=data, files=files)
print(response.json())
const form = new FormData();
form.append("prompt", "A whimsical flying elephant soaring over a vibrant candy-colored cityscape at sunset, with rainbow trails behind its wings, playful monkeys riding on its back throwing confetti, in a whimsical animated style like a Pixar movie, camera panning smoothly from ground level to aerial view,");
form.append("model", "veo3.1");
const response = await fetch("https://api.deerapi.com/v1/videos", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.DEERAPI_KEY}` },
body: form,
});
console.log(await response.json());
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.deerapi.com/v1/videos",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"prompt\"\r\n\r\nA whimsical flying elephant soaring over a vibrant candy-colored cityscape at sunset, with rainbow trails behind its wings, playful monkeys riding on its back throwing confetti, in a whimsical animated style like a Pixar movie, camera panning smoothly from ground level to aerial view,\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"input_reference\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data; boundary=---011000010111000001101001"
],
]);
$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.deerapi.com/v1/videos"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"prompt\"\r\n\r\nA whimsical flying elephant soaring over a vibrant candy-colored cityscape at sunset, with rainbow trails behind its wings, playful monkeys riding on its back throwing confetti, in a whimsical animated style like a Pixar movie, camera panning smoothly from ground level to aerial view,\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"input_reference\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
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.deerapi.com/v1/videos")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "multipart/form-data; boundary=---011000010111000001101001")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"prompt\"\r\n\r\nA whimsical flying elephant soaring over a vibrant candy-colored cityscape at sunset, with rainbow trails behind its wings, playful monkeys riding on its back throwing confetti, in a whimsical animated style like a Pixar movie, camera panning smoothly from ground level to aerial view,\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"input_reference\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.deerapi.com/v1/videos")
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"] = 'multipart/form-data; boundary=---011000010111000001101001'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"prompt\"\r\n\r\nA whimsical flying elephant soaring over a vibrant candy-colored cityscape at sunset, with rainbow trails behind its wings, playful monkeys riding on its back throwing confetti, in a whimsical animated style like a Pixar movie, camera panning smoothly from ground level to aerial view,\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"input_reference\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"object": "<string>",
"created_at": 123,
"status": "<string>",
"completed_at": null,
"error": null,
"expires_at": null,
"model": "<string>",
"progress": 123,
"remixed_from_video_id": null,
"seconds": "<string>",
"size": "<string>"
}