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.
curl -X POST https://api.babou.ai/api/v1/projects \ -H "Authorization: Bearer $BABOU_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Pricing Page Refresh", "description": "30-second launch ad for the new Team tier" }'
Use descriptive names and detailed descriptions to keep projects organized, especially when managing multiple videos.
5-second hook for our pricing page launch:- Lead with the headline from release note v2.4 ("Team plan: built for product teams that ship daily")- Background: subtle motion of the new pricing page- End on the Team tier card, ready to push into the next chapter
Include timing and pacing
12-second tier breakdown:- 0-3s: Pricing page hero shot, panning to the Team column- 3-7s: Three core inclusions appear one at a time- 7-10s: Price + billing toggle highlight- 10-12s: Transition to "Why Now"
Lean on the catalog for brand
Use the catalog defaults:- Brand color, type, and motion language already on file- Pull the accent color from the pricing CTA button so the ad matches the page it's promoting
If you haven’t connected a catalog yet, you can pass brand details inline. Once it’s connected, this section is one line.
Reference uploaded assets
Use the new pricing screenshot (uploaded as ast_pricingV2)and the headline from release note v2.4. Match the style frombabou.ai/pricing.
const prompts = { 'Hook': ` 5-second hook for the Team tier launch. - Lead with the headline from release note v2.4 - Subtle motion of the new pricing page in the background - Resolve brand color and type from the catalog - End on the Team tier card, ready to push into the breakdown `, 'Tier Breakdown': ` 12-second walkthrough of the new Team tier. - 0-3s: pan across the new pricing page, focus on the Team column - 3-7s: three core inclusions appear one at a time - 7-10s: price plus billing toggle highlight - 10-12s: transition into "Why Now" `, 'Why Now': ` 8 seconds on why this matters for product teams. - One-line value prop, pulled from the launch summary - Light motion graphic from the catalog (Block: stat-callout) - Confident, on-brand pacing ` // ...CTA chapter follows the same shape};// Get chaptersconst 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 promptsfor (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)); }}
// Quick test of video conceptconst project = await createProject('Quick Test v1');const chapter = await addChapter(project.id, 'Test', 15);await submitPrompt(project.id, chapter.id, 'Simple test content');