Skip to content
Developers
API docs / Features

MAKEUGC PLATFORM API · DOCS V2

B-roll

Generate supporting product shots, cutaways and atmospheric footage.

Workflow

  1. Choose a model below and check its supported inputs, duration, resolution and credits.
  2. Send a generation request with your prompt and any required public reference URLs. Save the returned job ID.
  3. Poll the matching status endpoint until completion, then download the output.
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 Kling · B-roll. 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/enterprise/generate" \
  -H "X-Api-Key: $MAKEUGC_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-broll",
  "params": {
    "prompt": "A slow macro shot of a ceramic coffee cup, steam rising in soft morning light, clean product framing, no text overlays.",
    "image_url": "https://your-cdn.example/product.jpg"
  }
}'
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": "kling-broll",
  "params": {
    "prompt": "A slow macro shot of a ceramic coffee cup, steam rising in soft morning light, clean product framing, no text overlays.",
    "image_url": "https://your-cdn.example/product.jpg"
  }
}),
  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": "kling-broll",
    "params": {
        "prompt": "A slow macro shot of a ceramic coffee cup, steam rising in soft morning light, clean product framing, no text overlays.",
        "image_url": "https://your-cdn.example/product.jpg"
    }
}

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())

See Jobs & status for polling and result formats.