MAKEUGC PLATFORM API · DOCS V2
Ad Remake
Analyze a reference ad, review a generated prompt and create a new video for your product.
Workflow
- Analyze a public reference video, or provide your own context and product image.
- Call suggest to review a prompt without generating video.
- Call generate with that prompt or the original reference inputs.
- Poll status with data.id to retrieve video_url.
Example IDs and media URLs are placeholders. Replace them with values from your account and accessible media files.
Analyze a reference ad #
/ad-remake/analyze
Extract a structured analysis from a reference video without generating a video.
Request body
| Parameter | Description |
|---|---|
video_url
string
Required
|
Public HTTP(S) media URL. Private addresses, credentials and data URIs are not accepted. |
context
string
Optional
|
context input.
Allowed: |
analysis_depth
string
Optional
|
analysis depth input.
Allowed:
Default: |
Request example
curl --fail-with-body --max-time 120 -X POST "https://app.makeugc.ai/api/platform/ad-remake/analyze" \
-H "X-Api-Key: $MAKEUGC_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"video_url": "https://your-cdn.example/reference.mp4",
"analysis_depth": "standard"
}'
// 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/ad-remake/analyze", {
method: "POST",
headers: {
"X-Api-Key": apiKey,
"Content-Type": "application/json",
},
body: JSON.stringify({
"video_url": "https://your-cdn.example/reference.mp4",
"analysis_depth": "standard"
}),
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);
# Install the requests package before running.
import os
import requests
payload = {
"video_url": "https://your-cdn.example/reference.mp4",
"analysis_depth": "standard"
}
response = requests.post(
"https://app.makeugc.ai/api/platform/ad-remake/analyze",
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 response example
{
"status": true,
"data": {
"source": "url",
"analysis_depth": "standard",
"analysis": {
"summary": "A creator demonstrates a product, then ends with a call to action."
}
}
}
All requests require X-Api-Key. See
errors & retries for unsuccessful
responses.
Suggest a remake prompt #
/ad-remake/suggest
Analyze your references and return a reusable prompt without starting video generation.
Request body
| Parameter | Description |
|---|---|
project_id
string
Optional
|
Existing project owned by your account. Omit to create one.
Allowed: |
model
string
Optional
|
model input.
Allowed:
Default: |
video_url
string
Optional
|
Public HTTP(S) media URL. Private addresses, credentials and data URIs are not accepted. |
image_url
string
Optional
|
Public HTTP(S) media URL. Private addresses, credentials and data URIs are not accepted. |
context
string
Optional
|
context input.
Allowed: |
prompt
string
Optional
|
prompt input.
Allowed: |
analysis_depth
string
Optional
|
analysis depth input.
Allowed:
Default: |
duration
integer
Optional
|
duration input. |
aspect_ratio
string
Optional
|
aspect ratio input.
Allowed: |
resolution
string
Optional
|
resolution input.
Allowed: |
Request example
curl --fail-with-body --max-time 120 -X POST "https://app.makeugc.ai/api/platform/ad-remake/suggest" \
-H "X-Api-Key: $MAKEUGC_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"project_id": "project_123",
"model": "seedance-2.5",
"video_url": "https://your-cdn.example/reference.mp4",
"image_url": "https://your-cdn.example/product.jpg",
"context": "Recreate the reference ad for our ceramic coffee cup.",
"duration": 10,
"aspect_ratio": "9:16"
}'
// 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/ad-remake/suggest", {
method: "POST",
headers: {
"X-Api-Key": apiKey,
"Content-Type": "application/json",
},
body: JSON.stringify({
"project_id": "project_123",
"model": "seedance-2.5",
"video_url": "https://your-cdn.example/reference.mp4",
"image_url": "https://your-cdn.example/product.jpg",
"context": "Recreate the reference ad for our ceramic coffee cup.",
"duration": 10,
"aspect_ratio": "9:16"
}),
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);
# Install the requests package before running.
import os
import requests
payload = {
"project_id": "project_123",
"model": "seedance-2.5",
"video_url": "https://your-cdn.example/reference.mp4",
"image_url": "https://your-cdn.example/product.jpg",
"context": "Recreate the reference ad for our ceramic coffee cup.",
"duration": 10,
"aspect_ratio": "9:16"
}
response = requests.post(
"https://app.makeugc.ai/api/platform/ad-remake/suggest",
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 response example
{
"status": true,
"data": {
"project_id": "project_123",
"prompt": "A creator demonstrates the ceramic cup in a sunlit kitchen.",
"negative_prompt": "",
"model": "seedance-2.5",
"video_job": null
}
}
All requests require X-Api-Key. See
errors & retries for unsuccessful
responses.
Generate an ad remake #
/ad-remake/generate
Generate from reference media or submit a reviewed prompt directly. Save data.id for polling.
Request body
| Parameter | Description |
|---|---|
project_id
string
Optional
|
Existing project owned by your account. Omit to create one.
Allowed: |
model
string
Optional
|
model input.
Allowed:
Default: |
video_url
string
Optional
|
Public HTTP(S) media URL. Private addresses, credentials and data URIs are not accepted. |
image_url
string
Optional
|
Public HTTP(S) media URL. Private addresses, credentials and data URIs are not accepted. |
context
string
Optional
|
context input.
Allowed: |
prompt
string
Optional
|
prompt input.
Allowed: |
analysis_depth
string
Optional
|
analysis depth input.
Allowed:
Default: |
duration
integer
Optional
|
duration input. |
aspect_ratio
string
Optional
|
aspect ratio input.
Allowed: |
resolution
string
Optional
|
resolution input.
Allowed: |
Request example
curl --fail-with-body --max-time 120 -X POST "https://app.makeugc.ai/api/platform/ad-remake/generate" \
-H "X-Api-Key: $MAKEUGC_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"project_id": "project_123",
"model": "seedance-2.5",
"video_url": "https://your-cdn.example/reference.mp4",
"image_url": "https://your-cdn.example/product.jpg",
"context": "Recreate the reference ad for our ceramic coffee cup.",
"duration": 10,
"aspect_ratio": "9:16"
}'
// 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/ad-remake/generate", {
method: "POST",
headers: {
"X-Api-Key": apiKey,
"Content-Type": "application/json",
},
body: JSON.stringify({
"project_id": "project_123",
"model": "seedance-2.5",
"video_url": "https://your-cdn.example/reference.mp4",
"image_url": "https://your-cdn.example/product.jpg",
"context": "Recreate the reference ad for our ceramic coffee cup.",
"duration": 10,
"aspect_ratio": "9:16"
}),
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);
# Install the requests package before running.
import os
import requests
payload = {
"project_id": "project_123",
"model": "seedance-2.5",
"video_url": "https://your-cdn.example/reference.mp4",
"image_url": "https://your-cdn.example/product.jpg",
"context": "Recreate the reference ad for our ceramic coffee cup.",
"duration": 10,
"aspect_ratio": "9:16"
}
response = requests.post(
"https://app.makeugc.ai/api/platform/ad-remake/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 response example
{
"status": true,
"data": {
"id": "job_123",
"project_id": "project_123",
"status": "processing",
"prompt": "A creator demonstrates the ceramic cup in a sunlit kitchen.",
"model": "seedance-2.5",
"video_job": {
"id": "job_123",
"status": "processing",
"credits_used": 1.5
}
}
}
All requests require X-Api-Key. See
errors & retries for unsuccessful
responses.
Get remake status #
/ad-remake/status
Poll with the data.id returned by /ad-remake/generate.
Parameters
| Parameter | Description |
|---|---|
id
string · query
Required
|
id input.
Allowed: |
Request example
curl --fail-with-body --max-time 120 -X GET "https://app.makeugc.ai/api/platform/ad-remake/status?id=ID" \
-H "X-Api-Key: $MAKEUGC_API_KEY"
// 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/ad-remake/status?id=ID", {
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);
# Install the requests package before running.
import os
import requests
response = requests.get(
"https://app.makeugc.ai/api/platform/ad-remake/status?id=ID",
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 response example
{
"status": true,
"data": {
"id": "job_123",
"project_id": "project_123",
"status": "completed",
"video_url": "https://your-cdn.example/result.mp4"
}
}
All requests require X-Api-Key. See
errors & retries for unsuccessful
responses.