GET /v1/queue/{model}/requests/{requestID}
GET
/v1/queue/{model}/requests/{requestID}Returns the full result of a video generation task, including download URLs and usage. Triggers billing when status is COMPLETED.
Request
Path parameters
| Parameter | Type | Description |
|---|---|---|
model | string | Video model ID (e.g. veo-3). |
requestID | string | Request ID from the submit response. |
Headers
| Header | Value |
|---|---|
Authorization | Bearer {api_key} |
Response
When COMPLETED
{
"request_id": "Z2VtaW5pOnZlby0zOjg6NzIwcDoxOm9wLTEyMzQ1",
"status": "COMPLETED",
"model": "veo-3",
"data": [
{ "url": "/v1/queue/veo-3/requests/Z2Vt.../content/0" }
],
"usage": {
"video_seconds": 8,
"video_resolution": "720p",
"video_has_audio": true
}
}
When still processing
{
"request_id": "...",
"status": "IN_PROGRESS",
"model": "veo-3"
}
When failed
{
"request_id": "...",
"status": "FAILED",
"model": "veo-3",
"error": "content policy violation"
}
Response fields
| Field | Type | Description |
|---|---|---|
request_id | string | The request ID. |
status | string | IN_QUEUE, IN_PROGRESS, COMPLETED, or FAILED. |
model | string | Model ID. |
data[].url | string | Relative path to the content endpoint. |
usage.video_seconds | number | Duration of generated video. |
usage.video_resolution | string | "720p", "1080p", or "4k". |
usage.video_has_audio | boolean | Whether audio was generated. |
error | string | Error description (only when FAILED). |
Billing is triggered when you call this endpoint and the task is COMPLETED. Use the lightweight status endpoint for polling, and only call this endpoint when you're ready to consume the result.
Status codes
| Status | Description |
|---|---|
200 | Success |
400 | Invalid request ID or provider mismatch |
401 | Unauthorized |
502 | Upstream provider error |
Examples
curl https://api.modelmax.io/v1/queue/veo-3/requests/{request_id} \
-H "Authorization: Bearer $MODELMAX_API_KEY"
import requests
BASE = "https://api.modelmax.io"
headers = {"Authorization": "Bearer your-key"}
result = requests.get(f"{BASE}{task['response_url']}", headers=headers).json()
if result["status"] == "COMPLETED":
for i, video in enumerate(result["data"]):
print(f"Video {i}: {video['url']}")
print(f"Usage: {result['usage']}")
elif result["status"] == "FAILED":
print(f"Error: {result['error']}")
const resultResp = await fetch(`${BASE_URL}${task.response_url}`, {
headers: { Authorization: `Bearer ${API_KEY}` },
});
const result = await resultResp.json();
if (result.status === "COMPLETED") {
console.log("Videos:", result.data);
console.log("Usage:", result.usage);
}
Next step
Download the video → Queue Content
