Skip to main content
API Documentation

Build with Holovine API

Integrate powerful AI video generation into your applications with our RESTful API

Quick Start

1. Get API Key

Sign up and generate your API key from the dashboard

2. Make Request

Use any HTTP client to call our endpoints

3. Monitor

Track usage and performance in real-time

Authentication

All API requests require authentication using Bearer token in the Authorization header:

Authorization: Bearer YOUR_API_KEY

Note: Keep your API keys secure and never expose them in client-side code

API Endpoints

POST/api/v1/video/generate

Generate a video from text or script

Parameters:scriptstyledurationvoice
GET/api/v1/video/{id}

Get video generation status and download URL

Parameters:id
POST/api/v1/audio/generate

Generate voiceover or music track

Parameters:textvoiceemotionlanguage
GET/api/v1/voices

List available AI voices

POST/api/v1/workflow/execute

Execute a custom workflow pipeline

Parameters:workflow_idinputsagents

Code Examples

cURL

curl -X POST https://api.holovine.ai/v1/video/generate \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "script": "Create an engaging product demo",
    "style": "professional",
    "duration": 60,
    "voice": "nathan"
  }'

JavaScript

const response = await fetch('https://api.holovine.ai/v1/video/generate', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    script: 'Create an engaging product demo',
    style: 'professional',
    duration: 60,
    voice: 'nathan'
  })
});

const data = await response.json();
console.log(data.video_id);

Python

import requests

url = "https://api.holovine.ai/v1/video/generate"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}
payload = {
    "script": "Create an engaging product demo",
    "style": "professional",
    "duration": 60,
    "voice": "nathan"
}

response = requests.post(url, json=payload, headers=headers)
video_id = response.json()["video_id"]
print(f"Video ID: {video_id}")

Rate Limits

Rate limits vary by subscription tier. Exceeding limits will result in 429 status codes.

TierDaily RequestsConcurrentRate Limit
Free100/day210/min
Pro10,000/day10100/min
EnterpriseUnlimitedCustomCustom