---
title: "Get a directive"
method: GET
path: "/robots/v0/directives/{DIRECTIVE_ID}"
tags: ["Directives (v0)"]
deprecated: true
---

# Get a directive

`GET /robots/v0/directives/{DIRECTIVE_ID}`

## Request

- Base URL: `https://api.mux.com`
- URL: `https://api.mux.com/robots/v0/directives/{DIRECTIVE_ID}`
- Auth: one of:
  - HTTP basic
  - HTTP bearer

> **Deprecated.**

Deprecated: use `GET /robots/v1/directives/{directive_id}` instead. Retrieves a directive by ID.

## Path parameters

- `DIRECTIVE_ID` string, required: Directive ID returned by directive creation or listing (drv_...).

## Response `200`

Directive

- DirectiveResponseV0
  - `data` DirectiveV0, required
    - `id` string, required: Stable directive identifier (drv_...).
    - `name` string, required: Human-readable directive name.
    - `subject` DirectiveSubjectV0, required
      - `type` 'video.asset' | 'video.live_stream', required: The entity type each run targets. The directive engine accepts "video.asset" only; "video.live_stream" is reserved and rejected at save time.
    - `resources` union[], required: Resource declarations.
      - union
        - TrackResourceDeclarationV0
          - `reference_id` string, required: Customer-chosen identifier that must be unique within the directive. Workflow `inputs` reference this identifier.
          - `type` 'video.asset.track', required: A caption or audio track on the asset.
          - `kind` 'caption' | 'audio', required: The track flavor to match: "caption" for text tracks, "audio" for audio tracks.
          - `language` string: BCP 47 language code the track must match (e.g. "en"). When omitted, any language of the declared kind matches.
          - `source` union: How the resource is materialized on the asset. Defaults to `{ "via": "external" }`.
            - SourceExternalV0: The resource is produced out-of-band (e.g. a track uploaded directly to the asset). The engine waits for it to appear and become ready.
              - …
            - SourceRequiredV0: The resource must already be ready on the asset when the run starts. If it is absent, the dependency workflow fails immediately.
              - …
            - SourceWorkflowV0: The resource is produced by another workflow binding in this directive. Dependent workflows wait for that binding to complete and the resource to become ready.
              - …
            - union: The engine creates the resource by calling the Mux Video API when the resource is absent at run start.
              - …
        - ShotsResourceDeclarationV0
          - `reference_id` string, required: Customer-chosen identifier, unique within the directive. Workflow `inputs` entries reference this handle.
          - `type` 'video.asset.shots', required: The asset's shot-detection output.
          - `source` union: How the resource is materialized on the asset. Defaults to `{ "via": "external" }`.
            - SourceExternalV0: The resource is produced out-of-band (e.g. a track uploaded directly to the asset). The engine waits for it to appear and become ready.
              - …
            - SourceRequiredV0: The resource must already be ready on the asset when the run starts. If it is absent, the dependency workflow fails immediately.
              - …
            - SourceWorkflowV0: The resource is produced by another workflow binding in this directive. Dependent workflows wait for that binding to complete and the resource to become ready.
              - …
            - union: The engine creates the resource by calling the Mux Video API when the resource is absent at run start.
              - …
    - `workflows` WorkflowBindingV0[], required: Workflow bindings.
      - union
        - AnalyzeStructureBindingV0
          - `reference_id` string, required: Customer-chosen identifier, unique within the directive. Resource `source.binding` refs point at this handle.
          - `workflow` 'analyze-structure', required: The Robots workflow to dispatch — the same identifier as POST /robots/v0/jobs/{workflow}.
          - `inputs` string[]: reference_ids of declared resources this workflow depends on. Each entry is a hard dependency: the workflow is not dispatched until the referenced resource is ready.
          - `params` AnalyzeStructureBindingParametersV0: Parameters for the analyze-structure workflow — the same fields accepted by POST /robots/v0/jobs/analyze-structure, minus engine-supplied fields such as asset_id.
            - `language_code` string: BCP 47 language code of the caption source. An explicit language must match a ready source exactly, including case; for example, en does not match en-US. Translation target exclusion and track replacement instead compare base languages case-insensitively. When omitted, automatic selection applies. Uses the first ready subtitle in asset track order without English preference. Audio-only assets with one ready text track lacking subtitle metadata can use that legacy transcript.
            - `output_language_code` string: BCP 47 language code for generated text. Auto-detected from available evidence when omitted.
            - `output_steering` AnalyzeStructureOutputSteeringV0: Curated controls that restrict Analyze Structure execution or guide its generated metadata without exposing raw prompt editing. The scope start is inclusive, the end is exclusive, and returned timestamps remain absolute.
              - …
            - `update_asset_meta` boolean: When true, writes the generated title to asset.meta.title after analysis. Defaults to false. Best-effort: a metadata-write failure does not fail the analysis. Check outputs.asset_updates.title for the outcome.
            - `update_asset_chapters` boolean: When true, replaces or creates the asset's chapters track after analysis. Defaults to false. Best-effort: a chapters-write failure does not fail the analysis. Check outputs.asset_updates.chapters for the outcome.
        - SummarizeBindingV0
          - `reference_id` string, required: Customer-chosen identifier, unique within the directive. Resource `source.binding` refs point at this handle.
          - `workflow` 'summarize', required: The Robots workflow to dispatch — the same identifier as POST /robots/v0/jobs/{workflow}.
          - `inputs` string[]: reference_ids of declared resources this workflow depends on. Each entry is a hard dependency: the workflow is not dispatched until the referenced resource is ready.
          - `params` SummarizeBindingParametersV0: Parameters for the summarize workflow — the same fields accepted by POST /robots/v0/jobs/summarize, minus engine-supplied fields such as asset_id.
            - `tone` 'neutral' | 'playful' | 'professional': Tone for the generated summary. "neutral" for straightforward analysis, "playful" for witty and conversational, "professional" for executive-level reporting.
            - `output_steering` SummarizeOutputSteeringV0: Curated output_steering controls for execution scope, summary style, audience, brand terminology, and tag taxonomy. Scope is enforced; other controls guide model behavior but do not guarantee exact output.
              - …
            - `prompt_overrides` object: Deprecated: use `output_steering`. Raw prompt-section overrides; any section supplied here takes precedence over the equivalent `output_steering` guidance.
              - …
            - `title_length` integer: Maximum title length in words.
            - `description_length` integer: Maximum description length in words.
            - `tag_count` integer: Maximum number of tags to include in the generated output. Defaults to 10.
            - `language_code` string: BCP 47 language code of the caption track to analyze (e.g. "en", "fr"). When omitted, English subtitles are preferred when available, otherwise the first ready text track is selected.
            - `output_language_code` string: BCP 47 language code for the generated summary output (e.g. "en", "fr", "ja"). Auto-detected from the transcript if omitted.
            - `update_asset_meta` boolean: When true, the generated title is written to the Mux asset's metadata (asset.meta.title) once the summary completes. Best-effort: a metadata-write failure does not fail the summary.
        - ModerateBindingV0
          - `reference_id` string, required: Customer-chosen identifier, unique within the directive. Resource `source.binding` refs point at this handle.
          - `workflow` 'moderate', required: The Robots workflow to dispatch — the same identifier as POST /robots/v0/jobs/{workflow}.
          - `inputs` string[]: reference_ids of declared resources this workflow depends on. Each entry is a hard dependency: the workflow is not dispatched until the referenced resource is ready.
          - `params` ModerateBindingParametersV0: Parameters for the moderate workflow — the same fields accepted by POST /robots/v0/jobs/moderate, minus engine-supplied fields such as asset_id.
            - `language_code` string: BCP 47 language code of the caption track to moderate. Used only for audio-only assets; ignored for video assets. When omitted, an English subtitles track is preferred and otherwise the first ready text track is used.
            - `thresholds` object: Score thresholds that determine whether content is flagged. When combined with sampling_interval or max_samples, the exceeds_threshold flag reflects whether any category's highest observed score exceeds its configured threshold. Defaults to {sexual: 0.7, violence: 0.8}.
              - …
            - `sampling_interval` integer: Interval, in seconds, between sampled thumbnails. Minimum 5 seconds. When max_samples is also set, the actual sampling density is the more restrictive of the two constraints.
            - `max_samples` integer: Maximum number of thumbnails to sample. Acts as a cap — if sampling_interval produces fewer samples than this limit, the interval is respected; otherwise samples are evenly distributed with first and last frames pinned.
            - `output_steering` ModerateOutputSteeringV0: Curated controls that optionally restrict moderation to an asset time range.
              - …
            - `on_flagged` ActionOnFlaggedV0: Optional action taken automatically when exceeds_threshold is true. When omitted, the job only reports scores and takes no action. Note: in a directive run that targets the same asset with other workflows, deleting playback IDs can break sibling workflows that need a playback ID.
              - …
        - GenerateChaptersBindingV0
          - `reference_id` string, required: Customer-chosen identifier, unique within the directive. Resource `source.binding` refs point at this handle.
          - `workflow` 'generate-chapters', required: The Robots workflow to dispatch — the same identifier as POST /robots/v0/jobs/{workflow}.
          - `inputs` string[]: reference_ids of declared resources this workflow depends on. Each entry is a hard dependency: the workflow is not dispatched until the referenced resource is ready.
          - `params` GenerateChaptersBindingParametersV0: Parameters for the generate-chapters workflow — the same fields accepted by POST /robots/v0/jobs/generate-chapters, minus engine-supplied fields such as asset_id.
            - `language_code` string: BCP 47 language code of the caption track to analyze (e.g. "en", "fr"). When omitted, the first ready text track on the asset is selected.
            - `output_language_code` string: BCP 47 language code for the output chapter titles. Auto-detected from the transcript if omitted.
            - `output_steering` GenerateChaptersOutputSteeringV0: Curated output_steering controls for chapter style, granularity, audience, and brand terminology. These controls guide model behavior but do not guarantee exact output.
              - …
            - `prompt_overrides` object: Deprecated: use `output_steering`. Raw prompt-section overrides; any section supplied here takes precedence over the equivalent `output_steering` guidance.
              - …
            - `update_asset_chapters` boolean: When true, the generated chapters are written back to the Mux asset as a chapters text track once the job completes, making them deliverable with the asset. Overwrites existing chapters: an asset holds a single chapters track, so any chapters track already on the asset is deleted and replaced — including one in a different language, and one you created yourself. Best-effort — a failed write does not fail the job — so check `asset_updates.chapters` in the job outputs for the outcome.
        - GenerateContextualTextBindingV0
          - `reference_id` string, required: Customer-chosen identifier, unique within the directive. Resource `source.binding` refs point at this handle.
          - `workflow` 'generate-contextual-text', required: The Robots workflow to dispatch — the same identifier as POST /robots/v0/jobs/{workflow}.
          - `inputs` string[]: reference_ids of declared resources this workflow depends on. Each entry is a hard dependency: the workflow is not dispatched until the referenced resource is ready.
          - `params` GenerateContextualTextBindingParametersV0, required: Parameters for the generate-contextual-text workflow — the same fields accepted by POST /robots/v0/jobs/generate-contextual-text, minus engine-supplied fields such as asset_id.
            - `use_shots` boolean: When true for a video asset, generate or reuse Mux shots and attach a bounded sample of shot frames as additional visual evidence. Video assets always include a storyboard; the transcript remains authoritative. Not supported for audio-only assets.
            - `output_steering` GenerateContextualTextOutputSteeringV0: Curated controls that apply to every generated artifact in every variant. Scope bounds execution; the other fields are best-effort writing guidance. To vary voice or audience between variants, use variant instructions.
              - …
            - `variants` GenerateContextualTextVariantV0[], required: Named versions of the complete artifact set. Every variant produces every artifact. Supports 1-5 variants with unique keys.
              - …
            - `artifacts` GenerateContextualTextArtifactV0[], required: The deliverables to create. Every variant produces each artifact. Supports 1-5 artifacts with unique keys.
              - …
            - `language_code` string: BCP 47 language code of the caption track to analyze. When omitted, the first ready text track is used.
            - `output_language_code` string: BCP 47 language code for generated text. Defaults to the selected transcript track's language when available.
        - FindScenesBindingV0
          - `reference_id` string, required: Customer-chosen identifier, unique within the directive. Resource `source.binding` refs point at this handle.
          - `workflow` 'find-scenes', required: The Robots workflow to dispatch — the same identifier as POST /robots/v0/jobs/{workflow}.
          - `inputs` string[]: reference_ids of declared resources this workflow depends on. Each entry is a hard dependency: the workflow is not dispatched until the referenced resource is ready.
          - `params` FindScenesBindingParametersV0: Parameters for the find-scenes workflow — the same fields accepted by POST /robots/v0/jobs/find-scenes, minus engine-supplied fields such as asset_id.
            - `language_code` string: Preferred transcript language code to analyze when a matching transcript track is available. Defaults to the first ready transcript track on the asset.
            - `min_scenes` integer: Optional lower-bound hint for scene segmentation. When provided, the model should avoid collapsing clearly distinct beats below this count when the content supports more granular scene boundaries.
            - `min_scene_duration_ms` integer: Preferred minimum scene duration in milliseconds for scaffolded transcript chunking. Defaults to 15000.
            - `output_steering` FindScenesOutputSteeringV0: Curated output_steering controls for execution scope, segmentation strategy, title style, narration detail, audience, brand terms, and topic taxonomy. Scope is enforced; other controls guide model behavior but do not guarantee exact output.
              - …
        - EditCaptionsBindingV0
          - `reference_id` string, required: Customer-chosen identifier, unique within the directive. Resource `source.binding` refs point at this handle.
          - `workflow` 'edit-captions', required: The Robots workflow to dispatch — the same identifier as POST /robots/v0/jobs/{workflow}.
          - `inputs` string[]: reference_ids of declared resources this workflow depends on. Each entry is a hard dependency: the workflow is not dispatched until the referenced resource is ready.
          - `params` EditCaptionsBindingParametersV0: Parameters for the edit-captions workflow — the same fields accepted by POST /robots/v0/jobs/edit-captions, minus engine-supplied fields such as asset_id. The engine selects the first ready subtitle track in asset track order; track_id cannot be supplied.
            - `auto_censor_profanity` object: Optional LLM-driven profanity detection and censorship rules applied to the selected caption track.
              - …
            - `replacements` object[]: Optional static word or phrase replacements applied directly to cue text.
              - …
            - `speaker_replacements` EditCaptionsSpeakerReplacementV0[]: Optional replacements for bracketed speaker labels at the start of caption cues. Values omit the surrounding square brackets, and matching spoken text is not changed.
              - …
            - `upload_to_mux` boolean: Whether to upload the edited VTT back to the Mux asset as a text track. Defaults to true.
            - `replace_existing_tracks` 'replace' | 'fail': What to do with the source track. Defaults to `replace`: the source is deleted and the edited track takes its place under the same name, language and closed-captions setting; no other track is touched, and the source is restored if the edited track can't be added. `fail` deletes nothing and adds the edited track alongside the source, so it requires a `track_name` different from the source's. Either way the request is rejected if a track other than the source already has the edited track's name. `replace` requires `upload_to_mux` to be true.
            - `track_name` string: Name for the edited Mux text track. Defaults to the source track's name. Required and must differ from the source's name when `replace_existing_tracks` is `fail`. Mux requires text track names to be unique on an asset.
            - `delete_original_track` boolean: Deprecated: use `replace_existing_tracks`. When set, the previous behavior applies: the edited track is added as `<source name> (<track_name_suffix>)`, then the source is deleted if this is true. Cannot be combined with `replace_existing_tracks` or `track_name`.
            - `track_name_suffix` string: Deprecated: use `track_name`. Selects the previous naming scheme, appending this suffix to the source track's name (default "edited"). Cannot be combined with `replace_existing_tracks` or `track_name`.
        - TranslateCaptionsBindingV0
          - `reference_id` string, required: Customer-chosen identifier, unique within the directive. Resource `source.binding` refs point at this handle.
          - `workflow` 'translate-captions', required: The Robots workflow to dispatch — the same identifier as POST /robots/v0/jobs/{workflow}.
          - `inputs` string[]: reference_ids of declared resources this workflow depends on. Each entry is a hard dependency: the workflow is not dispatched until the referenced resource is ready.
          - `params` TranslateCaptionsBindingParametersV0, required: Parameters for the translate-captions workflow — the same fields accepted by POST /robots/v0/jobs/translate-captions, minus engine-supplied fields such as asset_id. The engine selects the first ready subtitle track in asset track order whose language differs from to_language_code, ignoring region subtags; track_id cannot be supplied.
            - `to_language_code` string, required: BCP 47 language code for the translated output (e.g. "es", "ja"). Unless replace_existing_tracks allows replacement, the asset must not already have a text track for this language.
            - `track_name` string: Name for the translated Mux text track. Defaults to "{Language} (Auto-translated)", e.g. "Spanish (Auto-translated)". Mux requires text track names to be unique on an asset, and an existing track with this name is handled according to `replace_existing_tracks`.
            - `upload_to_mux` boolean: Whether to upload the translated VTT and attach it as a text track on the Mux asset. Defaults to true.
            - `never_translate` string[]: Best-effort list of terms (brand names, proper nouns) to preserve verbatim in the translated captions. Does not guarantee exact output. Terms must not contain '<' or '>', invisible characters, or characters altered by Unicode normalization.
            - `replace_existing_tracks` 'fail' | 'replace_all' | 'replace_generated': What to do when the asset already has a text track in the same language as, or with the same name as, the translated track. Defaults to `fail`, which rejects the request before any translation is billed. `replace_all` deletes every such track first. `replace_generated` deletes only Mux Video auto-generated tracks and rejects if an uploaded track is in the way. Any value other than `fail` requires `upload_to_mux` to be true. Existing tracks are matched by language ignoring region subtags, and by name ignoring case, in any status.
        - TranslateAudioBindingV0
          - `reference_id` string, required: Customer-chosen identifier, unique within the directive. Resource `source.binding` refs point at this handle.
          - `workflow` 'translate-audio', required: The Robots workflow to dispatch — the same identifier as POST /robots/v0/jobs/{workflow}.
          - `inputs` string[]: reference_ids of declared resources this workflow depends on. Each entry is a hard dependency: the workflow is not dispatched until the referenced resource is ready.
          - `params` TranslateAudioBindingParametersV0, required: Parameters for the translate-audio workflow — the same fields accepted by POST /robots/v0/jobs/translate-audio, minus engine-supplied fields such as asset_id.
            - `to_language_code` string, required: BCP 47 language tag for the target audio (e.g. "es", "ur", "yue"). See [supported languages](https://www.mux.com/docs/guides/robots-supported-languages#translate-audio). Known ISO 639-3 aliases are accepted. Region and script subtags are retained on Mux tracks, but dubbing uses the base language.
            - `track_name` string: Name for the dubbed Mux audio track. Defaults to "{Language} (Auto-dubbed)", e.g. "Spanish (Auto-dubbed)". Mux requires audio track names to be unique on an asset, and an existing track with this name is handled according to `replace_existing_tracks`.
            - `upload_to_mux` boolean: Whether to automatically upload the translated audio track to the Mux asset. Defaults to true. Must be false for audio-only assets; the job returns downloadable audio instead.
            - `replace_existing_tracks` 'fail' | 'replace_all' | 'replace_generated': What to do when the asset already has an audio track in the same language as, or with the same name as, the new dubbed track. Defaults to `fail`, which rejects the request before any dubbing is billed. `replace_all` deletes every such track first. Audio tracks are never auto-generated by Mux Video, so `replace_generated` behaves as `fail` here. The asset's primary audio track is never deleted. Any value other than `fail` requires `upload_to_mux` to be true. Existing tracks are matched by language ignoring region subtags, and by name ignoring case, in any status.
        - AskQuestionsBindingV0
          - `reference_id` string, required: Customer-chosen identifier, unique within the directive. Resource `source.binding` refs point at this handle.
          - `workflow` 'ask-questions', required: The Robots workflow to dispatch — the same identifier as POST /robots/v0/jobs/{workflow}.
          - `inputs` string[]: reference_ids of declared resources this workflow depends on. Each entry is a hard dependency: the workflow is not dispatched until the referenced resource is ready.
          - `params` AskQuestionsBindingParametersV0, required: Parameters for the ask-questions workflow — the same fields accepted by POST /robots/v0/jobs/ask-questions, minus engine-supplied fields such as asset_id.
            - `questions` object[], required: One or more questions to ask about the video, up to 50. Each question can either select from answer_options (defaults to yes/no) or, by setting free_form_reply: true, receive a free-form prose answer.
              - …
            - `language_code` string: BCP 47 language code of the caption track to analyze (e.g. "en", "fr"). When omitted, English subtitles are preferred when available, otherwise the first ready text track is selected.
            - `max_free_form_answer_length` integer: Max character length for free-form answers, between 1 and 1000. Ignored unless at least one question sets free_form_reply: true.
            - `output_steering` AskQuestionsOutputSteeringV0: Curated controls that optionally restrict question answering to an asset time range.
              - …
        - FindKeyMomentsBindingV0
          - `reference_id` string, required: Customer-chosen identifier, unique within the directive. Resource `source.binding` refs point at this handle.
          - `workflow` 'find-key-moments', required: The Robots workflow to dispatch — the same identifier as POST /robots/v0/jobs/{workflow}.
          - `inputs` string[]: reference_ids of declared resources this workflow depends on. Each entry is a hard dependency: the workflow is not dispatched until the referenced resource is ready.
          - `params` FindKeyMomentsBindingParametersV0: Parameters for the find-key-moments workflow — the same fields accepted by POST /robots/v0/jobs/find-key-moments, minus engine-supplied fields such as asset_id.
            - `max_moments` integer: Maximum number of key moments to extract. When omitted, defaults to 10 for assets up to one hour and 25 for longer assets.
            - `target_duration_ms` object: Preferred highlight duration range in milliseconds. When provided, the model will aim to select moments within this range.
              - …
            - `use_shots` boolean: Controls whether video assets are analyzed using Mux shots. When true, shots are generated or reused and visual evidence drives selection. When false or omitted, selection uses transcript evidence and the asset must have a caption track. Not supported for audio-only assets.
            - `output_steering` FindKeyMomentsOutputSteeringV0: Curated output_steering controls for execution scope, selection strategy, title style, audience, taxonomy, and rubric tie-breakers. Scope is enforced; other controls guide model behavior but do not guarantee exact output.
              - …
        - GenerateEngagementInsightsBindingV0
          - `reference_id` string, required: Customer-chosen identifier, unique within the directive. Resource `source.binding` refs point at this handle.
          - `workflow` 'generate-engagement-insights', required: The Robots workflow to dispatch — the same identifier as POST /robots/v0/jobs/{workflow}.
          - `inputs` string[]: reference_ids of declared resources this workflow depends on. Each entry is a hard dependency: the workflow is not dispatched until the referenced resource is ready.
          - `params` GenerateEngagementInsightsBindingParametersV0: Parameters for the generate-engagement-insights workflow — the same fields accepted by POST /robots/v0/jobs/generate-engagement-insights, minus engine-supplied fields such as asset_id.
        - GeneratePremiumCaptionsBindingV0
          - `reference_id` string, required: Customer-chosen identifier, unique within the directive. Resource `source.binding` refs point at this handle.
          - `workflow` 'generate-premium-captions', required: The Robots workflow to dispatch — the same identifier as POST /robots/v0/jobs/{workflow}.
          - `inputs` string[]: reference_ids of declared resources this workflow depends on. Each entry is a hard dependency: the workflow is not dispatched until the referenced resource is ready.
          - `params` GeneratePremiumCaptionsBindingParametersV0: Parameters for the generate-premium-captions workflow — the same fields accepted by POST /robots/v0/jobs/generate-premium-captions, minus engine-supplied fields such as asset_id.
            - `language_code` string: BCP 47 language code of the audio (e.g. "en", "es"). A best-effort hint that biases transcription toward this language — it is not verified against the audio and does not guarantee the output language. When supplied, language detection is skipped and the captions are labeled with this code. The language will be auto-detected when omitted; existing tracks are then checked against `replace_existing_tracks` after transcription, so a same-language conflict errors the job at track creation instead of being rejected up front, and a deleting policy only applies when the detection is confident.
            - `replace_existing_tracks` 'fail' | 'replace_all' | 'replace_generated': What to do when the asset already has a text track in the same language as, or with the same name as, the new caption track. Defaults to `fail`, which rejects the request before any work is billed. `replace_all` deletes every such track first. `replace_generated` deletes only Mux Video auto-generated tracks and rejects if an uploaded track is in the way. Existing tracks are matched by language ignoring region subtags, and by name ignoring case, in any status. When `language_code` is omitted the detected language is used, and tracks are only deleted when the detection is confident; otherwise the job behaves as `fail`.
            - `replace_existing` boolean: Deprecated: use `replace_existing_tracks`. `true` behaves as `replace_all` and `false` as `fail`. `true` cannot be combined with `replace_existing_tracks`; `false` is ignored when both are present.
            - `track_name` string: Custom name for the uploaded Mux text track. Defaults to "{Language} (Generated)", e.g. "English (Generated)". Mux requires text track names to be unique on an asset.
            - `include_speakers` boolean: When true, speaker labels are identified and added to each caption cue. Useful for interviews, podcasts, and multi-speaker content.
            - `include_words` boolean: When true, word-level timestamps are exported as a JSON file accessible via temporary_words_url in the job outputs. The URL expires 7 days after the job completes. Billed at a higher unit rate.
            - `upload_to_mux` boolean: Whether to upload the generated SRT to the Mux asset as a new text track. Defaults to true. When false, no track is created and `replace_existing_tracks` must be `fail`; the generated SRT remains available via `temporary_srt_url`.
            - `phrases` string[]: Best-effort list of words or short phrases (proper nouns, product names, jargon) likely to appear in the audio, used to bias recognition toward correct spellings. Does not guarantee exact output. Each phrase may contain at most 49 characters and 5 words, and must not contain the characters <, >, {, }, [, ], or \.
        - FindBestThumbnailsBindingV0
          - `reference_id` string, required: Customer-chosen identifier, unique within the directive. Resource `source.binding` refs point at this handle.
          - `workflow` 'find-best-thumbnails', required: The Robots workflow to dispatch — the same identifier as POST /robots/v0/jobs/{workflow}.
          - `inputs` string[]: reference_ids of declared resources this workflow depends on. Each entry is a hard dependency: the workflow is not dispatched until the referenced resource is ready.
          - `params` FindBestThumbnailsBindingParametersV0: Parameters for the find-best-thumbnails workflow — the same fields accepted by POST /robots/v0/jobs/find-best-thumbnails, minus engine-supplied fields such as asset_id.
            - `max_thumbnails` integer: Maximum number of candidate thumbnails to return (1-5). Defaults to 5.
            - `output_steering` FindBestThumbnailsOutputSteeringV0: Curated output_steering controls for execution scope, thumbnail scoring strategy, explicit user intent, audience, campaign style, and scoring priorities. Scope is enforced; other controls guide model behavior but do not guarantee exact output.
              - …
            - `update_asset_thumbnail` boolean: When true, the highest-scoring thumbnail's timestamp is written to the Mux asset's thumbnail_time once the job completes, making that frame the asset's default poster image. The new thumbnail will appear for some clients sooner than others, depending on local cache settings.
    - `created_at` integer, required: Unix timestamp (seconds) when the directive was created.
    - `updated_at` integer, required: Unix timestamp (seconds) when the directive was last updated.

## Other responses

- `401`: Missing or invalid Mux credentials
- `403`: Robots is not enabled for this environment. Accept the Robots beta terms in the Mux Dashboard to enable access.
- `404`: Directive not found
- `422`: Invalid request parameters
- `500`: Server error

## Changes

- **2026-10-26** `151835caff06`: 1 info
  - endpoint deprecated
- **2026-10-23** `ed6cb570d60c`: 1 breaking, 2 info
  - added `#/components/schemas/AnalyzeStructureBindingV0, #/components/schemas/GenerateContextualTextBindingV0` to the `data/workflows/items/` response property `oneOf` list for the response status `200`
  - the `language_code` response's property default value `en` was removed for the status `200`
  - added `analyze-structure, generate-contextual-text` discriminator mapping keys to the `data/workflows/items/` response property for the response status `200`
- …earlier changes not shown

[Operation history](https://skmtc.dev/muxinc/apis/mux-api/changes/robots/v0/directives/:DIRECTIVE_ID/get.md)

---

[API](https://skmtc.dev/muxinc/apis/mux-api.md) - [All operations](https://skmtc.dev/muxinc/apis/mux-api/llms.txt) - [OpenAPI document](https://skmtc.dev/muxinc/apis/mux-api/revisions/75b4251a1d96?raw)
