Skip to content
Developers
API docs / Get started

MAKEUGC PLATFORM API · DOCS V2

Model API reference

Discover available enterprise models, submit an image or video job, and retrieve its result through a shared API.

Choose an endpoint

Use case Endpoint Input structure
Enterprise image/video models /enterprise/generate model + params
Seedance 2.0, 2.0 Fast, 2.5 /seedance/generate Top-level model and inputs
Actor and template workflows Feature-specific endpoints Defined by each feature

All paths are relative to https://app.makeugc.ai/api/platform. The enterprise path is the existing public model API namespace. API access and credits remain subject to your account’s permissions.

List available enterprise models #

GET /enterprise/models

Returns the current enterprise catalog with model IDs, media types and credit descriptions. The response below is an excerpt. Dedicated Seedance IDs such as seedance-2.5 are documented separately and are not returned by this endpoint.

The credit descriptions are informational. In particular, the enterprise catalog’s compatibility Seedance descriptions may not reflect the duration/resolution tariff. Use the dedicated Seedance endpoint’s estimated_credits for new integrations.

Parameters

No request parameters.

Request example

cURL
curl --fail-with-body --max-time 120 -X GET "https://app.makeugc.ai/api/platform/enterprise/models" \
  -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/models", {
  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/models",
    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

JSON response
{
  "models": [
    {
      "model": "gpt-image-2",
      "media": "image",
      "credits": "0.1"
    },
    {
      "model": "veo3-1-fast-t2v",
      "media": "video",
      "credits": "1.0"
    }
  ]
}

All requests require X-Api-Key. See errors & retries for unsuccessful responses.

Generate with an enterprise model #

POST /enterprise/generate

The same endpoint creates images, edits images and generates videos. Send the exact model ID and put its inputs inside params. Generation is asynchronous.

Save request_id, project_id and media before polling. Grok Imagine 1.5 and Gemini Omni may also return credits_deducted, credits_charged, refund_result and credit_adjustment.
The model ID determines the mode. Do not send mode, user_id or billing controls inside params. Grok Imagine 1.5, Gemini Omni and the expanded app model catalog reject unknown params.
Expanded model references identify polling-only workflows. Omit webhook_url for these models; supplying it returns 400 before submission. Keep request_id exactly as returned, including any prefix, and URL-encode it in the status path.

Request body

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.

Request example

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": "gpt-image-2",
  "params": {
    "prompt": "A studio photograph of a ceramic coffee cup.",
    "quality": "high",
    "output_format": "png"
  }
}'
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": "gpt-image-2",
  "params": {
    "prompt": "A studio photograph of a ceramic coffee cup.",
    "quality": "high",
    "output_format": "png"
  }
}),
  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": "gpt-image-2",
    "params": {
        "prompt": "A studio photograph of a ceramic coffee cup.",
        "quality": "high",
        "output_format": "png"
    }
}

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 response example

JSON response
{
  "request_id": "request_123",
  "project_id": "project_123",
  "media": "image",
  "model": "gpt-image-2",
  "status": "queued",
  "message": "Enterprise API job queued"
}

All requests require X-Api-Key. See errors & retries for unsuccessful responses.

Get an enterprise job #

GET /enterprise/status/{requestId}

Poll by the request_id returned from generation. Supply media to select the image or video result. Jobs must belong to your account.

Status is normally numeric: 0 = processing, 1 = completed, 2 = failed. Video status can also be a string; accept numeric strings and queued/processing/completed/failed.
Images return output.output_link, an array of URLs. Videos return video_url (possibly null). Video responses do not include project_id. Do not look for data.url on this endpoint.

Parameters

Parameter Description
requestId
string · path
Required
The returned request_id.
media
string · query
Optional
Result type. When omitted, video is checked first, then image.

Allowed: image | video

Request example

cURL
curl --fail-with-body --max-time 120 -X GET "https://app.makeugc.ai/api/platform/enterprise/status/REQUESTID" \
  -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/REQUESTID", {
  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/REQUESTID",
    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

JSON response
{
  "request_id": "request_123",
  "media": "image",
  "status": 1,
  "mode": "gpt-image-2",
  "project_id": "project_123",
  "output": {
    "output_link": [
      "https://your-cdn.example/result.png"
    ]
  },
  "created_at": "2026-10-13T00:00:00.000Z",
  "updated_at": "2026-10-13T00:00:30.000Z"
}

All requests require X-Api-Key. See errors & retries for unsuccessful responses.

For the dedicated Seedance API, open Seedance 2.5, Seedance 2.0 Pro or Seedance 2.0 Fast.