Skip to main content
Glama

Create Customizations

create_customizations
Destructive

Set or replace a Wistia video's player customizations, including SEO, autoplay, captions, plugins, controls, and thumbnail options.

Instructions

Set customizations for a video. Replaces the customizations explicitly set for this video.

Requires api token with one of the following permissions

Read, update & delete anything

Tokens with the "Act with a team member's permissions" permission (all:delegate_to_contact_permissions scope) can also be used. Requests made with such a token are authorized using the permissions of the contact assigned to the token. Requires confirm=true for the requested mutation. May share access, notify people or incur provider charges.

Input Schema

NameRequiredDescriptionDefault
seoNoIf set to true, the video’s metadata will be injected into the page’s markup for SEO.
timeNoSets the starting time of the video.
emailNoAssociate a specific email address with this video’s viewing sessions.
mutedNoIf set to true, the video will start in a muted state.
wmodeNoIf set to transparent, the background behind the player will be transparent instead of black.
pluginNo
volumeNoSets the volume of the video.
accountNoNamed private Wistia account; selects credentials, not a remote account ID.
confirmNoSet true only when the user asked for exactly this action.
payloadNoComplete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
playbarNoIf set to true, the playbar will be available. If set to false, it will be hidden.
preloadNoSets the video’s preload property. Possible values are metadata, auto, none, true, and false.
autoPlayNoIf set to true, the video will play as soon as it’s ready. Note that autoplay might not work on some devices and browsers.
media_idYesThe hashed ID of the video.
stillUrlNoOverrides the thumbnail image that appears before the video plays.
resumableNoDetermines if the video should resume from where the viewer left off. Options are true, false, and auto.
videoFoamNo
doNotTrackNoIf set to true, data for each viewing session will not be tracked.
keyMomentsNoIf set to false, the key moments feature will be disabled.
playButtonNoIndicates if the play button is visible.
qualityMaxNoSpecifies the maximum quality the video will play at.
qualityMinNoSpecifies the minimum quality the video will play at.
fitStrategyNoResizes the video when there's a discrepancy between its aspect ratio and that of its parent container. Options are contain, cover, fill, and none.
playerColorNoChanges the base color of the player. Expects a hexadecimal rgb string.
playsinlineNoIf set to false, videos will play within the native mobile player.
payload_fileNoRegular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload.
playlistLoopNoIf set to true and this video has a playlist, it will loop back to the first video after the last one has finished.
playlistLinksNoEnables the use of specially crafted links on the page to associate with a video, turning them into a playlist.
volumeControlNoWhen set to true, a volume control is available over the video.
fakeFullscreenNoIf set to true, the video will try to play in a pseudo-fullscreen mode on certain mobile devices.
qualityControlNoIf set to false, the video quality selector in the settings menu will be hidden.
silentAutoPlayNoDetermines how videos handle autoplay in contexts where normal autoplay might be blocked. Options are true, allow, and false.
settingsControlNoIf set to true, the settings control will be available.
smallPlayButtonNo
endVideoBehaviorNo
fullscreenButtonNoIf set to true, the fullscreen button will be available as a video control.
thumbnailAltTextNoSets the Thumbnail Alt Text for the media.
playPauseNotifierNoIf set to false, animations for the Pause and Play symbols will be removed.
playbackRateControlNoIf set to false, the playback speed controls in the settings menu will be hidden.
controlsVisibleOnLoadNoIf set to true, controls like the big play button, playbar, volume, etc. will be visible as soon as the video is embedded.
playSuspendedOffScreenNoIf set to false for a muted autoplay video, the video won't pause when out of view.
copyLinkAndThumbnailEnabledNoIf set to false, the option to “Copy Link and Thumbnail” will be removed when right-clicking on the video.
fullscreenOnRotateToLandscapeNoIf set to false, the video will not automatically go to fullscreen mode on mobile when rotated to landscape.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed24 schema fields changedv3.0.0
    • addedInput schema / $defs
      Added value: +{
      +  "endVideoBehavior": {
      +    "description": "Determines what happens when the video ends. Options are default (stays on the last frame), reset (shows thumbnail and controls), and loop (plays again from the start).",
      +    "type": "string"
      +  },
      +  "plugin": {
      +    "properties": {
      +      "captions-v1": {
      +        "description": "Enables closed captions for the video",
      +        "properties": {
      +          "on": {
      +            "description": "If set to true, the captions plugin is enabled and captions controls will be available to viewers.",
      +            "type": "boolean"
      +          },
      +          "onByDefault": {
      +            "description": "If set to true, captions will be turned on automatically when the video loads. Only takes effect when the captions plugin is enabled.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object",
      +        "unevaluatedProperties": false
      +      },
      +      "chapters": {
      +        "properties": {
      +          "chapterList": {
      +            "items": {
      +              "properties": {
      +                "deleted": {
      +                  "type": "string"
      +                },
      +                "id": {
      +                  "type": "string"
      +                },
      +                "time": {
      +                  "type": "string"
      +                },
      +                "title": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object",
      +              "unevaluatedProperties": false
      +            },
      +            "type": "array"
      +          },
      +          "on": {
      +            "type": "boolean"
      +          },
      +          "visibleOnLoad": {
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object",
      +        "unevaluatedProperties": false
      +      },
      +      "postRoll-v1": {
      +        "description": "Adds a Call To Action to your Video",
      +        "properties": {
      +          "autoSize": {
      +            "description": "If set to true, the post-roll will automatically adjust its size.",
      +            "type": "boolean"
      +          },
      +          "conversionOpportunityKey": {
      +            "description": "The key used for tracking conversion opportunities.",
      +            "type": "string"
      +          },
      +          "ctaType": {
      +            "description": "The type of call-to-action to be displayed. Typically set to \"text\". Other options are \"image\" which allows for \"altText\", and \"html\".",
      +            "type": "string"
      +          },
      +          "link": {
      +            "description": "The URL of the link to be displayed.",
      +            "type": "string"
      +          },
      +          "on": {
      +            "description": "If set to true, the post-roll is enabled.",
      +            "type": "boolean"
      +          },
      +          "rewatch": {
      +            "description": "If set to true, allows the video to be rewatched.",
      +            "type": "boolean"
      +          },
      +          "style": {
      +            "properties": {
      +              "backgroundColor": {
      +                "description": "The background color of the post-roll.",
      +                "type": "string"
      +              }
      +            },
      +            "type": "object",
      +            "unevaluatedProperties": false
      +          },
      +          "text": {
      +            "description": "The URL of the text to be displayed.",
      +            "type": "string"
      +          },
      +          "time": {
      +            "description": "The time when the post-roll should be displayed. Can be a string like \"end\" or a number representing seconds.",
      +            "oneOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "number"
      +              }
      +            ],
      +            "unevaluatedProperties": false
      +          }
      +        },
      +        "type": "object",
      +        "unevaluatedProperties": false
      +      },
      +      "socialbar-v1": {
      +        "properties": {
      +          "buttons": {
      +            "type": "string"
      +          },
      +          "height": {
      +            "type": "integer"
      +          },
      +          "showTweetCount": {
      +            "type": "boolean"
      +          },
      +          "tweetText": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object",
      +        "unevaluatedProperties": false
      +      },
      +      "videoThumbnail": {
      +        "properties": {
      +          "clickToPlayButton": {
      +            "description": "If set to false, removes the “Click to Play” button on video thumbnails.",
      +            "type": "boolean"
      +          }
      +        },
      +        "type": "object",
      +        "unevaluatedProperties": false
      +      }
      +    },
      +    "type": "object",
      +    "unevaluatedProperties": false
      +  },
      +  "videoFoam": {
      +    "anyOf": [
      +      {
      +        "type": "boolean"
      +      },
      +      {
      +        "description": "Examples:\n```json\n{\n  \"minWidth\": 400,\n  \"maxWidth\": 960\n}\n```\n```json\n{\n  \"minHeight\": 300,\n  \"maxHeight\": 450\n}\n```\n",
      +        "properties": {
      +          "maxHeight": {
      +            "description": "Maximum height the video can be resized to.",
      +            "type": "integer"
      +          },
      +          "maxWidth": {
      +            "description": "Maximum width the video can be resized to.",
      +            "type": "integer"
      +          },
      +          "minHeight": {
      +            "description": "Minimum height the video can be resized to.",
      +            "type": "integer"
      +          },
      +          "minWidth": {
      +            "description": "Minimum width the video can be resized to.",
      +            "type": "integer"
      +          }
      +        },
      +        "type": "object",
      +        "unevaluatedProperties": false
      +      }
      +    ],
      +    "description": "When set to true, the video will adjust its size according to its parent element. It can also be an object specifying min/max width or height.",
      +    "unevaluatedProperties": false
      +  }
      +}
    • changedInput schema / properties / confirm / description
      Previous value: -"Must be true for the specific user-requested write."New value: +"Set true only when the user asked for exactly this action."
    • addedInput schema / properties / endVideoBehavior / $ref
      Added value: +"#/$defs/endVideoBehavior"
    • removedInput schema / properties / endVideoBehavior / description
      Removed value: -"Determines what happens when the video ends. Options are default (stays on the last frame), reset (shows thumbnail and controls), and loop (plays again from the start)."
    • removedInput schema / properties / endVideoBehavior / type
      Removed value: -"string"
    • addedInput schema / properties / payload / properties / endVideoBehavior / $ref
      Added value: +"#/$defs/endVideoBehavior"
    • removedInput schema / properties / payload / properties / endVideoBehavior / description
      Removed value: -"Determines what happens when the video ends. Options are default (stays on the last frame), reset (shows thumbnail and controls), and loop (plays again from the start)."
    • removedInput schema / properties / payload / properties / endVideoBehavior / type
      Removed value: -"string"
    • addedInput schema / properties / payload / properties / plugin / $ref
      Added value: +"#/$defs/plugin"
    • removedInput schema / properties / payload / properties / plugin / properties
      Removed value: -{
      -  "captions-v1": {
      -    "description": "Enables closed captions for the video",
      -    "properties": {
      -      "on": {
      -        "description": "If set to true, the captions plugin is enabled and captions controls will be available to viewers.",
      -        "type": "boolean"
      -      },
      -      "onByDefault": {
      -        "description": "If set to true, captions will be turned on automatically when the video loads. Only takes effect when the captions plugin is enabled.",
      -        "type": "boolean"
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  },
      -  "chapters": {
      -    "properties": {
      -      "chapterList": {
      -        "items": {
      -          "properties": {
      -            "deleted": {
      -              "type": "string"
      -            },
      -            "id": {
      -              "type": "string"
      -            },
      -            "time": {
      -              "type": "string"
      -            },
      -            "title": {
      -              "type": "string"
      -            }
      -          },
      -          "type": "object",
      -          "unevaluatedProperties": false
      -        },
      -        "type": "array"
      -      },
      -      "on": {
      -        "type": "boolean"
      -      },
      -      "visibleOnLoad": {
      -        "type": "boolean"
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  },
      -  "postRoll-v1": {
      -    "description": "Adds a Call To Action to your Video",
      -    "properties": {
      -      "autoSize": {
      -        "description": "If set to true, the post-roll will automatically adjust its size.",
      -        "type": "boolean"
      -      },
      -      "conversionOpportunityKey": {
      -        "description": "The key used for tracking conversion opportunities.",
      -        "type": "string"
      -      },
      -      "ctaType": {
      -        "description": "The type of call-to-action to be displayed. Typically set to \"text\". Other options are \"image\" which allows for \"altText\", and \"html\".",
      -        "type": "string"
      -      },
      -      "link": {
      -        "description": "The URL of the link to be displayed.",
      -        "type": "string"
      -      },
      -      "on": {
      -        "description": "If set to true, the post-roll is enabled.",
      -        "type": "boolean"
      -      },
      -      "rewatch": {
      -        "description": "If set to true, allows the video to be rewatched.",
      -        "type": "boolean"
      -      },
      -      "style": {
      -        "properties": {
      -          "backgroundColor": {
      -            "description": "The background color of the post-roll.",
      -            "type": "string"
      -          }
      -        },
      -        "type": "object",
      -        "unevaluatedProperties": false
      -      },
      -      "text": {
      -        "description": "The URL of the text to be displayed.",
      -        "type": "string"
      -      },
      -      "time": {
      -        "description": "The time when the post-roll should be displayed. Can be a string like \"end\" or a number representing seconds.",
      -        "oneOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "number"
      -          }
      -        ],
      -        "unevaluatedProperties": false
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  },
      -  "socialbar-v1": {
      -    "properties": {
      -      "buttons": {
      -        "type": "string"
      -      },
      -      "height": {
      -        "type": "integer"
      -      },
      -      "showTweetCount": {
      -        "type": "boolean"
      -      },
      -      "tweetText": {
      -        "type": "string"
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  },
      -  "videoThumbnail": {
      -    "properties": {
      -      "clickToPlayButton": {
      -        "description": "If set to false, removes the “Click to Play” button on video thumbnails.",
      -        "type": "boolean"
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  }
      -}
    • removedInput schema / properties / payload / properties / plugin / type
      Removed value: -"object"
    • removedInput schema / properties / payload / properties / plugin / unevaluatedProperties
      Removed value: -false
    • addedInput schema / properties / payload / properties / videoFoam / $ref
      Added value: +"#/$defs/videoFoam"
    • removedInput schema / properties / payload / properties / videoFoam / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "description": "Examples:\n```json\n{\n  \"minWidth\": 400,\n  \"maxWidth\": 960\n}\n```\n```json\n{\n  \"minHeight\": 300,\n  \"maxHeight\": 450\n}\n```\n",
      -    "properties": {
      -      "maxHeight": {
      -        "description": "Maximum height the video can be resized to.",
      -        "type": "integer"
      -      },
      -      "maxWidth": {
      -        "description": "Maximum width the video can be resized to.",
      -        "type": "integer"
      -      },
      -      "minHeight": {
      -        "description": "Minimum height the video can be resized to.",
      -        "type": "integer"
      -      },
      -      "minWidth": {
      -        "description": "Minimum width the video can be resized to.",
      -        "type": "integer"
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  }
      -]
    • removedInput schema / properties / payload / properties / videoFoam / description
      Removed value: -"When set to true, the video will adjust its size according to its parent element. It can also be an object specifying min/max width or height."
    • removedInput schema / properties / payload / properties / videoFoam / unevaluatedProperties
      Removed value: -false
    • addedInput schema / properties / plugin / $ref
      Added value: +"#/$defs/plugin"
    • removedInput schema / properties / plugin / properties
      Removed value: -{
      -  "captions-v1": {
      -    "description": "Enables closed captions for the video",
      -    "properties": {
      -      "on": {
      -        "description": "If set to true, the captions plugin is enabled and captions controls will be available to viewers.",
      -        "type": "boolean"
      -      },
      -      "onByDefault": {
      -        "description": "If set to true, captions will be turned on automatically when the video loads. Only takes effect when the captions plugin is enabled.",
      -        "type": "boolean"
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  },
      -  "chapters": {
      -    "properties": {
      -      "chapterList": {
      -        "items": {
      -          "properties": {
      -            "deleted": {
      -              "type": "string"
      -            },
      -            "id": {
      -              "type": "string"
      -            },
      -            "time": {
      -              "type": "string"
      -            },
      -            "title": {
      -              "type": "string"
      -            }
      -          },
      -          "type": "object",
      -          "unevaluatedProperties": false
      -        },
      -        "type": "array"
      -      },
      -      "on": {
      -        "type": "boolean"
      -      },
      -      "visibleOnLoad": {
      -        "type": "boolean"
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  },
      -  "postRoll-v1": {
      -    "description": "Adds a Call To Action to your Video",
      -    "properties": {
      -      "autoSize": {
      -        "description": "If set to true, the post-roll will automatically adjust its size.",
      -        "type": "boolean"
      -      },
      -      "conversionOpportunityKey": {
      -        "description": "The key used for tracking conversion opportunities.",
      -        "type": "string"
      -      },
      -      "ctaType": {
      -        "description": "The type of call-to-action to be displayed. Typically set to \"text\". Other options are \"image\" which allows for \"altText\", and \"html\".",
      -        "type": "string"
      -      },
      -      "link": {
      -        "description": "The URL of the link to be displayed.",
      -        "type": "string"
      -      },
      -      "on": {
      -        "description": "If set to true, the post-roll is enabled.",
      -        "type": "boolean"
      -      },
      -      "rewatch": {
      -        "description": "If set to true, allows the video to be rewatched.",
      -        "type": "boolean"
      -      },
      -      "style": {
      -        "properties": {
      -          "backgroundColor": {
      -            "description": "The background color of the post-roll.",
      -            "type": "string"
      -          }
      -        },
      -        "type": "object",
      -        "unevaluatedProperties": false
      -      },
      -      "text": {
      -        "description": "The URL of the text to be displayed.",
      -        "type": "string"
      -      },
      -      "time": {
      -        "description": "The time when the post-roll should be displayed. Can be a string like \"end\" or a number representing seconds.",
      -        "oneOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "number"
      -          }
      -        ],
      -        "unevaluatedProperties": false
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  },
      -  "socialbar-v1": {
      -    "properties": {
      -      "buttons": {
      -        "type": "string"
      -      },
      -      "height": {
      -        "type": "integer"
      -      },
      -      "showTweetCount": {
      -        "type": "boolean"
      -      },
      -      "tweetText": {
      -        "type": "string"
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  },
      -  "videoThumbnail": {
      -    "properties": {
      -      "clickToPlayButton": {
      -        "description": "If set to false, removes the “Click to Play” button on video thumbnails.",
      -        "type": "boolean"
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  }
      -}
    • removedInput schema / properties / plugin / type
      Removed value: -"object"
    • removedInput schema / properties / plugin / unevaluatedProperties
      Removed value: -false
    • addedInput schema / properties / videoFoam / $ref
      Added value: +"#/$defs/videoFoam"
    • removedInput schema / properties / videoFoam / anyOf
      Removed value: -[
      -  {
      -    "type": "boolean"
      -  },
      -  {
      -    "description": "Examples:\n```json\n{\n  \"minWidth\": 400,\n  \"maxWidth\": 960\n}\n```\n```json\n{\n  \"minHeight\": 300,\n  \"maxHeight\": 450\n}\n```\n",
      -    "properties": {
      -      "maxHeight": {
      -        "description": "Maximum height the video can be resized to.",
      -        "type": "integer"
      -      },
      -      "maxWidth": {
      -        "description": "Maximum width the video can be resized to.",
      -        "type": "integer"
      -      },
      -      "minHeight": {
      -        "description": "Minimum height the video can be resized to.",
      -        "type": "integer"
      -      },
      -      "minWidth": {
      -        "description": "Minimum width the video can be resized to.",
      -        "type": "integer"
      -      }
      -    },
      -    "type": "object",
      -    "unevaluatedProperties": false
      -  }
      -]
    • removedInput schema / properties / videoFoam / description
      Removed value: -"When set to true, the video will adjust its size according to its parent element. It can also be an object specifying min/max width or height."
    • removedInput schema / properties / videoFoam / unevaluatedProperties
      Removed value: -false
  2. First observedv2.0.0

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructiveHint=true, openWorldHint=true, idempotentHint=false), the description discloses the required API token permission, the delegated-permission scope that also works, the mandatory confirm=true gate, and a side-effect warning that the call may share access, notify people, or incur provider charges. That is unusually rich disclosure for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and replacement semantics are front-loaded in the first sentence, followed by the authorization and confirmation requirements and the side-effect caveat. The fenced permission block is slightly heavy for one permission value, but every section carries actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 43-parameter destructive mutation with no output schema, the description covers the authorization model, the confirmation gate, and the side-effect profile, which are the hard-to-infer pieces. It leaves the replace-versus-merge behavior of unspecified fields implicit rather than explicit, a minor gap against an otherwise complete picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 91% across 43 parameters, so the schema already documents nearly every field and its options. The description adds no parameter-level detail (e.g., how media_id or confirm interplay), so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Set customizations for a video') and adds the key semantic that it *replaces* explicitly set customizations, which distinguishes it from a partial update. It does not, however, name the sibling tool it differs from (update_customizations), so an agent must infer the boundary itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The replacement semantics ('Replaces the customizations explicitly set for this video') implicitly signal when this full-set operation is appropriate versus a partial update, and the confirm=true requirement is stated. There is no explicit guidance naming when NOT to use it or pointing to update_customizations/delete_customizations as alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools