πŸ”Œ OFFICIAL DOCUMENTATION v2.2 (GENERATIVE AI APIS + 4 SKILLS + LOCAL ASSEMBLER)● https://odinxd.com/api/mcp β€” ONLINE

OdinxD MCP Server & REST API v1 Reference

Connect Claude Desktop, Claude Code, Cursor, Antigravity, Windsurf, or your custom workflows (n8n, Make, Python, Node.js) to forge Faceless Ads, Real Estate Tours, and 1080Γ—1920 viral reels using your account quota.

1. Dual Architecture: How Does It Work?

OdinxD hosts its official MCP server directly in the cloud over HTTPS (MCP Streamable HTTP JSON-RPC 2.0). You don't need heavy packages or a local GPU: all semantic analysis, AI scene generation, and 60fps mastering run in OdinxD Cloud.

🌐 Option A: Remote Cloud MCP (Zero Downloads)

Connect directly to https://odinxd.com/api/mcp with your API Key. Fastest option for creating Faceless AI Ads from text or editing videos hosted on Dropbox, public Google Drive, or S3.

πŸ’» Option B: GitHub Local Bridge (Local Disk Files)

Connect in 1 command from our official GitHub repository (odinxd-ai/OdinMCP, zero external dependencies). When you tell Claude 'Edit C:/Videos/house.mp4', the bridge uploads local files automatically and saves the finished MP4 to your Desktop.

βœ… Universal Access: Both the MCP Server and REST API v1 are unlocked for every OdinxD user: Starter Plan, Pro Plan, and pay-as-you-go accounts purchasing individual renders and AI credit packs.
⚠️ Golden A-Roll Rule (One Clean Single Video, Free of Silences & Bloopers): Camera-based modes (Hybrid, ViralBeat 2.0, Motion Stock, Maxy Overlay, and Fitness) work strictly on ONE single continuous, clean base video: OdinxD does not trim dead silences, cut spoken mistakes/retakes, or concatenate multiple base clips into one composition. πŸ’‘ If you have raw takes or multiple clips, our MCP instructions and /llms.txt guide your AI Agent (Claude Code, Cursor, Antigravity) to pre-clean silences/mistakes and merge takes locally (e.g. via FFmpeg) before sending the clean MP4 to OdinxD.
🎬 Anti-Celebrity Rule & 0-Charge Protection on Avatar Styles: Face-reference styles ('avatar_stock', 'ugc_stock', 'inmo_avatar_stock') are strictly for your own face or private clients: AI video engines block public figures, celebrities, and famous podcasters. For podcast clips or public figures, your AI Agent automatically selects faceless styles ('stock_hyperreal', 'cinematic_macro', 'scrapbook_polaroid', or 'parallax_3d') with 'kinetic_dinamic' or 'kinetic_blur' subtitles. If any reference photo is blocked, OdinxD stops before final mastering with 0 render charge and 100% automatic AI credit refund.

2. Authentication & Personal API Keys

All MCP and API v1 requests (except the public catalog endpoint) authenticate using personal secret tokens prefixed with odx_live_.

PropertyValue / Rule
Where to create keyshttps://odinxd.com/dashboard?section=mcp β†’ MCP Server & API Keys (requires an active Starter or Pro plan; up to 5 active keys per account).
Recommended HTTP HeaderAuthorization: Bearer odx_live_...
Alternative HeaderX-API-Key: odx_live_...
Storage SecurityOdinxD stores only an irreversible SHA-256 digest of your key. The raw key is shown once upon creation and can be revoked anytime.
Rate Limits120 req/min (reads) β€’ 15 jobs/min (new renders)

3. Step-by-Step Client Setup

Pick your AI client below and replace odx_live_YOUR_API_KEY_HERE with the API Key from your Dashboard:

In Claude Code, connect the zero-install remote HTTP server, or install the Official v2.1 Plugin + Skill (unlocking 0-credit local Whisper/FFmpeg mistake & silence cleaning, 9:16 podcast clipping, and personal stock bank):

1. MCP + Local Pre-Production Studio (Recommended)
claude mcp add odinxd -e ODINXD_API_KEY=odx_live_YOUR_API_KEY \
  -- npx --allow-git=all -y github:odinxd-ai/OdinMCP
2. Install 'odin-video-preproduction' Plugin / Skill (v2.1)
# Option A β€” Install Full Plugin in Claude Code (MCP + All 4 Official v2.2 Skills):
/plugin marketplace add odinxd-ai/OdinMCP
/plugin install odinmcp@odinxd

# Option B β€” Install All 4 Skills ('odin-ugc-factory', 'odin-cinematic-faceless', 'odin-microdrama-director', 'odin-video-preproduction'):
npx skills add odinxd-ai/OdinMCP
Cloud-Only Alternative (Streamable HTTP)
claude mcp add --transport http odinxd https://odinxd.com/api/mcp \
  --header "Authorization: Bearer odx_live_YOUR_API_KEY"
Verify connection
claude mcp list

4. Complete MCP Tools Reference

Once connected, your AI agent automatically discovers these tools and invokes them from natural language prompts:

get_account_quota0 renders β€’ 0 AI credits

Checks your active plan (Starter or Pro), remaining renders, available AI credits (in seconds), and unlocked Motion Graphics packs.

Example JSON arguments β€” get_account_quota
{}
get_odinxd_catalog0 renders β€’ 0 AI credits

Returns the live production catalog: all 20 AI B-Roll styles, 13 real estate room types, 15 fonts, 12 subtitle styles, Motion Graphics components, 24 TTS voices, and 20 BPM music tracks.

ParameterTypeReq.Description
section"all" | "omni_voices" | "ai_styles" | "inmo_rooms" | "fonts" | "subtitles" | "motion_components" | "voices" | "music"β€”Filters a specific section (including 'omni_voices' for Omni 1.2 Flash voices) or returns everything ('all').
Example JSON arguments β€” get_odinxd_catalog
{
  "section": "omni_voices"
}
generate_ai_image (NEW v2.2)1 AI credit / image β€’ 0 renders

Generates or composites 1 to 4 high-fidelity images via gemini-2.5-flash-image with 0 Remotion renders deducted. Supports all 4 UGC combinations (no photos, product only, avatar only, or fusing separate avatar + product photos into one cohesive 9:16 frame), Microdrama casting portraits, and cinematic keyframes.

ParameterTypeReq.Description
promptstringβœ…Visual prompt written directly by your own agent (zero OdinxD LLM cost).
purpose"ugc_avatar_with_product" | "character_casting" | "cinematic_keyframe" | "custom"β€”Specialized compositing mode (default: 'ugc_avatar_with_product').
avatar_imagestringβ€”Optional private avatar photo (local path, assetRef, or https:// URL; no celebrities).
product_imagesstring[]β€”1 to 3 real product photos to preserve exact packaging and branding.
count1..4β€”Number of images to generate (1 AI credit per image).
Example JSON arguments β€” generate_ai_image (NEW v2.2)
{
  "purpose": "ugc_avatar_with_product",
  "aspect_ratio": "9:16",
  "aesthetic": "ugc_smartphone",
  "avatar_image": "~/Brand/creadora.jpg",
  "product_images": [
    "~/Brand/serum_vitamina_c.png"
  ],
  "prompt": "26yo creator smiling naturally in sunlit bathroom vanity holding the serum dropper bottle near cheek, authentic iPhone selfie"
}
generate_ai_video_clip / generate_ai_video_batch (NEW v2.2)1 cr/s no refs β€’ 2 cr/s with refs β€’ 0 renders

Generates 1 clip or a parallel batch of up to 10 native video clips (3s to 15s each) via gemini-omni-1.2-flash with Lip-Sync speech (consistent English Voice Library: Aoede, Zephyr, Kore, Puck, Charon... plus Spanish acoustic dialect locks) or cinema foley. Automatic per-item credit refund on failure.

ParameterTypeReq.Description
clips / promptClipSpec[] | stringβœ…Single prompt (in generate_ai_video_clip) or array of 1 to 10 clips (in generate_ai_video_batch).
duration3..15β€”Integer duration in seconds per clip (default: 8s; up to 15s per take).
clip_mode"ugc_talking" | "microdrama_scene" | "cinematic_faceless" | "odin_style" | "custom"β€”Camera and native audio direction mode.
reference_mode"animate_photo" | "ingredient"β€”'animate_photo' animates a composite photo from frame 0; 'ingredient' preserves identity/product across fresh camera angles (Takes 2..N & Microdramas).
dialogue_scriptstringβ€”Exact spoken script written by your agent (~2.1 words/sec, e.g. ~30 words in 15s).
voice_presetstringβ€”Locked voice across takes: EN ('Aoede', 'Zephyr', 'Kore', 'Leda', 'Puck', 'Fenrir', 'Charon', 'Orus') or ES ('es_mx_female_ugc', 'es_es_female_ugc', etc.).
Example JSON arguments β€” generate_ai_video_clip / generate_ai_video_batch (NEW v2.2)
{
  "language": "en",
  "voice_preset": "Aoede",
  "save_to_dir": "~/Desktop/ugc_45s_takes",
  "clips": [
    {
      "label": "take_01_hook",
      "duration": 15,
      "clip_mode": "ugc_talking",
      "reference_mode": "animate_photo",
      "first_frame_image": "/api/media/u_5_ai_ab12cd34ef/gen_img_01.png",
      "prompt": "Natural handheld smartphone selfie in sunlit bathroom, expressive eyes, holding vitamin C serum",
      "dialogue_script": "Stop scrolling if your skin still looks tired by noon, because two drops of this changed my entire morning."
    },
    {
      "label": "take_02_cta",
      "duration": 15,
      "clip_mode": "ugc_talking",
      "reference_mode": "ingredient",
      "avatar_image": "/api/media/u_5_ai_ab12cd34ef/gen_img_01.png",
      "prompt": "Medium kitchen angle applying glowing serum drop to back of hand and smiling warmly at camera",
      "dialogue_script": "It absorbs in five seconds with zero sticky residue. Tap below before the starter bundle sells out again."
    }
  ]
}
create_faceless_ad1 render + AI scenes (~1 sec = 1 credit)

Creates a complete 9:16 vertical ad from scratch with no camera needed: writes the script, synthesizes neural TTS voiceover, generates AI storyboard scenes, and renders the final MP4.

ParameterTypeReq.Description
product_namestringβœ…Brand, product, service, or property name.
descriptionstringβœ…Key benefits, target audience, offer, and desired visual aesthetic.
faceless_mode"commercial_narrated" | "asmr" | "dynamic_beat" | "historical_doc"β€”Creative sub-mode (default: 'commercial_narrated').
target_duration15 | 30 | 45 | 60β€”Target duration in seconds (default: 30).
lang"es" | "en"β€”Script and voiceover language (default: 'es').
voice_idstringβ€”TTS voice ID (e.g. 'odin_pro_en', 'ava_ugc_en', 'odin_pro_es').
script_textstringβ€”Optional custom script (if omitted, AI writes it automatically).
product_imagesstring[]β€”Up to 3 real product photos (https:// URLs or local paths via Local Bridge).
avatar_imagestringβ€”Optional presenter/avatar photo (https:// URL or local path).
bg_musicstringβ€”BPM music track ID (e.g. 'minimal_luxury_122', 'streetwear_hype_140', 'none').
Example JSON arguments β€” create_faceless_ad
{
  "product_name": "Penthouse Polanco Sky",
  "description": "Penthouse de 320m2 con terraza privada y vista panorΓ‘mica para inversores.",
  "faceless_mode": "commercial_narrated",
  "target_duration": 30,
  "lang": "es",
  "voice_id": "lucia_luxury_es",
  "bg_music": "minimal_luxury_122"
}
render_hybrid_reel1 render + (clips_count Γ— clip_duration) AI credits

Edits your talking-head A-Roll video with 0 to 6 AI B-Roll clips across all 20 styles (including Avatar Stock, UGC Product, and the 3 Real Estate room-matching styles).

ParameterTypeReq.Description
video_urlstringβœ…ONE single clean A-Roll video (already free of silences/bloopers; OdinxD does not merge multiple base videos). Public https:// URL or local path via Local Bridge.
ai_stylesstring[]β€”AI style IDs (e.g. ['inmo_avatar_stock', 'inmo_tour_transition'] or ['scrapbook_polaroid', 'stock_hyperreal']).
clips_count0..6β€”Number of AI B-Roll clips to generate (default: 2).
clip_duration3 | 5 | 8 | 10β€”Seconds per AI clip (default: 5). AI credits = clips_count Γ— clip_duration.
inmo_photosArray<{ url: string; room: string; label?: string }>β€”1 to 8 labeled room photos for Real Estate AI styles.
avatar_imagestringβ€”Private creator/agent face photo (required for 'avatar_stock' and 'inmo_avatar_stock'; NO public figures or celebrities).
product_imagesstring[]β€”1 to 3 real product photos (required for 'ugc_stock').
saas_imagestringβ€”App/SaaS screenshot for 'ui_interface_dark'.
typographystringβ€”Curated font name (default: 'Montserrat', e.g. 'Playfair Display' for luxury/real estate, 'Space Grotesk' for tech).
subtitle_stylestringβ€”Subtitle animation style (default: 'kinetic_dinamic'; 'kinetic_blur' for luxury/podcast; 'dynamic' for Fitness popup).
Example JSON arguments β€” render_hybrid_reel
{
  "video_url": "https://dl.dropboxusercontent.com/s/ejemplo/agente_aroll.mp4",
  "ai_styles": [
    "inmo_avatar_stock",
    "inmo_tour_transition"
  ],
  "clips_count": 3,
  "clip_duration": 5,
  "typography": "Playfair Display",
  "avatar_image": "https://dl.dropboxusercontent.com/s/ejemplo/agente_rostro.jpg",
  "inmo_photos": [
    {
      "url": "https://dl.dropboxusercontent.com/s/ejemplo/sala.jpg",
      "room": "sala"
    },
    {
      "url": "https://dl.dropboxusercontent.com/s/ejemplo/cocina.jpg",
      "room": "cocina"
    },
    {
      "url": "https://dl.dropboxusercontent.com/s/ejemplo/suite.jpg",
      "room": "habitacion_principal"
    }
  ]
}
render_viral_beat1 render + (ai_clips_count Γ— ai_clip_duration) AI credits

Edits an A-Roll in ViralBeat 2.0 Mode: fast rhythmic pacing, dynamic split-screens, SFX, and AI B-Roll via catalog styles or a freeform creative prompt.

ParameterTypeReq.Description
video_urlstringβœ…ONE single clean A-Roll video (already free of silences/bloopers; OdinxD does not merge multiple base videos). https:// URL or local path via Local Bridge.
ai_clips_count0..6β€”Number of AI scenes (default: 3; set 0 to use zero AI credits).
ai_clip_duration3 | 5 | 8 | 10β€”Seconds per AI clip (default: 5).
ai_stylesstring[]β€”Optional AI style IDs (includes Real Estate & UGC).
creative_promptstringβ€”Freeform creative direction when no fixed styles are passed.
Example JSON arguments β€” render_viral_beat
{
  "video_url": "https://odinxd.com/sample/founder_reel.mp4",
  "ai_clips_count": 3,
  "ai_clip_duration": 5,
  "ai_styles": [
    "cyber_blueprint",
    "ui_interface_dark"
  ],
  "typography": "Space Grotesk"
}
render_motion_stock1 render β€’ 0 AI credits

Edits your A-Roll purely with 60fps animated Motion Graphics components (zoom punches, counters, parallax, kinetic subtitles) using 0 AI credits.

ParameterTypeReq.Description
video_urlstringβœ…ONE single clean A-Roll video (free of silences/mistakes). https:// URL or local path of your A-Roll video.
componentsstring[]β€”Optional list of Motion Graphics components (auto-curated if omitted).
typographystringβ€”Curated font (default: 'Montserrat').
Example JSON arguments β€” render_motion_stock
{
  "video_url": "https://odinxd.com/sample/coach_clip.mp4",
  "components": [
    "CanvasPan",
    "KinZoomPunch-V",
    "CounterReveal",
    "Subtitles-Pop"
  ],
  "typography": "Montserrat"
}
render_maxy_overlay1 render β€’ 0 AI credits

Applies dynamic HUD overlays, pop notifications, and stacked 3D typography over your talking-head video with 0 AI credits.

ParameterTypeReq.Description
video_urlstringβœ…ONE single clean A-Roll video (free of silences/mistakes). https:// URL or local path of your A-Roll video.
typographystringβ€”Curated font (default: 'Montserrat').
Example JSON arguments β€” render_maxy_overlay
{
  "video_url": "https://odinxd.com/sample/aroll.mp4",
  "typography": "Plus Jakarta Sans"
}
render_fitness_talking_head1 render β€’ 0 AI credits

High-energy direct talking-head edit with bold highlighter subtitles for coaches and creators (0 AI credits).

ParameterTypeReq.Description
video_urlstringβœ…ONE single clean A-Roll video (free of silences/mistakes). https:// URL or local path of your A-Roll video.
typographystringβ€”Curated font (default: 'Bebas Neue').
subtitle_stylestringβ€”Subtitle style (default: 'boxed_highlighter').
Example JSON arguments β€” render_fitness_talking_head
{
  "video_url": "https://odinxd.com/sample/gym.mp4",
  "typography": "Bebas Neue",
  "subtitle_style": "boxed_highlighter"
}
get_render_status0 renders β€’ 0 AI credits

Polls real-time progress percentage, friendly stage, and once 'done', returns the direct HD MP4 'downloadUrl' (valid for 72 hours).

ParameterTypeReq.Description
job_idstringβœ…Job ID returned when launching the render (e.g. 'job_8f92a1c4b3e2').
Example JSON arguments β€” get_render_status
{
  "job_id": "job_8f92a1c4b3e2"
}
wait_for_render (Local Bridge)Included in odinxd-mcp.mjs & odinxd_mcp_client.py

Automatically waits until the cloud render finishes and downloads the final HD MP4 straight to 'save_to_path' on your computer.

ParameterTypeReq.Description
job_idstringβœ…Job ID to wait for.
save_to_pathstringβ€”Destination path on disk (e.g. '~/Desktop/finished_reel.mp4').
Example JSON arguments β€” wait_for_render (Local Bridge)
{
  "job_id": "job_8f92a1c4b3e2",
  "save_to_path": "~/Desktop/reel_inmobiliario.mp4"
}
local_preprod_doctor (Local Pre-Prod v2.1)0 credits β€’ 100% Local CPU

Checks FFmpeg, Python/uv, faster-whisper, yt-dlp, OpenCV, and PySceneDetect on your PC. Passing 'auto_install: true' automatically provisions an isolated lightweight venv at ~/.odinxd/preprod_env.

ParameterTypeReq.Description
auto_installbooleanβ€”Automatically installs lightweight media wheels into ~/.odinxd/preprod_env if missing.
Example JSON arguments β€” local_preprod_doctor (Local Pre-Prod v2.1)
{
  "auto_install": true
}
transcribe_local_media (Local Pre-Prod v2.1)0 credits β€’ Local Whisper + FFmpeg

Transcribes 1 or multiple raw video takes locally with word-level timestamps and acoustic silence detection so your AI agent can drop spoken mistakes and retakes before stitching.

ParameterTypeReq.Description
input_pathsstring[]βœ…Local file paths of raw video/audio takes (e.g. ['~/Videos/take1.mp4', '~/Videos/take2.mp4']).
modelstringβ€”Local faster-whisper model: 'tiny', 'base' (default), 'small', or 'medium'.
Example JSON arguments β€” transcribe_local_media (Local Pre-Prod v2.1)
{
  "input_paths": [
    "~/Videos/toma1.mp4",
    "~/Videos/toma2.mp4"
  ],
  "model": "base"
}
clean_and_merge_aroll (Local Pre-Prod v2.1)0 credits β€’ 1 Clean 9:16 MP4

Strips dead silences and spoken retakes across 1..N raw files, applies 25ms anti-pop audio fades, normalizes loudness (-16 LUFS), and outputs ONE clean 1080Γ—1920 MP4 ready for OdinxD.

ParameterTypeReq.Description
input_pathsstring[]β€”Raw video files (for automatic dead-air removal when 'segments' is omitted).
segmentsArray<{ file: string, start: number, end: number }>β€”Curated clean segments chosen from transcribe_local_media to remove spoken mistakes/retakes.
output_pathstringβ€”Optional local path for the cleaned MP4 output.
Example JSON arguments β€” clean_and_merge_aroll (Local Pre-Prod v2.1)
{
  "segments": [
    {
      "file": "~/Videos/toma1.mp4",
      "start": 3.4,
      "end": 14.2
    },
    {
      "file": "~/Videos/toma2.mp4",
      "start": 1.1,
      "end": 19.6
    }
  ],
  "output_path": "~/Desktop/aroll_limpio.mp4"
}
extract_podcast_clips (Local Pre-Prod v2.1)0 credits β€’ yt-dlp + 9:16 Face-Center

Analyzes long local or URL podcast episodes (yt-dlp + Whisper) and extracts vertical 9:16 viral clips with stabilized OpenCV speaker face-centering.

ParameterTypeReq.Description
action'analyze' | 'extract'βœ…'analyze' returns timestamped blocks; 'extract' exports face-centered 9:16 MP4 clips.
sourcestringβœ…Local podcast video file or public video URL.
clipsArray<{ start: number, end: number, title?: string }>β€”Selected 25-58s viral moments when running action='extract'.
Example JSON arguments β€” extract_podcast_clips (Local Pre-Prod v2.1)
{
  "action": "extract",
  "source": "~/Videos/podcast_ep12.mp4",
  "clips": [
    {
      "start": 412.5,
      "end": 456,
      "title": "secreto_retencion"
    }
  ]
}
manage_local_stock_bank (Local Pre-Prod v2.1)0 credits β€’ Personal Local Stock Bank

Builds and searches your personal local B-Roll bank (~/.odinxd/stock_bank). Slices raw footage by scene cuts into 3-5s 9:16 clips + JPG thumbnails and outputs 'customStockParam' ready for 'custom_stock'.

ParameterTypeReq.Description
action'ingest' | 'search' | 'list' | 'tag' | 'remove'βœ…Stock bank action to execute.
sourcestringβ€”Folder or video file to slice into stock clips (for action='ingest').
querystringβ€”Keywords to retrieve up to 6 matching local stock clips (for action='search').
Example JSON arguments β€” manage_local_stock_bank (Local Pre-Prod v2.1)
{
  "action": "search",
  "query": "cocina marmol terraza",
  "limit": 4
}
generate_local_voiceover (Local Studio v2.2)0 credits β€’ Local Neural Voice + SRT

Synthesizes a free neural MP3 voiceover + synchronized .srt subtitle file locally on your PC via edge-tts (zero cloud cost). Ideal for Cinematic Faceless commercials and mini-documentaries.

ParameterTypeReq.Description
textstringβœ…Full narration script written by your agent.
voicestringβ€”Voice preset ('en_male_cinema', 'en_female_luxury', 'es_mx_male', 'es_es_male', etc.).
Example JSON arguments β€” generate_local_voiceover (Local Studio v2.2)
{
  "text": "En relojerΓ­a de alta precisiΓ³n, cada milΓ©sima de segundo separa lo ordinario de lo eterno.",
  "voice": "es_es_male"
}
assemble_local_timeline (Local Assembler v2.2)0 credits β€’ 30s-90s+ Master on PC

Stitches multi-take AI UGC ads (30s-60s+), Cinematic Faceless commercials, or full Microdrama episodes locally on your PC at 1080Γ—1920 or 1920Γ—1080 @ 30fps (-16 LUFS), mixing native Lip-Sync or voiceover + ducked SFX, music, and local Whisper/SRT burned captions.

ParameterTypeReq.Description
clip_pathsstring[]βœ…Ordered list of local .mp4 clips to assemble.
audio_mode"keep_native" | "voiceover_master"β€”'keep_native' keeps Lip-Sync speech (UGC/Microdramas); 'voiceover_master' mixes voiceover_path with ducked clip foley.
subtitles"none" | "auto_whisper" | "srt"β€”Optional local subtitle burn-in ('ugc_clean', 'cinema_yellow', 'minimal_luxury', 'boxed_impact').
Example JSON arguments β€” assemble_local_timeline (Local Assembler v2.2)
{
  "clip_paths": [
    "~/Desktop/ugc_45s_takes/01_take_01_hook.mp4",
    "~/Desktop/ugc_45s_takes/02_take_02_cta.mp4"
  ],
  "output_path": "~/Desktop/ugc_45s_master.mp4",
  "audio_mode": "keep_native",
  "subtitles": "auto_whisper",
  "subtitle_preset": "ugc_clean"
}

5. 20 AI B-Roll Styles & Real Estate Guide

In Hybrid Mode and ViralBeat 2.0, you can mix any of these 20 AI B-Roll styles. Real Estate styles semantically match each spoken sentence to the corresponding property room photo automatically.

🏑 Valid Room IDs for inmo_photos[].room

habitacion_principal β€” Master Suitesala β€” Living Roomcocina β€” Kitchencomedor β€” Dining Roombano β€” Bathroomhabitacion_secundaria β€” Secondary Bedroomterraza β€” Terrace / Rooftopjardin_piscina β€” Garden / Poolfachada_exterior β€” Facade / Exteriorvestidor β€” Walk-in Closetestudio_oficina β€” Home Office / Studylobby_amenidades β€” Lobby / Amenities / Gymotro β€” Custom room (pass 'label', e.g. 'Wine Cellar')
πŸ’‘ Local Bridge Tip: If your local filenames mention the room (e.g. kitchen.jpg, master_suite.png, terrace.webp), the Local Bridge infers the 'room' tag automatically.

🎨 All 20 AI B-Roll Styles

ID (ai_styles)NameCategoryRequired / Optional References
inmo_avatar_stockReal Estate Avatar StockReal Estateavatar_image (no celebrities) + inmo_photos (β‰₯1 room)
inmo_tour_transitionReal Estate POV Transition TourReal Estateinmo_photos (2 to 3 distinct rooms)
inmo_tourReal Estate Studio POV TourReal Estateinmo_photos (β‰₯1 room, no people)
ugc_stockUGC Stock (Avatar + Product)E-Commerceproduct_images (1–3) + avatar_image (opt., no celebrities)
avatar_stockAvatar Stock (Your Face)Characteravatar_image (private face only; NO celebrities)
ui_interface_darkDark UI Interface (SaaS VSL)Tech / SaaSsaas_image (optional)
scrapbook_polaroidScrapbook Polaroid 2.5DEditorialNone
stock_hyperrealHyperreal Faceless StockCinematicNone
cinematic_macroCinematic Detail B-RollCinematicNone
vox_editorialVOX Documentary CutoutEditorialNone
motion_dark_minimalDark Minimal MotionMinimalNone
swiss_designMinimalist Swiss DesignMinimalNone
parallax_3dParallax 3D Canvas Pan3DNone
dark_glassmorphismDark Glassmorphism 3D3DNone
diorama_3d3D Papercraft Diorama3DNone
isometric_clayIsometric Clay 3D3DNone
mannequin_3d3D Spotlight MannequinCharacterNone
cyber_blueprintCyber Blueprint WireframeTechNone
gradient_abstractGradient Abstract MeshAbstractNone
graphic_noirGraphic Noir & GlitchStylizedNone

6. Credit Billing, 72h Storage & Auto-Refunds

⚑ How Renders & AI Credits Work

β€’ Atomic Generative AI APIs (v2.2 β€” 0 Renders deducted): 1 AI Credit per generated image; 1 AI Credit/sec for video clips without references; 2 AI Credits/sec with reference images (avatar, product, or casting). β€’ Cloud Remotion Engines: 1 Render per finished reel + AI B-Roll seconds. β€’ Local Assembler, Motion Stock, Maxy Overlay & Fitness: 0 AI credits.

πŸ›‘οΈ Zero-Charge Failure Protection

If a job fails due to an unreachable URL, invalid file, or any technical issue, OdinxD charges 0 renders and automatically refunds 100% of reserved AI credits immediately.

⏱️ Cloud Retention (72 Hours): Finished MP4 files remain available in your Dashboard and at downloadUrl (https://odinxd.com/api/jobs/view/{jobId}.mp4) for 72 hours.

7. REST API v1 Reference (/api/v1/*)

Building custom automations in n8n, Make.com, Zapier, Python, or Node.js without an MCP client? Call our standard REST API v1 directly with your Bearer odx_live_... key:

EndpointAuthPurpose & Response
GET/api/v1/meBearerReturns active plan, rendersRemaining, aiCreditsRemaining, and unlocked packs.
GET/api/v1/catalogPublicComplete JSON catalog (supports ?section=ai_styles|inmo_rooms|voices|music|fonts|subtitles).
POST/api/v1/uploadBearerMultipart media upload (up to 500 MB; MP4, MOV, MP3, WAV, JPG, PNG, WEBP). Returns files[].path for /api/v1/jobs.
POST/api/v1/ai/imageBearerGenerates or composites 1..4 AI images (UGC avatar + product, casting, or keyframe). Cost: 1 AI credit/image, 0 renders.
POST/api/v1/ai/videoBearerGenerates 1 clip or a batch of up to 10 clips (3s–15s) via Omni 1.2 Flash + Lip-Sync (1 cr/s no refs, 2 cr/s with refs, 0 renders).
GET/api/v1/ai/jobs/{jobId}BearerStatus and authenticated multi-item outputs (items[].assetRef & items[].downloadUrl) for AI media jobs.
POST/api/v1/jobsBearerAccepts { "tool": "<tool_name>", "arguments": { ... } }. Returns HTTP 201 with jobId and reserved credits.
GET/api/v1/jobs/{jobId}BearerReal-time status (pending, rendering, done, failed), progressPercent, stageMessage, and MP4 downloadUrl.

πŸ’» Complete cURL Workflow

bash β€” REST API v1
# 1. Check your render quota and AI credits
curl -s https://odinxd.com/api/v1/me \
  -H "Authorization: Bearer odx_live_YOUR_API_KEY"

# 2. (Optional) Upload a local video and room photos from your machine or server
curl -s -X POST https://odinxd.com/api/v1/upload \
  -H "Authorization: Bearer odx_live_YOUR_API_KEY" \
  -F "video=@./agent_aroll.mp4" \
  -F "avatarImage=@./agent_face.jpg" \
  -F "inmoPhotos=@./kitchen.jpg" \
  -F "inmoPhotos=@./terrace.jpg"

# 3. Enqueue a render (Faceless Ad, Hybrid Mode, ViralBeat, Motion Stock, etc.)
curl -s -X POST https://odinxd.com/api/v1/jobs \
  -H "Authorization: Bearer odx_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tool": "create_faceless_ad",
    "arguments": {
      "product_name": "Aurum Skincare Serum",
      "description": "Pure vitamin C antioxidant serum for radiant skin in 14 days.",
      "faceless_mode": "commercial_narrated",
      "target_duration": 30,
      "lang": "en",
      "voice_id": "emma_glow_en",
      "bg_music": "skincare_glow_110"
    }
  }'

# 4. Poll progress and retrieve the direct HD MP4 URL
curl -s https://odinxd.com/api/v1/jobs/job_8f92a1c4b3e2 \
  -H "Authorization: Bearer odx_live_YOUR_API_KEY"

🐍 Complete Python Automation Example

python β€” OdinxD REST API v1
import time
import requests

API_KEY = "odx_live_YOUR_API_KEY"
BASE_URL = "https://odinxd.com/api/v1"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

# 1. Upload local media (optional if you already have public https:// URLs)
with open("my_clean_aroll.mp4", "rb") as vf:
    up = requests.post(f"{BASE_URL}/upload", headers=HEADERS, files={"video": vf}).json()
uploaded_video_path = up["files"][0]["path"]

# 2. Enqueue Hybrid Mode Reel
job_resp = requests.post(
    f"{BASE_URL}/jobs",
    headers=HEADERS,
    json={
        "tool": "render_hybrid_reel",
        "arguments": {
            "video_url": uploaded_video_path,
            "ai_styles": ["scrapbook_polaroid", "stock_hyperreal"],
            "clips_count": 2,
            "clip_duration": 5,
            "typography": "Montserrat",
        },
    },
).json()

job_id = job_resp["jobId"]
print("Render queued:", job_id)

# 3. Poll until completion and get HD MP4 link
while True:
    st = requests.get(f"{BASE_URL}/jobs/{job_id}", headers=HEADERS).json()
    print(f"[{st['progressPercent']}%] {st['stageMessage']}")
    if st["status"] == "done":
        print("HD MP4 ready:", st["downloadUrl"])
        break
    if st["status"] == "failed":
        raise RuntimeError(st["stageMessage"])
    time.sleep(15)

⚠️ HTTP Status & Error Codes

HTTPError CodeCause & Resolution
401MISSING_API_KEY / INVALID_API_KEYMissing Authorization: Bearer odx_live_... header or key was revoked.
403PLAN_REQUIRED_FOR_MCPGenerating and using OdinMCP API keys requires an active Starter or Pro subscription at https://odinxd.com/dashboard?section=mcp.
402INSUFFICIENT_AI_CREDITSNot enough AI video credits (1 credit = 1 AI second). Top up at /dashboard or use 0-credit modes.
403RENDER_LIMIT_REACHEDZero remaining renders (rendersRemaining = 0). Buy single renders or subscribe at /dashboard.
400MULTIPLE_BASE_VIDEOS_NOT_SUPPORTEDMultiple base videos passed in 'video_url'. OdinxD accepts ONE single clean A-Roll (0 charge). Clean silences/mistakes and stitch locally first.
400MISSING_AVATAR_IMAGE / MISSING_INMO_PHOTOS / INVALID_AI_STYLE_IDPre-flight validation (0 charge): missing required reference photo for the chosen style ('avatar_stock', 'inmo_*', 'ugc_stock') or unknown AI style ID.
Job Failed (0 charge)PROMINENT_PERSON_BLOCKEDThe 'avatar_image' contains a celebrity/public figure blocked by AI likeness policies. Render stops early with 0 charge and 100% credit refund. Use faceless styles ('stock_hyperreal', 'scrapbook_polaroid').
400VALIDATION_ERROR / UNSUPPORTED_IMAGE_FORMATInvalid parameter, unsupported HEIC/RAW format (use JPG, PNG, WEBP, MP4), or local disk path sent to Remote MCP.
429RATE_LIMIT_EXCEEDEDExceeded rate limit (120 reads/min or 15 new render mutations/min).

8. Ready-to-Use Prompts & Troubleshooting

Copy and paste any of these prompts into Claude or Cursor once your MCP is connected:

πŸ”₯ NEW v2.2: Batch of 10Γ—15s UGC Ads or 45s Multi-Take UGC Commercial (0 Renders)
Take my product photo C:/Brand/serum.png and creator photo C:/Brand/creator.jpg. First fuse them into a single photo holding the serum with generate_ai_image (1 credit), then shoot a 3-take 45-second English UGC ad locking voice 'Aoede' (or 10 distinct 15s hook ads in parallel) and master the final MP4 to my Desktop with assemble_local_timeline and clean captions.
🎬 NEW v2.2: 60s Serialized AI Microdrama Episode with Consistent Casting
Write and direct Episode 1 (50 seconds) of a corporate thriller vertical microdrama. First generate casting portraits for the 2 leads with generate_ai_image (purpose='character_casting', aesthetic='cinema_35mm'), shoot all 5 scenes via generate_ai_video_batch locking their faces and voices ('Kore' and 'Charon'), and assemble the finished episode locally via assemble_local_timeline.
βœ‚οΈ Pre-clean silences/mistakes + Merge multiple takes locally, then render in OdinxD
I have 3 raw takes at C:/Videos/take1.mp4, C:/Videos/take2.mp4, and C:/Videos/take3.mp4 with pauses and a couple of retakes. First use your local tools (FFmpeg / transcription) to cut dead silences, remove repeated lines, and merge them into a single clean C:/Videos/clean_aroll.mp4, then send that file to OdinxD in Hybrid Mode with 3 AI clips ('scrapbook_polaroid', 'stock_hyperreal').
πŸ›οΈ Faceless AI Ad from scratch (No filming)
Check my OdinxD quota first. Then create a 30-second English narrated Faceless Ad for "Velvet Coffee Roasters" (freshly roasted specialty coffee delivered in 24h), using voice 'odin_pro_en' and music 'minimal_luxury_122', and give me the HD MP4 link once ready.
🏑 Real Estate Tour with automatic room matching
Edit C:/Videos/agent_penthouse.mp4 in Hybrid Mode with 3 clips of 5s using 'inmo_avatar_stock' and 'inmo_tour_transition', font 'Playfair Display', my face photo C:/Videos/agent_avatar.jpg, and room photos C:/Videos/living.jpg (sala), C:/Videos/kitchen.jpg (cocina), and C:/Videos/master.jpg (habitacion_principal). Save the finished MP4 to my Desktop.
⚑ Zero-AI-Credit Motion Graphics Edit
Edit https://dl.dropboxusercontent.com/s/example/coach_reel.mp4 using render_motion_stock (0 AI credits) with font 'Anton' and share the HD MP4 download URL when done.

πŸ› οΈ Common Troubleshooting

Why did 'npx @odinxd/mcp-server' return 404?

OdinxD's MCP server is hosted over HTTPS at https://odinxd.com/api/mcp. Use 'claude mcp add --transport http ...' in Claude Code, 'npx -y mcp-remote https://odinxd.com/api/mcp ...' in Claude Desktop, or download odinxd-mcp.mjs for local files.

Passing a local C:\Videos\... path in Remote Mode

The cloud server cannot access your local disk in Remote Mode. Pass a public link (Dropbox / Google Drive) or switch to the Local Bridge odinxd-mcp.mjs (Section 3) for automatic local file uploads.