Skip to content
Developers
API docs / Models

MAKEUGC PLATFORM API · DOCS V2

Grok Imagine 1.5 · Text to video

Grok Imagine 1.5 · text-to-video

VIDEO OUTPUT

Request

POST /enterprise/generate

Model ID: grok-imagine-video-1-5-t2v. Put model inputs inside params; keep model and project_id at the top level. Send webhook_url at the top level when using notifications.

Strict, case-sensitive parameters. Do not send last frames, video/audio references, seed, negative_prompt, generate_audio, model_version or client prices.
Images accept public HTTP(S) URLs without credentials or valid base64 image data URIs. Private network addresses and malformed data URIs are rejected.
The enqueue quote fixes the charge. Status returns credits_deducted, credits_charged and refund_result. No additional debit for longer output.

Request envelope

Parameter Description
model
string
Required
Exact public model ID from the model catalog.
params
object
Required
Model-specific input fields. See the individual model page for required fields, types, defaults and limits.
project_id
string
Optional
Existing project belonging to your account. Omit to create a project automatically.
webhook_url
string
Optional
Optional callback URL for supported models. Models marked polling-only reject this field. Enterprise Seedance does not forward it. Always keep polling available.

Model parameters

Parameter Description
prompt
string
Required
Non-blank video prompt.

Allowed: Up to 4,096 characters

duration
integer
Optional
Output duration in seconds; strings and fractions are rejected.

Allowed: 1–15

Default: 6

resolution
string
Optional
Output resolution.

Allowed: 480p | 720p | 1080p

Default: 720p

enable_safety_checker
boolean
Optional
Disable only with provider authorization for relaxed screening.

Default: true

aspect_ratio
string
Optional
Output aspect ratio.

Allowed: 16:9 | 4:3 | 3:2 | 1:1 | 2:3 | 3:4 | 9:16

Default: 16:9

Code examples

Set MAKEUGC_API_KEY on your server. Replace example media URLs with files you host and keep accessible during processing.

cURL
curl --fail-with-body --max-time 120 -X POST "https://app.makeugc.ai/api/platform/enterprise/generate" \
  -H "X-Api-Key: $MAKEUGC_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "grok-imagine-video-1-5-t2v",
  "params": {
    "prompt": "A slow camera move around a ceramic coffee cup in warm morning light.",
    "duration": 6,
    "resolution": "720p"
  }
}'
JavaScript
// Run on your server with Node.js 20+.
const apiKey = process.env.MAKEUGC_API_KEY;
if (!apiKey) throw new Error("Set MAKEUGC_API_KEY first");

const response = await fetch("https://app.makeugc.ai/api/platform/enterprise/generate", {
  method: "POST",
  headers: {
    "X-Api-Key": apiKey,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "model": "grok-imagine-video-1-5-t2v",
  "params": {
    "prompt": "A slow camera move around a ceramic coffee cup in warm morning light.",
    "duration": 6,
    "resolution": "720p"
  }
}),
  signal: AbortSignal.timeout(120000),
});
const text = await response.text();
if (!response.ok) {
  throw new Error(`HTTP ${response.status}: ${text} (request ${response.headers.get("x-request-id")})`);
}
const result = JSON.parse(text);
console.log(result);
Python
# Install the requests package before running.
import os
import requests

payload = {
    "model": "grok-imagine-video-1-5-t2v",
    "params": {
        "prompt": "A slow camera move around a ceramic coffee cup in warm morning light.",
        "duration": 6,
        "resolution": "720p"
    }
}

response = requests.post(
    "https://app.makeugc.ai/api/platform/enterprise/generate",
    headers={"X-Api-Key": os.environ["MAKEUGC_API_KEY"]},
    json=payload,
    timeout=120,
)
if not response.ok:
    raise RuntimeError(f"HTTP {response.status_code}: {response.text} "
                       f"(request {response.headers.get('x-request-id')})")
print(response.json())

200 · Job accepted

Generation response
{
  "request_id": "request_123",
  "project_id": "project_123",
  "media": "video",
  "model": "grok-imagine-video-1-5-t2v",
  "status": "queued",
  "message": "Enterprise API job queued"
}

Retrieve the result

Save request_id, then poll every 5–10 seconds. A successful generation request does not mean the output is ready.

cURL
curl --fail-with-body --max-time 120 -X GET "https://app.makeugc.ai/api/platform/enterprise/status/request_123?media=video" \
  -H "X-Api-Key: $MAKEUGC_API_KEY"
JavaScript
// Run on your server with Node.js 20+.
const apiKey = process.env.MAKEUGC_API_KEY;
if (!apiKey) throw new Error("Set MAKEUGC_API_KEY first");

const response = await fetch("https://app.makeugc.ai/api/platform/enterprise/status/request_123?media=video", {
  method: "GET",
  headers: {
    "X-Api-Key": apiKey,
  },
  signal: AbortSignal.timeout(120000),
});
const text = await response.text();
if (!response.ok) {
  throw new Error(`HTTP ${response.status}: ${text} (request ${response.headers.get("x-request-id")})`);
}
const result = JSON.parse(text);
console.log(result);
Python
# Install the requests package before running.
import os
import requests

response = requests.get(
    "https://app.makeugc.ai/api/platform/enterprise/status/request_123?media=video",
    headers={"X-Api-Key": os.environ["MAKEUGC_API_KEY"]},
    timeout=120,
)
if not response.ok:
    raise RuntimeError(f"HTTP {response.status_code}: {response.text} "
                       f"(request {response.headers.get('x-request-id')})")
print(response.json())

200 · Completed

Status response
{
  "request_id": "request_123",
  "media": "video",
  "status": 1,
  "video_url": "https://your-cdn.example/result.mp4",
  "created_at": "2026-10-13T00:00:00.000Z",
  "updated_at": "2026-10-13T00:00:30.000Z"
}

Read status: 0 is processing, 1 is completed and 2 is failed. Video status can also be a string. Output is in video_url . If completed has no output URL yet, continue polling within your timeout. See jobs & webhooks.

Credits & errors

Cost: quoted by duration, resolution and image count. Read returned credit fields when available. See credit units and limits.

Invalid inputs return 400; insufficient credits can return 400 or 402 depending on the generation path. Access restrictions return 403 and temporary model unavailability can return 503. See error handling. Each POST can start a billable job; do not automatically resubmit after a timeout.

Related models

Browse all models →