Quick Start
Get started with the UGCLab API in minutes
Welcome to the UGCLab API documentation. Generate AI-powered UGC videos and images programmatically.
API access requires a Pro, Business, or Enterprise plan.
Getting Started
Get your API Key
Create an API key in your Dashboard Settings. API keys start with ugc_ prefix.
Get your Project ID
Every request requires a projectId. Get your project IDs via the API:
curl https://api.ugclab.app/api/v1/projects \
-H "Authorization: Bearer ugc_your_api_key"const response = await fetch('https://api.ugclab.app/api/v1/projects', {
headers: { 'Authorization': 'Bearer ugc_your_api_key' }
});
const { data } = await response.json();
console.log(data.projects);import requests
response = requests.get(
'https://api.ugclab.app/api/v1/projects',
headers={'Authorization': 'Bearer ugc_your_api_key'}
)
print(response.json()['data']['projects'])Create your first UGC
Generate a Talking Actor video with UGCL 2.0:
curl -X POST https://api.ugclab.app/api/v1/ugc/talking-actor \
-H "Authorization: Bearer ugc_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"projectId": "your_project_id",
"workflowType": "ugcl-2.0",
"actorId": "actor_id",
"script": "Hello! Welcome to UGCLab, the best platform for AI-generated content.",
"duration": "10s",
"tier": "standard"
}'const response = await fetch('https://api.ugclab.app/api/v1/ugc/talking-actor', {
method: 'POST',
headers: {
'Authorization': 'Bearer ugc_your_api_key',
'Content-Type': 'application/json',
},
body: JSON.stringify({
projectId: 'your_project_id',
workflowType: 'ugcl-2.0',
actorId: 'actor_id',
script: 'Hello! Welcome to UGCLab.',
duration: '10s',
tier: 'standard',
}),
});
const { data } = await response.json();
console.log('Job created:', data.jobs[0].ugcId);import requests
response = requests.post(
'https://api.ugclab.app/api/v1/ugc/talking-actor',
headers={
'Authorization': 'Bearer ugc_your_api_key',
'Content-Type': 'application/json',
},
json={
'projectId': 'your_project_id',
'workflowType': 'ugcl-2.0',
'actorId': 'actor_id',
'script': 'Hello! Welcome to UGCLab.',
'duration': '10s',
'tier': 'standard',
}
)
data = response.json()
print(f"Job created: {data['data']['jobs'][0]['ugcId']}")Check job status
Poll the job status until it's complete:
curl https://api.ugclab.app/api/v1/ugc/YOUR_UGC_ID \
-H "Authorization: Bearer ugc_your_api_key"const checkStatus = async (ugcId: string) => {
const response = await fetch(`https://api.ugclab.app/api/v1/ugc/${ugcId}`, {
headers: { 'Authorization': 'Bearer ugc_your_api_key' }
});
const { data } = await response.json();
if (data.status === 'COMPLETED') {
console.log('Video ready:', data.videoUrl);
} else if (data.status === 'FAILED') {
console.error('Generation failed');
} else {
// Poll again after delay
setTimeout(() => checkStatus(ugcId), 5000);
}
};import time
def check_status(ugc_id):
response = requests.get(
f'https://api.ugclab.app/api/v1/ugc/{ugc_id}',
headers={'Authorization': 'Bearer ugc_your_api_key'}
)
data = response.json()['data']
if data['status'] == 'COMPLETED':
print(f"Video ready: {data['videoUrl']}")
elif data['status'] == 'FAILED':
print("Generation failed")
else:
time.sleep(5)
check_status(ugc_id)Base URL
All API requests should be made to:
https://api.ugclab.app/api/v1Authentication
Include your API key in the Authorization header:
Authorization: Bearer ugc_your_api_key_here