MakeUGC Platform API Documentation

Overview

The MakeUGC Platform API allows partners to programmatically generate AI-powered videos using our platform. This documentation provides details on authentication, endpoints, and usage examples.

Authentication

All API requests require authentication using an API key. Include your API key in the request headers:

X-Api-Key: YOUR_API_KEY

Base URL

https://app.makeugc.ai/api/platform

Endpoints

1. Get Available Avatars

Retrieve a list of available avatars (both template and custom).

GET /video/avatars

Query Parameters:

Response:

{
  "status": true,
  "message": "Avatars fetched",
  "data": [
    {
      "id": "avatar_123",
      "name": "Avatar Name",
      "thumbnail": "https://...",
      "gender": "Male"
    }
  ]
}

Status Codes:

2. Get Available Voices

Retrieve a list of available voices (template voices and the current user's custom voices).

GET /video/voices

Query Parameters:

Response:

{
  "status": true,
  "message": "Voices fetched",
  "data": [
    {
      "id": "voice_123",
      "name": "Voice Name",
      "language": "English",
      "gender": "Female",
      "templateUrl": "https://...",
      "thumbnail": "https://...",
      "voiceId": "internal_tts_voice_id",
      "accent": "US",
      "country": "United States",
      "isCustom": false
    }
  ]
}

Status Codes:

3. Video Generation

Generate Video

Creates a new AI video with specified avatar and voice script.

POST /video/generate

Request Body:

{
  "avatar_id": "string",     // Required: ID of the avatar to use
  "voice_script": "string",  // Required: Script for the voice (max 1500 chars)
  "video_name": "string",    // Optional: Custom name for the video (defaults to "API Generated Video")
  "voice_url": "string",     // Optional: URL to existing audio (if provided, skip voice generation; max duration 120s)
  "voice_id": "string",      // Optional: ID Voice actor, if not provide -> using voice default of avatar template
  "voice_settings": {        // Optional: Voice generation settings
    "stability": 0.75,       // Range: 0-1
    "similarity_boost": 0.4, // Range: 0-1
    "style": 0,             // Range: 0-1
    "use_speaker_boost": true
  }
}

Audio source priority: voice_urlvoice_id → avatar default voice. If voice_url is invalid/inaccessible or duration is greater than 120 seconds, the request is rejected.

Response:

{
  "status": true,
  "message": "Video generation started",
  "data": {
    "id": "video_123"  // Use this ID to check video status
  }
}

Status Codes:

Check Video Status

Check the status of a video generation request.

GET /video/status

Query Parameters:

Response:

{
  "status": true,
  "message": "Video is processing",
  "data": {
    "status": "processing" | "completed" | "failed",
    "url": "https://..." // Present when status is "completed"
  }
}

Status Codes:

Rate Limits

Important Notes

4. Custom Avatar

Generate Custom Avatar

Create a custom avatar from an image and optional voice sample. Uses multipart/form-data.

POST /custom-avatar/generate

Request Body (multipart/form-data):

image    (required)  — Image file (max 10MB) or URL string
voice    (optional)  — Voice audio file (max 10MB) or URL string

Input flexibility: Both image and voice accept either a direct file upload or a publicly accessible URL string. Files are uploaded to S3 automatically.

Response:

{
  "status": true,
  "data": {
    "status": true,
    "message": "Custom avatar created",
    "avatar_id": "avatar_456",
    "thumbnail_url": "https://...",
    "audio_url": "https://...",
    "selected_voice_id": "voice_789"
  }
}

Status Codes:

Rate Limits

Important Notes

Support

For API support or questions, please contact: