Veo 3.1 Fast
Fast Veo 3.1 by Google: 8 seconds of video with sound and speech — from a description, frames or reference photos.
Good for: ads, talking characters, social clips
How to get a better result
"A ginger cat on a windowsill, rain outside, watercolor".
"Soft sunset", "neon light", "cozy, warm tones".
Refine the description and press "Another version" — every result is new.
Pass this model in the request veo-3.1-fast
1. Create a task POST /api/v1/jobs/createTask
curl -X POST https://mixmedia.tech/api/v1/jobs/createTask \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-123" \
-d '{
"model": "veo-3.1-fast",
"callBackUrl": "https://your-app.example/callback",
"input": {
"prompt": "An old fisherman mends a net on the pier at dawn and says: \"The sea is calm today\", gulls and waves are heard",
"image_urls": [],
"resolution": "720p",
"aspect_ratio": "16:9",
"duration": "8"
}
}'import time, requests
API = "https://mixmedia.tech/api/v1"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}
task = requests.post(f"{API}/jobs/createTask", headers=HEADERS, json={
"model": "veo-3.1-fast",
"callBackUrl": "https://your-app.example/callback",
"input": {
"prompt": "An old fisherman mends a net on the pier at dawn and says: \"The sea is calm today\", gulls and waves are heard",
"image_urls": [],
"resolution": "720p",
"aspect_ratio": "16:9",
"duration": "8"
}
}).json()
task_id = task["data"]["taskId"]
while True:
info = requests.get(f"{API}/jobs/recordInfo", headers=HEADERS, params={"taskId": task_id}).json()["data"]
if info["state"] in ("success", "fail"):
break
time.sleep(4)
print(info["state"], info.get("resultJson") or info.get("failMsg"))const API = "https://mixmedia.tech/api/v1";
const headers = { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" };
const { data } = await fetch(`${API}/jobs/createTask`, {
method: "POST", headers,
body: JSON.stringify({
"model": "veo-3.1-fast",
"callBackUrl": "https://your-app.example/callback",
"input": {
"prompt": "An old fisherman mends a net on the pier at dawn and says: \"The sea is calm today\", gulls and waves are heard",
"image_urls": [],
"resolution": "720p",
"aspect_ratio": "16:9",
"duration": "8"
}
}),
}).then((r) => r.json());
let info;
do {
await new Promise((r) => setTimeout(r, 4000));
info = (await fetch(`${API}/jobs/recordInfo?taskId=${data.taskId}`, { headers }).then((r) => r.json())).data;
} while (!["success", "fail"].includes(info.state));
console.log(info.state, info.resultJson ?? info.failMsg);Response: data.taskId. callBackUrl and Idempotency-Key are optional.
2. Status and result GET /api/v1/jobs/recordInfo
curl "https://mixmedia.tech/api/v1/jobs/recordInfo?taskId=TASK_ID" \
-H "Authorization: Bearer YOUR_API_KEY"
data.state: waiting, queuing, generating, success, fail. On success data.resultJson is a JSON string with resultUrls.
3. Upload a file POST /api/v1/files/upload
curl -X POST https://mixmedia.tech/api/v1/files/upload \
-H "Authorization: Bearer YOUR_API_KEY" -F "file=@photo.jpg"
The response has data.url. Pass that URL in the file field. Any public https URL works too.
About the model
Veo 3.1 Fast is Google's fast video model. The clip is always 8 seconds and comes with sound: voices, effects and music are made together with the picture.
From a description, the first (and last) frame or 1–3 reference photos — a character, a product, a style. 16:9 or 9:16, 720p or 1080p at one price. You pay per clip.


