Skip to main content
POST
Generate Video Ads
Generate professional UGC-style video ads from product URLs. The AI analyzes product pages, creates scripts, generates video scenes with AI actors, synthesizes voiceovers, and produces fully-edited videos ready for social media. Every parameter except urls is optional — the AI auto-determines actor, script style, language, and creative direction from the product page.

Authentication

string
required
Your Nouvel API key with generate permission. Format: Bearer nvl_xxxx

Request Body

Required

string[]
required
Array of 1-3 product page URLs to generate videos from. Each URL must:
  • Be a valid HTTP/HTTPS URL
  • Point to a product page (e.g., Shopify, Amazon, DTC brand sites)
  • Be publicly accessible

Generation Settings

integer
default:"1"
Number of video variants to generate per URL. Must be between 1-3.Total projects = urls.length × variantCount
Each video variant uses a different creative approach (script angle, actor, pacing). Variants help you A/B test what resonates with your audience.
string
default:"9:16"
Video aspect ratio. Valid values:
integer
default:"15"
Target video duration in seconds. Valid values: 15, 30, 45, 60.
string
default:"ad"
Content purpose. ad generates a direct-response ad with a CTA. organic generates a softer, editorial-style video.Valid values: ad, organic

Script & Style

string
default:"problem_solution"
Script framework for the AI copywriter. Determines the narrative structure.
string
Provide your own voiceover script. When set, the AI skips script generation entirely and uses this text as the voiceover. Maximum 5000 characters.
The script is still processed for lip-sync timing and caption alignment, but the words are exactly what you provide.
string
Free-form creative directions for the AI. Maximum 2000 characters. Use this for nuanced guidance that doesn’t fit into the structured parameters.
User instructions are the highest-priority creative input — they override default AI choices for style, actor, script, and visual direction.

Actor & Avatar

string
UUID of a specific actor from your Nouvel account. When set, the AI uses this actor for all avatar scenes instead of auto-selecting.
If omitted, the AI auto-selects an actor based on the product category and target audience. For example, beauty products default to a female actor; fitness supplements default to a male actor.
string
HTTPS URL to a custom avatar photo. Use this to generate a video with any person’s likeness instead of a Nouvel stock actor.The image should be:
  • A clear, front-facing headshot or upper-body photo
  • At least 512×512 pixels
  • JPEG, PNG, or WebP format
You are responsible for having the rights to use any custom avatar image. Nouvel does not verify image ownership.

Language & Localization

string
default:"auto"
Language for the voiceover script. When set to auto or omitted, the language is auto-detected from the product page.Common values: en (English), es (Spanish), fr (French), de (German), pt (Portuguese), ja (Japanese), ko (Korean), zh (Chinese), hi (Hindi), ar (Arabic).
string
Voice accent override. When omitted, the accent is auto-determined from the language (e.g., English defaults to American).For English, valid accents include: American English accent, British English accent, Australian English accent, Indian English accent, Canadian English accent.

Audience

string
Description of your target audience. Maximum 500 characters. The AI tailors the script tone, vocabulary, hook strategy, and actor selection to match.

Advanced

string
Visual layout preset ID. Controls the scene structure and narrative arc. Contact support for available preset IDs.
string
HTTPS URL to receive a notification when the job completes (or fails). The URL must:
  • Use HTTPS (HTTP is rejected)
  • Not point to localhost or private IP ranges
Nouvel retries failed deliveries up to 3 times with exponential backoff (immediate → 10s → 60s).
See the Webhooks guide for payload format, signature verification, and retry behavior.

Response

string
required
UUID of the generation job. Use this to poll status via /api/v1/jobs/{jobId}.
integer
required
Total number of videos that will be generated (urls.length × variantCount).
string
required
Job status. Always "running" on successful submission.

Example Requests

Response Examples

Error Codes

How It Works

1

Product Analysis

The AI scrapes the product page, extracting:
  • Product name, description, and benefits
  • Images and branding
  • Language and pricing
2

Script Generation

A proprietary model trained on hundreds of high-performing ad scripts generates a voiceover script using the selected scriptStyle. Supports 30+ languages.
  • Scripts are optimized for natural speech patterns
  • Word count is enforced server-side to match the target duration
3

Visual Concept

AI selects the best product photos, generates feature badges, headline text, and CTA copy based on the script and scraped product data.
4

Video Production

  • Synthesizes natural voiceover from the script
  • Generates a lip-synced avatar speaking the hook
  • Composes product slides with animated transitions
  • Renders the final video with captions
5

Final Delivery

Exports MP4 files in your selected aspect ratio, optimized for social platforms.
Generation is asynchronous. This endpoint returns immediately with a jobId. Videos take 2-5 minutes to generate. Poll /api/v1/jobs/{jobId} for status updates, or use a webhookUrl to be notified on completion.

Auto-Detection Defaults

When you submit just a URL, the AI auto-determines everything:

Billing & Quotas

  • Each video generated counts as 1 credit toward your monthly quota
  • If your plan quota is exhausted but you have credit balance, overage billing applies at $8/video
  • Generation fails with 402 if both quota and credit balance are exhausted
Example: With a 50-video/month plan:
  • Request 1: urls: [A, B], variantCount: 2 → 4 credits used, 46 remaining
  • Request 2: urls: [C], variantCount: 3 → 3 credits used, 43 remaining

Best Practices

Send just urls first to see what the AI produces. Then add scriptStyle, targetAudience, or userInstructions to fine-tune results. Over-specifying can constrain the AI unnecessarily.
Instead of verbose userInstructions, use targetAudience to let the AI adapt vocabulary, hook strategy, and energy level automatically. A “Gen Z TikTok users” audience gets a very different script than “C-suite executives.”
Use avatarImageUrl with your brand ambassador or influencer’s photo for consistent branding across all videos. Pair with overrideScript for full creative control.
Use variantCount: 2-3 to test different creative approaches. Variants use different scripts, hook strategies, and creative angles automatically.
Poll /api/v1/jobs/{jobId} every 10-15 seconds, or register a webhookUrl to be notified automatically. Check the stage field to see pipeline progress.

Next Steps

After submitting a generation job:
  1. Poll for status: Use Get Job Status to monitor progress — or register a webhook to be notified on completion
  2. Download videos: Once status: "completed", find video URLs in completedDetails[].finalOutputUrl
  3. Publish to social: Use the Publishing API to schedule posts across platforms
  4. Track performance: Use the Analytics API to monitor engagement metrics