{"version":"2026-10-04","tool":"studio_quote","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"kind":{"description":"Required for new videos/posters; image/edit operations infer it.","type":"string","enum":["video","poster","image"]},"kitId":{"description":"Project ID or null for a creation without project. No project is inferred.","anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}]},"branding":{"type":"boolean"},"videoEngine":{"description":"Default h3. Google Omni 1.1 Flash: 5–10 seconds per clip, 1–4 clips, only 9:16/16:9; uses omniResolution. Same post-production audio, subtitles and branding. No uploaded-video editing or extension in this integration.","type":"string","enum":["h3","omni"]},"omniResolution":{"description":"Omni only: 720p native default, 360p draft or 1080p upscaled. H3 resolution is ignored for Omni. API generation is paid, not the free Google Vids offer.","type":"string","enum":["360p","720p","1080p"]},"resolution":{"description":"Required for new videos/posters; image/edit operations set 768P.","type":"string","enum":["480P","768P"]},"aspectRatio":{"description":"Required for new videos/posters; image/edit operations have their own defaults.","type":"string","enum":["9:16","16:9","1:1","4:5","original"]},"scenes":{"description":"Required for new video/poster/image generation; edits operate on sourceUrl without new scenes.","minItems":1,"maxItems":4,"type":"array","items":{"type":"object","properties":{"voiceLine":{"description":"Exact narrator speech for this scene; starts at +0.2s. Do not combine with global voiceover or character dialogue.","type":"string","maxLength":600},"slowMotion":{"type":"boolean"},"impactAt":{"type":"number","minimum":0,"maximum":15},"lipSync":{"description":"Set false for product/B-roll with off-screen dialogue: skip and do not charge lip sync for this clip. Omit for on-camera speech when global lipSync is enabled.","type":"boolean"},"prompt":{"type":"string","minLength":1,"maxLength":30000},"duration":{"description":"Required for new videos/posters; image operations set it automatically.","type":"integer","minimum":5,"maximum":15},"imageUrl":{"type":"string","minLength":1,"maxLength":8192},"focalPoint":{"description":"Focal point for first_frame crop. Normalized 0–1 coordinates; defaults to center. Original image is preserved.","type":"object","properties":{"x":{"type":"number","minimum":0,"maximum":1},"y":{"type":"number","minimum":0,"maximum":1}},"required":["x","y"],"additionalProperties":false},"referenceMode":{"description":"subject starts in action using the identity; first_frame intentionally animates the supplied photo.","type":"string","enum":["subject","first_frame"]},"onScreenText":{"type":"string","maxLength":90},"onScreenTextStart":{"type":"number","minimum":0},"onScreenTextEnd":{"type":"number","minimum":0},"spokenLines":{"description":"Native on-camera dialogue; requires nativeAudio:true.","maxItems":6,"type":"array","items":{"type":"object","properties":{"speaker":{"type":"string","minLength":1,"maxLength":120},"text":{"type":"string","minLength":1,"maxLength":300},"voiceDescription":{"type":"string","maxLength":160}},"required":["speaker","text"],"additionalProperties":false}},"dialogue":{"description":"External dubbing with voiceCast; does not guarantee lip sync.","maxItems":6,"type":"array","items":{"type":"object","properties":{"speakerId":{"type":"string","minLength":1,"maxLength":64},"text":{"type":"string","minLength":1,"maxLength":300}},"required":["speakerId","text"],"additionalProperties":false}}},"required":["prompt"],"additionalProperties":false}},"references":{"maxItems":5,"type":"array","items":{"type":"object","properties":{"imageUrl":{"description":"Private image path returned by Studio Pro. A signed URL from this Studio Pro origin is also accepted.","type":"string","minLength":1,"maxLength":8192},"url":{"description":"Compatibility alias for imageUrl; use only one image source.","type":"string","minLength":1,"maxLength":8192},"assetId":{"description":"ID returned by studio_upload_image; the image must belong to this account.","type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"referenceId":{"type":"string","pattern":"^(character|asset|project|video):[1-9]\\d*$","description":"ID returned by studio_list_references; character:12, asset:128 or project:2. Video IDs are context, not still character photos."},"label":{"description":"Character name and role, or product/location description. Required for a URL; defaults to the saved label when selecting an ID.","type":"string","minLength":1,"maxLength":240},"name":{"description":"Compatibility alias for label.","type":"string","minLength":1,"maxLength":240}},"additionalProperties":false}},"storyContext":{"type":"string","maxLength":6000},"continuity":{"type":"boolean"},"nativeAudio":{"type":"boolean"},"subtitles":{"type":"boolean"},"lipSync":{"description":"Additional paid lip-sync pass using voiceCast + dialogue. Requires nativeAudio:false and exactly one speaking character per synced clip with a visible unobstructed face. Experimental on stylised characters; quote includes extra cost.","type":"boolean"},"editor":{"description":"Prefer studio_reel_plan or studio_edit_timeline. Music montage without source dialogue; reuses completed clips.","type":"object","properties":{"jobId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"music":{"default":"original","type":"string","enum":["original","pulse","none"]},"timeline":{"type":"object","properties":{"version":{"default":1,"type":"number","const":1},"format":{"default":"9:16","type":"string","enum":["9:16","16:9","1:1"]},"fps":{"default":30,"type":"number","const":30},"duration":{"type":"number","minimum":6,"maximum":60},"beatSync":{"default":true,"type":"boolean"},"audio":{"default":"music_only","type":"string","enum":["music_only","source","mute"]},"sourceVolume":{"default":1,"type":"number","minimum":0,"maximum":1},"musicVolume":{"default":0.25,"type":"number","minimum":0,"maximum":1},"appearance":{"type":"object","properties":{"style":{"default":"editorial","type":"string","enum":["editorial","boxed"]},"align":{"default":"left","type":"string","enum":["left","center"]},"subtitlePosition":{"default":0.75,"type":"number","minimum":0.25,"maximum":0.85},"fontScale":{"default":0.075,"type":"number","minimum":0.04,"maximum":0.12},"showBrand":{"default":true,"type":"boolean"},"watermarkPosition":{"default":{"x":0.07,"y":0.066},"type":"object","properties":{"x":{"type":"number","minimum":0.02,"maximum":0.65},"y":{"type":"number","minimum":0.02,"maximum":0.8}},"required":["x","y"],"additionalProperties":false}},"required":["style","align","subtitlePosition","fontScale","showBrand","watermarkPosition"],"additionalProperties":false},"segments":{"minItems":1,"maxItems":48,"type":"array","items":{"oneOf":[{"type":"object","properties":{"start":{"type":"number","minimum":0,"maximum":60},"end":{"type":"number","minimum":0,"maximum":60},"fx":{"default":"none","type":"string","enum":["none","whip","punch","grid3x3","flash","iris","glitch_pop","slow_zoom"]},"flashIn":{"default":false,"type":"boolean"},"type":{"type":"string","const":"clip"},"clip":{"type":"integer","minimum":0,"maximum":3},"in":{"type":"number","minimum":0,"maximum":60},"speed":{"default":1,"type":"number","minimum":0.5,"maximum":1},"caption":{"type":"string","minLength":1,"maxLength":120}},"required":["start","end","fx","flashIn","type","clip","in","speed"],"additionalProperties":false},{"type":"object","properties":{"start":{"type":"number","minimum":0,"maximum":60},"end":{"type":"number","minimum":0,"maximum":60},"fx":{"default":"none","type":"string","enum":["none","whip","punch","grid3x3","flash","iris","glitch_pop","slow_zoom"]},"flashIn":{"default":false,"type":"boolean"},"type":{"type":"string","const":"card"},"text":{"type":"string","minLength":1,"maxLength":120},"color":{"default":"white","type":"string","enum":["white","accent"]}},"required":["start","end","fx","flashIn","type","text","color"],"additionalProperties":false},{"type":"object","properties":{"start":{"type":"number","minimum":0,"maximum":60},"end":{"type":"number","minimum":0,"maximum":60},"fx":{"default":"none","type":"string","enum":["none","whip","punch","grid3x3","flash","iris","glitch_pop","slow_zoom"]},"flashIn":{"default":false,"type":"boolean"},"type":{"type":"string","const":"chat"},"assistant":{"type":"string","minLength":1,"maxLength":120},"steps":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}}},"required":["start","end","fx","flashIn","type","assistant","steps"],"additionalProperties":false},{"type":"object","properties":{"start":{"type":"number","minimum":0,"maximum":60},"end":{"type":"number","minimum":0,"maximum":60},"fx":{"default":"none","type":"string","enum":["none","whip","punch","grid3x3","flash","iris","glitch_pop","slow_zoom"]},"flashIn":{"default":false,"type":"boolean"},"type":{"type":"string","const":"endcard"},"brand":{"type":"string","pattern":"^project:[1-9]\\d*$"},"tagline":{"type":"string","minLength":1,"maxLength":120},"url":{"type":"string","maxLength":100},"credits":{"default":[],"maxItems":2,"type":"array","items":{"type":"object","properties":{"icon":{"type":"string","pattern":"^(studio|project:[1-9]\\d*)$"},"text":{"type":"string","minLength":1,"maxLength":120}},"required":["icon","text"],"additionalProperties":false}}},"required":["start","end","fx","flashIn","type","tagline","credits"],"additionalProperties":false}]}},"captions":{"default":[],"maxItems":240,"type":"array","items":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":120},"start":{"type":"number","minimum":0,"maximum":60},"end":{"type":"number","minimum":0,"maximum":60}},"required":["text","start","end"],"additionalProperties":false}},"words":{"default":[],"maxItems":24,"type":"array","items":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":120},"start":{"type":"number","minimum":0,"maximum":60},"end":{"type":"number","minimum":0,"maximum":60}},"required":["text","start","end"],"additionalProperties":false}},"sfx":{"default":"auto","type":"string","enum":["auto","none"]},"safeZones":{"default":["reels","tiktok"],"maxItems":4,"type":"array","items":{"type":"string","enum":["reels","tiktok","stories","instagram_feed"]}}},"required":["version","format","fps","duration","beatSync","audio","sourceVolume","musicVolume","segments","captions","words","sfx","safeZones"],"additionalProperties":false},"brief":{"type":"object","properties":{"duration":{"default":20,"type":"number","minimum":6,"maximum":60},"hook":{"type":"string","minLength":1,"maxLength":120},"messages":{"default":[],"maxItems":8,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"cta":{"type":"string","minLength":1,"maxLength":120},"url":{"type":"string","maxLength":100},"pace":{"default":"fast","type":"string","enum":["fast","balanced"]},"chat":{"type":"object","properties":{"assistant":{"type":"string","minLength":1,"maxLength":120},"steps":{"minItems":2,"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}}},"required":["assistant","steps"],"additionalProperties":false}},"required":["duration","hook","messages","cta","pace"],"additionalProperties":false}},"required":["jobId","music"],"additionalProperties":false},"regenerate":{"description":"Prefer studio_regenerate_clip: correct one clip, preserving other footage and recorded voices.","type":"object","properties":{"jobId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"index":{"type":"integer","minimum":0,"maximum":3},"prompt":{"type":"string","minLength":1,"maxLength":30000}},"required":["jobId","index"],"additionalProperties":false},"recompose":{"description":"Prefer studio_recompose to reuse an existing video without new clip generation.","type":"object","properties":{"jobId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["jobId"],"additionalProperties":false},"safeArea":{"description":"Vertical videos default to social: reserve the top 15%, bottom 25% and right 15% for social UI.","type":"string","enum":["social","none"]},"subtitlePosition":{"description":"Subtitle bottom edge / frame height; 0.65 puts subtitles at 65%. Social preset clamps to <=0.72.","type":"number","minimum":0.2,"maximum":0.9},"showWatermark":{"description":"Hide the persistent corner logo when false, while keeping the branded end card.","type":"boolean"},"watermarkPosition":{"type":"object","properties":{"x":{"type":"number","minimum":0.05,"maximum":0.9},"y":{"type":"number","minimum":0.05,"maximum":0.9}},"required":["x","y"],"additionalProperties":false},"qrPosition":{"type":"object","properties":{"x":{"type":"number","minimum":0.05,"maximum":0.9},"y":{"type":"number","minimum":0.05,"maximum":0.9}},"required":["x","y"],"additionalProperties":false},"continuityMode":{"description":"identity preserves the reference character but allows new locations without adding the previous frame; action also anchors to the prior last frame.","type":"string","enum":["action","identity"]},"voiceoverTiming":{"description":"Default spread: distribute full sentences, CTA in final scene. per_scene uses voiceLine. continuous keeps one uninterrupted narration.","type":"string","enum":["per_scene","spread","continuous"]},"subtitleStyle":{"type":"string","enum":["sentences","kinetic","editorial"]},"sfx":{"type":"string","enum":["none","auto"]},"endCard":{"description":"Final card within requested duration. showSourceClip requires a private uploaded sourceVideoUrl; shows original in a phone before the card.","type":"object","properties":{"tagline":{"type":"string","maxLength":90},"url":{"type":"string","maxLength":120},"showSourceClip":{"type":"boolean"},"sourceVideoUrl":{"type":"string","maxLength":1500}},"additionalProperties":false},"voiceover":{"type":"string","maxLength":600},"voiceoverVoiceId":{"type":"string","maxLength":150},"voiceCast":{"maxItems":5,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"name":{"type":"string","minLength":1,"maxLength":120},"voiceId":{"type":"string","minLength":1,"maxLength":150}},"required":["id","name","voiceId"],"additionalProperties":false}},"nativeVoiceCast":{"description":"With nativeAudio:true only: ElevenLabs voice for each on-camera speaker (speaker = name used in spokenLines). H3 keeps lips and timing; Studio Pro swaps the timbre. The project voice is applied to the project character automatically.","maxItems":4,"type":"array","items":{"type":"object","properties":{"speaker":{"type":"string","minLength":1,"maxLength":120},"voiceId":{"type":"string","minLength":1,"maxLength":40}},"required":["speaker","voiceId"],"additionalProperties":false}},"layout":{"type":"string","enum":["titular_checklist_cta","split_oscuro","centrado_minimal","escaparate"]},"badge":{"type":"string","maxLength":32},"insetImageUrl":{"type":"string","maxLength":1500},"insetLabel":{"type":"string","maxLength":40},"avatarImageUrl":{"type":"string","maxLength":1500},"bullets":{"maxItems":5,"type":"array","items":{"type":"string","minLength":1,"maxLength":120}},"platformTargets":{"maxItems":4,"type":"array","items":{"type":"string","enum":["reels","tiktok","stories","instagram_feed"]}},"headline":{"type":"string","maxLength":100},"subheadline":{"type":"string","maxLength":250},"cta":{"type":"string","maxLength":80},"variants":{"type":"integer","minimum":1,"maximum":4},"posterBackground":{"type":"string","enum":["ia","foto"]},"posterStyle":{"type":"string","enum":["minimal","bold","editorial","fotografico","ilustracion"]},"musicStyle":{"type":"string","enum":["corporate","epic_cinematic","urban_hiphop","electronic_edm","chill_lofi","acoustic_warm","latin_energetic","rock_power","none","library:epic-ascenso","library:epic-heroes","library:epic-emocion","library:corp-avance","library:corp-confianza","library:corp-innovacion","library:edm-energia","library:edm-noche","library:edm-pulso","library:urb-calle","library:urb-boombap","library:urb-trap","library:lofi-cafe","library:lofi-lluvia","library:lofi-estudio","library:acu-hogar","library:acu-viaje","library:acu-sencillo","library:lat-fiesta","library:lat-salsa","library:lat-flamenco","library:rock-estadio","library:rock-indie","library:rock-garaje"]},"scheduledAt":{"type":["string","null"]},"edit":{"type":"object","properties":{"operation":{"type":"string","enum":["brand_image","image_edit","brand_existing_video","enhance_video"]},"sourceUrl":{"type":"string","minLength":1,"maxLength":8192},"action":{"type":"string","enum":["enhance","add_logo","add_watermark","add_text","crop","format_for_platform"]},"scale":{"anyOf":[{"type":"number","const":1},{"type":"number","const":2}]},"sharpen":{"type":"number","minimum":0,"maximum":1},"denoise":{"type":"number","minimum":0,"maximum":1},"logoPosition":{"type":"string","enum":["top-left","top-right","bottom-left","bottom-right"]},"voiceSpeed":{"type":"number","minimum":0.8,"maximum":1.5},"topic":{"type":"string","maxLength":100}},"required":["operation","sourceUrl"],"additionalProperties":false},"image":{"type":"object","properties":{"operation":{"type":"string","enum":["generate_image","enhance_image","correct_text"]},"style":{"type":"string","maxLength":100},"scale":{"anyOf":[{"type":"number","const":2},{"type":"number","const":4}]},"faceEnhance":{"type":"boolean"},"autoFit":{"type":"boolean"},"sourceUrl":{"type":"string","minLength":1,"maxLength":8192},"references":{"maxItems":3,"type":"array","items":{"type":"object","properties":{"url":{"type":"string","minLength":1,"maxLength":8192},"type":{"type":"string","enum":["image","video"]}},"required":["url","type"],"additionalProperties":false}},"corrections":{"minItems":1,"maxItems":5,"type":"array","items":{"type":"object","properties":{"from":{"type":"string","minLength":1,"maxLength":300},"to":{"type":"string","minLength":1,"maxLength":300},"location":{"type":"string","maxLength":150}},"required":["from","to"],"additionalProperties":false}}},"required":["operation"],"additionalProperties":false}},"additionalProperties":false},"notes":["DIRECCIÓN DE PRODUCCIÓN:\nConvierte una idea sencilla en una secuencia concreta y realizable; la calidad no consiste en acumular adjetivos ni movimientos de cámara. Respeta siempre el género, el ritmo y los ajustes pedidos por el usuario.\nEn publicidad, distribuye apertura visual, demostración o acción, detalle y cierre. Alterna escalas y puntos de vista con intención: no repitas cuatro veces una persona sosteniendo el mismo objeto. En ficción, conserva los acontecimientos y el desenlace; no añadas venta ni llamadas comerciales.\nDefine una iluminación, paleta y entorno coherentes para las tomas del mismo lugar. Las referencias definen la identidad, no obligan a copiar sus fondos. No vuelvas a la habitación de la foto al terminar un plano. Describe qué sujetos aparecen y cuáles quedan fuera de cada toma. No inventes características del producto, cifras ni promesas.\nCada clip tiene una acción principal que termina dentro de su duración. Si hay voz en pantalla, un solo hablante, cara despejada en plano medio corto, boca visible y movimiento moderado mientras habla; sin cortes a producto, perfiles extremos, órbitas ni objetos delante de la boca durante esa frase. Reserva el montaje más rápido para los planos de recurso y de producto. Voz fuera de campo: personajes sin gesticular como si hablaran; lipSync:false.\nLos rótulos se entregan en onScreenText y sus tiempos, nunca solo dentro del prompt. Usa pocos mensajes legibles, con contraste y espacio negativo dentro de la zona segura. En el cierre reserva un plano limpio para la marca y la llamada a la acción; no pongas el producto ni una cara en el espacio del rótulo. No inventes una marca si el usuario no la ha dado.\nUn anuncio completo puede incluir copia original breve y música como propuesta editable, salvo que se pidan silencio, frases literales o ajustes diferentes. No actives voces de terceros ni sincronización labial de pago sin que consten en los ajustes. No prometas identidad, ortografía o sincronización perfectas del modelo.","Poster layouts: titular_checklist_cta, split_oscuro, centrado_minimal, escaparate. escaparate SHOWS something concrete (a document, an app screenshot, a product): posterBackground foto with scenes[0].imageUrl as the large hero image, plus optional badge (header tag), insetImageUrl + insetLabel (small photo with an arrow to the hero, e.g. the electrical panel photo that becomes the diagram) and avatarImageUrl (project character in a circle). Mark headline words to highlight in the brand colour with *asterisks* and subheadline bold with **double asterisks**. Up to four bullets of 70 characters. Pass up to five separate benefits in bullets (120 characters each). subheadline preserves newlines. platformTargets can include reels, tiktok, stories and instagram_feed. studio_check_safe_zones previews text bounds, not faces or image defects.","first_frame crops the uploaded original to aspectRatio before animation; focalPoint:{x,y} controls crop position (0–1, center by default). The original is preserved.","This is the input inside studio_quote({input: ...}). It is NOT the schema of internal tools such as plan_storyboard or generate_clip.","For Google Omni use videoEngine:omni and omniResolution:720p (or 360p/1080p); omit resolution for Omni; legacy 480P/768P is accepted but does not set Omni quality. Clips must be 5–10 seconds, total <=40 seconds. Never silently switch engines or shorten the script.","New videos and posters require kind, resolution, aspectRatio, scenes[].prompt and scenes[].duration. Edits and image operations can infer kind/resolution/scenes; image generation still requires one scene prompt. Cross-field rules are checked by the creation validator.","Use camelCase: nativeAudio, musicStyle, storyContext, kitId, aspectRatio. audio_mode, music_style, characters and spokenLines at the top level are invalid and are rejected.","references accepts exactly one imageUrl, url, assetId or referenceId per item. URL references require label (or name). Saved IDs can reuse their stored label. The image is resolved from the authenticated account.","For a character use references:[{referenceId:ID,label:\"Name and role\"}]. Branding applies logos and the project closing; it is not a face reference. Ask studio_list_references for existing character photos.","When the speaker is the own character of the project (its mascot or avatar, e.g. BertIA or Amun) and the project has an ElevenLabs voice, prefer nativeAudio:true with scenes[].spokenLines whose speaker is that character name: H3 generates lips, gesture and speech together and Studio Pro then swaps only the timbre to the project voice, keeping the sync. It is cheaper and looks far better than a lip-sync pass on stylised, 3D or robot faces.","Several on-camera characters with their own ElevenLabs voices (e.g. Amun and Astra): keep nativeAudio:true and spokenLines, and add nativeVoiceCast:[{speaker,voiceId}] for each one. Do not use voiceCast or lipSync for them.","For exact recorded words with a voice that is NOT the project voice, use lipSync:true, nativeAudio:false, voiceCast and dialogue (one speaking character per synced clip). Use scenes[].lipSync:false for product inserts with off-screen dialogue; only synced seconds are charged. Native speech may mispronounce or add words. Lip-sync quality still depends on a visible suitable face; close-ups improve it.","Use studio_reel_plan({jobId,music,brief}) for a music-only edit of completed footage: measured beats, cuts, animated text and brand end card. Review the returned timeline. Use studio_edit_timeline to change it without regenerating footage. Original dialogue is omitted; do not use when the user needs spoken lines preserved.","Use studio_regenerate_clip({jobId,index,prompt?}) to correct one completed clip. index starts at 0. Reuses other footage, recorded dialogue and music; quotes replacement footage, selected lip sync if enabled and composition. Native speech is regenerated with the selected clip. No generation until confirmation. Duration, dialogue and references are unchanged.","To fix a finished video (move/edit/remove subtitles or texts, move or remove the logo, cut a segment, change volume or music) prefer the editor: studio_editor_open (layers) → studio_editor_edit → studio_editor_quote → studio_generate. Only the export is charged. Always offer the user the alternative of editing it themselves at editorUrl.","Background music: prefer the FREE Studio Pro library, musicStyle:\"library:<soundId>\" (0 credits; list it with studio_sound_library). A bare style key (e.g. electronic_edm) commissions custom AI music (about 15 credits): use it only when the user explicitly asks for custom-composed music.","Real places: H3 cannot reproduce real landmarks from text and invents them. When the user names real monuments or places, call studio_place_photos and use each returned url as scenes[].imageUrl with referenceMode:\"first_frame\" (one photo per clip). Photos are freely licensed and keep their author credit.","Scenes mode: for videos longer than 60 s or when the user wants to review clip by clip, use studio_scenes (create → quote per scene → studio_generate → status → choose) and finish in the editor (studio_editor_voiceover, studio_editor_edit, studio_editor_quote). Each take is one clip: only that clip is charged; repeating a bad take costs one clip, not the whole video.","Use studio_recompose with a completed jobId to change layout, branding or music without regenerating clips/voices. Use studio_get_materials for signed clean video, original clips and separate audio downloads.","Use continuityMode:identity when locations change; action also conditions on the previous last frame and may preserve the background.","For on-camera speech use nativeAudio:true, subtitles:true and scenes[].spokenLines:[{speaker,text,voiceDescription?}]. Do not combine nativeAudio with voiceover or voiceCast. Dubbing uses voiceCast plus scenes[].dialogue.","For 20 seconds prefer four distinct scenes of 5 seconds unless the user requests otherwise. Alternate opening, action, detail and a clean closing. Each scene must last 5–15 seconds, with at most 4 scenes/60 seconds. continuity:true with continuityMode:identity preserves identity without forcing the previous location. Use action only for continuous action.","A video without a project uses kitId:null and branding:false. Do not silently inherit a saved character, logo or voice.","Saved video URLs can supply context for image.references with type:\"video\"; video character references only accept still images. studio_read_website discovers public page text and media URLs without interpreting every video frame.","Reading this contract, listing saved references, reading a website and calculating quotes do not use assistant quota or generation credits. studio_chat consumes a separate agent assistant allowance."],"examples":{"video":{"kind":"video","kitId":null,"branding":false,"resolution":"768P","aspectRatio":"9:16","nativeAudio":false,"subtitles":true,"continuity":true,"continuityMode":"identity","safeArea":"social","subtitlePosition":0.68,"musicStyle":"library:edm-energia","voiceover":"Cada detalle cuenta. Un diseño para acompañarte. Descubre tu próximo reloj.","scenes":[{"prompt":"Macro del reloj en un estudio gris claro con luz lateral cian. Se revela su esfera mediante un travelling corto. Solo el producto, sin personas ni letras.","duration":5,"onScreenText":"Cada detalle cuenta"},{"prompt":"En el mismo estudio, una persona se abrocha el reloj. Plano de manos y muñeca; la acción termina dentro del clip. Nadie habla en cámara.","duration":5},{"prompt":"Detalle lateral del mismo reloj ya puesto. Cambio de foco entre la correa y la esfera. Misma iluminación; sin introducir otras personas.","duration":5},{"prompt":"Plano limpio del reloj en el mismo estudio. Pequeño desplazamiento de cámara que termina estable; espacio negativo central para el rótulo añadido después. Sin caras ni texto generado.","duration":5,"onScreenText":"Descubre tu próximo reloj","onScreenTextStart":2,"onScreenTextEnd":5}]},"poster":{"kind":"poster","kitId":null,"branding":false,"resolution":"768P","aspectRatio":"4:5","scenes":[{"prompt":"Un reloj de diseño sobre un fondo azul limpio.","duration":5}],"headline":"Tu tiempo, a tu manera","variants":1}}}