Skip to content
Developers
API docs / Features

MAKEUGC PLATFORM API · DOCS V2

Scenes

Generate individual scenes from descriptions and image references.

Workflow

  1. Describe one scene, including subject, movement, camera and setting.
  2. Choose a video model and provide an image reference when required.
  3. Submit and poll each scene separately. Use Video Extend for connected Veo scenes.
Separate generations are independent jobs. For continuous camera motion across multiple scenes, see the Video Extend feature.
These workflows use the public model generation endpoints. The selected model controls available parameters and billing.
For /enterprise/generate, save request_id and poll /enterprise/status/{request_id}?media=video (or image for image models). Status 0 is processing, 1 is completed and 2 is failed. Video output is video_url; image output is output.output_link.
For /seedance/generate, save data.id and poll /seedance/status?id=ID. Read data.status and the completed data.url. Keep these two response formats separate.

Example IDs and media URLs are placeholders. Replace them with values from your account and accessible media files.

Choose a model

Example request

This example uses Seedance 2.5. Replace media URLs with your own files. The model reference documents all options and the matching status request.

cURL
curl --fail-with-body --max-time 120 -X POST "https://app.makeugc.ai/api/platform/seedance/generate" \
  -H "X-Api-Key: $MAKEUGC_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2.5",
  "prompt": "A creator picks up a ceramic travel cup from a kitchen counter, turns toward the camera and smiles. Soft daylight, natural movement, vertical framing.",
  "duration": 10,
  "aspect_ratio": "9:16",
  "resolution": "720p",
  "generate_audio": true
}'
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/seedance/generate", {
  method: "POST",
  headers: {
    "X-Api-Key": apiKey,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
  "model": "seedance-2.5",
  "prompt": "A creator picks up a ceramic travel cup from a kitchen counter, turns toward the camera and smiles. Soft daylight, natural movement, vertical framing.",
  "duration": 10,
  "aspect_ratio": "9:16",
  "resolution": "720p",
  "generate_audio": true
}),
  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": "seedance-2.5",
    "prompt": "A creator picks up a ceramic travel cup from a kitchen counter, turns toward the camera and smiles. Soft daylight, natural movement, vertical framing.",
    "duration": 10,
    "aspect_ratio": "9:16",
    "resolution": "720p",
    "generate_audio": True
}

response = requests.post(
    "https://app.makeugc.ai/api/platform/seedance/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())

See Jobs & status for polling and result formats.