# agent-media — Full LLM Context > UGC for developers. Generate AI videos with talking heads, B-roll, voiceover, and subtitles via API, CLI, SDK, or MCP server. Plans start at $39/month. ## What is agent-media? agent-media is a developer-first platform for AI UGC (user-generated content) video generation. Write a script, pick an AI actor, get a polished video with talking heads, B-roll, voiceover, and animated subtitles. Available as: 1. REST API v2 with OpenAPI spec and interactive Scalar docs 2. TypeScript SDK: `npm install @agentmedia/sdk` 3. Python SDK: `pip install agent-media` 4. CLI: `npm install -g agent-media-cli` (30 commands) 5. MCP Server: `npx -y -p @agentmedia/mcp-server@latest agent-media-mcp` — 21 tools for Claude Code, Cursor, Codex, Claude Desktop and any MCP client. The headline one is make_ugc, which turns a script (plus an optional person, image, or saved character) into a finished vertical video 6. Web dashboard at https://agent-media.ai ## UGC Pipeline (Flagship Feature) The UGC pipeline turns a script into a polished video: - Script → scene splitting → TTS voiceover → AI talking heads + AI B-roll → crossfade assembly → animated subtitles → background music → end screen CTA - Auto voice detection from face photo - Subtitles are opt-in — added only when you request them. When you do, pick from 17 styles (hormozi is the default style): hormozi, minimal, bold, karaoke, clean, tiktok, neon, fire, glow, pop, aesthetic, impact, pastel, electric, boxed, gradient, spotlight ### UGC Commands ```bash # Basic UGC generation agent-media skills run make_ugc --wait \ --input '{"script":"your script text here..."}' # With a photo for an exact-likeness person agent-media skills run make_ugc --wait \ --input '{"script":"...","image":"https://example.com/photo.png"}' # Full options agent-media skills run make_ugc --wait \ --input '{"script":"...","person":"a friendly woman, 28","captions":true,"caption_style":"hormozi","aspect_ratio":"9:16","look":"raw_iphone","music":true}' ``` `skills run` flags: `--input `, `--input-file `, `--wait`, `--poll-interval `, `--timeout `, `--idempotency-key `, `--json`, `--quiet`, `--profile `. ### make_ugc input fields | Field | Description | |------|-------------| | script | What the person says, lip-synced. Any length — a one-liner makes one clip, a monologue makes a multi-take video | | scene_action | A silent action clip (dancing, b-roll, vibes) instead of dialogue. Requires a character | | person | Describe the person in words. Omit if you pass image or character | | image | Photo of the person — https URL or base64. Locks the face to it | | character | Reuse a saved character: its char_… id or its character_sheet_url | | product_image | Photo of a product to show, hold or wear | | name | Name/age/vibe hint, e.g. "Sophia, 28" | | broll_url | A b-roll or gameplay video overlaid on the lower half while the person narrates | | duration | 5/10/15/20/25/30. Leave blank — length is inferred from the script | | captions | Burn in captions. Off unless set true | | caption_style | hormozi, tiktok, minimal | | look | natural, commercial, raw_iphone | | aspect_ratio | 9:16, 1:1 | | music | Background music | ## SaaS Review Videos Generate AI review videos for any SaaS product — provide the name + screenshots and get a complete video. This is an API generator, not a CLI subcommand: ```bash curl -X POST https://api.agent-media.ai/v1/generate/saas_review \ -H "Authorization: Bearer $AGENT_MEDIA_API_KEY" \ -H "Content-Type: application/json" \ -d '{"saas":"Postiz","screenshots":["url1.png","url2.png"],"angle":"honest"}' ``` Review angles: honest, enthusiastic, roast, tutorial, comparison. Generators available on `POST /v1/generate/:generatorId`: ugc_video, saas_review, subtitle, show_your_app, product_acting_ugc, laptop_ugc, character_video, text_to_video. ## Subtitles Burn animated subtitles onto an existing video: ```bash agent-media subs --video https://example.com/video.mp4 --style bold ``` `subs` flags: `--video `, `--style ` (17 styles, hormozi default), `--transcript `, `--language `, `--profile `. Whisper transcribes automatically when no transcript is given. ## Persona Management Save voice + face combos for consistent UGC: ```bash agent-media persona create "brand-voice" --voice ./sample.mp3 --face ./photo.png agent-media persona list agent-media persona delete ``` ## Installation ```bash npm install -g agent-media-cli ``` ## Authentication ```bash agent-media login # Opens browser to authenticate and stores session locally ``` ## Usage Examples ### Generate a UGC video from a script ```bash agent-media skills run make_ugc --wait \ --input '{"script":"Ever wonder why some videos go viral? It is not luck..."}' ``` ### UGC with a face photo and captions ```bash agent-media skills run make_ugc --wait \ --input '{"script":"...","image":"https://example.com/photo.png","captions":true,"caption_style":"hormozi"}' ``` ### Check credits ```bash agent-media credits ``` ## CLI Commands (30 total) ### Generation - skills list/run/status: Run vNext skills by slug — make_ugc, make_podcast, make_subtitles - selfie: 9:16 vertical selfie clip from a saved character or a photo + description - subs: Burn styled subtitles onto an existing video - character create/list/show/delete: Manage reusable AI characters - persona list/create/delete: Manage voice + face personas - actor list/preview/variants: Browse 200 pre-made AI actors - social: Publish generated videos to TikTok / Instagram / X ### Job Management - status: Check job status - list (ls): List recent jobs - download: Download generated media - inspect: Detailed inspection view of a job - cancel: Cancel an active job and refund credits - delete: Soft-delete a job - debug: Debug and troubleshoot jobs and credits ### Account & Billing - login/logout: Authentication - whoami: Current user, plan and credit balances - credits: Check credit balance - plan: Subscription plan details - subscribe: Subscribe to a plan or buy credits - apikey: Manage API keys - usage: Usage analytics and credit consumption - profile: Manage credential profiles ### Setup - config: Manage CLI configuration - doctor: Diagnostic checks on your setup - update: Update the CLI - alias: Manage command aliases - completions: Generate shell completion scripts (bash/zsh/fish) - skill: Manage the agent-media Claude skill installation - version: Show CLI version information ## Pricing | Plan | Monthly Price | Credits | Best For | |------|-------------|---------|----------| | Creator | $39 | 3,900 | ~13 10s videos, regular UGC and content creation | | Pro | $69 | 6,900 | ~23 10s videos, professional UGC workflows | | Pro Plus | $129 | 12,900 | ~43 10s videos, high-volume UGC production | Extra credit pack: 3,900 credits for $39. A 10s video costs ~300 credits ($3). ## How agent-media Compares agent-media is the only CLI tool offering a complete UGC pipeline (script → video with talking heads, B-roll, voiceover, and subtitles) from the terminal. ## Technical Details - Runtime: Node.js (npm package) - Package: agent-media-cli on npm - Binary: agent-media - Version: 1.18.5 - License: Apache-2.0 - Repository: https://github.com/gitroomhq/agent-media - Website: https://agent-media.ai - Backend: Supabase Edge Functions - Payments: Stripe ## REST API Reference Base URL: `https://api.agent-media.ai/v1` Authentication: Bearer token via API key (`Authorization: Bearer ma_xxx`). ### Endpoints | Method | Path | Description | |--------|------|-------------| | GET | /v1/skills | List vNext skills with their JSON input schemas | | POST | /v1/skills/:slug/run | Start a skill run (make_ugc, make_podcast, make_subtitles) | | POST | /v1/skills/:slug/quote | Credit quote for a run, before committing | | GET | /v1/skills/runs/:skillRunId | Get skill run status and output | | POST | /v1/skills/runs/:skillRunId/cancel | Cancel a run and refund credits | | POST | /v1/generate/:generatorId | Start a generator job (ugc_video, saas_review, subtitle, show_your_app, product_acting_ugc, laptop_ugc, character_video, text_to_video) | | GET | /v1/videos/:jobId | Get video job status | | GET | /v1/actors | List AI actors (filterable). Public endpoint — no API key required. Use ?slug=... for single-actor lookup. | | GET | /v1/characters | List saved characters | | POST | /v2/characters | Create a reusable character from a photo | | POST | /v2/selfie | Generate a vertical selfie clip | | GET | /v1/me/gallery | Your generated media | | GET | /v1/me/api-keys | List API keys | | POST | /v1/me/api-keys | Create an API key | | DELETE | /v1/me/api-keys/:id | Revoke an API key | | GET | /v1/social/channels | Connected TikTok / Instagram / X channels | | POST | /v1/social/publish | Publish a generated video to a channel | | GET | /health | Service health and available generators | | GET | /openapi.json | OpenAPI spec | ### Video Creation (POST /v1/generate/ugc_video) Required: `script` (50-3000 chars) OR `prompt` (for AI script generation). Core params: `actor_slug`, `target_duration` (5/10/15), `style` (17 subtitle styles, default: hormozi). Advanced params: `tone` (energetic/calm/confident/dramatic), `voice_speed` (0.7-1.5), `music` (chill/energetic/corporate/dramatic/upbeat), `cta` (max 100 chars), `aspect_ratio` (9:16/16:9/1:1), `template` (monologue/testimonial/problem-solution/saas-review/before-after/listicle/product-demo), `allow_broll`, `broll_images` (array, max 10), `product_image_url`, `dub_language` (BCP-47 code), `webhook_url`, `composition_mode` ("pip"), `pip_options` ({position, size, animation, frame_style}), `scenes` (array of {type, text, visual_prompt, image}). Response: `{ job_id, status: "submitted", estimated_duration, credits_deducted, selected_voice, voice_auto_detected }` ### Credit Costs 30 credits/second: 5s = 150 credits, 10s = 300 credits, 15s = 450 credits. AI script generation adds 5 credits. ### Error Format `{ error: { code, message, type } }` where type is one of: validation_error (400), authentication_error (401/403), insufficient_credits (402), not_found (404), rate_limit_error (429), server_error (500). ### Subtitle Styles (17) hormozi (default), minimal, bold, karaoke, clean, tiktok, neon, fire, glow, pop, aesthetic, impact, pastel, electric, boxed, gradient, spotlight. ### Webhooks Pass `webhook_url` (HTTPS, max 2048 chars) in the POST body. agent-media POSTs to that URL when the job completes or fails. On success: `{ job_id, status: "completed", video_url }`. On failure: `{ job_id, status: "failed", error_message }`. Retry policy: 3 attempts with exponential backoff (1s, 4s, 16s) on non-2xx responses. After that the webhook is abandoned — poll GET /v1/videos/:jobId for the result. The completed video is also accessible on the `output_url` field of the job record. To verify authenticity, append a shared secret as a query parameter (e.g. `?secret=MY_TOKEN`). The query string is preserved as-supplied. Full API documentation: https://agent-media.ai/docs/api