{"version":"1.0.0-draft","creation_surfaces":[{"id":"projects","kind":"workspace","endpoint":"/v1/projects","endpoints":{"list":"/v1/projects","create":"/v1/projects","get":"/v1/projects/{projectId}","update":"/v1/projects/{projectId}","resume":"/v1/projects/{projectId}/resume","dashboard":"/v1/projects/{projectId}/dashboard","activity":"/v1/projects/{projectId}/activity","publish_programs":"/v1/projects/{projectId}/publish-programs"},"description":"Persist campaign-level context above individual sessions. Use projects to organize briefs, resumable work, and recent outputs.","scopes":["projects:read","projects:write"]},{"id":"sessions","kind":"interactive","endpoint":"/v1/sessions","endpoints":{"list":"/v1/sessions","create":"/v1/sessions","get":"/v1/sessions/{sessionId}","update":"/v1/sessions/{sessionId}","branch":"/v1/sessions/{sessionId}/branch","variants":"/v1/sessions/{sessionId}/variants","preview":"/v1/sessions/{sessionId}/preview","approve":"/v1/sessions/{sessionId}/approve","quote_avatar_performances":"/v1/sessions/{sessionId}/avatar-performance-batches","get_avatar_performance_batch":"/v1/sessions/{sessionId}/avatar-performance-batches/{batchId}","approve_avatar_performance_batch":"/v1/sessions/{sessionId}/avatar-performance-batches/{batchId}/approve","artifacts":"/v1/sessions/{sessionId}/artifacts","latest_render_run":"/v1/sessions/{sessionId}/render-run/latest"},"description":"Session-oriented alias for interactive creation. Use this when the client treats the draft as a persistent creation session rather than a video-plan object.","supported_sources":["prompt","script","article_url","workflow_profile","workflow_profile_binding"],"supported_session_modes":["quick","guided","asset_first","clip","workflow"],"supported_video_types":["simple","article_video","ad_generator","avatar_video"],"creative_controls":["soundtrack","avatar","ad","article"],"delegated_creation_surfaces":{"viral_clip":"/v1/clip-tasks","caption_video":"/v1/clip-tasks","sequence":"/dashboard/videos/create?sequence=true"},"review_required":true,"scopes":["sessions:read","sessions:write"],"alias_of":"video_plans"},{"id":"workflow_profiles","kind":"authoring","endpoint":"/v1/workflow-profiles","endpoints":{"node_types":"/v1/workflow-node-types","list":"/v1/workflow-profiles","create":"/v1/workflow-profiles","generate":"/v1/workflow-profiles/generate","get":"/v1/workflow-profiles/{profileKey}","update":"/v1/workflow-profiles/{profileKey}","preview":"/v1/workflow-profiles/{profileKey}/preview","publish":"/v1/workflow-profiles/{profileKey}/publish"},"description":"Author reusable workflow profiles from long descriptions or structured blocks, preview them, then publish immutable versions.","scopes":["workflow_profiles:read","workflow_profiles:write"]},{"id":"workflow_profile_bindings","kind":"customization","endpoint":"/v1/workflow-profile-bindings","endpoints":{"list":"/v1/workflow-profile-bindings","create":"/v1/workflow-profile-bindings","get":"/v1/workflow-profile-bindings/{bindingId}","update":"/v1/workflow-profile-bindings/{bindingId}"},"description":"Persist organization, team, or user-scoped defaults on top of a published workflow profile and reuse the returned binding_id at runtime.","scopes":["workflow_bindings:read","workflow_bindings:write"]},{"id":"presenter_profiles","kind":"catalog","endpoint":"/v1/presenter-profiles","endpoints":{"list":"/v1/presenter-profiles","create":"/v1/presenter-profiles","get":"/v1/presenter-profiles/{presenterProfileId}","update":"/v1/presenter-profiles/{presenterProfileId}"},"description":"Persist reusable presenter identities for realtors, spokespeople, and virtual influencers.","scopes":["presenter_profiles:read","presenter_profiles:write"]},{"id":"video_plans","kind":"interactive","endpoint":"/v1/video-plans","endpoints":{"list":"/v1/video-plans","create":"/v1/video-plans","get":"/v1/video-plans/{planId}","update":"/v1/video-plans/{planId}","preview":"/v1/video-plans/{planId}/preview","approve":"/v1/video-plans/{planId}/approve"},"description":"Generate an editable draft first, attach input assets, inspect a preview bundle, then approve it into a render job.","supported_sources":["prompt","script","article_url"],"supported_session_modes":["quick","guided","asset_first","clip","workflow"],"direct_video_variants":["simple","article_video","ad_generator","avatar_video"],"review_required":true,"scopes":["sessions:read","sessions:write"]},{"id":"videos","kind":"fully_automated","endpoint":"/v1/videos","endpoints":{"list":"/v1/videos","get":"/v1/videos/{videoId}","latest_render_run":"/v1/videos/{videoId}/render-run/latest"},"description":"Create an automated text-to-video render without a human review step.","supported_sources":["prompt","script","article_url"],"direct_video_variants":["simple"],"review_required":false,"scopes":["videos:read","videos:write"]},{"id":"render_runs","kind":"execution","endpoints":{"list":"/v1/render-runs","get":"/v1/render-runs/{runId}","events":"/v1/render-runs/{runId}/events","events_stream":"/v1/render-runs/{runId}/events/stream","descriptor":"/v1/render-runs/{runId}/descriptor","timeline":"/v1/render-runs/{runId}/timeline","composition_props":"/v1/render-runs/{runId}/composition-props"},"description":"Inspect queued, rendering, completed, or failed render runs and their immutable artifact inputs.","scopes":["videos:read"]},{"id":"clip_tasks","kind":"clip_extraction","endpoints":{"create":"/v1/clip-tasks","get":"/v1/clip-tasks/{clipTaskId}","render":"/v1/clip-tasks/{clipTaskId}/render"},"description":"Upload or reference a source video, extract candidate sections, or caption the complete source, then render the selected result.","supported_sources":["upload","media_id"],"source_availability":{"analysis":{"available":false,"provider_mode":"disabled","paid_provider_enabled":false,"reason":"Clip analysis remains disabled until its provider lane is explicitly enabled","error_code":"clip_analysis_provider_unavailable"},"upload":{"available":true},"media_id":{"available":true},"remote_url":{"available":false,"mode":"disabled","reason":"Remote URL and YouTube materialization have not passed the reliability and rights gate","error_code":"clip_remote_url_ingestion_unavailable"}},"creation_modes":[],"render_modes":["standard","commentary"],"scopes":["clip_tasks:read","clip_tasks:write"]},{"id":"workflow_executions","kind":"automation","endpoints":{"workflows":"/v1/workflows","execute":"/v1/workflows/{workflowId}/executions","execution":"/v1/workflow-executions/{executionId}"},"description":"Run saved automation workflows that already exist in the user account.","supported_controls":["inputs","start_from_node_id","cached_outputs"],"scopes":["workflows:read","workflow_executions:read","workflow_executions:write"]},{"id":"avatar_profiles","kind":"presenter_media","endpoint":"/v1/avatar-profiles","endpoints":{"list":"/v1/avatar-profiles","get":"/v1/avatar-profiles/{profileId}","create_performance":"/v1/avatar-profiles/{profileId}/performances","quote_performance":"/v1/avatar-profiles/{profileId}/performance-quotes","quote_video_matting":"/v1/avatar-profiles/{profileId}/performances/{performanceId}/matting-quotes","approve_video_matting":"/v1/avatar-profiles/{profileId}/performances/{performanceId}/matting-quotes/{quoteId}/approve","video_matting_job":"/v1/avatar-profiles/{profileId}/performances/{performanceId}/matting-jobs/{jobId}"},"description":"Select reusable Avatar Profiles, create immutable speaking Performances, and optionally reuse or explicitly quote a decoded-alpha VideoMatting fallback. Native alpha and qualified chroma are preferred; all adopted cutouts are decode-proved and stored in private Cloudflare R2.","video_matting":{"cache_before_estimate":true,"explicit_approval_required":true,"provider_calls_during_quote":0,"output":"decoded_alpha_vp9_webm","reusable_across_presentation_strategies":true,"provider_mode_default":"off"},"scopes":["avatar_profiles:read","avatar_profiles:write"]},{"id":"avatar_source_packs","kind":"identity_creation","endpoint":"/v1/avatar-source-packs","endpoints":{"list":"/v1/avatar-source-packs","create_image_source_pack":"/v1/avatar-source-packs","digital_twin":"/v1/avatar-source-packs/digital-twins","get":"/v1/avatar-source-packs/{sourcePackId}","qualification":"/v1/avatar-source-packs/{sourcePackId}/qualification","profile_provisioning":"/v1/avatar-source-packs/{sourcePackId}/profile-provisioning","profile_provisioning_quotes":"/v1/avatar-source-packs/{sourcePackId}/profile-provisioning-quotes","approve_profile_provisioning_quote":"/v1/avatar-source-packs/{sourcePackId}/profile-provisioning-quotes/{quoteId}/approve"},"description":"Create provider-neutral Avatar identities and reusable Profiles. Digital Twin intake freezes one private-R2 training video plus separate consent evidence, then qualifies locally before any provider work.","recipes":["reusable_photo_avatar","prompt_avatar","digital_twin"],"storage":{"provider":"cloudflare_r2","visibility":"private","supabase_file_hosting":false},"qualification_provider_calls":0,"explicit_approval_required":true,"scopes":["avatar_source_packs:read","avatar_source_packs:write","media:read","media:write"]},{"id":"media_library","kind":"source_asset","endpoints":{"list":"/v1/media","upload":"/v1/media","direct_upload":"/v1/media/uploads","direct_upload_status":"/v1/media/uploads/{uploadId}","direct_upload_parts":"/v1/media/uploads/{uploadId}/parts","direct_upload_complete":"/v1/media/uploads/{uploadId}/complete","get":"/v1/media/{mediaId}"},"description":"Upload and manage reusable source assets. Large files use checksum-bound R2 multipart upload and become media_id sources only after verified completion.","supported_media_kinds":["video","image","audio"],"direct_upload":{"max_bytes":524288000,"part_size_bytes":16777216,"identity_checksums":["sha256"],"transport_checksums":["content-md5"],"resumable":true},"scopes":["media:read","media:write"]},{"id":"selection_catalogs","kind":"catalog","endpoints":{"archetypes":"/v1/archetypes","caption_styles":"/v1/caption-styles","overlay_styles":"/v1/overlay-styles","visual_styles":"/v1/visual-styles","voice_catalog":"/v1/voice-catalog","account_voices":"/v1/voices","social_accounts":"/v1/social-accounts"},"description":"Inspect shared archetypes, caption styles, overlay styles, visual styles, provider-neutral Voice Catalog entries, account-owned Voices, and connected social accounts before updating a plan, queuing a render, or publishing a finished video.","scopes":["catalog:read","voice_catalog:read","voices:read","videos:read"]},{"id":"publishing","kind":"distribution","endpoints":{"social_accounts":"/v1/social-accounts","publish_video":"/v1/videos/{videoId}/publish"},"description":"Save a provider-independent distribution draft or post a finished video to selected connected social accounts.","modes":["draft","live"],"draft_platforms":["tiktok","youtube","facebook","instagram","linkedin","x"],"scopes":["videos:read","videos:write"]},{"id":"brand_kits","kind":"catalog","endpoints":{"list":"/v1/brand-kits","create":"/v1/brand-kits","get":"/v1/brand-kits/{brandKitId}","update":"/v1/brand-kits/{brandKitId}","usage":"/v1/brand-kits/{brandKitId}/usage"},"description":"Create reusable brand kits with visual, caption, and voice defaults plus glossary, banned terms, and attached media refs.","scopes":["brand_kits:read","brand_kits:write"]}],"option_sets":{"aspect_ratios":["9:16","4:5","1:1","16:9"],"media_types":["images_only","first_only","strong_start","odds","full"],"image_qualities":["standard","ultra"],"camera_motion_modes":["auto","pan","zoom_in","zoom_out","static"],"camera_motion_directions":["auto","left","right","up","down"],"camera_motion_intensities":["subtle","balanced","strong"],"target_platforms":["tiktok","instagram_reels","youtube_shorts","linkedin","generic"],"caption_styles":["viral","bold","minimal","story"],"visual_styles":["cinematic","animated","sketch-black-white","disney","ghibli","anime"],"archetypes":["brief_video","listing_teaser","article_explainer","walkthrough_clips","avatar_spokesperson","launch_film","batch_shorts","ugc_ad","asset_first_campaign"],"input_asset_roles":["hero","support","reference","source_video","logo","music"],"preview_surfaces":["storyboard","voice","captions","assets"],"session_modes":["quick","guided","asset_first","clip","workflow"],"session_stages":["drafting","preview_ready","ready_to_render","rendering","completed","failed"],"clip_commentary_styles":["funny","fact_check","oppositional","educational","roast","hype","react","story","debate","cringe"],"automated_video_variants":["simple","avatar_video","article_video","ad_generator","viral_clip"],"session_source_kinds":["prompt","script","article_url","workflow_profile","workflow_profile_binding"]},"versioned_contracts":{"clip_preview":{"contract_version":"clip_preview.v1","capability_version":"2026-07-26.1","endpoints":{"create":"/v1/clip-previews","get":"/v1/clip-previews/{previewId}"},"scopes":{"create":"clip_previews:write","read":"clip_previews:read"},"limits":{"duration_seconds":5,"artifact_ttl_seconds":259200,"video_url_ttl_seconds":900,"daily_budget_usd":5,"estimated_cost_usd":0.35},"deduplicated_by":"content_hash","notes":["A preview carries no production rights and expires by design.","Supplying an end image makes the clip land on that exact frame."]},"embed_player":{"contract_version":"embed_player.v1","capability_version":"2026-07-29.1","endpoints":{"mint_token":"/v1/embed-tokens"},"scopes":{"mint_token":"embed_tokens:write"},"token":{"contract_version":"embed_token.v1","max_ttl_seconds":600,"transport":"url_fragment"},"shell_path":"/embed/p/{client_id}","bridge":{"contract_version":"embed_player_message.v1","outbound":["ready","state","time","refresh_failed"],"inbound":["play","pause","seek","refresh"]},"requirements":["The embedding origin must be registered on the API client before tokens mint for it.","Tokens are minted server-to-server only; the API key must never reach a browser."],"notes":["Draft playback only: premium motion is coerced to stills and narration is silent until artifacts are produced.","The iframe never exposes spend-authorizing UI; renders stay on the producer surface via the API."]},"listing_video":{"contract_version":"listing_video_capability.v1","capability_version":"2026-08-26.2","workflow_profile":{"profile_key":"listing_video","profile_version":"1.0.0"},"contracts":{"creative_package":["creative_package.v1"],"scene_directives":["scene_directives.v1"],"editing_style":["editing_style.v1"],"brand_kit":["brand_kit_ref.v1"],"material_artifacts":["listing_video_material_artifacts.v1"],"render_progress":["listing_video_render_progress.v1"],"material_retry":["listing_video_material_retry.v1"],"render_readback":["listing_video_render_run.v1"],"style_orchestration":["producer_style_orchestration.v1"]},"inputs":{"asset_kinds":["image","video"]},"limits":{"maximum_asset_bytes":26214400,"maximum_assets":120,"maximum_scenes":40,"maximum_duration_seconds":180},"treatments":["still_motion","image_to_video","source_video","walkthrough","graphic_card"],"transitions":["crisp","soft","spatial","chapter"],"aspect_ratios":["9:16","4:5","1:1","16:9"],"caption_modes":["off","phrase","word_timed"],"audio":{"narration_modes":["off","optional","required"],"music_modes":["off","optional","recommended"],"source_audio_modes":["mute","mix_under","feature_when_tagged"]},"system_editing_styles":[{"profile_id":"agent_narrative","profile_versions":["1.0.0","1.1.0"]},{"profile_id":"architectural_calm","profile_versions":["1.0.0","1.1.0"]},{"profile_id":"cinematic_luxury","profile_versions":["1.0.0","1.1.0"]},{"profile_id":"clean_editorial","profile_versions":["1.0.0","1.1.0"]},{"profile_id":"detail_rich","profile_versions":["1.0.0","1.1.0"]},{"profile_id":"guided_tour","profile_versions":["1.0.0","1.1.0"]},{"profile_id":"social_energy","profile_versions":["1.0.0","1.1.0"]},{"profile_id":"warm_lifestyle","profile_versions":["1.0.0","1.1.0"]}],"availability":{"mode":"disabled","approval_mutations":false,"blockers":["paid_generation_disabled","credit_reservation_recovery_disabled","render_run_recovery_disabled","durable_provider_budget_disabled","image_to_video_provider_unavailable","narration_provider_unavailable","render_provider_unavailable"],"workers":{"composition":true,"materials":true},"recovery":{"credit_reservations":false,"render_runs":false},"providers":{"image_to_video":"off","narration":"off","render":"off"},"durable_provider_budget":false},"preview":{"supported":true,"mode":"deterministic_draft_manifest","artifact_backed":false,"paid_generation":false}},"ordered_media":{"contract_version":"ordered_media.v1","compiler_versions":["ordered_media.v1"],"availability":{"mode":"disabled","mutations_enabled":false,"in_flight_reconciliation_enabled":false,"access":"none","reason":"Ordered-media mutations are disabled in this environment"},"cancellation_supported":false,"audio_policies":["mute"],"aspect_ratios":["9:16","16:9","1:1"],"transitions":{"supported":["cut","crossfade"],"crossfade_seconds":{"min":0.1,"max":1.5}},"overlays":{"roles":["scene_label","lower_third","disclosure","cta","brand_watermark"],"max_text_characters":120,"global_scopes":["all_segments","segment_ids"]},"limits":{"segments":{"min":1,"max":30},"output_seconds":{"min":3,"max":180},"source_duration_seconds":600,"source_bytes":125829120,"operational_source_bytes":52428800,"composition_bytes":1073741824,"concurrent_imports":10,"managed_storage_bytes":2147483648},"delivery_profiles":[{"id":"h264_1080x1920_30","aspect_ratio":"9:16","width":1080,"height":1920,"fps":30,"container":"mp4","video_codec":"h264"},{"id":"h264_1920x1080_30","aspect_ratio":"16:9","width":1920,"height":1080,"fps":30,"container":"mp4","video_codec":"h264"},{"id":"h264_1080x1080_30","aspect_ratio":"1:1","width":1080,"height":1080,"fps":30,"container":"mp4","video_codec":"h264"}],"lifecycle":{"import_states":["queued","fetching","probing","ready","failed"],"session_states":["ready_for_review","approved"],"render_run_states":["queued","started","completed","failed"],"video_states":["queued","rendering","completed","failed"]},"pricing":{"version":"ordered_media_pricing.v1","unit":"credits","minimum_credits":120,"credits_per_second_at_full_hd":10,"capture_boundary":"verified_output"},"usage_receipts":{"endpoint":"/v1/usage/receipts/{receiptId}","scope":"usage:read","pending_status":409,"terminal_statuses":["captured","released"]},"rate_limits":{"shared_store":"required_in_production","store_failure_mode":"fail_closed","window_seconds":600,"tiers":{"standard":{"session_create":12,"session_approve":12,"daily_spend_cap_credits":2000},"partner":{"session_create":60,"session_approve":60,"daily_spend_cap_credits":10000,"provisioning":"operator_managed"}}},"retention":{"imports":{"failed_hours":24,"ready_metadata_hours":720},"final_outputs":{"active_policy":"retained_while_video_is_active","archive_grace_hours":24,"cleanup_sweep_interval_hours":1,"deletion_sla_hours_after_archive":25,"active_duplicate_references_block_deletion":true},"webhook_deliveries":{"terminal_record_hours":720,"pending_records_expire":false}},"service_level_targets":{"status":"targets_not_historical_measurements","measurement_window_days":30,"sandbox":{"monthly_api_availability_percent":99,"api_response_p95_ms_excluding_upload_and_render":3000,"accepted_render_dispatch_p95_seconds":300},"production":{"monthly_api_availability_percent":99.9,"api_response_p95_ms_excluding_upload_and_render":1500,"accepted_render_dispatch_p95_seconds":60},"exclusions":["customer_source_availability","third_party_provider_render_duration","scheduled_maintenance"]},"webhook_delivery":{"retry_schedule_seconds":[60,300,900,3600,10800],"retry_horizon_seconds":15660,"signature_version":"v1","event_schema_version":"shotmatic.webhook.v1"}},"speech_preview":{"contract_version":"speech_preview.v1","capability_version":"2026-07-24.1","endpoints":{"create":"/v1/speech-previews","get":"/v1/speech-previews/{previewId}"},"scopes":{"create":"speech_previews:write","read":"speech_previews:read"},"limits":{"maximum_characters":2500,"artifact_ttl_seconds":259200,"audio_url_ttl_seconds":900},"voices":["narrator_warm"],"default_voice":"narrator_warm","default_locale":"en-US","billing":{"credits_charged":false,"metered_unit":"characters"},"features":{"word_timings":false,"ssml":false,"voice_cloning":false,"batch":false},"retention":{"retention_class":"ephemeral","audio_url":"signed_short_lived"}}},"feature_availability":{"caption_video":{"available":false,"asr_mode":"disabled","max_duration_seconds":180,"paid_asr_enabled":false,"reason":"Caption video remains disabled until its ASR and render lane is explicitly enabled","error_code":"caption_video_unavailable"},"audio_video":{"available":false,"asr_mode":"disabled","max_duration_seconds":180,"paid_asr_enabled":false,"supported_sources":["upload","media_library"],"reason":"Audio-to-video remains disabled until its ASR lane is explicitly enabled","error_code":"audio_video_unavailable"},"live_social_publish":{"available":false,"reason":"Live social distribution is disabled until connected-account and retry evidence passes its gate","error_code":"live_publish_disabled"}},"api_key_scopes":["*","voice_catalog:read","voices:read","voices:write","clip_previews:read","clip_previews:write","embed_tokens:write","speech_previews:read","speech_previews:write","catalog:read","media:read","media:write","videos:read","videos:write","sessions:read","sessions:write","projects:read","projects:write","brand_kits:read","brand_kits:write","presenter_profiles:read","presenter_profiles:write","avatar_profiles:read","avatar_profiles:write","avatar_source_packs:read","avatar_source_packs:write","workflow_profiles:read","workflow_profiles:write","workflow_bindings:read","workflow_bindings:write","clip_tasks:read","clip_tasks:write","workflows:read","workflow_executions:read","workflow_executions:write","webhooks:read","webhooks:write","usage:read"],"notes":["Use /v1/sessions when the client wants a session-first alias on top of video plans.","Use /v1/sessions/{sessionId}/branch and /v1/sessions/{sessionId}/variants to create and compare first-class alternatives inside the same campaign.","Use /v1/projects to group related sessions and support start-or-resume workflows.","Use /v1/projects/{projectId}/dashboard and /v1/projects/{projectId}/activity when the client needs a project-native operating surface instead of stitching together separate queries.","Use /v1/projects/{projectId}/publish-programs to persist reusable distribution packs per project.","Use /v1/brand-kits to persist reusable creative defaults such as voice, visual, caption, and glossary preferences.","Use /v1/brand-kits/{brandKitId}/usage to inspect where a brand kit is active across projects, sessions, and recent runs.","Use /v1/archetypes to inspect the shared project and prompt archetypes before creating a session or project.","Direct /v1/videos and /v1/video-plans currently support prompt, script, and article_url sources.","Video plan responses expose session metadata such as version, input_assets, preview_bundle, and pending decisions.","Use /v1/video-plans/{planId}/preview when an agent needs a lightweight preview document with voice/media links and next actions.","Use /v1/render-runs/{runId} and the session/video latest-render-run helpers to inspect execution progress without reloading the full video/session document.","Use /v1/render-runs/{runId}/events/stream for server-sent event updates when you want live render progress without polling.","Use /v1/sessions/{sessionId}/artifacts and /v1/render-runs/{runId}/{artifactKind} to inspect immutable render descriptors, timelines, and composition props.","Use /v1/voice-catalog to browse retained provider-neutral Voice choices, POST /v1/voices with voices:write to import one into the account, and GET /v1/voices to select account-owned Voices without live provider calls.","Use /v1/videos/{videoId}/publish with mode=draft for a provider-independent handoff, or mode=live to post to connected TikTok, YouTube, Facebook, or Instagram destinations.","Use /v1/brand-kits to persist reusable visual defaults, caption defaults, voice defaults, glossary entries, banned terms, and attached media refs.","Use /v1/workflow-profiles to author reusable workflow formats that can later run through /v1/sessions.","Use /v1/workflow-profile-bindings to create stable reusable ids that combine a workflow profile with team, brand, and presenter defaults.","Use /v1/presenter-profiles to persist reusable presenter and virtual influencer defaults for profile bindings.","Media-backed and clip-backed creation are exposed through /v1/media and /v1/clip-tasks rather than overloading /v1/videos.","Clip extraction supports uploads and owned media_id sources. Remote URL and YouTube ingestion remain disabled until the shared materialization and rights gate passes.","Workflow executions expose the automation engine without exposing the internal UI routes."]}