{"workflows":{"schema":"auroflow/agent-workflows/v1","planning":{"stateless":true,"network_reads":false,"inference":false,"generation":false,"cost_max":0,"reserves_ids":false,"same_request_same_plan":true},"request_schema":{"type":"object","additionalProperties":false,"required":["id","production_type","aspect","target_duration_seconds","cost_max"],"properties":{"id":{"type":"string","pattern":"^workflow-[a-z0-9][a-z0-9_-]{0,63}$"},"production_type":{"type":"string","enum":["film","spot","documentary","series_episode","ingredients"]},"aspect":{"type":"string","enum":["16:9","9:16"]},"target_duration_seconds":{"type":"integer","minimum":1,"maximum":1200},"cost_max":{"type":"integer","enum":[0]},"finishing":{"type":"boolean","default":true,"description":"Server framing/audio finishing; at most 50 clips and 600 seconds. False selects basic server concatenation, at most 100 clips."},"ad_preset":{"type":"string","minLength":1,"maxLength":100},"continuity":{"type":"object","additionalProperties":false,"dependentRequired":{"character_id":["voice_id"],"voice_id":["character_id"]},"properties":{"character_id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$"},"voice_id":{"type":"string","pattern":"^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$"},"environment_upload_id":{"type":"string","pattern":"^img_[a-f0-9]{32}$"},"product_upload_id":{"type":"string","pattern":"^img_[a-f0-9]{32}$"}}}}},"production_types":["film","spot","documentary","series_episode","ingredients"],"aspects":["16:9","9:16"],"graphics_layers":{"optional":true,"skill_url":"https://auroflow.club/skills/auroflow-graphics-layers/SKILL.md","finishing_plan_tool":"auroflow_plan_finishing","capabilities_tool":"auroflow_capabilities","independent_audio_source":"owned completed narration tts- ID, variant 1; explicit separate composition, replaces base audio","suggest_tool":"auroflow_suggest_graphics","editable_tracks":true,"duration_seconds_max":60,"source_regeneration":false,"automatic_subtitles":false,"runtime_readiness_verified":false},"workflows":[{"production_type":"film","skill_url":"https://auroflow.club/skills/auroflow-film-production/SKILL.md","director_type":"film","default_route":"director","image_reference_rule":"extra product/environment uploads select referenced_shots","operation_order":[{"step":"discover","tools":["auroflow_account","auroflow_status","auroflow_capabilities","auroflow_credits","auroflow_queue"],"require":"own assignment, declared-ready providers, queue admission and two independent zero-cost gates"},{"step":"fix_brief","require":"source_url OR summary; original aspect; target duration; literal dialogue; verified claims and CTA"},{"step":"resolve_continuity","tools":["auroflow_capabilities","auroflow_list"],"require":"observed owned IDs, exact Character-bound voice and approved visual references; never invent approval"},{"step":"draft_batches","tools":["auroflow_plan_film","auroflow_get"],"require":"one stable film ID per batch, at most 12 shots, auto_render=false, wait for observed draft_ready; submit batches sequentially and respect server queue limits"},{"step":"script_review","tools":["auroflow_save_film_script","auroflow_get"],"require":"observed revision, fixed native character/voice across batches, source facts and all dialogue within retained time"},{"step":"render_once","tools":["auroflow_render_film_zero","auroflow_get","auroflow_resume_film"],"require":"existing user generation authorization, observed revision, live zero gates; read/recover same film after uncertainty; reuse the first observed owned Character/voice across later batches, never auto-create a different cast for each batch"},{"step":"collect","tools":["auroflow_get"],"require":"owned completed variants, actual dimensions/duration, media hashes and preserved original receipts"},{"step":"assembly","tools":["auroflow_compile_sequence","auroflow_create_sequence","auroflow_get"],"require":"supported clip/duration limits, same project/account/aspect, explicit frame-aligned trims, actual speech ends before cuts, local server assembly; read same sequence after uncertainty"},{"step":"review_complete_delivery","tools":["auroflow_compile_sequence","auroflow_create_sequence","auroflow_get","auroflow_review_film_audio"],"strategy":"conditional_on_duration","max_model_review_duration_seconds":120,"require":"view and listen to the full final media. Submit a whole-sequence audio model review only when its actual duration is at most 120 seconds. For longer deliveries first create owned review sequences at most 120 seconds from the same jobs/trims, review their coverage and inter-segment joins, and keep each review tied to its own observed sequence ID/hash. No audio-window tool exists; partial reviews do not verify the master unless corresponding PCM equality is proven. Compare framing/background/props and voice; verify accent only with suitable real audio evidence; inconclusive stays inconclusive"},{"step":"handoff","require":"observed IDs/revisions, source and delivery SHA-256, exact duration/aspect, both zero receipts, review limits and next action; human_approval remains false unless actually given"}]},{"production_type":"spot","skill_url":"https://auroflow.club/skills/auroflow-film-production/references/product-video.md","director_type":"spot","default_route":"director","image_reference_rule":"extra product/environment uploads select referenced_shots","operation_order":[{"step":"discover","tools":["auroflow_account","auroflow_status","auroflow_capabilities","auroflow_credits","auroflow_queue"],"require":"own assignment, declared-ready providers, queue admission and two independent zero-cost gates"},{"step":"fix_brief","require":"source_url OR summary; original aspect; target duration; literal dialogue; verified claims and CTA"},{"step":"resolve_continuity","tools":["auroflow_capabilities","auroflow_list"],"require":"observed owned IDs, exact Character-bound voice and approved visual references; never invent approval"},{"step":"draft_batches","tools":["auroflow_plan_film","auroflow_get"],"require":"one stable film ID per batch, at most 12 shots, auto_render=false, wait for observed draft_ready; submit batches sequentially and respect server queue limits"},{"step":"script_review","tools":["auroflow_save_film_script","auroflow_get"],"require":"observed revision, fixed native character/voice across batches, source facts and all dialogue within retained time"},{"step":"render_once","tools":["auroflow_render_film_zero","auroflow_get","auroflow_resume_film"],"require":"existing user generation authorization, observed revision, live zero gates; read/recover same film after uncertainty; reuse the first observed owned Character/voice across later batches, never auto-create a different cast for each batch"},{"step":"collect","tools":["auroflow_get"],"require":"owned completed variants, actual dimensions/duration, media hashes and preserved original receipts"},{"step":"assembly","tools":["auroflow_compile_sequence","auroflow_create_sequence","auroflow_get"],"require":"supported clip/duration limits, same project/account/aspect, explicit frame-aligned trims, actual speech ends before cuts, local server assembly; read same sequence after uncertainty"},{"step":"review_complete_delivery","tools":["auroflow_compile_sequence","auroflow_create_sequence","auroflow_get","auroflow_review_film_audio"],"strategy":"conditional_on_duration","max_model_review_duration_seconds":120,"require":"view and listen to the full final media. Submit a whole-sequence audio model review only when its actual duration is at most 120 seconds. For longer deliveries first create owned review sequences at most 120 seconds from the same jobs/trims, review their coverage and inter-segment joins, and keep each review tied to its own observed sequence ID/hash. No audio-window tool exists; partial reviews do not verify the master unless corresponding PCM equality is proven. Compare framing/background/props and voice; verify accent only with suitable real audio evidence; inconclusive stays inconclusive"},{"step":"handoff","require":"observed IDs/revisions, source and delivery SHA-256, exact duration/aspect, both zero receipts, review limits and next action; human_approval remains false unless actually given"}]},{"production_type":"documentary","skill_url":"https://auroflow.club/skills/auroflow-film-production/references/documentary.md","director_type":"film","default_route":"director","image_reference_rule":"extra product/environment uploads select referenced_shots","operation_order":[{"step":"discover","tools":["auroflow_account","auroflow_status","auroflow_capabilities","auroflow_credits","auroflow_queue"],"require":"own assignment, declared-ready providers, queue admission and two independent zero-cost gates"},{"step":"fix_brief","require":"source_url OR summary; original aspect; target duration; literal dialogue; verified claims and CTA"},{"step":"resolve_continuity","tools":["auroflow_capabilities","auroflow_list"],"require":"observed owned IDs, exact Character-bound voice and approved visual references; never invent approval"},{"step":"factual_review","require":"verify factual statements against sources, preserve citations and label synthetic recreations; no automatic render before review"},{"step":"draft_batches","tools":["auroflow_plan_film","auroflow_get"],"require":"one stable film ID per batch, at most 12 shots, auto_render=false, wait for observed draft_ready; submit batches sequentially and respect server queue limits"},{"step":"script_review","tools":["auroflow_save_film_script","auroflow_get"],"require":"observed revision, fixed native character/voice across batches, source facts and all dialogue within retained time"},{"step":"render_once","tools":["auroflow_render_film_zero","auroflow_get","auroflow_resume_film"],"require":"existing user generation authorization, observed revision, live zero gates; read/recover same film after uncertainty; reuse the first observed owned Character/voice across later batches, never auto-create a different cast for each batch"},{"step":"collect","tools":["auroflow_get"],"require":"owned completed variants, actual dimensions/duration, media hashes and preserved original receipts"},{"step":"assembly","tools":["auroflow_compile_sequence","auroflow_create_sequence","auroflow_get"],"require":"supported clip/duration limits, same project/account/aspect, explicit frame-aligned trims, actual speech ends before cuts, local server assembly; read same sequence after uncertainty"},{"step":"review_complete_delivery","tools":["auroflow_compile_sequence","auroflow_create_sequence","auroflow_get","auroflow_review_film_audio"],"strategy":"conditional_on_duration","max_model_review_duration_seconds":120,"require":"view and listen to the full final media. Submit a whole-sequence audio model review only when its actual duration is at most 120 seconds. For longer deliveries first create owned review sequences at most 120 seconds from the same jobs/trims, review their coverage and inter-segment joins, and keep each review tied to its own observed sequence ID/hash. No audio-window tool exists; partial reviews do not verify the master unless corresponding PCM equality is proven. Compare framing/background/props and voice; verify accent only with suitable real audio evidence; inconclusive stays inconclusive"},{"step":"handoff","require":"observed IDs/revisions, source and delivery SHA-256, exact duration/aspect, both zero receipts, review limits and next action; human_approval remains false unless actually given"}]},{"production_type":"series_episode","skill_url":"https://auroflow.club/skills/auroflow-film-production/references/video-series.md","director_type":"film","default_route":"director","image_reference_rule":"extra product/environment uploads select referenced_shots","operation_order":[{"step":"discover","tools":["auroflow_account","auroflow_status","auroflow_capabilities","auroflow_credits","auroflow_queue"],"require":"own assignment, declared-ready providers, queue admission and two independent zero-cost gates"},{"step":"fix_brief","require":"source_url OR summary; original aspect; target duration; literal dialogue; verified claims and CTA"},{"step":"resolve_continuity","tools":["auroflow_capabilities","auroflow_list"],"require":"observed owned IDs, exact Character-bound voice and approved visual references; never invent approval"},{"step":"episode_bible","require":"fixed series bible, episode ID, cast/voice, wardrobe, geography, props and continuity notes"},{"step":"draft_batches","tools":["auroflow_plan_film","auroflow_get"],"require":"one stable film ID per batch, at most 12 shots, auto_render=false, wait for observed draft_ready; submit batches sequentially and respect server queue limits"},{"step":"script_review","tools":["auroflow_save_film_script","auroflow_get"],"require":"observed revision, fixed native character/voice across batches, source facts and all dialogue within retained time"},{"step":"render_once","tools":["auroflow_render_film_zero","auroflow_get","auroflow_resume_film"],"require":"existing user generation authorization, observed revision, live zero gates; read/recover same film after uncertainty; reuse the first observed owned Character/voice across later batches, never auto-create a different cast for each batch"},{"step":"collect","tools":["auroflow_get"],"require":"owned completed variants, actual dimensions/duration, media hashes and preserved original receipts"},{"step":"assembly","tools":["auroflow_compile_sequence","auroflow_create_sequence","auroflow_get"],"require":"supported clip/duration limits, same project/account/aspect, explicit frame-aligned trims, actual speech ends before cuts, local server assembly; read same sequence after uncertainty"},{"step":"review_complete_delivery","tools":["auroflow_compile_sequence","auroflow_create_sequence","auroflow_get","auroflow_review_film_audio"],"strategy":"conditional_on_duration","max_model_review_duration_seconds":120,"require":"view and listen to the full final media. Submit a whole-sequence audio model review only when its actual duration is at most 120 seconds. For longer deliveries first create owned review sequences at most 120 seconds from the same jobs/trims, review their coverage and inter-segment joins, and keep each review tied to its own observed sequence ID/hash. No audio-window tool exists; partial reviews do not verify the master unless corresponding PCM equality is proven. Compare framing/background/props and voice; verify accent only with suitable real audio evidence; inconclusive stays inconclusive"},{"step":"handoff","require":"observed IDs/revisions, source and delivery SHA-256, exact duration/aspect, both zero receipts, review limits and next action; human_approval remains false unless actually given"}]},{"production_type":"ingredients","skill_url":"https://auroflow.club/skills/auroflow-ingredients-video/SKILL.md","director_type":"film","default_route":"referenced_shots","image_reference_rule":"extra product/environment uploads select referenced_shots","operation_order":[{"step":"discover","tools":["auroflow_account","auroflow_status","auroflow_capabilities","auroflow_credits","auroflow_queue"],"require":"own assignment, declared-ready providers, queue admission and two independent zero-cost gates"},{"step":"fix_brief","require":"source_url OR summary; original aspect; target duration; literal dialogue; verified claims and CTA"},{"step":"resolve_continuity","tools":["auroflow_capabilities","auroflow_list"],"require":"observed owned IDs, exact Character-bound voice and approved visual references; never invent approval"},{"step":"prepare_references","tools":["auroflow_upload_reference","auroflow_capabilities"],"require":"at most three visual slots including Character; Character and its bound voice use Ingredients; Frames stays separate"},{"step":"compile_quote_preflight","tools":["auroflow_compile","auroflow_quote","auroflow_preflight"],"require":"same stable shot intent, project, account, references, aspect, model, 8 seconds, 720p, one output, Agent disabled and both costs exactly zero"},{"step":"generate_once","tools":["auroflow_generate_zero","auroflow_get","auroflow_recover"],"require":"existing user authorization; write once then wait/read/recover same api- ID; no automatic new ID or Generate retry"},{"step":"collect","tools":["auroflow_get"],"require":"owned completed variants, actual dimensions/duration, media hashes and preserved original receipts"},{"step":"assembly","tools":["auroflow_compile_sequence","auroflow_create_sequence","auroflow_get"],"require":"supported clip/duration limits, same project/account/aspect, explicit frame-aligned trims, actual speech ends before cuts, local server assembly; read same sequence after uncertainty"},{"step":"review_complete_delivery","tools":["auroflow_compile_sequence","auroflow_create_sequence","auroflow_get","auroflow_review_film_audio"],"strategy":"conditional_on_duration","max_model_review_duration_seconds":120,"require":"view and listen to the full final media. Submit a whole-sequence audio model review only when its actual duration is at most 120 seconds. For longer deliveries first create owned review sequences at most 120 seconds from the same jobs/trims, review their coverage and inter-segment joins, and keep each review tied to its own observed sequence ID/hash. No audio-window tool exists; partial reviews do not verify the master unless corresponding PCM equality is proven. Compare framing/background/props and voice; verify accent only with suitable real audio evidence; inconclusive stays inconclusive"},{"step":"handoff","require":"observed IDs/revisions, source and delivery SHA-256, exact duration/aspect, both zero receipts, review limits and next action; human_approval remains false unless actually given"}]}],"duration":{"minimum_seconds":1,"maximum_planned_seconds":1200,"kind":"editorial_delivery","source_seconds":8,"fps":24,"audio_time_stretch":false,"director_max_shots_per_project":12,"sequence_max_source_clips":100,"finished_sequence_max_source_clips":50,"finished_sequence_max_seconds":600,"single_basic_sequence_max_seconds_with_eight_second_sources":800,"single_finished_sequence_max_seconds_with_eight_second_sources":400,"longer_plans_require_supported_assembly":true},"routes":[{"id":"director","input":["source_url","summary"],"tools":["auroflow_plan_film","auroflow_get","auroflow_save_film_script","auroflow_render_film_zero","auroflow_resume_film"],"max_shots_per_project":12,"native_assets":"one_owned_character_with_its_bound_voice","extra_image_ingredients":false,"documentary_type_mapping":"film_after_factual_script_review","arbitrary_delivery_duration":"separate_explicit_sequence_trims"},{"id":"referenced_shots","input":["literal_script","owned_image_uploads","owned_native_character"],"tools":["auroflow_upload_reference","auroflow_compile","auroflow_quote","auroflow_preflight","auroflow_generate_zero","auroflow_get","auroflow_recover"],"visual_reference_limit":3,"native_character_uses_visual_slot":true,"voice_requires_character_binding":true,"frames_and_ingredients_may_mix":false},{"id":"server_assembly","tools":["auroflow_compile_sequence","auroflow_create_sequence","auroflow_get"],"assembly":"local","max_clips":100,"finished_max_clips":50,"finished_max_seconds":600,"sources":"owned_completed_job_variants_same_project_account_aspect","nested_sequence_sources":false,"finishing":["pixel_framing","audio_normalize","speech_protected_seams"]}],"ads":{"presets":[{"id":"youtube-bumper","platform":"youtube","placement":"bumper","label":"YouTube · Bumper","durations_seconds":[6],"aspects":["16:9"],"default_duration_seconds":6,"default_aspect":"16:9","source_urls":["https://support.google.com/google-ads/answer/2375464"],"editorial_note":"Bumper: máximo oficial de 6 segundos. Comprueba la campaña y el formato al publicar.","official_duration":{"status":"verified_primary","minimum_seconds":5,"maximum_seconds":6,"maximum_kind":"numeric","recommendations":[],"summary":"Duración oficial: de 5 a 6 segundos.","conditions":"Anuncio bumper no saltable. La elegibilidad depende de la campaña; no confundir con in-stream no saltable.","source_urls":["https://support.google.com/google-ads/answer/2375464"],"checked_on":"2026-10-19"},"platform_maximum_seconds":6,"duration_kind":"verified_bumper_limit","campaign_eligibility_verified":false,"placement_verification":"check_campaign_subtype"},{"id":"youtube-in-stream","platform":"youtube","placement":"in-stream","label":"YouTube · In-stream","durations_seconds":[15,30,60],"aspects":["16:9","9:16"],"default_duration_seconds":15,"default_aspect":"16:9","source_urls":["https://support.google.com/google-ads/answer/2375464"],"editorial_note":"Duraciones editoriales para anuncios saltables. No son máximos universales ni habilitan cualquier campaña no saltable.","official_duration":{"status":"verified_primary","minimum_seconds":null,"maximum_seconds":null,"maximum_kind":"no_published_maximum_for_skippable","recommendations":[{"type":"recommended_exclusive_upper_bound","maximum_seconds":180}],"summary":"In-stream saltable: sin duración máxima publicada en la tabla de Google; recomienda menos de 3 minutos.","conditions":"El usuario puede saltar tras 5 segundos. Los 15–60 segundos de in-stream no saltable pertenecen a otro formato y dependen del subtipo de campaña.","source_urls":["https://support.google.com/google-ads/answer/2375464"],"checked_on":"2026-10-19"},"platform_maximum_seconds":null,"duration_kind":"editorial_choices","campaign_eligibility_verified":false,"placement_verification":"check_campaign_subtype"},{"id":"youtube-shorts","platform":"youtube","placement":"shorts","label":"YouTube · Shorts","durations_seconds":[15,30,60],"aspects":["9:16"],"default_duration_seconds":15,"default_aspect":"9:16","source_urls":["https://support.google.com/google-ads/answer/16041697","https://support.google.com/google-ads/answer/2375464"],"editorial_note":"Vertical. Selecciones editoriales; Google recomienda menos de 60 segundos para Shorts y el límite depende de la campaña.","official_duration":{"status":"verified_primary_with_campaign_conditions","minimum_seconds":null,"maximum_seconds":180,"maximum_kind":"uploaded_asset","feed_playback_maximum_seconds":60,"recommendations":[{"type":"recommended_exclusive_upper_bound","maximum_seconds":60},{"type":"recommended_range","campaign_context":"action_oriented_ads","minimum_seconds":10,"maximum_seconds":30},{"type":"documented_campaign_range","campaign_context":"video_reach","minimum_seconds":6,"maximum_seconds":60},{"type":"documented_campaign_range","campaign_context":"other_campaign_types_including_video_action_app_performance_max","minimum_seconds":10,"maximum_seconds":60}],"summary":"Archivo de hasta 3 minutos; esta guía indica 60 segundos de reproducción en el feed y recomienda menos de 60. Comprueba el tipo de campaña.","conditions":"Consulta el tipo de campaña: la guía da rangos de 6–60 o 10–60 segundos, y recomienda 10–30 para objetivos de acción. En VVC/VRC multiformato no se puede fijar un recurso individual sólo a Shorts; Creative Preferences individual está en Demand Gen.","source_urls":["https://support.google.com/google-ads/answer/16041697","https://support.google.com/google-ads/answer/2375464"],"checked_on":"2026-10-19"},"platform_maximum_seconds":null,"duration_kind":"editorial_choices","campaign_eligibility_verified":false,"placement_verification":"check_campaign_subtype"},{"id":"facebook-feed","platform":"facebook","placement":"feed","label":"Facebook · Feed","durations_seconds":[15,30,60],"aspects":["16:9"],"default_duration_seconds":15,"default_aspect":"16:9","source_urls":["https://www.facebook.com/business/ads-guide"],"editorial_note":"Selecciones editoriales; no representan límites de Meta. Revisa el destino y su previsualización en Ads Manager.","official_duration":{"status":"unknown_not_verified","minimum_seconds":null,"maximum_seconds":null,"maximum_kind":"unknown","recommendations":[],"summary":"Consulta la guía de Meta: límite oficial de duración no confirmado en esta comprobación.","conditions":"La página oficial redirige a acceso y bloqueo temporal. Los cortes de Auro no son límites de Meta.","source_urls":["https://www.facebook.com/business/ads-guide/update/video/facebook-feed"],"checked_on":"2026-10-19"},"platform_maximum_seconds":null,"duration_kind":"editorial_choices","campaign_eligibility_verified":false,"placement_verification":"check_current_ads_manager"},{"id":"facebook-reels","platform":"facebook","placement":"reels","label":"Facebook · Reels","durations_seconds":[15,30,60],"aspects":["9:16"],"default_duration_seconds":15,"default_aspect":"9:16","source_urls":["https://www.facebook.com/business/ads/facebook-instagram-reels-ads","https://www.facebook.com/business/ads-guide"],"editorial_note":"Vertical. Selecciones editoriales; comprueba requisitos y zonas seguras del anuncio al publicarlo.","official_duration":{"status":"unknown_not_verified","minimum_seconds":null,"maximum_seconds":null,"maximum_kind":"unknown","recommendations":[],"summary":"Consulta la guía de Meta: límite oficial de duración no confirmado en esta comprobación.","conditions":"Reels orgánicos, anuncios intercalados y Ads on Reels no son equivalentes. No trasladar límites de otra modalidad.","source_urls":["https://www.facebook.com/business/ads-guide/update/video/facebook-reels","https://www.facebook.com/business/ads/facebook-instagram-reels-ads"],"checked_on":"2026-10-19"},"platform_maximum_seconds":null,"duration_kind":"editorial_choices","campaign_eligibility_verified":false,"placement_verification":"check_current_ads_manager"},{"id":"instagram-reels","platform":"instagram","placement":"reels","label":"Instagram · Reels","durations_seconds":[15,30,60],"aspects":["9:16"],"default_duration_seconds":15,"default_aspect":"9:16","source_urls":["https://www.facebook.com/business/ads/facebook-instagram-reels-ads","https://www.facebook.com/business/ads-guide"],"editorial_note":"Vertical. Selecciones editoriales; comprueba requisitos y zonas seguras del anuncio al publicarlo.","official_duration":{"status":"unknown_not_verified","minimum_seconds":null,"maximum_seconds":null,"maximum_kind":"unknown","recommendations":[],"summary":"Consulta la guía de Meta: límite oficial de duración no confirmado en esta comprobación.","conditions":"La página de especificaciones no se pudo leer. No usar límites de reels orgánicos o de un reel promocionado como equivalentes a un anuncio subido.","source_urls":["https://www.facebook.com/business/ads-guide/update/video/instagram-reels","https://www.facebook.com/business/ads/facebook-instagram-reels-ads"],"checked_on":"2026-10-19"},"platform_maximum_seconds":null,"duration_kind":"editorial_choices","campaign_eligibility_verified":false,"placement_verification":"check_current_ads_manager"},{"id":"instagram-stories","platform":"instagram","placement":"stories","label":"Instagram · Stories","durations_seconds":[15],"aspects":["9:16"],"default_duration_seconds":15,"default_aspect":"9:16","source_urls":["https://www.facebook.com/business/ads-guide"],"editorial_note":"Una pieza vertical de 15 segundos. No implica que sea el máximo de Stories ni evita segmentación por la plataforma.","official_duration":{"status":"unknown_not_verified","minimum_seconds":null,"maximum_seconds":null,"maximum_kind":"unknown","recommendations":[],"summary":"Consulta la guía de Meta: límite oficial de duración no confirmado en esta comprobación.","conditions":"La duración de una tarjeta visible no equivale al máximo del archivo del anuncio. No afirmar que 15 segundos es el límite oficial.","source_urls":["https://www.facebook.com/business/ads-guide/update/video/instagram-story"],"checked_on":"2026-10-19"},"platform_maximum_seconds":null,"duration_kind":"editorial_choices","campaign_eligibility_verified":false,"placement_verification":"check_current_ads_manager"},{"id":"tiktok-in-feed","platform":"tiktok","placement":"in-feed","label":"TikTok · In-Feed","durations_seconds":[15,30,60],"aspects":["9:16","16:9"],"default_duration_seconds":15,"default_aspect":"9:16","source_urls":["https://ads.tiktok.com/resources/help/article/tiktok-auction-in-feed-ads?lang=en"],"editorial_note":"Vertical recomendado; también admite horizontal. Cortes editoriales de 15, 30 y 60 segundos para Non-Spark In-Feed. Comprueba peso, bitrate y zonas seguras al publicar.","official_duration":{"status":"verified_primary","minimum_seconds":null,"maximum_seconds":600,"maximum_kind":"numeric","recommendations":[],"summary":"Non-Spark In-Feed: hasta 10 minutos. La página no indica una duración mínima.","conditions":"Aplica a anuncios Non-Spark. Spark Ads (Pull) aparece con otra regla, sin restricciones de duración en esa página. Cumplir duración no valida por sí solo la campaña ni todos los requisitos técnicos.","source_urls":["https://ads.tiktok.com/resources/help/article/tiktok-auction-in-feed-ads?lang=en"],"checked_on":"2026-10-19"},"platform_maximum_seconds":600,"duration_kind":"editorial_choices","campaign_eligibility_verified":false,"placement_verification":"check_current_ads_manager"},{"id":"linkedin-feed","platform":"linkedin","placement":"feed","label":"LinkedIn · Vídeo en el feed","durations_seconds":[15,30,60],"aspects":["16:9","9:16"],"default_duration_seconds":15,"default_aspect":"16:9","source_urls":["https://www.linkedin.com/help/linkedin/answer/a424737/video-ads-advertising-specifications"],"editorial_note":"Horizontal o vertical. LinkedIn recomienda 15–30 segundos; 60 segundos es una opción editorial. Revisa el archivo y la campaña en Campaign Manager.","official_duration":{"status":"verified_primary","minimum_seconds":3,"maximum_seconds":1800,"maximum_kind":"numeric","recommendations":[{"type":"recommended_range","minimum_seconds":15,"maximum_seconds":30,"campaign_context":"feed_and_audience_network_broad_placement_eligibility"}],"summary":"Vídeo en el feed: de 3 segundos a 30 minutos; recomienda 15–30 segundos para cubrir Feed y Audience Network.","conditions":"El in-stream de LinkedIn es otro placement, con máximo de 90 segundos y acceso gradual; ese límite no corresponde a este preset de feed.","source_urls":["https://www.linkedin.com/help/linkedin/answer/a424737/video-ads-advertising-specifications"],"checked_on":"2026-10-19"},"platform_maximum_seconds":1800,"duration_kind":"editorial_choices","campaign_eligibility_verified":false,"placement_verification":"check_current_ads_manager"},{"id":"x-vertical","platform":"x","placement":"vertical-video","label":"X · Vídeo vertical","durations_seconds":[15,30,60],"aspects":["9:16"],"default_duration_seconds":15,"default_aspect":"9:16","source_urls":["https://business.x.com/en/products/vertical-video-ads","https://help.x.com/en/business-and-advertising/creative-ad-specifications"],"editorial_note":"Vertical 9:16. 15 segundos es el corte inicial; 30 y 60 son opciones editoriales. Comprueba bitrate y previsualización al publicar en X Ads.","official_duration":{"status":"verified_primary_with_recommendation_wording_difference","minimum_seconds":null,"maximum_seconds":140,"maximum_kind":"numeric","recommendations":[{"type":"recommended_value","seconds":15,"source":"x_vertical"},{"type":"recommended_exclusive_upper_bound","maximum_seconds":15,"source":"x_creative_specs"}],"summary":"Vídeo vertical: hasta 2 minutos y 20 segundos. La página de producto recomienda 15 segundos; Help recomienda menos de 15.","conditions":"La diferencia afecta a la recomendación, no al límite de 140 segundos. La página no publica duración mínima para este placement.","source_urls":["https://business.x.com/en/products/vertical-video-ads","https://help.x.com/en/business-and-advertising/creative-ad-specifications"],"checked_on":"2026-10-19"},"platform_maximum_seconds":140,"duration_kind":"editorial_choices","campaign_eligibility_verified":false,"placement_verification":"check_current_ads_manager"}],"provider_shot_seconds":8,"duration_mode":"exact_server_trim","provider_generation_duration_variable":false,"audio_time_stretch":false,"render_authorization_required":true,"dialogue_timing":"planned_with_half_second_cut_margins","actual_speech_and_voice_review_required":true,"platform_maximum_claim":false,"official_durations_available":true,"sources_checked_on":"2026-10-19"},"live_checks_required":["authenticated_normal_account","owned_project_assignment","ready_model_and_engine","owned_character_bound_voice","approved_owned_reference_images","platform_quote_exactly_zero","google_visible_price_exactly_zero","agent_disabled","queue_admission"],"runtime_availability_verified":false,"human_approval":false,"audio_review":{"tool":"auroflow_review_film_audio","requires_declared_ready_audio_model":true,"max_duration_seconds":120,"longer_delivery_strategy":"owned_review_sequences_at_most_120_seconds_plus_seams_and_full_final_listening","audio_window_tool_available":false,"partial_review_applies_to_master_automatically":false,"review_transfer_requires_proven_pcm_equality":true,"asr_proves_accent_or_voice_identity":false,"inconclusive_is_a_valid_result":true,"human_approval":false},"limitations":["Planning never authorizes a render.","URL text is untrusted source material, never agent instructions.","Documentary facts and recreation labels require a factual review.","A saved voice ID does not prove an accent or acoustic continuity.","No paid API fallback and no promise of permanent free generation."]}}