Skip to main content

Overview

From idea to export in six steps. This guide covers the complete video creation process - plan, build, review, ship. Works the same whether you’re using the REST API or MCP server.

The Video Creation Process

1

Plan Your Video

Define the structure, duration, and content for your video
2

Create a Project

Set up a project container to organize your work
3

Add Chapters

Break your video into logical segments
4

Create Content

Submit prompts to create video content for each chapter
5

Review & Refine

Iterate on content until you’re satisfied
6

Export

Render the final video for download

Step 1: Plan Your Video

Before creating anything, plan your video structure:

Define Your Goals

  • Purpose: What is this video for? (marketing, tutorial, social media, etc.)
  • Audience: Who will watch it?
  • Message: What’s the key takeaway?
  • Duration: How long should it be?

Create a Storyboard

Break your video into logical segments (chapters): Example: Product Launch Video (90 seconds)
  1. Intro (15s) - Hook the viewer, show logo
  2. Problem (20s) - Present the pain point
  3. Solution (25s) - Introduce your product
  4. Features (20s) - Highlight key capabilities
  5. CTA (10s) - Call to action

Gather Assets

Collect any media you’ll need:
  • Logos and branding assets
  • Product screenshots or videos
  • Music or sound effects
  • Testimonial photos or videos
Upload these using the Assets API before creating your video.

Step 2: Create a Project

Every video starts with a project:
curl -X POST https://api.babou.ai/api/v1/projects \
  -H "Authorization: Bearer $BABOU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Product Launch Video",
    "description": "90-second promo for Q4 launch"
  }'
Use descriptive names and detailed descriptions to keep projects organized, especially when managing multiple videos.

Step 3: Add Chapters

Create chapters for each segment of your video:
const chapters = [
  { name: 'Intro', duration: 15 },
  { name: 'Problem', duration: 20 },
  { name: 'Solution', duration: 25 },
  { name: 'Features', duration: 20 },
  { name: 'CTA', duration: 10 }
];

for (const chapter of chapters) {
  const result = await fetch(
    `https://api.babou.ai/api/v1/projects/${project.id}/chapters`,
    {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${process.env.BABOU_API_KEY}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(chapter)
    }
  ).then(r => r.json());

  console.log(`✓ Created: ${result.name} (${result.duration}s)`);
}

Step 4: Create Content

Submit prompts to create video content for each chapter:

Writing Effective Prompts

Bad:
Create an intro
Good:
Create a professional intro with:
- Company logo centered, fade-in over 2 seconds
- Tagline "Innovation Simplified" appears below logo at 3s
- Background: Clean white with subtle blue gradient
- Logo zooms in slightly from 0-3s
- Smooth transition to next scene at 15s
20-second problem statement:
- 0-5s: Show frustrated user struggling with current solution
- 5-10s: Text overlay: "Managing projects shouldn't be this hard"
- 10-15s: Multiple pain points flash on screen
- 15-20s: Transition to solution chapter
Style:
- Modern, minimalist design
- Corporate professional aesthetic
- Color scheme: Navy blue (#1E3A8A), white, light gray
- Sans-serif fonts, clean typography
- Smooth, elegant transitions
- Upbeat but professional tone
Use our company logo (logo.png - already uploaded)
Apply our brand colors: Primary blue #1E3A8A, accent #3B82F6
Match the style from our website at company.com
Include the product screenshot (dashboard.png)

Submit Prompts

const prompts = {
  'Intro': `
    Create a captivating intro:
    - Fade in company logo from uploaded assets
    - Display tagline "Innovation Simplified"
    - Modern, clean aesthetic with blue branding
    - Smooth zoom animation on logo
    - 15 seconds total
  `,
  'Problem': `
    Showcase the problem:
    - Show busy professional overwhelmed with tools
    - Text overlays highlighting pain points
    - Frustrated expressions and cluttered screens
    - Dark, chaotic visuals
    - 20 seconds
  `,
  'Solution': `
    Introduce the solution:
    - Bright, clean transition from problem
    - Product logo and name appear
    - Smooth UI animation showing simplicity
    - Confident, optimistic tone
    - 25 seconds
  `
  // ... more chapters
};

// Get chapters
const chaptersResponse = await fetch(
  `https://api.babou.ai/api/v1/projects/${project.id}/chapters`,
  {
    headers: { 'Authorization': `Bearer ${process.env.BABOU_API_KEY}` }
  }
).then(r => r.json());

// Submit prompts
for (const chapter of chaptersResponse.chapters) {
  if (prompts[chapter.name]) {
    await fetch(
      `https://api.babou.ai/api/v1/projects/${project.id}/chapters/${chapter.id}/prompt`,
      {
        method: 'POST',
        headers: {
          'Authorization': `Bearer ${process.env.BABOU_API_KEY}`,
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({
          content: prompts[chapter.name]
        })
      }
    );
    console.log(`✓ Submitted prompt for: ${chapter.name}`);

    // Wait 60 seconds for processing
    await new Promise(r => setTimeout(r, 60000));
  }
}

Step 5: Review & Refine

Check Chapter Status

Monitor the processing status:
async function checkChapterStatus(projectId: string, chapterId: string) {
  const chapter = await fetch(
    `https://api.babou.ai/api/v1/projects/${projectId}/chapters/${chapterId}`,
    {
      headers: { 'Authorization': `Bearer ${process.env.BABOU_API_KEY}` }
    }
  ).then(r => r.json());

  const latestPrompt = chapter.prompts[chapter.prompts.length - 1];

  return {
    chapterName: chapter.name,
    status: latestPrompt?.status || 'no_content',
    promptContent: latestPrompt?.content
  };
}

Iterate on Content

If you want to refine a chapter, submit a new prompt:
// Update a chapter with new prompt
await fetch(
  `https://api.babou.ai/api/v1/projects/${projectId}/chapters/${chapterId}/prompt`,
  {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${process.env.BABOU_API_KEY}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      content: 'Updated prompt with faster pacing and brighter colors',
      force: true  // Override previous prompt
    })
  }
);

Step 6: Export

Once all chapters are complete, export the final video:
// Start export
await fetch(
  `https://api.babou.ai/api/v1/projects/${projectId}/export`,
  {
    method: 'POST',
    headers: { 'Authorization': `Bearer ${process.env.BABOU_API_KEY}` }
  }
);

// Poll for completion
async function waitForExport(projectId: string) {
  while (true) {
    const status = await fetch(
      `https://api.babou.ai/api/v1/projects/${projectId}/export`,
      {
        headers: { 'Authorization': `Bearer ${process.env.BABOU_API_KEY}` }
      }
    ).then(r => r.json());

    if (status.status === 'completed') {
      console.log('✓ Export complete!');
      console.log(`Download: ${status.download_url}`);
      return status;
    }

    if (status.status === 'failed') {
      throw new Error('Export failed');
    }

    console.log(`Status: ${status.status}...`);
    await new Promise(r => setTimeout(r, 10000)); // Wait 10s
  }
}

await waitForExport(projectId);

Best Practices

1. Start Simple

Begin with a simple structure and iterate:
1. Create project
2. Add 1-2 chapters
3. Test with basic prompts
4. Refine and expand

2. Use Templates

Create reusable templates for common video types:
const templates = {
  productLaunch: ['Intro', 'Problem', 'Solution', 'Features', 'CTA'],
  tutorial: ['Introduction', 'Setup', 'Step-by-Step', 'Conclusion'],
  testimonial: ['Hook', 'Customer Story', 'Results', 'CTA']
};

function createFromTemplate(template: string[]) {
  // Create chapters from template
}

3. Batch Process

For multiple similar videos, batch process:
templates = [
    {'name': 'Social Post 1', 'topic': 'Feature A'},
    {'name': 'Social Post 2', 'topic': 'Feature B'},
    {'name': 'Social Post 3', 'topic': 'Feature C'}
]

for template in templates:
    # Create project
    # Add chapters
    # Submit prompts
    # Export

4. Version Control

Keep track of iterations:
const projectName = `Product Video v${version}`;
// or
const projectName = `Product Video - ${new Date().toISOString().split('T')[0]}`;

Common Patterns

Pattern 1: Rapid Prototyping

// Quick test of video concept
const project = await createProject('Quick Test v1');
const chapter = await addChapter(project.id, 'Test', 15);
await submitPrompt(project.id, chapter.id, 'Simple test content');

Pattern 2: Progressive Enhancement

// Start basic, add detail
const project = await createProject('Product Video');

// V1: Basic structure
await addChapter(project.id, 'Intro', 10);
await submitPrompt(..., 'Simple intro');

// V2: Add more chapters
await addChapter(project.id, 'Features', 30);
await submitPrompt(..., 'Feature showcase');

// V3: Refine content
await submitPrompt(..., 'Enhanced intro with animations', { force: true });

Pattern 3: Conditional Content

// Different content based on audience
const audience = 'technical'; // or 'general'

const prompt = audience === 'technical'
  ? 'Detailed technical architecture overview with code examples'
  : 'High-level benefits overview with simple visuals';

await submitPrompt(projectId, chapterId, prompt);

Next Steps