Veo 3 JSON Prompts
Master structured prompts for precise control over AI video generation. Perfect for API integration, batch processing, and professional workflows.
JSON Prompt Fundamentals
Why Use JSON Prompts?
Precise Control
Specify exact parameters for consistent, predictable results across multiple generations.
API Ready
Perfect for programmatic video generation and automated workflows.
Reproducible
Save and reuse successful configurations for batch processing.
Version Control
Track changes and collaborate on prompt configurations effectively.
Basic JSON Structure
{
"prompt": "Your detailed video description",
"style": "cinematic",
"camera": {
"type": "wide_shot",
"movement": "slow_pan"
},
"lighting": "golden_hour",
"quality": "4k",
"duration": "10s",
"aspect_ratio": "16:9"
}
Required: prompt (string)
Optional: All other parameters have defaults
Format: Valid JSON syntax required
Complete Parameter Reference
🎯 Core Parameters
prompt
Main description of the video content
string (required)
style
Overall visual style and aesthetic
"cinematic" | "realistic" | "artistic" | "documentary"
quality
Output resolution and detail level
"4k" | "hd" | "standard" | "high"
duration
Video length specification
"5s" | "10s" | "15s" | "short" | "medium"
📹 Camera Control
camera.type
Shot framing and perspective
"wide_shot" | "close_up" | "medium_shot" | "extreme_wide"
camera.movement
Camera motion and dynamics
"static" | "pan_left" | "pan_right" | "dolly_in" | "crane"
camera.angle
Vertical positioning relative to subject
"eye_level" | "low_angle" | "high_angle" | "birds_eye"
camera.lens
Lens characteristics and focal length
"wide_angle" | "standard" | "telephoto" | "macro"
🎨 Scene Control
lighting
Lighting conditions and mood
"golden_hour" | "blue_hour" | "studio" | "natural" | "dramatic"
mood
Emotional tone and atmosphere
"serene" | "energetic" | "mysterious" | "uplifting" | "dramatic"
color_palette
Color scheme and grading
"warm" | "cool" | "vibrant" | "muted" | "monochrome"
aspect_ratio
Video dimensions and format
"16:9" | "9:16" | "1:1" | "21:9" | "4:3"
JSON Prompt Examples
🎬 Cinematic Scene
{
"prompt": "Aerial shot of red sports car racing through mountain curves at sunset",
"style": "cinematic",
"camera": {
"type": "aerial",
"movement": "tracking",
"angle": "high_angle"
},
"lighting": "golden_hour",
"mood": "dramatic",
"quality": "4k",
"duration": "15s",
"aspect_ratio": "21:9",
"color_palette": "warm"
}
Use case: Action sequences, car commercials
Key features: Wide cinematic format, aerial tracking
👤 Professional Portrait
{
"prompt": "Professional headshot of confident businesswoman, warm smile, eye contact",
"style": "realistic",
"camera": {
"type": "close_up",
"movement": "static",
"angle": "eye_level",
"lens": "85mm"
},
"lighting": "studio",
"mood": "professional",
"quality": "4k",
"duration": "8s",
"aspect_ratio": "16:9",
"color_palette": "neutral"
}
Use case: Corporate videos, LinkedIn profiles
Key features: Studio lighting, portrait lens
📱 Product Showcase
{
"prompt": "Sleek smartphone rotating on white surface, premium materials visible",
"style": "commercial",
"camera": {
"type": "medium_shot",
"movement": "orbit",
"angle": "slightly_low"
},
"lighting": "studio",
"mood": "clean",
"quality": "4k",
"duration": "10s",
"aspect_ratio": "16:9",
"color_palette": "minimal",
"background": "clean_white"
}
Use case: Product marketing, e-commerce
Key features: Orbital camera, clean background
🎨 Abstract Motion
{
"prompt": "Fluid abstract shapes morphing in vibrant neon colors",
"style": "artistic",
"camera": {
"type": "macro",
"movement": "floating",
"angle": "dynamic"
},
"lighting": "neon",
"mood": "energetic",
"quality": "4k",
"duration": "12s",
"aspect_ratio": "16:9",
"color_palette": "vibrant",
"effects": ["glow", "particle_systems"],
"speed": "slow_motion"
}
Use case: Music videos, artistic content
Key features: Special effects, slow motion
🎭 Advanced Multi-Scene JSON
{
"project": {
"title": "Brand Story Campaign",
"total_duration": "45s",
"aspect_ratio": "16:9",
"quality": "4k"
},
"scenes": [
{
"id": "scene_1",
"prompt": "Wide establishing shot of modern office building at sunrise",
"style": "cinematic",
"camera": {
"type": "extreme_wide",
"movement": "slow_push_in",
"angle": "slightly_low"
},
"lighting": "golden_hour",
"duration": "8s",
"mood": "inspiring"
},
{
"id": "scene_2",
"prompt": "Medium shot of diverse team collaborating around conference table",
"style": "realistic",
"camera": {
"type": "medium_shot",
"movement": "subtle_pan",
"angle": "eye_level"
},
"lighting": "natural_office",
"duration": "12s",
"mood": "professional"
},
{
"id": "scene_3",
"prompt": "Close-up of hands typing on laptop, screen reflecting innovation",
"style": "commercial",
"camera": {
"type": "macro",
"movement": "static",
"angle": "overhead"
},
"lighting": "screen_glow",
"duration": "10s",
"mood": "focused"
}
],
"transitions": {
"type": "fade",
"duration": "1s"
},
"audio": {
"style": "corporate_uplifting",
"volume": "background"
}
}
Pro tip: Multi-scene JSON allows for complex narratives with precise control over each segment.
API Integration Guide
🌐 HTTP Request Example
curl -X POST https://ulazai.com/api/v1/video/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Cinematic aerial shot of mountain landscape",
"style": "cinematic",
"camera": {
"type": "aerial",
"movement": "forward_dolly"
},
"quality": "4k",
"duration": "10s",
"aspect_ratio": "16:9"
}'
Response Format
{
"success": true,
"job_id": "veo3_abc123def456",
"status": "processing",
"estimated_time": "45s",
"webhook_url": "https://your-app.com/webhook",
"cost": {
"credits": 25,
"remaining_balance": 975
}
}
🐍 Python Integration
import requests
import json
# Your API configuration
API_KEY = "your_api_key_here"
BASE_URL = "https://ulazai.com/api/v1"
# JSON prompt configuration
video_config = {
"prompt": "Professional product demo video",
"style": "commercial",
"camera": {
"type": "medium_shot",
"movement": "orbit"
},
"lighting": "studio",
"quality": "4k",
"duration": "15s"
}
# Send generation request
response = requests.post(
f"{BASE_URL}/video/generate",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json=video_config
)
result = response.json()
print(f"Job ID: {result['job_id']}")
print(f"Status: {result['status']}")
Status Polling
# Check generation status
status_response = requests.get(
f"{BASE_URL}/video/status/{job_id}",
headers={"Authorization": f"Bearer {API_KEY}"}
)
status_data = status_response.json()
if status_data['status'] == 'completed':
video_url = status_data['video_url']
print(f"Video ready: {video_url}")
elif status_data['status'] == 'failed':
print(f"Error: {status_data['error_message']}")
📱 JavaScript/Node.js Example
const axios = require('axios');
class UlazAIClient {
constructor(apiKey) {
this.apiKey = apiKey;
this.baseURL = 'https://ulazai.com/api/v1';
}
async generateVideo(config) {
try {
const response = await axios.post(`${this.baseURL}/video/generate`, config, {
headers: {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json'
}
});
return response.data;
} catch (error) {
throw new Error(`Generation failed: ${error.response.data.message}`);
}
}
async getVideoStatus(jobId) {
const response = await axios.get(`${this.baseURL}/video/status/${jobId}`, {
headers: { 'Authorization': `Bearer ${this.apiKey}` }
});
return response.data;
}
}
// Usage example
const client = new UlazAIClient('your_api_key');
const videoConfig = {
prompt: "Time lapse of city skyline transition from day to night",
style: "cinematic",
camera: { type: "wide_shot", movement: "static" },
lighting: "day_to_night",
duration: "20s",
quality: "4k"
};
client.generateVideo(videoConfig)
.then(result => console.log('Generation started:', result.job_id))
.catch(error => console.error('Error:', error.message));
JSON Prompt Best Practices
✅ Structure Guidelines
- • Always validate JSON syntax before sending
- • Use consistent parameter naming conventions
- • Group related parameters logically (camera, lighting)
- • Include comments in development (strip for production)
- • Test with minimal parameters first
⚡ Performance Tips
- • Cache successful configurations for reuse
- • Use webhooks instead of polling for status
- • Batch similar requests when possible
- • Optimize prompt length for faster processing
- • Monitor credit usage and set alerts
🛡️ Error Handling
- • Implement retry logic with exponential backoff
- • Validate parameters before API calls
- • Handle rate limiting gracefully
- • Log failures with context for debugging
- • Provide fallback options for failed generations
🚨 Common JSON Errors & Solutions
❌ Invalid JSON Syntax
{ "prompt": "Test", "quality": "4k", } // Trailing comma
{ "prompt": "Test", "quality": "4k" } // Correct
❌ Invalid Parameter Values
{ "quality": "super_high" } // Invalid value
{ "quality": "4k" } // Valid value
❌ Missing Required Fields
{ "style": "cinematic" } // Missing prompt
{ "prompt": "Test video", "style": "cinematic" }
❌ Conflicting Parameters
{ "mood": "serene", "style": "action" } // Conflicting
{ "mood": "energetic", "style": "action" } // Consistent
Ready to Use JSON Prompts?
Start integrating structured video generation into your applications. Get API access and begin creating with precise control.
Free API credits • Professional support • Enterprise options available