# List realistic avatars
curl "https://api.vibepeak.ai/v1/avatars?type=realistic" \
-H "Authorization: Bearer vpk_live_xxxxx"
# List custom avatars with pagination
curl "https://api.vibepeak.ai/v1/avatars?type=custom&limit=10&offset=0" \
-H "Authorization: Bearer vpk_live_xxxxx"
// List realistic avatars
const response = await fetch('https://api.vibepeak.ai/v1/avatars?type=realistic', {
headers: {
'Authorization': 'Bearer vpk_live_xxxxx'
}
});
const data = await response.json();
console.log(`Found ${data.pagination.total} avatars`);
for (const avatar of data.avatars) {
console.log(`${avatar.name} (${avatar.id})`);
}
// Paginate through all avatars
async function getAllAvatars(type) {
const avatars = [];
let offset = 0;
const limit = 50;
while (true) {
const res = await fetch(
`https://api.vibepeak.ai/v1/avatars?type=${type}&limit=${limit}&offset=${offset}`,
{ headers: { 'Authorization': 'Bearer vpk_live_xxxxx' } }
);
const data = await res.json();
avatars.push(...data.avatars);
if (!data.pagination.has_more) break;
offset += limit;
}
return avatars;
}
import requests
# List realistic avatars
response = requests.get(
'https://api.vibepeak.ai/v1/avatars',
params={'type': 'realistic'},
headers={'Authorization': 'Bearer vpk_live_xxxxx'}
)
data = response.json()
print(f"Found {data['pagination']['total']} avatars")
for avatar in data['avatars']:
print(f"{avatar['name']} ({avatar['id']})")
# Paginate through all custom avatars
def get_all_avatars(avatar_type):
avatars = []
offset = 0
limit = 50
while True:
response = requests.get(
'https://api.vibepeak.ai/v1/avatars',
params={'type': avatar_type, 'limit': limit, 'offset': offset},
headers={'Authorization': 'Bearer vpk_live_xxxxx'}
)
data = response.json()
avatars.extend(data['avatars'])
if not data['pagination']['has_more']:
break
offset += limit
return avatars
{
"avatars": [
{
"id": "e225efd4-f936-4a01-b56a-bb3ab30c2cbd",
"name": "Sarah",
"type": "realistic",
"image_url": "https://storage.vibepeak.ai/avatars/sarah-thumb.jpg",
"video_url": "https://storage.vibepeak.ai/avatars/sarah-thumb.mp4"
},
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Michael",
"type": "realistic",
"image_url": "https://storage.vibepeak.ai/avatars/michael-thumb.jpg",
"video_url": "https://storage.vibepeak.ai/avatars/michael-thumb.mp4"
}
],
"pagination": {
"total": 45,
"limit": 20,
"offset": 0,
"has_more": true
}
}
{
"avatars": [
{
"id": "43d54a0f-ea77-45e3-8f1e-f1c6feca7f42",
"name": "My Business Avatar",
"type": "custom",
"image_url": "https://storage.vibepeak.ai/custom/user123/avatar1-thumb.jpg",
"video_url": null
}
],
"pagination": {
"total": 3,
"limit": 20,
"offset": 0,
"has_more": false
}
}
{
"avatars": [],
"pagination": {
"total": 0,
"limit": 20,
"offset": 0,
"has_more": false
}
}
{
"error": {
"code": "MISSING_PARAMETER",
"message": "Missing required query parameter: 'type'. Must be 'realistic' or 'custom'.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "INVALID_PARAMETER",
"message": "Invalid value for 'type'. Must be 'realistic' or 'custom'.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "INVALID_API_KEY",
"message": "Invalid or missing API key.",
"request_id": "req_xyz123"
}
}
Avatars
List Avatars
Retrieve a paginated list of avatars available for video generation
GET
/
v1
/
avatars
# List realistic avatars
curl "https://api.vibepeak.ai/v1/avatars?type=realistic" \
-H "Authorization: Bearer vpk_live_xxxxx"
# List custom avatars with pagination
curl "https://api.vibepeak.ai/v1/avatars?type=custom&limit=10&offset=0" \
-H "Authorization: Bearer vpk_live_xxxxx"
// List realistic avatars
const response = await fetch('https://api.vibepeak.ai/v1/avatars?type=realistic', {
headers: {
'Authorization': 'Bearer vpk_live_xxxxx'
}
});
const data = await response.json();
console.log(`Found ${data.pagination.total} avatars`);
for (const avatar of data.avatars) {
console.log(`${avatar.name} (${avatar.id})`);
}
// Paginate through all avatars
async function getAllAvatars(type) {
const avatars = [];
let offset = 0;
const limit = 50;
while (true) {
const res = await fetch(
`https://api.vibepeak.ai/v1/avatars?type=${type}&limit=${limit}&offset=${offset}`,
{ headers: { 'Authorization': 'Bearer vpk_live_xxxxx' } }
);
const data = await res.json();
avatars.push(...data.avatars);
if (!data.pagination.has_more) break;
offset += limit;
}
return avatars;
}
import requests
# List realistic avatars
response = requests.get(
'https://api.vibepeak.ai/v1/avatars',
params={'type': 'realistic'},
headers={'Authorization': 'Bearer vpk_live_xxxxx'}
)
data = response.json()
print(f"Found {data['pagination']['total']} avatars")
for avatar in data['avatars']:
print(f"{avatar['name']} ({avatar['id']})")
# Paginate through all custom avatars
def get_all_avatars(avatar_type):
avatars = []
offset = 0
limit = 50
while True:
response = requests.get(
'https://api.vibepeak.ai/v1/avatars',
params={'type': avatar_type, 'limit': limit, 'offset': offset},
headers={'Authorization': 'Bearer vpk_live_xxxxx'}
)
data = response.json()
avatars.extend(data['avatars'])
if not data['pagination']['has_more']:
break
offset += limit
return avatars
{
"avatars": [
{
"id": "e225efd4-f936-4a01-b56a-bb3ab30c2cbd",
"name": "Sarah",
"type": "realistic",
"image_url": "https://storage.vibepeak.ai/avatars/sarah-thumb.jpg",
"video_url": "https://storage.vibepeak.ai/avatars/sarah-thumb.mp4"
},
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Michael",
"type": "realistic",
"image_url": "https://storage.vibepeak.ai/avatars/michael-thumb.jpg",
"video_url": "https://storage.vibepeak.ai/avatars/michael-thumb.mp4"
}
],
"pagination": {
"total": 45,
"limit": 20,
"offset": 0,
"has_more": true
}
}
{
"avatars": [
{
"id": "43d54a0f-ea77-45e3-8f1e-f1c6feca7f42",
"name": "My Business Avatar",
"type": "custom",
"image_url": "https://storage.vibepeak.ai/custom/user123/avatar1-thumb.jpg",
"video_url": null
}
],
"pagination": {
"total": 3,
"limit": 20,
"offset": 0,
"has_more": false
}
}
{
"avatars": [],
"pagination": {
"total": 0,
"limit": 20,
"offset": 0,
"has_more": false
}
}
{
"error": {
"code": "MISSING_PARAMETER",
"message": "Missing required query parameter: 'type'. Must be 'realistic' or 'custom'.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "INVALID_PARAMETER",
"message": "Invalid value for 'type'. Must be 'realistic' or 'custom'.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "INVALID_API_KEY",
"message": "Invalid or missing API key.",
"request_id": "req_xyz123"
}
}
Retrieves a paginated list of avatars. You can request either realistic (public) avatars available to all users, or your custom avatars.
See Error Handling for more details.
Query Parameters
The type of avatars to retrieve.Allowed values:
realistic, customrealistic: Public avatars available to all userscustom: Your custom avatars (uploaded or AI-generated)
Maximum number of avatars to return per page.Range: 1-100
Number of avatars to skip (for pagination).Minimum: 0
Response
List of avatar objects.
Show Avatar properties
Show Avatar properties
Unique identifier for the avatar. Use this ID when creating videos with the avatar.
Display name of the avatar.
Avatar type:
realistic or custom.Thumbnail image URL for the avatar. May be
null if not available.Thumbnail video URL for the avatar preview. May be
null if not available.Pagination information.
# List realistic avatars
curl "https://api.vibepeak.ai/v1/avatars?type=realistic" \
-H "Authorization: Bearer vpk_live_xxxxx"
# List custom avatars with pagination
curl "https://api.vibepeak.ai/v1/avatars?type=custom&limit=10&offset=0" \
-H "Authorization: Bearer vpk_live_xxxxx"
// List realistic avatars
const response = await fetch('https://api.vibepeak.ai/v1/avatars?type=realistic', {
headers: {
'Authorization': 'Bearer vpk_live_xxxxx'
}
});
const data = await response.json();
console.log(`Found ${data.pagination.total} avatars`);
for (const avatar of data.avatars) {
console.log(`${avatar.name} (${avatar.id})`);
}
// Paginate through all avatars
async function getAllAvatars(type) {
const avatars = [];
let offset = 0;
const limit = 50;
while (true) {
const res = await fetch(
`https://api.vibepeak.ai/v1/avatars?type=${type}&limit=${limit}&offset=${offset}`,
{ headers: { 'Authorization': 'Bearer vpk_live_xxxxx' } }
);
const data = await res.json();
avatars.push(...data.avatars);
if (!data.pagination.has_more) break;
offset += limit;
}
return avatars;
}
import requests
# List realistic avatars
response = requests.get(
'https://api.vibepeak.ai/v1/avatars',
params={'type': 'realistic'},
headers={'Authorization': 'Bearer vpk_live_xxxxx'}
)
data = response.json()
print(f"Found {data['pagination']['total']} avatars")
for avatar in data['avatars']:
print(f"{avatar['name']} ({avatar['id']})")
# Paginate through all custom avatars
def get_all_avatars(avatar_type):
avatars = []
offset = 0
limit = 50
while True:
response = requests.get(
'https://api.vibepeak.ai/v1/avatars',
params={'type': avatar_type, 'limit': limit, 'offset': offset},
headers={'Authorization': 'Bearer vpk_live_xxxxx'}
)
data = response.json()
avatars.extend(data['avatars'])
if not data['pagination']['has_more']:
break
offset += limit
return avatars
{
"avatars": [
{
"id": "e225efd4-f936-4a01-b56a-bb3ab30c2cbd",
"name": "Sarah",
"type": "realistic",
"image_url": "https://storage.vibepeak.ai/avatars/sarah-thumb.jpg",
"video_url": "https://storage.vibepeak.ai/avatars/sarah-thumb.mp4"
},
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Michael",
"type": "realistic",
"image_url": "https://storage.vibepeak.ai/avatars/michael-thumb.jpg",
"video_url": "https://storage.vibepeak.ai/avatars/michael-thumb.mp4"
}
],
"pagination": {
"total": 45,
"limit": 20,
"offset": 0,
"has_more": true
}
}
{
"avatars": [
{
"id": "43d54a0f-ea77-45e3-8f1e-f1c6feca7f42",
"name": "My Business Avatar",
"type": "custom",
"image_url": "https://storage.vibepeak.ai/custom/user123/avatar1-thumb.jpg",
"video_url": null
}
],
"pagination": {
"total": 3,
"limit": 20,
"offset": 0,
"has_more": false
}
}
{
"avatars": [],
"pagination": {
"total": 0,
"limit": 20,
"offset": 0,
"has_more": false
}
}
{
"error": {
"code": "MISSING_PARAMETER",
"message": "Missing required query parameter: 'type'. Must be 'realistic' or 'custom'.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "INVALID_PARAMETER",
"message": "Invalid value for 'type'. Must be 'realistic' or 'custom'.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "INVALID_API_KEY",
"message": "Invalid or missing API key.",
"request_id": "req_xyz123"
}
}
Usage with Video Creation
Once you’ve retrieved the avatar list, use the avatarid when creating videos:
// 1. List available avatars
const avatarsResponse = await fetch('https://api.vibepeak.ai/v1/avatars?type=realistic', {
headers: { 'Authorization': 'Bearer vpk_live_xxxxx' }
});
const { avatars } = await avatarsResponse.json();
// 2. Select an avatar and create a video
const selectedAvatar = avatars[0];
const videoResponse = await fetch('https://api.vibepeak.ai/v1/real-estate/narrated-slideshow', {
method: 'POST',
headers: {
'Authorization': 'Bearer vpk_live_xxxxx',
'Content-Type': 'application/json'
},
body: JSON.stringify({
images: ['https://example.com/image1.jpg', /* ... */],
script: 'Welcome to this beautiful property...',
voice: { voice_id: 'voice-123' },
style: 'do-not-modify',
avatar_id: selectedAvatar.id // Use the avatar ID here
})
});
Error Codes
| Code | Status | Description |
|---|---|---|
MISSING_PARAMETER | 400 | Required type parameter is missing |
INVALID_PARAMETER | 400 | Invalid value for type, limit, or offset |
VALIDATION_ERROR | 400 | Query parameter validation failed |
INVALID_API_KEY | 401 | Invalid or missing API key |
⌘I

