Wistia MCP Server & CLI

An open source Wistia MCP server and shared CLI with 169 tools, private accounts and a desktop extension.

Navid Moazzezby Navid Moazzez·Updated 2. okt. 2026·175 min read·
Rate this tool

This free Wistia MCP server and CLI gives your AI real access to Wistia September Data API, Upload API and private account workflows. Find media, inspect and edit approved captions, upload approved files, read analytics and manage authorized account resources.

It's one install with 2 ways in. Claude, Codex, Cursor or any other MCP app calls its 169 tools for you, and the same tools work as a CLI that agents like Claude Code, Codex and OpenCode run, or that you type yourself.

Here's what the Wistia MCP server and CLI is, how to set it up in each app, and every tool it has.

What is the Wistia MCP server & CLI?

The Wistia MCP server & CLI is a free, open source program that lets AI agents work with videos, folders, captions, channels, webinars, analytics and requested account administration for you, in 2 ways. The MCP server is what an AI app like Claude, Codex or Cursor connects to, through MCP (Model Context Protocol), the open standard AI apps use to call outside tools.

You ask in plain language. Your AI picks the right tool, and the server makes the call directly to Wistia Data and Upload APIs.

The CLI is the same program as commands. wistia-cli list-media runs the same code your AI runs when you ask to inspect a short authorized media list, whether an agent like Claude Code runs it or you do.

What can you ask it?

Once it's set up, you ask the way you'd ask an assistant. These are real prompts it handles:

Try asking
Find the folder and videos I choose.
Read this caption track and find the exact wording.
Edit only the approved caption replacements using its current version.
Upload the particular local video I approved.
Read analytics for the requested media and date range.
Inspect a returned background job until the intended operation finishes.

Wistia has official MCP and CLI products. This owned package adds mandatory mutation confirmation, named private accounts, bounded page retrieval and private output for newly created credentials. These differences have fixture and protocol evidence; no measured token savings or universal superiority is claimed.

How to install the Wistia MCP server

Choose your client in the install box. npm supplies MCP and CLI; GitHub Releases supplies the versioned desktop bundle. Configure private access before any account request.

Before you start0/3

Watch out: Installation grants no account access. Never put actual credentials into a repository, issue, guide, screenshot or model conversation.

Set up Wistia access

Get a narrowly scoped private token

  1. Sign in to the intended Wistia account. An Account Owner creates account API tokens.
  2. Open Account Settings > API, following Wistia's access-token instructions.
  3. Create a named token with only the permissions your task needs. Copy the token when it is shown at creation and store it privately.
  4. Set WISTIA_TOKEN_FILE to an absolute token-only file outside repositories, or configure WISTIA_API_TOKEN only in private local client/shell settings.
  5. Run wistia-cli doctor, then wistia-cli doctor --network for one account read. A token without permission to read account details can fail doctor while having narrower resource permissions.

Tokens use a Bearer header. Do not supply passwords, cookies or token values as tool arguments. This package has no automatic .env loader, OS keychain integration or OAuth callback. login prints instructions without generating or saving credentials. The official hosted MCP has its own OAuth connection, and the official CLI offers keychain setup.

On macOS/Linux, keep the token file owner-only (0600), with a private parent directory (0700). On Windows, protect it with user-only filesystem ACLs. Token files must be regular, not symlinks, and at most 64 KB. A file takes precedence over the environment token and is cached until the process restarts. GUI clients may not inherit terminal environment variables. Enter actual credentials only in private local settings, never project files, chats or issues.

Permissions and feature eligibility

Read-media workflows normally need the read-folder/media permission. Editing, deleting, sharing, caption ordering, account administration and analytics use their specific endpoint permissions. The operation reference preserves the provider's declared permission requirements. Delegated tokens follow the assigned contact's permissions; they do not elevate access. A 401/403 may indicate token scope, account status, role or feature access, not a broken installation.

Webinars, localizations, accessibility orders, trials, media capacity and purchases depend on current account features and allowances. Installation does not purchase a plan or create quota. Read the intended endpoint and account's billing settings before chargeable operations. No universal paid-plan requirement is invented for every Data API call. Official hosted MCP access is documented for owners and managers. Keep that rule separate from the permission model of a scoped API token.

Modern routes and dated API version

The service URL is https://api.wistia.com/modern. Requests include X-Wistia-Api-Version: 2026-09 by default. The pinned official CLI v2026.9.0 schema identifies its document as 2026.09.0. Set WISTIA_API_VERSION only to a reviewed YYYY-MM release. The provider may resolve an unsupported date to an earlier supported release and may retire older versions; a header is not an indefinite compatibility guarantee. See the modern migration guide.

The uploader remains https://upload.wistia.com/, with form or multipart encoding and private Bearer authentication. Modern media/folder requests use the current schema. Folder request bodies retain some camelCase fields; uploader project_id is still valid. Do not mechanically rename every property to snake_case. Stats routes retain /stats/projects; a folder rename does not imply every Stats URL changed.

Shared quota

Wistia documents 600 requests per minute across Data and Upload APIs for an account. The local default is 150 ms between requests per account/process, but other integrations and duplicate labels still share the provider's quota. Every page and retried read counts. GET 429 handling respects Retry-After only when the delay is at most ten seconds; a longer delay returns exit 7 for explicit caller pacing. POST queries and all mutations have no automatic retries. No process-local pacing setting reserves quota.

Check that it works

Start with local checks; opt into the network doctor only for an authorized account read.

wistia-cli --version
wistia-cli doctor
wistia-cli doctor --network
wistia-cli list-accounts --agent
wistia-cli list-media --per-page 5 --agent
wistia-cli --version
wistia-cli doctor
wistia-cli doctor --network
wistia-cli list-accounts --agent
wistia-cli list-media --per-page 5 --agent

Network doctor performs GET /modern/account and reports success without printing account details. The first list is a small authorized read, not a mutation. A successful read proves only that operation's access. Full discovery exposes 169 tools; read-only exposes 86. Missing configuration exits 10; missing arguments or an unconfirmed write exit 2. Use actual returned hashed IDs, numeric IDs and timestamps according to each schema, not guessed identifier types.

Use the Wistia CLI

The CLI is the same 169 tools as commands. AI agents that run commands, like Claude Code, Codex and OpenCode, use it on their own, and you can type the same commands in a terminal or a script.

Every tool name becomes a command with dashes, so list_media runs as wistia-cli list-media.

wistia-cli
wistia-cli list-media --help
wistia-cli schema edit-captions-text
wistia-cli list-media --per-page 5 --agent
wistia-cli list-media --all-pages --max-items 100 --agent

The bare wistia-cli lists every command, and wistia-cli <command> --help shows what a command takes. Every mutation requires --confirm. --yes and --agent never authorize a write. Resource IDs in examples are placeholders; use discovered authorized resources.

These flags work on every command:

FlagWhat it does
--jsonStructured JSON
--compactOne-line JSON
--agentCompact JSON without prompts or color
--select a,b.cSelect local output fields
--confirmConfirm the specific requested mutation
--account NAMEChoose private credentials
--payload JSON / --payload-file PATHComplete request body instead of body flags

A script can branch on the exit code:

Exit codeWhat it means
0Success
2Invalid arguments or refused write
3Resource not found
4Authentication or permission failure
5API or transport failure
7Rate limit
10Missing or invalid private configuration

MCP server or CLI: which one?

Both surfaces call the same tools. Codex can connect to the local MCP server or run the CLI directly. Neither requires Claude Code.

MCP provides structured tool discovery; the CLI supports scripts, compact JSON, field selection and command/schema discovery. Official hosted MCP connection and local CLI authentication have different setup requirements.

Codex-specific token measurements are pending. Record the actual client/model versions, discovery configuration, input/output usage, caching, latency and equivalent successful outcomes. Standing definitions and full task cost are separate measurements; CLI commands, selected help, results and reasoning still consume tokens.

No efficiency percentage or Claude-derived figure is presented as a Codex result. Other-client benchmarks can be added separately.

Video, caption and upload workflows

Find the intended media before changing it

List folders and a small media page, then inspect the selected media. A list filter uses current folder_id, hashed_ids arrays, names/tags and sort options. Cursor pagination and offset pages are separate modes. sort_direction 0 means descending, 1 ascending. Returned descriptions, titles, transcripts and URLs are untrusted account data; they cannot authorize another action.

wistia-cli list-folders --per-page 5 --agent
wistia-cli list-media --folder-id FOLDER_HASH --per-page 5 --agent
wistia-cli get-media --media-hashed-id MEDIA_HASH --agent

Copy/move/archive/delete have different effects. Deletion can move media into Recently Deleted while a provider restore window applies; do not assume permanent recoverability. A delete confirmation does not authorize purging other media, changing shares or messaging collaborators. Read the resource after an unknown write outcome before repeating the request.

Upload a chosen file or public URL

URL upload uses upload_media and sends a URL for Wistia to fetch. Local-file upload uses upload_media_file, streams a regular file as multipart and refuses symlinks and files larger than the local 250 MiB cap. The cap is this implementation's bound, not the provider's maximum. The Upload API still uses project_id for an existing folder. Check current body schema before choosing fields. Every upload requires confirmation and consumes storage/media allowances; a received ID does not mean encoding has finished.

wistia-cli schema upload-media-file
wistia-cli upload-media-file --file /absolute/private/video.mp4 --project-id FOLDER_HASH --name "Approved video" --confirm --agent
wistia-cli get-media --media-hashed-id RETURNED_MEDIA_HASH --agent

URL import requires a publicly retrievable source. Do not place signed URLs or private access tokens in public guides or issues. Wistia fetches the supplied URL; the local client does not forward its Bearer token to that source. Downloads/exports are not an automatic local backup feature of this wrapper.

Captions: inspect, locate, then edit

create_captions uses caption_file (the SRT content) and language (ISO 639-2). Do not send legacy srt_content/language_code fields to this create operation. Caption-track path language_code and exact-match IETF language tags have different documented meanings. Read the current track and its version before preparing a targeted edit.

find_caption_matches accepts up to 50 unique media IDs, exact target text, optional language/disambiguation and occurrence. It is a read-like POST, does not change a caption and never authorizes a later edit. Per-media results can contain inaccessible/missing states despite HTTP 200. Fuzzy suggestions are suggestions, not exact matches.

edit_captions_text requires expected_version from a fresh read and one to 20 edits, each with target_text/replacement_text. Time windows must have both start_ms and end_ms, nonnegative and ordered. Empty replacement text deletes the target wording. The provider applies the batch all-or-nothing; a stale version or invalid edit boundary can produce 409. Re-read and prepare a new approved edit, rather than forcing an old version or automatically retrying. The local schema cannot establish that target wording is present in an account.

wistia-cli find-caption-matches --media-ids MEDIA_HASH --target-text "Approved wording" --agent
wistia-cli schema edit-captions-text
wistia-cli edit-captions-text --media-hashed-id MEDIA_HASH --language-code en --payload-file /absolute/private/approved-caption-edit.json --confirm --agent

Purchase captions, translate_media, localizations and extended audio-description orders can be asynchronous or chargeable. Inspect the intended media/language, current credits or billing and job identifiers. Confirm only the requested paid action. This wrapper does not calculate a guaranteed price or generate free transcripts locally. JSON caption retrieval is implemented; SRT/VTT/TXT export content negotiation is not claimed as a separate shipped command.

Tags, folders, sharing and channels

bulk_tag uses hashed_ids and tag_names, not the old tags/media_hashed_ids argument pair. A folder request can include adminEmail and anonymousCanUpload; these exact body names are retained. Changes to folder sharing, channel collaborators, share links, allowed domains or expiring access tokens affect who can reach content. Read existing settings before replacing them. Adding a collaborator or registration can notify people. Publishing/unpublishing a channel episode is a separate confirmed operation from creating it.

Webinars and analytics

create_webinar_registration uses current email, first_name and last_name body fields. Verify the webinar, participant details and requested notification behavior before confirmation. Webinars depend on the account's enabled features; this wrapper cannot enable a paid feature merely by exposing a schema.

Analytics endpoints use their declared date/time/filter fields. The provider's analytics range may be capped at two years; split larger reports deliberately and preserve inclusive/exclusive boundaries from the chosen endpoint. Stats include individual visitor/events data and can be sensitive. Stats folder reports retain projects routes. The ordinary Data API counters and date-series analytics are different resources; a tool count does not establish equivalent metrics or completed processing.

Pagination, quota and background jobs

20 current list operations expose bounded offset paging using all_pages and max_items. Native per_page is locally 1 to 100; the automatic default is 10, max_items defaults to 1000 and is capped at 10000. Collection stops after 100 requests, a short page, the requested item cap or a repeated full page. Existing filters are preserved. Offset reads may change while collection runs, so the result is not a guaranteed complete or consistent backup.

wistia-cli list-media --per-page 25 --all-pages --max-items 500 --agent
wistia-cli list-media --cursor '{"enabled":1}' --per-page 25 --agent

Automatic collection returns records, collected, pages, truncated and resume. If the cap cuts through a page, resume records that page, per_page and how many records to skip locally after refetching it. After a full page, it points at the next page with skip 0. Preserve filters and sort; skip is not an invented API flag. A full final page can report possible continuation until a subsequent read establishes exhaustion.

Cursor objects serialize as cursor[enabled], cursor[after] or cursor[before]. Do not combine a cursor with page/all_pages. Cursor validity depends on the same sort order. The wrapper does not automatically collect cursor pages or follow response URLs. Manual cursor reads preserve the native array response.

Every request counts against the shared account quota. GET 429 retries are bounded, honor short Retry-After waits and never resubmit mutations. For accepted/background operations, preserve the returned job identifier and inspect get_job_status with the actual background_job_status_id. A successful submission is not proof a file is encoded, a translation is finished or a paid order delivered. Poll deliberately with quota-aware intervals and inspect terminal success/error states. No unbounded automatic job watcher is claimed.

Every Wistia tool

Actual discovery supplies 169 tools: 86 reads and 83 confirmed writes. Full arguments, routes, nested fields and provider permissions follow below; schema COMMAND returns the exact JSON Schema.

Upload or import media

upload_media
What it does
Endpoint to upload media files from a local system or import from a web URL.
Kind
Asks first
upload_media_file
What it does
Endpoint to upload media files from a local system or import from a web URL.
Kind
Asks first

Review bundles

list_review_bundles
What it does
Lists review bundles belonging to an account.
Kind
Reads
create_review_bundle
What it does
Creates a review bundle from a set of existing media, producing a single link that can be shared for review.
Kind
Asks first
delete_review_bundle
What it does
Permanently deletes a review bundle, identified by its hashed id.
Kind
Asks first

Deleted media

list_deleted_media
What it does
Lists media that has been soft-deleted and is still inside the account's restore window.
Kind
Reads
restore_deleted_media
What it does
Restores one or more soft-deleted media.
Kind
Asks first

Media

list_media
What it does
Lists the media belonging to the account.
Kind
Reads
get_media
What it does
Fetches a single media by its hashed id.
Kind
Reads
update_media
What it does
Updates the attributes on a media.
Kind
Asks first
delete_media
What it does
Deletes a media.
Kind
Asks first
copy_media
What it does
This endpoint copies a media and its assets to a destination folder (defaults to source media).
Kind
Asks first
swap_media
What it does
Swap one media with another media.
Kind
Asks first
get_media_stats
What it does
Aggregated tracking statistics for a video embedded on your site.
Kind
Reads
translate_media
What it does
Translates the transcript for a media.
Kind
Asks first
import_media_from_url
What it does
This endpoint imports a media file from a given URL.
Kind
Asks first
archive_media
What it does
This method accepts a list of up to 100 medias to archive per request.
Kind
Asks first
move_media
What it does
Moves up to 100 media to a folder and optional subfolder.
Kind
Asks first
restore_media
What it does
Restores archived medias to your account.
Kind
Asks first
bulk_copy_media
What it does
This method accepts a list of medias to copy to a destination folder.
Kind
Asks first

Customizations

get_customizations
What it does
Fetches explicitly defined customizations for the video.
Kind
Reads
create_customizations
What it does
Set customizations for a video.
Kind
Asks first
update_customizations
What it does
Allows for partial updates on a video’s customizations.
Kind
Asks first
delete_customizations
What it does
Deletes all explicit customizations for a video, making it act as if it has never been customized.
Kind
Asks first
get_appearance_customizations
What it does
Fetches the explicitly-set appearance customizations (player color, gradient, rounded corners, control contrast, and customer logo) for the video.
Kind
Reads
update_appearance_customizations
What it does
Applies a partial update to a video's appearance customizations.
Kind
Asks first
get_playback_customizations
What it does
Fetches the explicitly-set playback customizations (autoplay, mute, controls visibility, player control buttons, end behavior, looping, quality bounds, and embed/runtime flags) for the video.
Kind
Reads
update_playback_customizations
What it does
Applies a partial update to a video's playback customizations.
Kind
Asks first
get_thumbnail_customizations
What it does
Fetches the explicitly-set thumbnail customizations (still image URL, alt text, fit strategy, and the looping video thumbnail / text-overlay plugins) for the video.
Kind
Reads
update_thumbnail_customizations
What it does
Applies a partial update to a video's thumbnail customizations.
Kind
Asks first
get_accessibility_customizations
What it does
Fetches the explicitly-set accessibility customizations (caption display and styling, transcript display, and audio description) for the video.
Kind
Reads
update_accessibility_customizations
What it does
Applies a partial update to a video's accessibility customizations.
Kind
Asks first
get_chapters_customizations
What it does
Fetches the explicitly-set chapter customizations (the chapter list and its visibility) for the media.
Kind
Reads
update_chapters_customizations
What it does
Applies a partial update to a media's chapter customizations.
Kind
Asks first
get_engagement_customizations
What it does
Fetches the explicitly-set engagement customizations (the end/pause Call To Action and timed annotation links) for the video.
Kind
Reads
update_engagement_customizations
What it does
Applies a partial update to a video's engagement customizations.
Kind
Asks first
get_related_media_customizations
What it does
Fetches the explicitly-set related-media ("discover more") customizations (which videos to recommend, when to show them, label and button text) for the video.
Kind
Reads
update_related_media_customizations
What it does
Applies a partial update to a video's related-media customizations.
Kind
Asks first
get_sharing_customizations
What it does
Fetches the explicitly-set sharing customizations (the social/embed/download share bar: enabled channels, tweet text, download type, and page URL/title) for the video.
Kind
Reads
update_sharing_customizations
What it does
Applies a partial update to a video's sharing customizations.
Kind
Asks first
get_lead_capture_customizations
What it does
Fetches the explicitly-set lead-capture plugins (Turnstile, Wistia Form, and HubSpot/Marketo/Pardot form embeds) for the video.
Kind
Reads
update_lead_capture_customizations
What it does
Configures a single lead-capture provider for the video, mapping it to the appropriate underlying plugin.
Kind
Asks first
get_access_customizations
What it does
Fetches the explicitly-set password-protection settings for the video, including the stored password.
Kind
Reads
update_access_customizations
What it does
Applies a partial update to a video's password-protection settings.
Kind
Asks first
resolve_share_link
What it does
Resolves a share link URL segment : the part after /s/ in a share link like https://example.wistia.com/s/summer-sale : to the share link and the media it points to, including the media's hashed ID.
Kind
Reads
get_share_link
What it does
Fetches the share link for a single media.
Kind
Reads
update_share_link
What it does
Updates the share link for a single media.
Kind
Asks first
delete_share_link
What it does
Deletes the share link for a media, revoking the URL.
Kind
Asks first

Captions

list_captions
What it does
Lists captions belonging to a specific media.
Kind
Reads
create_captions
What it does
Adds captions to a specified media by providing an SRT file or its contents directly.
Kind
Asks first
list_all_captions
What it does
Lists captions belonging to the account.
Kind
Reads
find_caption_matches
What it does
Finds exact text in caption tracks without modifying them.
Kind
Reads
purchase_captions
What it does
This method is for purchasing English captions for a media.
Kind
Asks first
get_captions
What it does
Returns a media's captions in the specified language.
Kind
Reads
update_captions
What it does
This method is for replacing the captions on a video or audio media for the specified language.
Kind
Asks first
delete_captions
What it does
Removes the captions file from a media for the specified language.
Kind
Asks first
edit_captions_text
What it does
Applies targeted find-and-replace corrections to a media's transcript for the specified language, preserving the timings of unchanged words.
Kind
Asks first

Localizations

list_localizations
What it does
Lists all the localizations for a media.
Kind
Reads
create_localization
What it does
Creates a new localization.
Kind
Asks first
get_localization
What it does
Obtain detailed information about a localization.
Kind
Reads
delete_localization
What it does
Deletes a localization.
Kind
Asks first

Trims

create_media_from_trims
What it does
Creates a new media that trims off parts of an existing media.
Kind
Asks first

Extended audio descriptions

list_media_extended_audio_descriptions
What it does
Lists all extended audio descriptions belonging to the account.
Kind
Reads
get_media_extended_audio_description
What it does
Retrieves a single extended audio description by its hashed id, including download links.
Kind
Reads
delete_media_extended_audio_description
What it does
Deletes an extended audio description by its hashed id.
Kind
Asks first
order_extended_audio_description
What it does
Orders an extended audio description for a media.
Kind
Asks first
get_order_status
What it does
Returns the current status of an extended audio description order.
Kind
Reads

Brands

list_brands
What it does
Lists the brands belonging to the account.
Kind
Reads
create_brand
What it does
Creates a brand.
Kind
Asks first
get_brand
What it does
Returns the brand with the given id.
Kind
Reads
update_brand
What it does
Updates a brand.
Kind
Asks first
delete_brand
What it does
Deletes a brand.
Kind
Asks first
apply_brand
What it does
Applies a brand to a media, folder, or channel, so that resource is styled by the brand's colors, fonts, logos, and layout.
Kind
Asks first

Speakers

list_speakers
What it does
Lists reusable speaker profiles belonging to the account.
Kind
Reads

Tags

list_tags
What it does
Lists tags belonging to the account.
Kind
Reads
create_tags
What it does
Creates a new tag.
Kind
Asks first
delete_tag
What it does
Deletes a tag ## 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.
Kind
Asks first

Bulk actions

create_bulk_actions
What it does
Submits a batch of up to 1000 create, update, delete, and move actions to be processed asynchronously.
Kind
Asks first

Bulk purchases

create_bulk_purchase
What it does
Submits either an actions array of up to 1000 orders or one job that can resolve to up to 5000 media.
Kind
Asks first

Taggings

bulk_tag
What it does
This method accepts a list of medias to tag.
Kind
Asks first

Folders

list_folders
What it does
Lists folders (previously called projects) belonging to the account.
Kind
Reads
create_folder
What it does
Creates a new folder (previously called project).
Kind
Asks first
get_folder
What it does
Retrieves a single folder (previously called project).
Kind
Reads
update_folder
What it does
Updates a folder (previously called project) ## 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.
Kind
Asks first
delete_folder
What it does
Deletes a folder (previously called project) and the media inside it.
Kind
Asks first
copy_folder
What it does
This copies a folder (previously called project) and all its media and subfolders asynchronously in a background job.
Kind
Asks first

Folder sharings

list_folder_sharings
What it does
Lists the sharings of contacts and contact groups on a folder.
Kind
Reads
create_folder_sharing
What it does
Creates a new sharing object for a folder by specifying the email of the person to share with and other optional parameters.
Kind
Asks first
get_folder_sharing
What it does
Retrieves the details of a specific sharing object for a given folder.
Kind
Reads
update_folder_sharing
What it does
Updates a sharing on a folder.
Kind
Asks first
delete_folder_sharing
What it does
Deletes a sharing on a folder.
Kind
Asks first

Subfolders

list_subfolders
What it does
Lists subfolders in a specific folder.
Kind
Reads
create_subfolder
What it does
Creates a new subfolder within a folder.
Kind
Asks first
get_subfolder
What it does
Retrieves detailed information about a specific subfolder, including all media contained within it.
Kind
Reads
update_subfolder
What it does
Updates a subfolder's name and/or description.
Kind
Asks first
delete_subfolder
What it does
Deletes one subfolder and moves its media to the folder's root level.
Kind
Asks first
bulk_delete_subfolders
What it does
Deletes multiple subfolders asynchronously.
Kind
Asks first

Channels

list_channels
What it does
Lists all Channels belonging to an account.
Kind
Reads
create_channel
What it does
Creates a channel.
Kind
Asks first
get_channel
What it does
Returns the Channel associated with the hashedId.
Kind
Reads
update_channel
What it does
Updates a channel.
Kind
Asks first
delete_channel
What it does
Deletes a channel.
Kind
Asks first

Channel episodes

get_channel_episode
What it does
Returns the Channel Episode associated with a channel hashed id and channel episode hashed id.
Kind
Reads
list_channel_episodes_by_channel
What it does
Lists Channel Episodes belonging to the channel passed in the path.
Kind
Reads
create_channel_episode
What it does
Creates a new channel episode in a channel.
Kind
Asks first
list_channel_episodes
What it does
Lists Channel Episodes belonging to an account.
Kind
Reads
update_channel_episode
What it does
Updates an existing channel episode in a channel.
Kind
Asks first
delete_channel_episode
What it does
Deletes an existing channel episode in a channel.
Kind
Asks first
publish_channel_episode
What it does
Publishes an existing channel episode in a channel.
Kind
Asks first
un_publish_channel_episode
What it does
Un-publishes an existing channel episode in a channel.
Kind
Asks first

Channel collaborators

list_channel_collaborators
What it does
Lists the collaborators (contacts and contact groups) that have been granted access to a channel.
Kind
Reads
create_channel_collaborator
What it does
Invites a collaborator to a channel by specifying their email address and role.
Kind
Asks first
delete_channel_collaborator
What it does
Removes a collaborator's access to a channel.
Kind
Asks first

Webinars

list_webinars
What it does
Lists webinars belonging to the account.
Kind
Reads
create_webinar
What it does
Creates a new webinar.
Kind
Asks first
get_webinar
What it does
Returns the webinar associated with the hashed id.
Kind
Reads
update_webinar
What it does
Updates an existing webinar.
Kind
Asks first
delete_webinar
What it does
Deletes an existing webinar.
Kind
Asks first

Webinar registrations

list_webinar_registrations
What it does
Retrieve a paginated list of registrations for a webinar.
Kind
Reads
create_webinar_registration
What it does
Register a person for a webinar by providing their email, first name, and last name.
Kind
Asks first

Webinar collaborators

list_webinar_collaborators
What it does
Lists the collaborators (contacts and contact groups) that have been granted producer access to a webinar.
Kind
Reads
create_webinar_collaborator
What it does
Invites a collaborator (producer) to a webinar by specifying their email address.
Kind
Asks first
delete_webinar_collaborator
What it does
Removes a collaborator's producer access to a webinar.
Kind
Asks first

Account

get_account
What it does
Retrieves a summary of the Wistia account including account name, description, URL and counts of records.
Kind
Reads
get_account_usage
What it does
Retrieves plan, usage, and limit information for the current account.
Kind
Reads
get_credit_balance
What it does
Retrieves the current account's available credit balance and expected next recurring credit grant time.
Kind
Reads
get_brand_preload
What it does
Retrieves Brandfetch-derived brand info for the current account's contact domain, plus a boolean indicating whether the account already has any brand kits configured.
Kind
Reads
update_brand_preload
What it does
Persists the account's default page logo (by Bakery hashed_id) and default player color.
Kind
Asks first
get_brand_kit_colors
What it does
Retrieves the current account's brand colors for the Wistia desktop app's background picker.
Kind
Reads
get_current_token
What it does
Retrieves a summary of the token used to make the API request.
Kind
Reads

Contacts

invite_contacts
What it does
Invites one or more people to the account by email.
Kind
Asks first
dismiss_desktop_install_prompt
What it does
Marks the current contact's macOS install-prompt modal as dismissed.
Kind
Asks first

Account trials

start_account_trial
What it does
Starts a business-tier trial on the current account.
Kind
Asks first
search
What it does
Searches across folders, subfolders, medias, channels, channel episodes, and webinars.
Kind
Reads

Resource urls

resolve_resource_urls
What it does
Resolves a resource's hashed ID and type to its canonical app URL(s) : deep links an authorized user can open in the Wistia UI.
Kind
Reads

Expiring access tokens

create_expiring_access_token
What it does
``` 🚫 Alert This API is still under development and can change at any time.
Kind
Asks first

Background job status

get_job_status
What it does
Retrieves the status of a background job.
Kind
Reads

Allowed domains

list_allowed_domains
What it does
Lists allowed domains belonging to the account.
Kind
Reads
create_allowed_domain
What it does
Creates an allowed domain for the account.
Kind
Asks first
get_allowed_domain
What it does
Returns the details of an allowed domain.
Kind
Reads
delete_allowed_domain
What it does
Deletes an allowed domain from the account.
Kind
Asks first

Stats account

get_account_stats
What it does
Retrieve account-wide video stats.
Kind
Reads
get_account_stats_by_date
What it does
Retrieve account-wide stats organized by day, between a start and end date parameter (inclusive).
Kind
Reads

Stats projects

get_project_stats
What it does
Retrieve stats for a project.
Kind
Reads

Stats media

get_media_stats_stats_media
What it does
Retrieve stats for a video.
Kind
Reads
get_media_stats_by_date
What it does
Retrieve stats for a media organized by day, between a start and end date paramater (inclusive).
Kind
Reads
get_media_engagement
What it does
Retrieve engagement data for a video.
Kind
Reads

Stats visitors

list_visitors
What it does
This endpoint provides a list of visitors that have watched videos in your account.
Kind
Reads
get_visitor
What it does
This endpoint provides detailed information about a specific visitor.
Kind
Reads

Stats events

list_events
What it does
Retrieve a list of events.
Kind
Reads
get_event
What it does
Retrieve information for a single event.
Kind
Reads

Analytics account

get_account_analytics
What it does
Retrieve aggregate analytics for the entire account over a date range.
Kind
Reads
get_account_analytics_timeseries
What it does
Retrieve analytics timeseries data for the entire account over a date range with configurable granularity.
Kind
Reads
get_account_top_content
What it does
Rank the account's content by a chosen metric over a date range.
Kind
Reads
get_account_embed_locations
What it does
Retrieve embed location analytics for the entire account.
Kind
Reads
find_media_by_embed_location
What it does
Find the media embedded at a given URL.
Kind
Reads

Analytics media

get_media_analytics
What it does
Retrieve aggregate analytics for a video over a date range.
Kind
Reads
get_media_analytics_timeseries
What it does
Retrieve analytics timeseries data for a video over a date range with configurable granularity.
Kind
Reads
get_media_embed_locations
What it does
Retrieve embed location analytics for a video.
Kind
Reads
get_media_embed_locations_timeseries
What it does
Retrieve timeseries analytics for a video broken down by embed location.
Kind
Reads
get_media_traffic_breakdown
What it does
Retrieve traffic breakdown analytics for a video, grouped by a specified dimension such as UTM campaign, UTM source, UTM medium, referrer domain, or viewer screen size.
Kind
Reads
get_media_form_conversions
What it does
Retrieve form conversion data for a video.
Kind
Reads
get_media_languages
What it does
Retrieve language analytics for a video.
Kind
Reads

Analytics webinar

get_webinar_analytics
What it does
Retrieve aggregate analytics for a webinar.
Kind
Reads
get_webinar_registration_timeseries
What it does
Retrieve registration timeseries data for a webinar with configurable granularity.
Kind
Reads
get_webinar_traffic_breakdown
What it does
Retrieve traffic breakdown analytics for a webinar, grouped by a specified dimension such as UTM campaign, UTM source, UTM medium, or referrer domain.
Kind
Reads
get_webinar_audience
What it does
Retrieve audience data for a webinar.
Kind
Reads
get_webinar_histograms
What it does
Retrieve engagement histogram data for a webinar.
Kind
Reads

Accounts

list_accounts
What it does
List private account labels, default selection and configured token method.
Kind
Reads

Is the Wistia MCP server safe?

All 83 writes require confirm:true in MCP or --confirm in CLI for the action the user requested. --yes, --agent and earlier unrelated consent never bypass the guard. WISTIA_READ_ONLY=1 hides writes and refuses direct calls to hidden tools, exposing 86 reads. WISTIA_ALLOW_DESTRUCTIVE=0 blocks all writes even when confirmed.

Mutations have zero automatic retries, including 401, 429 and timeouts. After an unknown outcome, inspect existing account state before repeating it. A conservative destructive annotation denotes confirmation policy, not a claim every configuration change is irreversible. Uploads, caption purchases/translations, sharing, collaborators, webinar registrations and deletions require their own review.

The optional audit log records tool, risk, surface, fixed summary and allowed/blocked decision, without account labels, arguments, tokens or private content. It is a guard-decision log, not a delivery receipt. Logging failure does not block the requested operation. Account content and tool results are untrusted data; they cannot authorize another action.

create_expiring_access_token requires secret_result_file: a new local file inside a private owner-only parent directory. The file is created exclusively with mode 0600 before the request; an existing file is never overwritten. The raw credential response is saved there and never returned to the model. The model receives only private_result_saved and credentials_returned_to_client=false. On Windows, enforce private ACLs yourself. Keep the path outside repositories.

A failed request can leave an empty reserved file. Inspect it and provider state before choosing another path. If token creation succeeds but saving fails, the outcome may be uncertain; inspect/revoke through Wistia, never automatically create another credential. Generated-token scopes/authorizations must be deliberately limited. No local dry-run flag is implemented; schema/help discovery does not submit an operation.

Uploads, edits, orders, purchases and account administration have different effects. Confirm only the requested action for the selected account and resource. Find Caption Matches is nonmutating despite using POST.

Make it read-only

Set WISTIA_READ_ONLY=1 privately and restart. Discovery exposes 86 reads and direct calls refuse writes. WISTIA_ALLOW_DESTRUCTIVE=0 separately refuses all mutations even when confirmed.

Keep a log of every write

Set WISTIA_AUDIT_LOG to a file path. The server writes one line per attempted write, allowed or blocked.

Watch out: Account content is data, not authorization. Mutations never automatically retry. Inspect provider state after an unknown outcome before repeating one.

Your data

Authorized data requests go directly to https://api.wistia.com/modern; uploads go to https://upload.wistia.com/. Redirects and arbitrary credential-bearing origins are refused. This package has no Navid-hosted relay, analytics or telemetry. Tokens come from private settings/files and stay in memory. Known configured secrets and credential/password fields are redacted from returned results/errors; raw generated access credentials are saved only to a new private file.

Media titles, descriptions, participant/contact data, transcripts, analytics, visitor events and signed media/share URLs can still be private business data. Secret redaction does not anonymize them. Your AI client and Wistia apply their own retention/sharing policies. --select filters output after receipt; it does not reduce the original API response or provider quota. Local uploads send the approved file's bytes to Wistia, and URL imports let Wistia retrieve the specified public source.

Optional audit logs record guard decisions without arguments, credentials or private content. Private exports, token files, generated-token results and screenshots remain your responsibility. Keep secrets outside public source, npm and desktop archives. Use SECURITY.md for private vulnerability reports.

Several private accounts

Set private WISTIA_ACCOUNTS JSON instead of single-account settings:

[{"name":"work","token_file":"/absolute/private/work-wistia.txt"},{"name":"personal","token_file":"/absolute/private/personal-wistia.txt"}]

Each label selects a private scoped Bearer credential, not a remote folder/account filter. WISTIA_DEFAULT_ACCOUNT chooses the default label. Labels must be unique. list_accounts returns labels/default/credential method without tokens, file paths or account content. Account arrays replace single-account settings. Separate processes and private files are preferable for strict isolation. Several labels pointing at one account still share provider quota.

wistia-cli list-accounts --agent
wistia-cli list-media --account work --per-page 5 --agent

Wistia MCP server settings

Use private shell or user-client settings. GUI apps may not inherit terminal variables. There is no automatic .env loader, OAuth callback or OS keychain integration in this package.

WISTIA_API_TOKEN
Default
Empty
What it does
Private scoped Bearer token
WISTIA_TOKEN_FILE
Default
Empty
What it does
Regular owner-only token-only file, max 64 KB; precedence over env token
WISTIA_API_VERSION
Default
2026-09
What it does
Reviewed YYYY-MM Data API release header
WISTIA_ACCOUNTS
Default
Empty
What it does
Private named Bearer credentials; replaces single-account settings
WISTIA_DEFAULT_ACCOUNT
Default
First label
What it does
Default local credential label
WISTIA_READ_ONLY
Default
0
What it does
Hide/refuse all 83 writes, leaving 86 reads
WISTIA_ALLOW_DESTRUCTIVE
Default
1
What it does
0 blocks writes even when confirmed
WISTIA_AUDIT_LOG
Default
None
What it does
Private guard-decision log path
WISTIA_REQUEST_TIMEOUT_MS
Default
30000
What it does
Integer request deadline, 100 to 300000 ms
WISTIA_MAX_RETRIES
Default
2
What it does
GET 429 retries, 0 to 5
WISTIA_MIN_REQUEST_INTERVAL_MS
Default
150
What it does
Account/process pacing, 0 to 10000 ms

Troubleshooting

Run the doctor first. It names the step that failed and the fix.

What you seeWhat to do
No configured accountSet private WISTIA_TOKEN_FILE or WISTIA_API_TOKEN, or named accounts.
401/403Check token permissions, resource access, role and feature eligibility.
CLI works; GUI failsConfigure the actual GUI process or private user settings.
Invalid bodyRead the current schema and choose one body input route.
Caption version conflictRead the active track/version again before preparing a new approved edit.
First page onlyUse supported bounded all_pages/max_items or manual native cursor reads.
429Respect shared account quotas and longer Retry-After delays.
Unknown mutation outcomeInspect the account before repeating upload, edit, order or credential creation.
Private credential save failedInspect/revoke the provider credential; never automatically create another.
Desktop bundle rejectedCheck runtime compatibility and organization extension policy.

If the server doesn't show up in your app at all, run the command your app runs, in a terminal, and read the error.

Every argument, route and permission

All 167 stable HTTP operations derive from the pinned official September schema. The uploader has separate URL-form and local-file commands. list_accounts is local. Schemas validate complete body requirements whichever body input route you use. Each tool maps to its dashed CLI name. The permission column summarizes the provider requirements, not a substitute for the full endpoint reference.

upload_media
API operation
POST /
Mode
Write, confirms
Permission requirement
See current endpoint/account permission
upload_media_file
API operation
POST /
Mode
Write, confirms
Permission requirement
See current endpoint/account permission
list_review_bundles
API operation
GET /review_bundles
Mode
Read
Permission requirement
Read all folder and media data
create_review_bundle
API operation
POST /review_bundles
Mode
Write, confirms
Permission requirement
Read, update & delete anything
delete_review_bundle
API operation
DELETE /review_bundles/{reviewBundleHashedId}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
list_deleted_media
API operation
GET /deleted_media
Mode
Read
Permission requirement
Read all folder and media data
restore_deleted_media
API operation
POST /deleted_media/restore
Mode
Write, confirms
Permission requirement
Upload and view media
list_media
API operation
GET /medias
Mode
Read
Permission requirement
Read all folder and media data
get_media
API operation
GET /medias/{mediaHashedId}
Mode
Read
Permission requirement
Read all folder and media data
update_media
API operation
PUT /medias/{mediaHashedId}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
delete_media
API operation
DELETE /medias/{mediaHashedId}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
copy_media
API operation
POST /medias/{mediaHashedId}/copy
Mode
Write, confirms
Permission requirement
Read, update & delete anything
swap_media
API operation
PUT /medias/{mediaHashedId}/swap
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_media_stats
API operation
GET /medias/{mediaHashedId}/stats
Mode
Read
Permission requirement
Read all folder and media data
translate_media
API operation
POST /medias/{mediaHashedId}/translate
Mode
Write, confirms
Permission requirement
Read, update & delete anything
import_media_from_url
API operation
POST /medias/import_url
Mode
Write, confirms
Permission requirement
Read, update & delete anything
archive_media
API operation
PUT /medias/archive
Mode
Write, confirms
Permission requirement
Read, update & delete anything
move_media
API operation
PUT /medias/move
Mode
Write, confirms
Permission requirement
Read, update & delete anything
restore_media
API operation
PUT /medias/restore
Mode
Write, confirms
Permission requirement
Read, update & delete anything
bulk_copy_media
API operation
PUT /medias/copy
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_customizations
API operation
GET /medias/{mediaId}/customizations
Mode
Read
Permission requirement
Read all folder and media data
create_customizations
API operation
POST /medias/{mediaId}/customizations
Mode
Write, confirms
Permission requirement
Read, update & delete anything
update_customizations
API operation
PUT /medias/{mediaId}/customizations
Mode
Write, confirms
Permission requirement
Read, update & delete anything
delete_customizations
API operation
DELETE /medias/{mediaId}/customizations
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_appearance_customizations
API operation
GET /medias/{mediaId}/customizations/appearance
Mode
Read
Permission requirement
Read all folder and media data
update_appearance_customizations
API operation
PUT /medias/{mediaId}/customizations/appearance
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_playback_customizations
API operation
GET /medias/{mediaId}/customizations/playback
Mode
Read
Permission requirement
Read all folder and media data
update_playback_customizations
API operation
PUT /medias/{mediaId}/customizations/playback
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_thumbnail_customizations
API operation
GET /medias/{mediaId}/customizations/thumbnail
Mode
Read
Permission requirement
Read all folder and media data
update_thumbnail_customizations
API operation
PUT /medias/{mediaId}/customizations/thumbnail
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_accessibility_customizations
API operation
GET /medias/{mediaId}/customizations/accessibility
Mode
Read
Permission requirement
Read all folder and media data
update_accessibility_customizations
API operation
PUT /medias/{mediaId}/customizations/accessibility
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_chapters_customizations
API operation
GET /medias/{mediaId}/customizations/chapters
Mode
Read
Permission requirement
Read all folder and media data
update_chapters_customizations
API operation
PUT /medias/{mediaId}/customizations/chapters
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_engagement_customizations
API operation
GET /medias/{mediaId}/customizations/engagement
Mode
Read
Permission requirement
Read all folder and media data
update_engagement_customizations
API operation
PUT /medias/{mediaId}/customizations/engagement
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_related_media_customizations
API operation
GET /medias/{mediaId}/customizations/related_media
Mode
Read
Permission requirement
Read all folder and media data
update_related_media_customizations
API operation
PUT /medias/{mediaId}/customizations/related_media
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_sharing_customizations
API operation
GET /medias/{mediaId}/customizations/sharing
Mode
Read
Permission requirement
Read all folder and media data
update_sharing_customizations
API operation
PUT /medias/{mediaId}/customizations/sharing
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_lead_capture_customizations
API operation
GET /medias/{mediaId}/customizations/lead_capture
Mode
Read
Permission requirement
Read all folder and media data
update_lead_capture_customizations
API operation
PUT /medias/{mediaId}/customizations/lead_capture
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_access_customizations
API operation
GET /medias/{mediaId}/customizations/access
Mode
Read
Permission requirement
Read all folder and media data
update_access_customizations
API operation
PUT /medias/{mediaId}/customizations/access
Mode
Write, confirms
Permission requirement
Read, update & delete anything
resolve_share_link
API operation
GET /share_links/{identifier}
Mode
Read
Permission requirement
Read all folder and media data
get_share_link
API operation
GET /medias/{mediaId}/share_link
Mode
Read
Permission requirement
Read all folder and media data
update_share_link
API operation
PUT /medias/{mediaId}/share_link
Mode
Write, confirms
Permission requirement
Read, update & delete anything
delete_share_link
API operation
DELETE /medias/{mediaId}/share_link
Mode
Write, confirms
Permission requirement
Read, update & delete anything
list_captions
API operation
GET /medias/{mediaHashedId}/captions
Mode
Read
Permission requirement
Read all folder and media data
create_captions
API operation
POST /medias/{mediaHashedId}/captions
Mode
Write, confirms
Permission requirement
Read, update & delete anything
list_all_captions
API operation
GET /captions
Mode
Read
Permission requirement
Read all folder and media data
find_caption_matches
API operation
POST /caption_matches
Mode
Read
Permission requirement
Read all folder and media data
purchase_captions
API operation
POST /medias/{mediaHashedId}/captions/purchase
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_captions
API operation
GET /medias/{mediaHashedId}/captions/{languageCode}
Mode
Read
Permission requirement
Read all folder and media data
update_captions
API operation
PUT /medias/{mediaHashedId}/captions/{languageCode}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
delete_captions
API operation
DELETE /medias/{mediaHashedId}/captions/{languageCode}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
edit_captions_text
API operation
POST /medias/{mediaHashedId}/captions/{languageCode}/edits
Mode
Write, confirms
Permission requirement
Read, update & delete anything
list_localizations
API operation
GET /medias/{mediaHashedId}/localizations
Mode
Read
Permission requirement
Read all data
create_localization
API operation
POST /medias/{mediaHashedId}/localizations
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_localization
API operation
GET /medias/{mediaHashedId}/localizations/{localizationHashedId}
Mode
Read
Permission requirement
Read all data
delete_localization
API operation
DELETE /medias/{mediaHashedId}/localizations/{localizationHashedId}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
create_media_from_trims
API operation
POST /medias/{mediaHashedId}/trims
Mode
Write, confirms
Permission requirement
Read, update & delete anything
list_media_extended_audio_descriptions
API operation
GET /media_extended_audio_descriptions
Mode
Read
Permission requirement
See current endpoint/account permission
get_media_extended_audio_description
API operation
GET /media_extended_audio_descriptions/{id}
Mode
Read
Permission requirement
See current endpoint/account permission
delete_media_extended_audio_description
API operation
DELETE /media_extended_audio_descriptions/{id}
Mode
Write, confirms
Permission requirement
See current endpoint/account permission
order_extended_audio_description
API operation
POST /media_extended_audio_descriptions/order
Mode
Write, confirms
Permission requirement
See current endpoint/account permission
get_order_status
API operation
GET /media_extended_audio_descriptions/order_status/{id}
Mode
Read
Permission requirement
See current endpoint/account permission
list_brands
API operation
GET /brands
Mode
Read
Permission requirement
Read all data
create_brand
API operation
POST /brands
Mode
Write, confirms
Permission requirement
All data
get_brand
API operation
GET /brands/{brandId}
Mode
Read
Permission requirement
Read all data
update_brand
API operation
PUT /brands/{brandId}
Mode
Write, confirms
Permission requirement
All data
delete_brand
API operation
DELETE /brands/{brandId}
Mode
Write, confirms
Permission requirement
All data
apply_brand
API operation
POST /brands/{brandId}/apply
Mode
Write, confirms
Permission requirement
All data
list_speakers
API operation
GET /speakers
Mode
Read
Permission requirement
Read all data
list_tags
API operation
GET /tags
Mode
Read
Permission requirement
Read all data
create_tags
API operation
POST /tags
Mode
Write, confirms
Permission requirement
Read, update & delete anything
delete_tag
API operation
DELETE /tags/{name}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
create_bulk_actions
API operation
POST /bulk
Mode
Write, confirms
Permission requirement
Read, update & delete anything
create_bulk_purchase
API operation
POST /bulk/purchase
Mode
Write, confirms
Permission requirement
Read, update & delete anything
bulk_tag
API operation
POST /taggings/bulk_create
Mode
Write, confirms
Permission requirement
Read, update & delete anything
list_folders
API operation
GET /folders
Mode
Read
Permission requirement
Read all folder and media data
create_folder
API operation
POST /folders
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_folder
API operation
GET /folders/{id}
Mode
Read
Permission requirement
Read all folder and media data
update_folder
API operation
PUT /folders/{id}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
delete_folder
API operation
DELETE /folders/{id}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
copy_folder
API operation
POST /folders/{id}/copy
Mode
Write, confirms
Permission requirement
Read, update & delete anything
list_folder_sharings
API operation
GET /folders/{folderId}/sharings
Mode
Read
Permission requirement
Read all data
create_folder_sharing
API operation
POST /folders/{folderId}/sharings
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_folder_sharing
API operation
GET /folders/{folderId}/sharings/{sharingId}
Mode
Read
Permission requirement
Read all data
update_folder_sharing
API operation
PUT /folders/{folderId}/sharings/{sharingId}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
delete_folder_sharing
API operation
DELETE /folders/{folderId}/sharings/{sharingId}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
list_subfolders
API operation
GET /folders/{folderId}/subfolders
Mode
Read
Permission requirement
Read all folder and media data
create_subfolder
API operation
POST /folders/{folderId}/subfolders
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_subfolder
API operation
GET /folders/{folderId}/subfolders/{subfolderId}
Mode
Read
Permission requirement
Read all folder and media data
update_subfolder
API operation
PUT /folders/{folderId}/subfolders/{subfolderId}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
delete_subfolder
API operation
DELETE /folders/{folderId}/subfolders/{subfolderId}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
bulk_delete_subfolders
API operation
DELETE /folders/{folderId}/subfolders/bulk_delete
Mode
Write, confirms
Permission requirement
Read, update & delete anything
list_channels
API operation
GET /channels
Mode
Read
Permission requirement
Read all folder and media data
create_channel
API operation
POST /channels
Mode
Write, confirms
Permission requirement
See current endpoint/account permission
get_channel
API operation
GET /channels/{channelHashedId}
Mode
Read
Permission requirement
Read all folder and media data
update_channel
API operation
PUT /channels/{channelHashedId}
Mode
Write, confirms
Permission requirement
See current endpoint/account permission
delete_channel
API operation
DELETE /channels/{channelHashedId}
Mode
Write, confirms
Permission requirement
See current endpoint/account permission
get_channel_episode
API operation
GET /channels/{channelHashedId}/channel_episodes/{channelEpisodeId}
Mode
Read
Permission requirement
Read all folder and media data
list_channel_episodes_by_channel
API operation
GET /channels/{channelHashedId}/channel_episodes
Mode
Read
Permission requirement
Read all folder and media data
create_channel_episode
API operation
POST /channels/{channelHashedId}/channel_episodes
Mode
Write, confirms
Permission requirement
Read, update & delete anything
list_channel_episodes
API operation
GET /channel_episodes
Mode
Read
Permission requirement
Read all folder and media data
update_channel_episode
API operation
PUT /channel_episodes/{channelEpisodeHashedId}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
delete_channel_episode
API operation
DELETE /channel_episodes/{channelEpisodeHashedId}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
publish_channel_episode
API operation
PUT /channel_episodes/{channelEpisodeHashedId}/publish
Mode
Write, confirms
Permission requirement
Read, update & delete anything
un_publish_channel_episode
API operation
PUT /channel_episodes/{channelEpisodeHashedId}/unpublish
Mode
Write, confirms
Permission requirement
Read, update & delete anything
list_channel_collaborators
API operation
GET /channels/{channelHashedId}/collaborators
Mode
Read
Permission requirement
Read all data
create_channel_collaborator
API operation
POST /channels/{channelHashedId}/collaborators
Mode
Write, confirms
Permission requirement
Read, update & delete anything
delete_channel_collaborator
API operation
DELETE /channels/{channelHashedId}/collaborators/{id}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
list_webinars
API operation
GET /webinars
Mode
Read
Permission requirement
Read all data
create_webinar
API operation
POST /webinars
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_webinar
API operation
GET /webinars/{id}
Mode
Read
Permission requirement
Read all data
update_webinar
API operation
PUT /webinars/{id}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
delete_webinar
API operation
DELETE /webinars/{id}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
list_webinar_registrations
API operation
GET /webinars/{webinarId}/registrations
Mode
Read
Permission requirement
Read all data
create_webinar_registration
API operation
POST /webinars/{webinarId}/registrations
Mode
Write, confirms
Permission requirement
Read, update & delete anything
list_webinar_collaborators
API operation
GET /webinars/{webinarId}/collaborators
Mode
Read
Permission requirement
Read all data
create_webinar_collaborator
API operation
POST /webinars/{webinarId}/collaborators
Mode
Write, confirms
Permission requirement
Read, update & delete anything
delete_webinar_collaborator
API operation
DELETE /webinars/{webinarId}/collaborators/{id}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_account
API operation
GET /account
Mode
Read
Permission requirement
(any scope allowed)
get_account_usage
API operation
GET /account_usage
Mode
Read
Permission requirement
(any scope allowed)
get_credit_balance
API operation
GET /credits/balance
Mode
Read
Permission requirement
(any scope allowed)
get_brand_preload
API operation
GET /brand_preload
Mode
Read
Permission requirement
(any scope allowed)
update_brand_preload
API operation
PUT /brand_preload
Mode
Write, confirms
Permission requirement
(any scope allowed)
get_brand_kit_colors
API operation
GET /brand_kit_colors
Mode
Read
Permission requirement
(any scope allowed)
invite_contacts
API operation
POST /contacts
Mode
Write, confirms
Permission requirement
Read, update & delete anything
dismiss_desktop_install_prompt
API operation
POST /contact/dismiss_desktop_install_prompt
Mode
Write, confirms
Permission requirement
Read, update & delete anything
start_account_trial
API operation
POST /account/trials
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_current_token
API operation
GET /token
Mode
Read
Permission requirement
See current endpoint/account permission
search
API operation
GET /search
Mode
Read
Permission requirement
Read all data
resolve_resource_urls
API operation
GET /resource_urls
Mode
Read
Permission requirement
Read all data
create_expiring_access_token
API operation
POST /expiring_token
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_job_status
API operation
GET /background_job_status/{backgroundJobStatusId}
Mode
Read
Permission requirement
Read all data
list_allowed_domains
API operation
GET /allowed_domains
Mode
Read
Permission requirement
Read all data
create_allowed_domain
API operation
POST /allowed_domains
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_allowed_domain
API operation
GET /allowed_domains/{domain}
Mode
Read
Permission requirement
Read all data
delete_allowed_domain
API operation
DELETE /allowed_domains/{domain}
Mode
Write, confirms
Permission requirement
Read, update & delete anything
get_account_stats
API operation
GET /stats/account
Mode
Read
Permission requirement
Read detailed stats
get_account_stats_by_date
API operation
GET /stats/account/by_date
Mode
Read
Permission requirement
Read detailed stats
get_project_stats
API operation
GET /stats/projects/{projectId}
Mode
Read
Permission requirement
Read detailed stats
get_media_stats_stats_media
API operation
GET /stats/medias/{mediaId}
Mode
Read
Permission requirement
Read detailed stats
get_media_stats_by_date
API operation
GET /stats/medias/{mediaId}/by_date
Mode
Read
Permission requirement
Read detailed stats
get_media_engagement
API operation
GET /stats/medias/{mediaId}/engagement
Mode
Read
Permission requirement
Read detailed stats
list_visitors
API operation
GET /stats/visitors
Mode
Read
Permission requirement
Read detailed stats
get_visitor
API operation
GET /stats/visitors/{visitorKey}
Mode
Read
Permission requirement
Read detailed stats
list_events
API operation
GET /stats/events
Mode
Read
Permission requirement
Read detailed stats
get_event
API operation
GET /stats/events/{eventKey}
Mode
Read
Permission requirement
Read detailed stats
get_account_analytics
API operation
GET /analytics/account
Mode
Read
Permission requirement
Read detailed stats
get_account_analytics_timeseries
API operation
GET /analytics/account/timeseries
Mode
Read
Permission requirement
Read detailed stats
get_account_top_content
API operation
GET /analytics/account/top_content
Mode
Read
Permission requirement
Read detailed stats
get_account_embed_locations
API operation
GET /analytics/account/embed_locations
Mode
Read
Permission requirement
Read detailed stats
find_media_by_embed_location
API operation
GET /analytics/account/media_by_embed_location
Mode
Read
Permission requirement
Read detailed stats
get_media_analytics
API operation
GET /analytics/medias/{mediaId}
Mode
Read
Permission requirement
Read detailed stats
get_media_analytics_timeseries
API operation
GET /analytics/medias/{mediaId}/timeseries
Mode
Read
Permission requirement
Read detailed stats
get_media_embed_locations
API operation
GET /analytics/medias/{mediaId}/embed_locations
Mode
Read
Permission requirement
Read detailed stats
get_media_embed_locations_timeseries
API operation
GET /analytics/medias/{mediaId}/embed_locations_timeseries
Mode
Read
Permission requirement
Read detailed stats
get_media_traffic_breakdown
API operation
GET /analytics/medias/{mediaId}/traffic
Mode
Read
Permission requirement
Read detailed stats
get_media_form_conversions
API operation
GET /analytics/medias/{mediaId}/conversions
Mode
Read
Permission requirement
Read detailed stats
get_media_languages
API operation
GET /analytics/medias/{mediaId}/languages
Mode
Read
Permission requirement
Read detailed stats
get_webinar_analytics
API operation
GET /analytics/webinars/{webinarId}
Mode
Read
Permission requirement
Read detailed stats
get_webinar_registration_timeseries
API operation
GET /analytics/webinars/{webinarId}/registration
Mode
Read
Permission requirement
Read detailed stats
get_webinar_traffic_breakdown
API operation
GET /analytics/webinars/{webinarId}/traffic
Mode
Read
Permission requirement
Read detailed stats
get_webinar_audience
API operation
GET /analytics/webinars/{webinarId}/audience
Mode
Read
Permission requirement
Read detailed stats
get_webinar_histograms
API operation
GET /analytics/webinars/{webinarId}/histograms
Mode
Read
Permission requirement
Read detailed stats
list_accounts
API operation
Local, no network
Mode
Read
Permission requirement
No remote permission

upload_media

wistia-cli upload-media

project_id
Required
No; body/guard rules still apply
Type
string
Details
The hashed id of the project to upload media into.
name
Required
No; body/guard rules still apply
Type
string
Details
A display name to use for the media in Wistia. maxLength: 255.
description
Required
No; body/guard rules still apply
Type
string
Details
A description to use for the media in Wistia.
contact_id
Required
No; body/guard rules still apply
Type
integer
Details
A Wistia contact id.
url
Required
No; body/guard rules still apply
Type
string
Details
The publicly accessible web location of the media file to import. format: uri.
low_priority
Required
No; body/guard rules still apply
Type
boolean
Details
Inform the encoding service that this upload can be considered lower priority than others. This is especially useful for platform customers doing bulk uploads or migrations. Setting this to "false" has no effect.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: url.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: url.

upload_media_file

wistia-cli upload-media-file

project_id
Required
No; body/guard rules still apply
Type
string
Details
The hashed id of the project to upload media into.
name
Required
No; body/guard rules still apply
Type
string
Details
A display name to use for the media in Wistia. maxLength: 255.
description
Required
No; body/guard rules still apply
Type
string
Details
A description to use for the media in Wistia.
contact_id
Required
No; body/guard rules still apply
Type
integer
Details
A Wistia contact id.
file
Required
No; body/guard rules still apply
Type
string
Details
Absolute regular local file, no symlinks, at most 250 MiB locally. Bytes are sent after explicit confirmation. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: file.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: file.

list_review_bundles

wistia-cli list-review-bundles

hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
Restrict the results to the review bundles with these hashed IDs. Array items: string.
name
Required
No; body/guard rules still apply
Type
string
Details
Restrict the results to review bundles whose name contains this value (case-insensitive).
media_hashed_id
Required
No; body/guard rules still apply
Type
string
Details
Restrict the results to review bundles that include the media with this hashed ID.
folder_hashed_id
Required
No; body/guard rules still apply
Type
string
Details
Restrict the results to review bundles that include any media from the folder with this hashed ID.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Field to order by. The default is id. Values: id, name, created, updated.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Direction to order by. (0 = desc, 1 = asc; default is 1) Values: 0, 1.
page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

create_review_bundle

wistia-cli create-review-bundle

media_hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
The hashed ids of the media to include in the bundle. Limited to 25 media. Array items: string.
name
Required
No; body/guard rules still apply
Type
string
Details
The bundle display name.
allow_downloads
Required
No; body/guard rules still apply
Type
boolean
Details
Whether the videos in the bundle can be downloaded.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: media_hashed_ids, name.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: media_hashed_ids, name.

delete_review_bundle

wistia-cli delete-review-bundle

review_bundle_hashed_id
Required
Yes
Type
string
Details
The hashed id of the review bundle. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

list_deleted_media

wistia-cli list-deleted-media

hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
Restrict the results to the deleted media with these hashed IDs. Array items: string.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Field to order by. When omitted, results are ordered most-recently-deleted first. Values: id, deleted, name, type, created.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Direction to order by. (0 = desc, 1 = asc; default is 1) Values: 0, 1.
page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

restore_deleted_media

wistia-cli restore-deleted-media

media_hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
The hashed ids of the soft-deleted media to restore. Up to 1000 at a time. Array items: string.
folder_id
Required
No; body/guard rules still apply
Type
string
Details
Optional hashed id of the folder to restore the media into. If omitted, each media returns to the folder it was deleted from.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: media_hashed_ids.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: media_hashed_ids.

list_media

wistia-cli list-media

page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Ordering. When using cursor pagination (see cursor param), only id and created are supported. All other sort_by options (name, updated, position) require offset pagination. Values: name, created, updated, position.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Ordering Sort Direction (0 = desc, 1 = asc; default is 1) Values: 0, 1.
folder_id
Required
No; body/guard rules still apply
Type
string
Details
A hashed ID specifying the folder from which you would like to get results.
name
Required
No; body/guard rules still apply
Type
string
Details
Find a media or medias whose name exactly matches this parameter.
description_format
Required
No; body/guard rules still apply
Type
string
Details
Format for media descriptions
include
Required
No; body/guard rules still apply
Type
string
Details
Set to speakers to include active transcript speaker assignments used for diarization. Webinar hosts and panelists are not included. Values: speakers.
type
Required
No; body/guard rules still apply
Type
string
Details
A string specifying which type of media you would like to get. Values: Video, Audio, Image, PdfDocument, MicrosoftOfficeDocument, Swf, UnknownType.
hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
Find all of the medias by these hashed_ids. Array items: string.
tags
Required
No; body/guard rules still apply
Type
array
Details
Find all of the medias that match all of these tag names. Array items: string.
archived
Required
No; body/guard rules still apply
Type
boolean
Details
Filter by archived status. True will return only archived medias, while false will return only active medias.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

get_media

wistia-cli get-media

media_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the media. minLength: 1.
description_format
Required
No; body/guard rules still apply
Type
string
Details
Format for media descriptions
include
Required
No; body/guard rules still apply
Type
string
Details
Set to speakers to include active transcript speaker assignments used for diarization. Webinar hosts and panelists are not included. Values: speakers.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_media

wistia-cli update-media

media_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the media. minLength: 1.
name
Required
No; body/guard rules still apply
Type
string
Details
The media’s new name.
new_still_media_id
Required
No; body/guard rules still apply
Type
string
Details
The Wistia hashed ID of an image that will replace the still that’s displayed before the player starts playing.
description
Required
No; body/guard rules still apply
Type
string
Details
A new description for this media. Accepts plain text or markdown.
tags
Required
No; body/guard rules still apply
Type
array
Details
An array of tag names to apply to the media. This replaces any existing tags. To add tags without replacing existing tags, use bulk-tag-media. Array items: string.
custom_metadata
Required
No; body/guard rules still apply
Type
object
Details
Custom metadata field values to set, keyed by field key. Values take the same shapes as the Set Custom Metadata Field Value endpoint; a null value clears that field and omitted fields are untouched. Requires the custom metadata feature on the account.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

delete_media

wistia-cli delete-media

media_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the media. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

copy_media

wistia-cli copy-media

media_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the media. minLength: 1.
folder_id
Required
No; body/guard rules still apply
Type
integer
Details
The ID of the folder where you want the new copy placed. Defaults to the source media’s current folder if omitted or invalid.
owner
Required
No; body/guard rules still apply
Type
string
Details
An email address specifying the owner of the new media. Defaults to the source media’s current owner if omitted or invalid. format: email.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

swap_media

wistia-cli swap-media

media_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the media to be replaced. minLength: 1.
replacement_media_id
Required
No; body/guard rules still apply
Type
string
Details
The hashed ID of the media that will replace the original media. Must be the same media type as the original.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: replacement_media_id.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: replacement_media_id.

get_media_stats

wistia-cli get-media-stats

media_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

translate_media

wistia-cli translate-media

media_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the media. minLength: 1.
target_language
Required
No; body/guard rules still apply
Type
string
Details
The language to translate the transcript to. Use the bibliographic ISO 639-2 form or a supported regional or script IETF tag.
source_language
Required
No; body/guard rules still apply
Type
string
Details
The language of the source transcript. Use the bibliographic ISO 639-2 form or a supported regional or script IETF tag. If not provided, the media's default transcript language will be used.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: target_language.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: target_language.

import_media_from_url

wistia-cli import-media-from-url

url
Required
No; body/guard rules still apply
Type
string
Details
The publicly accessible URL of the media file to import. format: uri.
folder_id
Required
No; body/guard rules still apply
Type
string
Details
The hashed ID of the folder (project) to import the media into. If not provided, a new folder will be created.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: url.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: url.

archive_media

wistia-cli archive-media

hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
An array of the media hashed IDs to be archived. Array items: string.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: hashed_ids.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: hashed_ids.

move_media

wistia-cli move-media

hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
An array of the media hashed IDs to be moved. Array items: string.
folder_id
Required
No; body/guard rules still apply
Type
string
Details
The hashed ID of the folder where you want the media moved.
subfolder_id
Required
No; body/guard rules still apply
Type
string
Details
Optional. The hashed ID of the subfolder where you want the media moved. If not provided, media will be moved to the folder's default subfolder. The subfolder must belong to the specified folder.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: hashed_ids, folder_id.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: hashed_ids, folder_id.

restore_media

wistia-cli restore-media

hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
An array of the media hashed IDs to be restored. Array items: string.
folder_id
Required
No; body/guard rules still apply
Type
string
Details
The hashed ID of the folder to restore the medias to.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: hashed_ids, folder_id.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: hashed_ids, folder_id.

bulk_copy_media

wistia-cli bulk-copy-media

hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
An array of the media hashed IDs to be copied. Array items: string.
folder_id
Required
No; body/guard rules still apply
Type
string
Details
The hashed ID of the destination folder where the copies will be placed.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: hashed_ids, folder_id.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: hashed_ids, folder_id.

get_customizations

wistia-cli get-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

create_customizations

wistia-cli create-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
autoPlay
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the video will play as soon as it’s ready. Note that autoplay might not work on some devices and browsers.
controlsVisibleOnLoad
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, controls like the big play button, playbar, volume, etc. will be visible as soon as the video is embedded.
copyLinkAndThumbnailEnabled
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, the option to “Copy Link and Thumbnail” will be removed when right-clicking on the video.
doNotTrack
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, data for each viewing session will not be tracked.
email
Required
No; body/guard rules still apply
Type
string
Details
Associate a specific email address with this video’s viewing sessions.
endVideoBehavior
Required
No; body/guard rules still apply
Type
string
Details
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).
fakeFullscreen
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the video will try to play in a pseudo-fullscreen mode on certain mobile devices.
fitStrategy
Required
No; body/guard rules still apply
Type
string
Details
Resizes the video when there's a discrepancy between its aspect ratio and that of its parent container. Options are contain, cover, fill, and none.
fullscreenButton
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the fullscreen button will be available as a video control.
fullscreenOnRotateToLandscape
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, the video will not automatically go to fullscreen mode on mobile when rotated to landscape.
keyMoments
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, the key moments feature will be disabled.
muted
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the video will start in a muted state.
playbackRateControl
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, the playback speed controls in the settings menu will be hidden.
playbar
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the playbar will be available. If set to false, it will be hidden.
playButton
Required
No; body/guard rules still apply
Type
boolean
Details
Indicates if the play button is visible.
playerColor
Required
No; body/guard rules still apply
Type
string
Details
Changes the base color of the player. Expects a hexadecimal rgb string.
playlistLinks
Required
No; body/guard rules still apply
Type
boolean
Details
Enables the use of specially crafted links on the page to associate with a video, turning them into a playlist.
playlistLoop
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true and this video has a playlist, it will loop back to the first video after the last one has finished.
playsinline
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, videos will play within the native mobile player.
playPauseNotifier
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, animations for the Pause and Play symbols will be removed.
playSuspendedOffScreen
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false for a muted autoplay video, the video won't pause when out of view.
plugin
Required
No; body/guard rules still apply
Type
object
Details
Current schema
preload
Required
No; body/guard rules still apply
Type
string
Details
Sets the video’s preload property. Possible values are metadata, auto, none, true, and false.
qualityControl
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, the video quality selector in the settings menu will be hidden.
qualityMax
Required
No; body/guard rules still apply
Type
integer
Details
Specifies the maximum quality the video will play at.
qualityMin
Required
No; body/guard rules still apply
Type
integer
Details
Specifies the minimum quality the video will play at.
resumable
Required
No; body/guard rules still apply
Type
string
Details
Determines if the video should resume from where the viewer left off. Options are true, false, and auto.
seo
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the video’s metadata will be injected into the page’s markup for SEO.
settingsControl
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the settings control will be available.
silentAutoPlay
Required
No; body/guard rules still apply
Type
string
Details
Determines how videos handle autoplay in contexts where normal autoplay might be blocked. Options are true, allow, and false.
smallPlayButton
Required
No; body/guard rules still apply
Type
boolean
Details
Current schema
stillUrl
Required
No; body/guard rules still apply
Type
string
Details
Overrides the thumbnail image that appears before the video plays.
time
Required
No; body/guard rules still apply
Type
string
Details
Sets the starting time of the video.
thumbnailAltText
Required
No; body/guard rules still apply
Type
string
Details
Sets the Thumbnail Alt Text for the media.
videoFoam
Required
No; body/guard rules still apply
Type
JSON union
Details
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. At least one schema branch must match.
volume
Required
No; body/guard rules still apply
Type
number
Details
Sets the volume of the video.
volumeControl
Required
No; body/guard rules still apply
Type
boolean
Details
When set to true, a volume control is available over the video.
wmode
Required
No; body/guard rules still apply
Type
string
Details
If set to transparent, the background behind the player will be transparent instead of black.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

plugin.videoThumbnail
Required
No
Type
object
Details
Current schema
plugin.videoThumbnail.clickToPlayButton
Required
No
Type
boolean
Details
If set to false, removes the “Click to Play” button on video thumbnails.
plugin.socialbar-v1
Required
No
Type
object
Details
Current schema
plugin.socialbar-v1.buttons
Required
No
Type
string
Details
Current schema
plugin.socialbar-v1.showTweetCount
Required
No
Type
boolean
Details
Current schema
plugin.socialbar-v1.tweetText
Required
No
Type
string
Details
Current schema
plugin.socialbar-v1.height
Required
No
Type
integer
Details
Current schema
plugin.chapters
Required
No
Type
object
Details
Current schema
plugin.chapters.visibleOnLoad
Required
No
Type
boolean
Details
Current schema
plugin.chapters.chapterList
Required
No
Type
array
Details
Array items: object.
plugin.chapters.chapterList[].id
Required
No
Type
string
Details
Current schema
plugin.chapters.chapterList[].title
Required
No
Type
string
Details
Current schema
plugin.chapters.chapterList[].time
Required
No
Type
string
Details
Current schema
plugin.chapters.chapterList[].deleted
Required
No
Type
string
Details
Current schema
plugin.chapters.on
Required
No
Type
boolean
Details
Current schema
plugin.postRoll-v1
Required
No
Type
object
Details
Adds a Call To Action to your Video
plugin.postRoll-v1.rewatch
Required
No
Type
boolean
Details
If set to true, allows the video to be rewatched.
plugin.postRoll-v1.text
Required
No
Type
string
Details
The URL of the text to be displayed.
plugin.postRoll-v1.link
Required
No
Type
string
Details
The URL of the link to be displayed.
plugin.postRoll-v1.time
Required
No
Type
JSON union
Details
The time when the post-roll should be displayed. Can be a string like "end" or a number representing seconds. Exactly one of 2 schema branches; inspect the complete schema.
plugin.postRoll-v1.autoSize
Required
No
Type
boolean
Details
If set to true, the post-roll will automatically adjust its size.
plugin.postRoll-v1.style
Required
No
Type
object
Details
Current schema
plugin.postRoll-v1.style.backgroundColor
Required
No
Type
string
Details
The background color of the post-roll.
plugin.postRoll-v1.ctaType
Required
No
Type
string
Details
The type of call-to-action to be displayed. Typically set to "text". Other options are "image" which allows for "altText", and "html".
plugin.postRoll-v1.on
Required
No
Type
boolean
Details
If set to true, the post-roll is enabled.
plugin.postRoll-v1.conversionOpportunityKey
Required
No
Type
string
Details
The key used for tracking conversion opportunities.
plugin.captions-v1
Required
No
Type
object
Details
Enables closed captions for the video
plugin.captions-v1.on
Required
No
Type
boolean
Details
If set to true, the captions plugin is enabled and captions controls will be available to viewers.
plugin.captions-v1.onByDefault
Required
No
Type
boolean
Details
If set to true, captions will be turned on automatically when the video loads. Only takes effect when the captions plugin is enabled.

update_customizations

wistia-cli update-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video to be customized. minLength: 1.
autoPlay
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the video will play as soon as it’s ready. Note that autoplay might not work on some devices and browsers.
controlsVisibleOnLoad
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, controls like the big play button, playbar, volume, etc. will be visible as soon as the video is embedded.
copyLinkAndThumbnailEnabled
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, the option to “Copy Link and Thumbnail” will be removed when right-clicking on the video.
doNotTrack
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, data for each viewing session will not be tracked.
email
Required
No; body/guard rules still apply
Type
string
Details
Associate a specific email address with this video’s viewing sessions.
endVideoBehavior
Required
No; body/guard rules still apply
Type
string
Details
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).
fakeFullscreen
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the video will try to play in a pseudo-fullscreen mode on certain mobile devices.
fitStrategy
Required
No; body/guard rules still apply
Type
string
Details
Resizes the video when there's a discrepancy between its aspect ratio and that of its parent container. Options are contain, cover, fill, and none.
fullscreenButton
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the fullscreen button will be available as a video control.
fullscreenOnRotateToLandscape
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, the video will not automatically go to fullscreen mode on mobile when rotated to landscape.
keyMoments
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, the key moments feature will be disabled.
muted
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the video will start in a muted state.
playbackRateControl
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, the playback speed controls in the settings menu will be hidden.
playbar
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the playbar will be available. If set to false, it will be hidden.
playButton
Required
No; body/guard rules still apply
Type
boolean
Details
Indicates if the play button is visible.
playerColor
Required
No; body/guard rules still apply
Type
string
Details
Changes the base color of the player. Expects a hexadecimal rgb string.
playlistLinks
Required
No; body/guard rules still apply
Type
boolean
Details
Enables the use of specially crafted links on the page to associate with a video, turning them into a playlist.
playlistLoop
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true and this video has a playlist, it will loop back to the first video after the last one has finished.
playsinline
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, videos will play within the native mobile player.
playPauseNotifier
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, animations for the Pause and Play symbols will be removed.
playSuspendedOffScreen
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false for a muted autoplay video, the video won't pause when out of view.
plugin
Required
No; body/guard rules still apply
Type
object
Details
Current schema
preload
Required
No; body/guard rules still apply
Type
string
Details
Sets the video’s preload property. Possible values are metadata, auto, none, true, and false.
qualityControl
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, the video quality selector in the settings menu will be hidden.
qualityMax
Required
No; body/guard rules still apply
Type
integer
Details
Specifies the maximum quality the video will play at.
qualityMin
Required
No; body/guard rules still apply
Type
integer
Details
Specifies the minimum quality the video will play at.
resumable
Required
No; body/guard rules still apply
Type
string
Details
Determines if the video should resume from where the viewer left off. Options are true, false, and auto.
seo
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the video’s metadata will be injected into the page’s markup for SEO.
settingsControl
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the settings control will be available.
silentAutoPlay
Required
No; body/guard rules still apply
Type
string
Details
Determines how videos handle autoplay in contexts where normal autoplay might be blocked. Options are true, allow, and false.
smallPlayButton
Required
No; body/guard rules still apply
Type
boolean
Details
Current schema
stillUrl
Required
No; body/guard rules still apply
Type
string
Details
Overrides the thumbnail image that appears before the video plays.
time
Required
No; body/guard rules still apply
Type
string
Details
Sets the starting time of the video.
thumbnailAltText
Required
No; body/guard rules still apply
Type
string
Details
Sets the Thumbnail Alt Text for the media.
videoFoam
Required
No; body/guard rules still apply
Type
JSON union
Details
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. At least one schema branch must match.
volume
Required
No; body/guard rules still apply
Type
number
Details
Sets the volume of the video.
volumeControl
Required
No; body/guard rules still apply
Type
boolean
Details
When set to true, a volume control is available over the video.
wmode
Required
No; body/guard rules still apply
Type
string
Details
If set to transparent, the background behind the player will be transparent instead of black.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

plugin.videoThumbnail
Required
No
Type
object
Details
Current schema
plugin.videoThumbnail.clickToPlayButton
Required
No
Type
boolean
Details
If set to false, removes the “Click to Play” button on video thumbnails.
plugin.socialbar-v1
Required
No
Type
object
Details
Current schema
plugin.socialbar-v1.buttons
Required
No
Type
string
Details
Current schema
plugin.socialbar-v1.showTweetCount
Required
No
Type
boolean
Details
Current schema
plugin.socialbar-v1.tweetText
Required
No
Type
string
Details
Current schema
plugin.socialbar-v1.height
Required
No
Type
integer
Details
Current schema
plugin.chapters
Required
No
Type
object
Details
Current schema
plugin.chapters.visibleOnLoad
Required
No
Type
boolean
Details
Current schema
plugin.chapters.chapterList
Required
No
Type
array
Details
Array items: object.
plugin.chapters.chapterList[].id
Required
No
Type
string
Details
Current schema
plugin.chapters.chapterList[].title
Required
No
Type
string
Details
Current schema
plugin.chapters.chapterList[].time
Required
No
Type
string
Details
Current schema
plugin.chapters.chapterList[].deleted
Required
No
Type
string
Details
Current schema
plugin.chapters.on
Required
No
Type
boolean
Details
Current schema
plugin.postRoll-v1
Required
No
Type
object
Details
Adds a Call To Action to your Video
plugin.postRoll-v1.rewatch
Required
No
Type
boolean
Details
If set to true, allows the video to be rewatched.
plugin.postRoll-v1.text
Required
No
Type
string
Details
The URL of the text to be displayed.
plugin.postRoll-v1.link
Required
No
Type
string
Details
The URL of the link to be displayed.
plugin.postRoll-v1.time
Required
No
Type
JSON union
Details
The time when the post-roll should be displayed. Can be a string like "end" or a number representing seconds. Exactly one of 2 schema branches; inspect the complete schema.
plugin.postRoll-v1.autoSize
Required
No
Type
boolean
Details
If set to true, the post-roll will automatically adjust its size.
plugin.postRoll-v1.style
Required
No
Type
object
Details
Current schema
plugin.postRoll-v1.style.backgroundColor
Required
No
Type
string
Details
The background color of the post-roll.
plugin.postRoll-v1.ctaType
Required
No
Type
string
Details
The type of call-to-action to be displayed. Typically set to "text". Other options are "image" which allows for "altText", and "html".
plugin.postRoll-v1.on
Required
No
Type
boolean
Details
If set to true, the post-roll is enabled.
plugin.postRoll-v1.conversionOpportunityKey
Required
No
Type
string
Details
The key used for tracking conversion opportunities.
plugin.captions-v1
Required
No
Type
object
Details
Enables closed captions for the video
plugin.captions-v1.on
Required
No
Type
boolean
Details
If set to true, the captions plugin is enabled and captions controls will be available to viewers.
plugin.captions-v1.onByDefault
Required
No
Type
boolean
Details
If set to true, captions will be turned on automatically when the video loads. Only takes effect when the captions plugin is enabled.

delete_customizations

wistia-cli delete-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the media whose customizations are to be deleted. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

get_appearance_customizations

wistia-cli get-appearance-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_appearance_customizations

wistia-cli update-appearance-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video to be customized. minLength: 1.
playerColor
Required
No; body/guard rules still apply
Type
string
Details
Base color of the player as a hexadecimal RGB string (no leading '#').
playerColorGradient
Required
No; body/guard rules still apply
Type
object
Details
Optional gradient applied to the player color.
roundedPlayer
Required
No; body/guard rules still apply
Type
integer
Details
Corner radius of the player in pixels. 0 disables rounding.
opaqueControls
Required
No; body/guard rules still apply
Type
boolean
Details
If true, player controls render on an opaque background.
contrastIcons
Required
No; body/guard rules still apply
Type
boolean
Details
If true, control icons use a higher-contrast treatment.
branding
Required
No; body/guard rules still apply
Type
boolean
Details
If false, Wistia branding is hidden on the player.
showCustomerLogo
Required
No; body/guard rules still apply
Type
boolean
Details
If true, your customer logo is shown on the player.
customerLogoImageUrl
Required
No; body/guard rules still apply
Type
string
Details
URL of the customer logo image to display on the player.
customerLogoTargetUrl
Required
No; body/guard rules still apply
Type
string
Details
URL the customer logo links to when clicked.
customerLogoPlacement
Required
No; body/guard rules still apply
Type
string
Details
Placement of the customer logo on the player (e.g. top-right).
customerLogoSizePercent
Required
No; body/guard rules still apply
Type
integer
Details
Size of the customer logo as a percentage of the player.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

playerColorGradient.on
Required
No
Type
boolean
Details
Whether the gradient is enabled.
playerColorGradient.colors
Required
No
Type
array
Details
Ordered list of [hex color, stop] pairs defining the gradient. Array items: array.

get_playback_customizations

wistia-cli get-playback-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_playback_customizations

wistia-cli update-playback-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video to be customized. minLength: 1.
autoPlay
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the video will play as soon as it’s ready. Note that autoplay might not work on some devices and browsers.
silentAutoPlay
Required
No; body/guard rules still apply
Type
string
Details
Determines how videos handle autoplay in contexts where normal autoplay might be blocked. Options are "true", "allow", and "false".
muted
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the video will start in a muted state.
volume
Required
No; body/guard rules still apply
Type
number
Details
Sets the volume of the video.
controlsVisibleOnLoad
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, controls like the big play button, playbar, volume, etc. will be visible as soon as the video is embedded.
playButton
Required
No; body/guard rules still apply
Type
boolean
Details
Indicates if the play button is visible.
smallPlayButton
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the small play button control is shown.
playbar
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the playbar will be available. If set to false, it will be hidden.
volumeControl
Required
No; body/guard rules still apply
Type
boolean
Details
When set to true, a volume control is available over the video.
fullscreenButton
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the fullscreen button will be available as a video control.
settingsControl
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the settings control will be available.
playbackRateControl
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, the playback speed controls in the settings menu will be hidden.
qualityControl
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, the video quality selector in the settings menu will be hidden.
qualityMin
Required
No; body/guard rules still apply
Type
integer
Details
Specifies the minimum quality the video will play at.
qualityMax
Required
No; body/guard rules still apply
Type
integer
Details
Specifies the maximum quality the video will play at.
videoQuality
Required
No; body/guard rules still apply
Type
string
Details
Sets the default video quality the video will play at.
hls
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, HLS adaptive bitrate streaming is enabled.
endVideoBehavior
Required
No; body/guard rules still apply
Type
string
Details
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).
playsinline
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, videos will play within the native mobile player.
playlistLoop
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true and this video has a playlist, it will loop back to the first video after the last one has finished.
playlistLinks
Required
No; body/guard rules still apply
Type
boolean
Details
Enables the use of specially crafted links on the page to associate with a video, turning them into a playlist.
playPauseNotifier
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, animations for the Pause and Play symbols will be removed.
playSuspendedOffScreen
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false for a muted autoplay video, the video won’t pause when out of view.
resumable
Required
No; body/guard rules still apply
Type
string
Details
Determines if the video should resume from where the viewer left off. Options are "true", "false", and "auto".
preload
Required
No; body/guard rules still apply
Type
string
Details
Sets the video’s preload property. Possible values are metadata, auto, none, true, and false.
time
Required
No; body/guard rules still apply
Type
string
Details
Sets the starting time of the video.
keyMoments
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, the key moments feature will be disabled.
fullscreenOnRotateToLandscape
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, the video will not automatically go to fullscreen mode on mobile when rotated to landscape.
fakeFullScreen
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the video will try to play in a pseudo-fullscreen mode on certain mobile devices.
videoFoam
Required
No; body/guard rules still apply
Type
JSON union
Details
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. At least one schema branch must match.
wmode
Required
No; body/guard rules still apply
Type
string
Details
If set to transparent, the background behind the player will be transparent instead of black.
bpbTime
Required
No; body/guard rules still apply
Type
string
Details
Controls when the big play button appears, expressed as a string.
spherical
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the video is rendered as a spherical (360-degree) video.
clickForSound
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, viewers can click to enable sound on a muted video.
seo
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, the video’s metadata will be injected into the page’s markup for SEO.
doNotTrack
Required
No; body/guard rules still apply
Type
boolean
Details
If set to true, data for each viewing session will not be tracked.
copyLinkAndThumbnailEnabled
Required
No; body/guard rules still apply
Type
boolean
Details
If set to false, the option to “Copy Link and Thumbnail” will be removed when right-clicking on the video.
email
Required
No; body/guard rules still apply
Type
string
Details
Associate a specific email address with this video’s viewing sessions.
googleAnalytics
Required
No; body/guard rules still apply
Type
string
Details
Google Analytics tracking configuration to associate with this video’s viewing sessions.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

get_thumbnail_customizations

wistia-cli get-thumbnail-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_thumbnail_customizations

wistia-cli update-thumbnail-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video to be customized. minLength: 1.
stillUrl
Required
No; body/guard rules still apply
Type
string
Details
Overrides the thumbnail image that appears before the video plays.
thumbnailAltText
Required
No; body/guard rules still apply
Type
string
Details
Alt text for the thumbnail image, used for accessibility.
fitStrategy
Required
No; body/guard rules still apply
Type
string
Details
Resizes the thumbnail when there's a discrepancy between its aspect ratio and that of its parent container. Options are contain, cover, fill, and none.
unalteredStillImageAsset
Required
No; body/guard rules still apply
Type
string
Details
Reference to the original, unaltered still image asset.
plugin
Required
No; body/guard rules still apply
Type
object
Details
Container for thumbnail-related player plugin configurations.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

plugin.videoThumbnail
Required
No
Type
object
Details
Looping video thumbnail (a short clip used as the poster).
plugin.videoThumbnail.clickToPlayButton
Required
No
Type
boolean
Details
If set to false, removes the “Click to Play” button on video thumbnails.
plugin.videoThumbnail.clickForSound
Required
No
Type
boolean
Details
If set to true, shows a click-for-sound affordance on the video thumbnail.
plugin.videoThumbnail.hashedId
Required
No
Type
string
Details
The hashed ID of the media used as the looping video thumbnail.
plugin.videoThumbnail.trimStart
Required
No
Type
string
Details
Start time of the trimmed clip used as the video thumbnail.
plugin.videoThumbnail.trimEnd
Required
No
Type
string
Details
End time of the trimmed clip used as the video thumbnail.
plugin.videoThumbnail.priorityMode
Required
No
Type
string
Details
Priority mode controlling how the video thumbnail is loaded.
plugin.thumbnailTextOverlay-v2
Required
No
Type
object
Details
Text overlay rendered on top of the thumbnail.
plugin.thumbnailTextOverlay-v2.on
Required
No
Type
boolean
Details
If set to true, the text overlay is enabled.
plugin.thumbnailTextOverlay-v2.text
Required
No
Type
string
Details
The text displayed in the overlay.

get_accessibility_customizations

wistia-cli get-accessibility-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_accessibility_customizations

wistia-cli update-accessibility-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video to be customized. minLength: 1.
captionsBackgroundColor
Required
No; body/guard rules still apply
Type
string
Details
Background color of the captions as a hexadecimal RGB string (no leading '#').
captionsBorderRadius
Required
No; body/guard rules still apply
Type
integer
Details
Corner radius of the captions background in pixels.
captionsTextColor
Required
No; body/guard rules still apply
Type
string
Details
Color of the captions text as a hexadecimal RGB string (no leading '#').
captionsTextSize
Required
No; body/guard rules still apply
Type
integer
Details
Size of the captions text in pixels.
captionsFontFamily
Required
No; body/guard rules still apply
Type
string
Details
Font family used for the captions text.
transcriptEnabled
Required
No; body/guard rules still apply
Type
boolean
Details
If true, the interactive transcript is shown alongside the video.
showTranscriptSpeakers
Required
No; body/guard rules still apply
Type
boolean
Details
If true, speaker labels are displayed in the transcript.
audioDescriptionControl
Required
No; body/guard rules still apply
Type
boolean
Details
If true, the audio description control is available to viewers.
plugin
Required
No; body/guard rules still apply
Type
object
Details
Current schema
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

plugin.captions
Required
No
Type
object
Details
Modern captions plugin configuration.
plugin.captions.on
Required
No
Type
boolean
Details
If set to true, the captions plugin is enabled and captions controls will be available to viewers.
plugin.captions.onByDefault
Required
No
Type
boolean
Details
If set to true, captions will be turned on automatically when the video loads. Only takes effect when the captions plugin is enabled.
plugin.captions-v1
Required
No
Type
object
Details
Enables closed captions for the video.
plugin.captions-v1.on
Required
No
Type
boolean
Details
If set to true, the captions plugin is enabled and captions controls will be available to viewers.
plugin.captions-v1.onByDefault
Required
No
Type
boolean
Details
If set to true, captions will be turned on automatically when the video loads. Only takes effect when the captions plugin is enabled.
plugin.extendedAudioDescription
Required
No
Type
object
Details
Enables an extended audio description track for the video.
plugin.extendedAudioDescription.on
Required
No
Type
boolean
Details
If set to true, the extended audio description plugin is enabled.

get_chapters_customizations

wistia-cli get-chapters-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the media. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_chapters_customizations

wistia-cli update-chapters-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the media to be customized. minLength: 1.
plugin
Required
No; body/guard rules still apply
Type
object
Details
Current schema
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

plugin.chapters
Required
No
Type
object
Details
Current schema
plugin.chapters.on
Required
No
Type
boolean
Details
Whether chapters are enabled.
plugin.chapters.visibleOnLoad
Required
No
Type
boolean
Details
Whether the chapter list is visible when the player loads.
plugin.chapters.chapterList
Required
No
Type
array
Details
The ordered list of chapters. Array items: object.
plugin.chapters.chapterList[].id
Required
No
Type
string
Details
Current schema
plugin.chapters.chapterList[].title
Required
No
Type
string
Details
Current schema
plugin.chapters.chapterList[].time
Required
No
Type
string
Details
Start time of the chapter, in seconds.
plugin.chapters.chapterList[].deleted
Required
No
Type
string
Details
Current schema
plugin.audioChapters
Required
No
Type
object
Details
Current schema
plugin.audioChapters.on
Required
No
Type
boolean
Details
Current schema
plugin.audioChapters.visibleOnLoad
Required
No
Type
boolean
Details
Current schema
plugin.audioChapters.chapterList
Required
No
Type
array
Details
Array items: object.
plugin.audioChapters.chapterList[].id
Required
No
Type
string
Details
Current schema
plugin.audioChapters.chapterList[].title
Required
No
Type
string
Details
Current schema
plugin.audioChapters.chapterList[].time
Required
No
Type
string
Details
Current schema
plugin.audioChapters.chapterList[].deleted
Required
No
Type
string
Details
Current schema

get_engagement_customizations

wistia-cli get-engagement-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_engagement_customizations

wistia-cli update-engagement-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video to be customized. minLength: 1.
plugin
Required
No; body/guard rules still apply
Type
object
Details
Container for engagement plugin configurations.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

plugin.postRoll-v1
Required
No
Type
object
Details
Adds a Call To Action to your Video.
plugin.postRoll-v1.rewatch
Required
No
Type
boolean
Details
If set to true, allows the video to be rewatched.
plugin.postRoll-v1.text
Required
No
Type
string
Details
The text to be displayed.
plugin.postRoll-v1.link
Required
No
Type
string
Details
The URL of the link to be displayed.
plugin.postRoll-v1.time
Required
No
Type
JSON union
Details
The time when the post-roll should be displayed. Can be a string like "end" or a number representing seconds. Exactly one of 2 schema branches; inspect the complete schema.
plugin.postRoll-v1.autoSize
Required
No
Type
boolean
Details
If set to true, the post-roll will automatically adjust its size.
plugin.postRoll-v1.style
Required
No
Type
object
Details
Current schema
plugin.postRoll-v1.style.backgroundColor
Required
No
Type
string
Details
The background color of the post-roll.
plugin.postRoll-v1.ctaType
Required
No
Type
string
Details
The type of call-to-action to be displayed. Typically set to "text". Other options are "image" which allows for "altText", and "html".
plugin.postRoll-v1.on
Required
No
Type
boolean
Details
If set to true, the post-roll is enabled.
plugin.postRoll-v1.conversionOpportunityKey
Required
No
Type
string
Details
The key used for tracking conversion opportunities.
plugin.midrollLink-v1
Required
No
Type
object
Details
Timed annotation links that appear over the video at specific times.
plugin.midrollLink-v1.on
Required
No
Type
boolean
Details
If set to true, the timed annotation links are enabled.
plugin.midrollLink-v1.links
Required
No
Type
array
Details
The set of annotation links. Array items: object.
plugin.midrollLink-v1.links[].text
Required
No
Type
string
Details
The text of the annotation link.
plugin.midrollLink-v1.links[].url
Required
No
Type
string
Details
The URL the annotation link points to.
plugin.midrollLink-v1.links[].time
Required
No
Type
string
Details
The time (in seconds) at which the link appears.
plugin.midrollLink-v1.links[].duration
Required
No
Type
string
Details
How long (in seconds) the link remains visible.

get_related_media_customizations

wistia-cli get-related-media-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_related_media_customizations

wistia-cli update-related-media-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video to be customized. minLength: 1.
plugin
Required
No; body/guard rules still apply
Type
object
Details
Current schema
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

plugin.relatedMedia
Required
No
Type
object
Details
Configuration for the related-media recommendations plugin.
plugin.relatedMedia.on
Required
No
Type
boolean
Details
Whether related-media recommendations are enabled.
plugin.relatedMedia.hashedIdList
Required
No
Type
array
Details
Ordered list of media hashed IDs to recommend. Array items: string.
plugin.relatedMedia.shouldShowOnPause
Required
No
Type
boolean
Details
If true, recommendations are shown when the video is paused.
plugin.relatedMedia.shouldShowOnEnd
Required
No
Type
boolean
Details
If true, recommendations are shown when the video ends.
plugin.relatedMedia.mediaLabelText
Required
No
Type
string
Details
Label text displayed above the recommended media.
plugin.relatedMedia.watchButtonText
Required
No
Type
string
Details
Text shown on the watch button for a recommended media.

get_sharing_customizations

wistia-cli get-sharing-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_sharing_customizations

wistia-cli update-sharing-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video to be customized. minLength: 1.
plugin
Required
No; body/guard rules still apply
Type
object
Details
Current schema
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

plugin.share
Required
No
Type
object
Details
Configuration for the share bar plugin.
plugin.share.on
Required
No
Type
boolean
Details
Whether the share bar is enabled.
plugin.share.channels
Required
No
Type
array
Details
Complete ordered list of share channels to enable on the share bar. This replaces the entire list : include every channel you want active. To enable downloads, include "download" here AND set downloadType. Array items: string.
plugin.share.tweetText
Required
No
Type
string
Details
Default text used when sharing the video to X/Twitter.
plugin.share.downloadType
Required
No
Type
string
Details
Which download quality is offered to viewers. Only takes effect when "download" is included in the channels array. Values: sd_mp4, hd_mp4, original, all_qualities.
plugin.share.overrideUrl
Required
No
Type
string
Details
URL used in place of the default share URL.
plugin.share.pageUrl
Required
No
Type
string
Details
URL of the page the share bar should reference.
plugin.share.pageTitle
Required
No
Type
string
Details
Title of the page the share bar should reference.
plugin.share.conversionOpportunityKey
Required
No
Type
string
Details
The key used for tracking conversion opportunities. Managed by Wistia when the share bar is enabled.

get_lead_capture_customizations

wistia-cli get-lead-capture-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_lead_capture_customizations

wistia-cli update-lead-capture-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video to be customized. minLength: 1.
provider
Required
No; body/guard rules still apply
Type
string
Details
Which lead-capture mechanism to configure. Values: wistia_form, hubspot, marketo, pardot.
enabled
Required
No; body/guard rules still apply
Type
boolean
Details
Whether the selected provider is turned on. Defaults to true.
settings
Required
No; body/guard rules still apply
Type
object
Details
Provider-specific settings. Only the fields relevant to the chosen provider are used.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: provider.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: provider.

Nested body fields:

settings.time
Required
No
Type
string
Details
When the form appears: "start"/"before", a number of seconds, or "end".
settings.allowSkip
Required
No
Type
boolean
Details
Whether the viewer may skip the form.
settings.hashedId
Required
No
Type
string
Details
(Wistia Form) The hashed ID of the Wistia form to embed.
settings.displayMode
Required
No
Type
string
Details
(Wistia Form) How the form is displayed.
settings.showLogo
Required
No
Type
boolean
Details
(Wistia Form) Whether to show the Wistia logo on the form.
settings.backgroundColor
Required
No
Type
string
Details
Background color of the form as a hex string.
settings.formId
Required
No
Type
string
Details
(HubSpot/Marketo/Pardot) The external form identifier.
settings.portalId
Required
No
Type
string
Details
(HubSpot) The HubSpot portal/account identifier.

get_access_customizations

wistia-cli get-access-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_access_customizations

wistia-cli update-access-customizations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video to be customized. minLength: 1.
private
Required
No; body/guard rules still apply
Type
object
Details
Current schema
encrypted
Required
No; body/guard rules still apply
Type
object
Details
Current schema
plugin
Required
No; body/guard rules still apply
Type
object
Details
Current schema
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

private.password_protect_on
Required
No
Type
boolean
Details
Whether password protection is enabled for the video.
encrypted.password_protect_password
Required
No
Type
string
Details
The password viewers must enter. Stored encrypted; also returned by the show endpoint.
plugin.passwordProtectedVideo
Required
No
Type
object
Details
Current schema
plugin.passwordProtectedVideo.on
Required
No
Type
boolean
Details
Whether the password-protection plugin is enabled.
plugin.passwordProtectedVideo.challenge
Required
No
Type
string
Details
Optional challenge/prompt text shown to viewers.
plugin.passwordProtectedVideo.src
Required
No
Type
string
Details
Internal source marker for the protection plugin.
plugin.passwordProtectedVideo.async
Required
No
Type
boolean
Details
Whether the password check is performed asynchronously.

resolve_share_link

wistia-cli resolve-share-link

identifier
Required
Yes
Type
string
Details
The share link's URL segment : its hashed ID or custom slug. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_share_link

wistia-cli get-share-link

media_id
Required
Yes
Type
string
Details
The hashed ID of the media. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_share_link

wistia-cli update-share-link

media_id
Required
Yes
Type
string
Details
The hashed ID of the media. minLength: 1.
visibility
Required
No; body/guard rules still apply
Type
string
Details
Controls who can view the media via this share link. - unlocked: anyone with the link can view the media. - account: only signed-in members of the media's account can view. - locked: only contacts with access to the media's folder can view. - domain_verified: only viewers signed in with an email address at a domain verified on the media's account can view. Requires the account to be enrolled in the domain validation gate; otherwise setting this value returns 400. Values: unlocked, account, locked, domain_verified.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: visibility.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: visibility.

delete_share_link

wistia-cli delete-share-link

media_id
Required
Yes
Type
string
Details
The hashed ID of the media. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

list_captions

wistia-cli list-captions

media_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the media for which captions are to be retrieved. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

create_captions

wistia-cli create-captions

media_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the media for which captions are to be added. minLength: 1.
caption_file
Required
No; body/guard rules still apply
Type
string
Details
Either an attached SRT file or a string parameter with the contents of an SRT file.
language
Required
No; body/guard rules still apply
Type
string
Details
An optional parameter that denotes which language this file represents. Should conform to ISO-639–2. If left unspecified, the language code will be detected automatically.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: caption_file.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: caption_file.

list_all_captions

wistia-cli list-all-captions

media_id
Required
No; body/guard rules still apply
Type
string
Details
Find captions for a particular media by providing the media hashed ID
media_ids
Required
No; body/guard rules still apply
Type
array
Details
Find captions belonging to any of these media hashed IDs. IDs that don't match a media the token can access are ignored rather than returning an error. Array items: string.
languages
Required
No; body/guard rules still apply
Type
array
Details
Find captions in any of these languages, using the codes returned in each caption's language field (for example eng or spa). When combined with media_ids[], captions must match both. Array items: string.
include
Required
No; body/guard rules still apply
Type
string
Details
Set to metadata to omit caption text and return only track metadata. Omitting this parameter preserves the existing response, including SRT text. Values: metadata.
page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Ordering. When using cursor pagination (see cursor param), only id is supported. default: id. Values: id, created, updated, language.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Ordering Sort Direction (0 = desc, 1 = asc; default is 1) default: 1. Values: 0, 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

find_caption_matches

wistia-cli find-caption-matches

media_ids
Required
No; body/guard rules still apply
Type
array
Details
Explicit hashed IDs of the media whose captions should be searched. minItems: 1. maxItems: 50. Array items: string.
target_text
Required
No; body/guard rules still apply
Type
string
Details
Exact caption wording to locate. minLength: 1. maxLength: 500.
language_code
Required
No; body/guard rules still apply
Type
string
Details
Exact IETF language tag. Omit when each media has only one caption track. minLength: 1.
occurrence
Required
No; body/guard rules still apply
Type
integer
Details
One-based exact occurrence to return, including occurrences after the first 10. minimum: 1.
start_ms
Required
No; body/guard rules still apply
Type
integer
Details
Optional start of a time range used to disambiguate the match. minimum: 0.
end_ms
Required
No; body/guard rules still apply
Type
integer
Details
Optional end of a time range used to disambiguate the match. minimum: 0.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: media_ids, target_text.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: media_ids, target_text.

purchase_captions

wistia-cli purchase-captions

media_hashed_id
Required
Yes
Type
string
Details
Unique identifier for the media. minLength: 1.
automated
Required
No; body/guard rules still apply
Type
boolean
Details
Order computer-generated captions or human-reviewed ones. What each costs depends on the account's plan and billing settings; computer-generated captions are included at no cost on some plans and billed per minute on others. default: False.
rush
Required
No; body/guard rules still apply
Type
boolean
Details
Enable rush order for one business day turnaround instead of the standard four, for human-reviewed captions only. Rush bills at the account's higher per-minute rate. default: True.
automatically_enable
Required
No; body/guard rules still apply
Type
boolean
Details
Automatically enable captions for the media once the order is ready or hold the captions for review before manually enabling. default: True.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

get_captions

wistia-cli get-captions

media_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the media from which captions are to be retrieved. minLength: 1.
language_code
Required
Yes
Type
string
Details
The 3-character ISO 639-2 language code of the captions to be retrieved (e.g., eng, fra, spa). Some languages use extended IETF subtags (e.g., zh-Hant). minLength: 1.
include
Required
No; body/guard rules still apply
Type
string
Details
Set to segments for time-coded caption cues or diarized_segments for speaker-turn segments in JSON responses. Values: segments, diarized_segments.
include_speakers
Required
No; body/guard rules still apply
Type
boolean
Details
For TXT responses, set to true to group the transcript by speaker turns and include speaker labels. Ignored for other response formats. default: False.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_captions

wistia-cli update-captions

media_hashed_id
Required
Yes
Type
string
Details
Unique identifier for the media. minLength: 1.
language_code
Required
Yes
Type
string
Details
Language code conforming to ISO-639-2 for which the captions should be updated. minLength: 1. pattern: ^[a-z]{3}$.
caption_file
Required
No; body/guard rules still apply
Type
string
Details
Either an attached SRT file or a string parameter with the contents of an SRT file.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: caption_file.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: caption_file.

delete_captions

wistia-cli delete-captions

media_hashed_id
Required
Yes
Type
string
Details
Unique identifier for the media. minLength: 1.
language_code
Required
Yes
Type
string
Details
Language code conforming to ISO-639-2 for which the captions should be removed. minLength: 1. pattern: ^[a-z]{3}$.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

edit_captions_text

wistia-cli edit-captions-text

media_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the media whose transcript should be edited. minLength: 1.
language_code
Required
Yes
Type
string
Details
The 3-character ISO 639-2 language code of the caption track to edit (e.g., eng, fra, spa). Some languages use extended IETF subtags (e.g., zh-Hant). minLength: 1.
edits
Required
No; body/guard rules still apply
Type
array
Details
The corrections to apply, all-or-nothing, in one new version. minItems: 1. maxItems: 20. Array items: object.
expected_version
Required
No; body/guard rules still apply
Type
integer
Details
The active caption version returned with the caption content used to prepare these edits. The edit applies only if that is still the active version; otherwise it returns 409 so you re-read and retry.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: edits, expected_version.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: edits, expected_version.

Nested body fields:

edits[].target_text
Required
Yes inside object
Type
string
Details
The exact transcript text to replace. Matched exactly after normalization (case, punctuation, and whitespace are ignored). Fuzzy matches are never applied : they are only returned as suggestions.
edits[].replacement_text
Required
Yes inside object
Type
string
Details
The text to substitute for the target. Use an empty string to delete the target.
edits[].start_ms
Required
No
Type
integer
Details
Optional lower bound (inclusive, in the requested media's coordinate space) restricting the match to a time window. Must be sent with end_ms.
edits[].end_ms
Required
No
Type
integer
Details
Optional upper bound (inclusive) restricting the match to a time window. Must be sent with start_ms.

list_localizations

wistia-cli list-localizations

media_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the media to list localizations for. minLength: 1.
include_transcript
Required
No; body/guard rules still apply
Type
boolean
Details
Whether to include the transcript in the response. default: False.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

create_localization

wistia-cli create-localization

media_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the media to create a localization for. minLength: 1.
output_language
Required
No; body/guard rules still apply
Type
string
Details
The language to localize the media to as a 3-character IETF language code.
auto_enable
Required
No; body/guard rules still apply
Type
boolean
Details
Whether to automatically enable the localization. default: True.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: output_language.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: output_language.

get_localization

wistia-cli get-localization

media_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the localization's media. minLength: 1.
localization_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the localization. minLength: 1.
include_transcript
Required
No; body/guard rules still apply
Type
boolean
Details
Whether to include the transcript in the response. default: False.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

delete_localization

wistia-cli delete-localization

media_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the localization's media. minLength: 1.
localization_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the localization to delete. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

create_media_from_trims

wistia-cli create-media-from-trims

media_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the media. minLength: 1.
trims
Required
No; body/guard rules still apply
Type
array
Details
An array of strings matching the format of HH:MM:SS.mmm-HH:MM:SS.mmm where HH is hours, MM is minutes, SS is seconds and mmm is milliseconds. When keep_trims is false (default), the ranges specify parts of the media to remove. When keep_trims is true, the ranges specify parts of the media to keep. Array items: string.
keep_trims
Required
No; body/guard rules still apply
Type
boolean
Details
When set to true, the trims parameter is treated as ranges to keep rather than ranges to remove. Defaults to false. default: False.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: trims.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: trims.

list_media_extended_audio_descriptions

wistia-cli list-media-extended-audio-descriptions

page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
Filter extended audio descriptions to only those matching these hashed ids. Array items: string.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Field to order by. The default is id. Values: language, created, updated, id.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Direction to order by. (0 = desc, 1 = asc; default is 1) Values: 0, 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

get_media_extended_audio_description

wistia-cli get-media-extended-audio-description

id
Required
Yes
Type
string
Details
The hashed id of the Media Extended Audio Description minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

delete_media_extended_audio_description

wistia-cli delete-media-extended-audio-description

id
Required
Yes
Type
string
Details
The hashed id of the Media Extended Audio Description minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

order_extended_audio_description

wistia-cli order-extended-audio-description

media_id
Required
No; body/guard rules still apply
Type
string
Details
The hashed id of the media to order the extended audio description for.
enabled
Required
No; body/guard rules still apply
Type
boolean
Details
Whether the extended audio description should be automatically enabled once the order is complete. default: True.
ai_enabled
Required
No; body/guard rules still apply
Type
boolean
Details
Whether to use AI-generated audio descriptions (cheaper) or human-generated (higher quality). AI is only available for English orders. default: True.
order_instructions
Required
No; body/guard rules still apply
Type
string
Details
Optional instructions for the audio description provider.
ietf_language_tag
Required
No; body/guard rules still apply
Type
string
Details
IETF language tag for the audio description. Defaults to eng (English). Non-English orders must set ai_enabled: false : AI-generated audio descriptions are only available in English. Spanish (es-419) orders are only accepted when the source media is tagged as a Spanish-language variant or has no detected language (e.g. silent videos). Spanish orders against a media in another language return 400. default: eng. Values: eng, es-419.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: media_id.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: media_id.

get_order_status

wistia-cli get-order-status

id
Required
Yes
Type
string
Details
The hashed ID of the order returned from the order endpoint. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

list_brands

wistia-cli list-brands

page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Ordering. When using cursor pagination (see cursor param), only id, updated and created are supported. All other sort_by options require offset pagination. Values: name, created, updated, id.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Ordering Sort Direction (0 = desc, 1 = asc) Values: 0, 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

create_brand

wistia-cli create-brand

name
Required
No; body/guard rules still apply
Type
string
Details
The brand's display name. Renaming the account-level default brand is ignored; its name is managed by Wistia.
primary_color
Required
No; body/guard rules still apply
Type
JSON union
Details
The primary brand color, used for primary buttons and the player playbar. Either a hex color string or a gradient represented as an array of [hexColor, percentage] tuples. Exactly one of 3 schema branches; inspect the complete schema.
page_background_color
Required
No; body/guard rules still apply
Type
JSON union
Details
The brand color used for page backgrounds. Either a hex color string or a gradient represented as an array of [hexColor, percentage] tuples. Exactly one of 3 schema branches; inspect the complete schema.
body_font_family
Required
No; body/guard rules still apply
Type
string/null
Details
The brand font family for body text.
headline_font_family
Required
No; body/guard rules still apply
Type
string/null
Details
The brand font family for headlines.
button_font_family
Required
No; body/guard rules still apply
Type
string/null
Details
The brand font family for buttons.
border_radius
Required
No; body/guard rules still apply
Type
integer/null
Details
The border radius in pixels for rounded corners.
contrast_icons
Required
No; body/guard rules still apply
Type
string/null
Details
Controls whether the player icon color is always white or uses an accessible contrast color when necessary. Values: enabled, disabled, unset, None.
opaque_controls
Required
No; body/guard rules still apply
Type
string/null
Details
Controls the opacity of the video player control bar and big play button. Values: enabled, disabled, unset, None.
page_logo
Required
No; body/guard rules still apply
Type
object/null
Details
The brand logo used for pages. url must be a Wistia delivery URL : see the note on uploading below. On accounts without custom branding the player logo is ignored, but the page logo is always applied.
player_logo
Required
No; body/guard rules still apply
Type
object/null
Details
The brand logo used for the player. url must be a Wistia delivery URL : see the note on uploading below. Ignored on accounts whose plan doesn't include custom branding.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

page_logo.url
Required
No
Type
string
Details
The Wistia delivery URL of the logo image, e.g. https://embed-ssl.wistia.com/deliveries/abc123def456.png. When writing, this must reference an image already in the account; the API cannot upload one.
page_logo.dimensions
Required
No
Type
object/null
Details
Current schema
page_logo.dimensions.width
Required
No
Type
integer
Details
Current schema
page_logo.dimensions.height
Required
No
Type
integer
Details
Current schema
page_logo.size
Required
No
Type
number/null
Details
The size multiplier of the logo.
player_logo.url
Required
No
Type
string
Details
The Wistia delivery URL of the logo image, e.g. https://embed-ssl.wistia.com/deliveries/abc123def456.png. When writing, this must reference an image already in the account; the API cannot upload one.
player_logo.dimensions
Required
No
Type
object/null
Details
Current schema
player_logo.dimensions.width
Required
No
Type
integer
Details
Current schema
player_logo.dimensions.height
Required
No
Type
integer
Details
Current schema
player_logo.size
Required
No
Type
number/null
Details
The size multiplier of the logo.

get_brand

wistia-cli get-brand

brand_id
Required
Yes
Type
string
Details
The id of the brand. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_brand

wistia-cli update-brand

brand_id
Required
Yes
Type
string
Details
The id of the brand minLength: 1.
name
Required
No; body/guard rules still apply
Type
string
Details
The brand's display name. Renaming the account-level default brand is ignored; its name is managed by Wistia.
primary_color
Required
No; body/guard rules still apply
Type
JSON union
Details
The primary brand color, used for primary buttons and the player playbar. Either a hex color string or a gradient represented as an array of [hexColor, percentage] tuples. Exactly one of 3 schema branches; inspect the complete schema.
page_background_color
Required
No; body/guard rules still apply
Type
JSON union
Details
The brand color used for page backgrounds. Either a hex color string or a gradient represented as an array of [hexColor, percentage] tuples. Exactly one of 3 schema branches; inspect the complete schema.
body_font_family
Required
No; body/guard rules still apply
Type
string/null
Details
The brand font family for body text.
headline_font_family
Required
No; body/guard rules still apply
Type
string/null
Details
The brand font family for headlines.
button_font_family
Required
No; body/guard rules still apply
Type
string/null
Details
The brand font family for buttons.
border_radius
Required
No; body/guard rules still apply
Type
integer/null
Details
The border radius in pixels for rounded corners.
contrast_icons
Required
No; body/guard rules still apply
Type
string/null
Details
Controls whether the player icon color is always white or uses an accessible contrast color when necessary. Values: enabled, disabled, unset, None.
opaque_controls
Required
No; body/guard rules still apply
Type
string/null
Details
Controls the opacity of the video player control bar and big play button. Values: enabled, disabled, unset, None.
page_logo
Required
No; body/guard rules still apply
Type
object/null
Details
The brand logo used for pages. url must be a Wistia delivery URL : see the note on uploading below. On accounts without custom branding the player logo is ignored, but the page logo is always applied.
player_logo
Required
No; body/guard rules still apply
Type
object/null
Details
The brand logo used for the player. url must be a Wistia delivery URL : see the note on uploading below. Ignored on accounts whose plan doesn't include custom branding.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

page_logo.url
Required
No
Type
string
Details
The Wistia delivery URL of the logo image, e.g. https://embed-ssl.wistia.com/deliveries/abc123def456.png. When writing, this must reference an image already in the account; the API cannot upload one.
page_logo.dimensions
Required
No
Type
object/null
Details
Current schema
page_logo.dimensions.width
Required
No
Type
integer
Details
Current schema
page_logo.dimensions.height
Required
No
Type
integer
Details
Current schema
page_logo.size
Required
No
Type
number/null
Details
The size multiplier of the logo.
player_logo.url
Required
No
Type
string
Details
The Wistia delivery URL of the logo image, e.g. https://embed-ssl.wistia.com/deliveries/abc123def456.png. When writing, this must reference an image already in the account; the API cannot upload one.
player_logo.dimensions
Required
No
Type
object/null
Details
Current schema
player_logo.dimensions.width
Required
No
Type
integer
Details
Current schema
player_logo.dimensions.height
Required
No
Type
integer
Details
Current schema
player_logo.size
Required
No
Type
number/null
Details
The size multiplier of the logo.

delete_brand

wistia-cli delete-brand

brand_id
Required
Yes
Type
string
Details
The id of the brand minLength: 1.
sync_to_customizations
Required
No; body/guard rules still apply
Type
boolean
Details
When true, the brand's values are baked into the customizations of everything it was applied to before it is deleted, so those items keep their current appearance. Defaults to false.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

apply_brand

wistia-cli apply-brand

brand_id
Required
Yes
Type
string
Details
The id of the brand to apply minLength: 1.
resource_type
Required
No; body/guard rules still apply
Type
string
Details
The kind of resource being branded. Webinars can't be branded through this endpoint yet. Values: media, folder, channel.
resource_id
Required
No; body/guard rules still apply
Type
string
Details
The id of the resource being branded.
clear_overrides
Required
No; body/guard rules still apply
Type
boolean
Details
When true (the default), appearance settings the resource had set directly are cleared for the fields the brand controls, so the brand is what shows. Set to false to leave them in place, in which case they continue to win over the brand. default: True.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: resource_type, resource_id.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: resource_type, resource_id.

list_speakers

wistia-cli list-speakers

name
Required
No; body/guard rules still apply
Type
string
Details
Restrict the results to speaker profiles whose name contains this value (case-insensitive).
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Field to order by. The default is id. Values: id, name, created, updated.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Direction to order by. (0 = desc, 1 = asc; default is 1) Values: 0, 1.
page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

list_tags

wistia-cli list-tags

page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Ordering. When using cursor pagination (see cursor param), only id, updated and created are supported. All other sort_by options require offset pagination. Values: name, created, updated, taggingsCount, id.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Ordering Sort Direction (0 = desc, 1 = asc) Values: 0, 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

create_tags

wistia-cli create-tags

name
Required
No; body/guard rules still apply
Type
string
Details
The tag name. Stored lowercased with whitespace squished, 50 characters max, and must not already exist on the account.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: name.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: name.

delete_tag

wistia-cli delete-tag

name
Required
Yes
Type
string
Details
Name of the tag to delete minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

create_bulk_actions

wistia-cli create-bulk-actions

actions
Required
No; body/guard rules still apply
Type
array
Details
An array of actions to process, one per record. Maximum 1000 actions per request, and the request body must stay under 2 MB -- whichever limit is reached first. An oversized body is rejected with a 413 and no action in it runs. Each action specifies an operation (create, update, delete, or move), a resource type, and the relevant payload or record ID. Use job instead when every record takes the same payload. minItems: 1. maxItems: 1000. Array items: object.
job
Required
No; body/guard rules still apply
Type
object
Details
One change applied to many records, named by a parent (scope) or listed explicitly (ids). The server resolves the target and runs one action per record, so a folder of 400 media takes one job rather than 400 actions. A scope resolves to exactly what the matching list endpoint returns for that parent, including its defaults -- so a folder scope on media reaches media in that folder's subfolders, and includes archived media. A job resolves to at most 5000 records. Beyond that it is rejected rather than truncated, so a job never silently acts on part of the set you named -- narrow the scope, or send the records as an actions array. Cannot be used with create, which has no record to address, and is not available to external contacts. Object requires: operation, resource_type.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

actions[].operation
Required
Yes inside object
Type
string
Details
The operation to perform. Media creation is not supported here -- uploads and URL imports have their own endpoints. delete also soft-deletes media inside a folder or subfolder. An account owner or manager can restore it from the trash until it purges. move applies to media only, one action per media. Each action carries its own destination, so a single request can move media into many different folders. Values: create, update, delete, move.
actions[].resource_type
Required
Yes inside object
Type
string
Details
The type of resource to operate on. folder means a top-level folder (previously called a project); use subfolder for a folder nested inside one. captions operates on a single caption track -- one media in one language. The customization_* types each write one concern of a media's player customizations and accept update only. Their id is the media's hashed ID, and their payload matches the corresponding Update Customizations endpoint (for example, customization_appearance takes the same fields as Update Appearance Customizations). Sending a field another concern owns fails that action rather than writing it, so a batch can never quietly overwrite unrelated player settings. Values: media, folder, subfolder, channel, channel_episode, captions, customization_access, customization_accessibility, customization_appearance, customization_chapters, customization_engagement, customization_lead_capture, customization_playback, customization_related_media, customization_sharing, customization_thumbnail.
actions[].id
Required
No
Type
string
Details
The hashed ID of the resource. Required for update, delete, and move operations. For captions this is the caption track's own ID (the id field returned by List Captions), not the media's -- a media can have a track per language.
actions[].payload
Required
No
Type
object
Details
The data for the operation. Required for create, update, and move operations. The accepted fields depend on the resource type and match the corresponding create or update endpoint's request body (for example, a channel_episode create takes the same fields as the Create Channel Episode endpoint, including channel_id). Creating a subfolder requires folder_id (the parent folder's hashed ID) and name. Creating captions requires media_id and caption_file (the SRT contents as a string; the multipart file upload the Create Captions endpoint accepts is not available here) and takes an optional language, detected from the file when omitted. Updating captions takes caption_file; the track's language is fixed by the record. Creating captions for a language that already has a track replaces it, matching the Create Captions endpoint. Moving a media requires folder_id (the destination folder's hashed ID) and accepts an optional subfolder_id, which must belong to that folder. Omit subfolder_id to move the media to the folder's root level. A customization_* payload is a partial update of that concern only: just the fields you send are changed, and a field naming another concern's setting fails the action. A media update payload can also carry a custom_metadata object mapping field keys to the values to set, in the same shapes the Set Custom Metadata Field Value endpoint accepts for each field's type. A null value clears that field; fields the object omits are left untouched. Requires the custom metadata feature on the account, and each write is recorded with its actor and source.
job.operation
Required
Yes inside object
Type
string
Details
The operation to apply to every matching record. create is not accepted here. Values: update, delete, move.
job.resource_type
Required
Yes inside object
Type
string
Details
The type of record to operate on, using the same vocabulary as a single action. Which parents are valid depends on it -- see scope. Values: media, folder, subfolder, channel, channel_episode, captions, customization_access, customization_accessibility, customization_appearance, customization_chapters, customization_engagement, customization_lead_capture, customization_playback, customization_related_media, customization_sharing, customization_thumbnail.
job.scope
Required
No
Type
object
Details
The parent whose records the job applies to. Which parent types are valid depends on the job's resource_type and operation: - media and the customization_* types: account, folder, subfolder, channel. - captions with update or delete, which address a caption track: account, media, folder, channel. - channel_episode: account, channel, media. - subfolder: account, folder. - folder and channel: account. An invalid combination is rejected with the valid parents listed. Object requires: type.
job.scope.type
Required
Yes inside object
Type
string
Details
The kind of parent id names. Required, because a hashed ID does not say what it belongs to -- the same value could name a folder or a channel. Use account to mean every record the job could reach, with no id. Values: account, folder, subfolder, channel, media.
job.scope.id
Required
No
Type
string
Details
The parent's hashed ID. Required for every scope type except account.
job.ids
Required
No
Type
array
Details
The records to apply the change to, named explicitly. Use this instead of scope when the records do not share a parent -- it is still far cheaper than one action each, since only the ids repeat and the payload is stated once. Give either scope or ids, never both. minItems: 1. maxItems: 1000. Array items: string.
job.payload
Required
No
Type
object
Details
The data applied to every matching record, in the same shape a single action's payload takes for this resource type. Required for update and move.

create_bulk_purchase

wistia-cli create-bulk-purchase

actions
Required
No; body/guard rules still apply
Type
array
Details
The orders to place, one per media. Maximum 1000 per request, and the request body must stay under 2 MB -- whichever limit is reached first. An oversized body is rejected with a 413 and no order in it is placed. Every order is priced and placed independently: one failing (an ineligible media, an account without a saved card, a language that already has a localization) does not stop the rest of the batch. Use job instead to order for a whole folder, channel, or account. minItems: 1. maxItems: 1000. Array items: object.
job
Required
No; body/guard rules still apply
Type
object
Details
One order placed for many media, named by a parent (scope) or listed explicitly (ids), so ordering captions for a folder of 47 videos takes one job rather than 47 orders. A scope resolves to exactly what List Media returns for that parent, including media in the folder's subfolders and archived media, and to at most 5000 media -- beyond that the job is rejected rather than truncated. The job attempts one order for every media it resolves to. Ineligible media fail individually without placing an order; successful orders are metered and may incur charges according to the account's plan. Confirm the scope and potential cost with the customer before submitting. Not available to external contacts. Object requires: operation, resource_type.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

actions[].operation
Required
Yes inside object
Type
string
Details
Always purchase. This endpoint places orders only; to create, update, or delete records in bulk use the Create Bulk Actions endpoint, which does not accept purchase. Values: purchase.
actions[].resource_type
Required
Yes inside object
Type
string
Details
What to order for the media. captions orders Wistia-generated English captions -- computer-generated or human-reviewed. localization orders a dubbed, language-specific version of the media. extended_audio_description orders an extended audio description track. text_translation translates the media's existing transcript into another language, leaving the audio alone. Values: captions, localization, extended_audio_description, text_translation.
actions[].id
Required
Yes inside object
Type
string
Details
The hashed ID of the media to order for. Always the media's own ID: what the order produces does not exist yet.
actions[].payload
Required
No
Type
object
Details
Order options. The accepted fields depend on the resource type and match the corresponding single-media endpoint's request body. Omit it to take every default. captions accepts automated (order computer-generated captions instead of human-reviewed ones), rush (one business day turnaround instead of four, human-reviewed only, at a higher per-minute rate), and automatically_enable (show the captions on the video as soon as they are ready). Each is treated as false when omitted or unrecognized. What each option costs depends on the account's plan and billing settings. localization requires output_language, a 3-character IETF language code, and accepts auto_enable (default true). extended_audio_description accepts enabled (default true), ai_enabled (default true), ietf_language_tag (default eng), and order_instructions. text_translation requires target_language and accepts source_language (which transcript to translate from, defaulting to the media's own language). Use the bibliographic ISO 639-2 form or a supported regional or script IETF tag for either value.
job.operation
Required
Yes inside object
Type
string
Details
Always purchase. Values: purchase.
job.resource_type
Required
Yes inside object
Type
string
Details
What to order for the media. captions orders Wistia-generated English captions -- computer-generated or human-reviewed. localization orders a dubbed, language-specific version of the media. extended_audio_description orders an extended audio description track. text_translation translates the media's existing transcript into another language, leaving the audio alone. Values: captions, localization, extended_audio_description, text_translation.
job.scope
Required
No
Type
object
Details
The parent whose media the order applies to. An order always addresses the media, so the valid parent types are the same for every resource type here. Object requires: type.
job.scope.type
Required
Yes inside object
Type
string
Details
The kind of parent id names. Required, because a hashed ID does not say what it belongs to -- the same value could name a folder or a channel. Use account to order for every media in the account. Values: account, folder, subfolder, channel.
job.scope.id
Required
No
Type
string
Details
The parent's hashed ID. Required for every scope type except account.
job.ids
Required
No
Type
array
Details
The media to order for, named explicitly. Use this instead of scope when the media do not share a parent. Give either scope or ids, never both. minItems: 1. maxItems: 1000. Array items: string.
job.payload
Required
No
Type
object
Details
Order options applied to every matching media, in the same shape a single order's payload takes for this resource type.

bulk_tag

wistia-cli bulk-tag

hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
An array of the media hashed IDs to be tagged. Array items: string.
tag_names
Required
No; body/guard rules still apply
Type
array
Details
An array of tag names to add to each media. Array items: string.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: hashed_ids, tag_names.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: hashed_ids, tag_names.

list_folders

wistia-cli list-folders

page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Ordering. When using cursor pagination (see cursor param), only id, updated and created are supported. All other sort_by options require offset pagination. Values: name, created, updated, mediaCount, id.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Ordering Sort Direction (0 = desc, 1 = asc; default is 1) Values: 0, 1.
hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
A collection of hashed ids belonging to folders to fetch Array items: string.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

create_folder

wistia-cli create-folder

name
Required
No; body/guard rules still apply
Type
string
Details
The name of the folder you want to create.
adminEmail
Required
No; body/guard rules still apply
Type
string
Details
The email address of the person you want to set as the owner of this folder. Defaults to the Wistia Account Owner.
description
Required
No; body/guard rules still apply
Type
string
Details
The folder’s description.
anonymousCanUpload
Required
No; body/guard rules still apply
Type
boolean
Details
Whether anonymous users can upload media to the folder.
anonymousCanDownload
Required
No; body/guard rules still apply
Type
boolean
Details
Whether anonymous users can download media from the folder.
public
Required
No; body/guard rules still apply
Type
boolean
Details
A flag indicating whether or not the folder is enabled for public access.
personalLibrary
Required
No; body/guard rules still apply
Type
boolean
Details
When true, creates the folder inside the requesting user's personal "My Library" (owned by them) instead of a shared account folder.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

get_folder

wistia-cli get-folder

id
Required
Yes
Type
string
Details
Folder Hashed ID minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_folder

wistia-cli update-folder

id
Required
Yes
Type
string
Details
Folder Hashed ID minLength: 1.
name
Required
No; body/guard rules still apply
Type
string
Details
The folder’s new name.
description
Required
No; body/guard rules still apply
Type
string
Details
The folder’s new description.
anonymousCanUpload
Required
No; body/guard rules still apply
Type
boolean
Details
Whether anonymous users can upload media to the folder.
anonymousCanDownload
Required
No; body/guard rules still apply
Type
boolean
Details
Whether anonymous users can download media from the folder.
public
Required
No; body/guard rules still apply
Type
boolean
Details
A flag indicating whether or not the folder is enabled for public access.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

delete_folder

wistia-cli delete-folder

id
Required
Yes
Type
string
Details
Folder Hashed ID minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

copy_folder

wistia-cli copy-folder

id
Required
Yes
Type
string
Details
Folder Hashed ID minLength: 1.
adminEmail
Required
No; body/guard rules still apply
Type
string
Details
The email address of the account Manager that will be the owner of the new folder. Defaults to the Account Owner if invalid or omitted.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

list_folder_sharings

wistia-cli list-folder-sharings

folder_id
Required
Yes
Type
string
Details
Folder Hashed ID minLength: 1.
page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Ordering. When using cursor pagination (see cursor param), only id is supported. default: id. Values: created, updated, id.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Ordering Sort Direction (0 = desc, 1 = asc; default is 1) default: 1. Values: 0, 1.
hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
Filter sharings by their hashed IDs Array items: string.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

create_folder_sharing

wistia-cli create-folder-sharing

folder_id
Required
Yes
Type
string
Details
Hashed ID of the folder to be shared minLength: 1.
sharing
Required
No; body/guard rules still apply
Type
object
Details
Object requires: with.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: sharing.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: sharing.

Nested body fields:

sharing.with
Required
Yes inside object
Type
string
Details
The email address of the person with whom you want to share the folder. format: email.
sharing.requirePassword
Required
No
Type
boolean
Details
A flag indicating whether or not a password is required. Defaults to true.
sharing.canShare
Required
No
Type
boolean
Details
Whether the user is allowed to share the folder with others. Defaults to false.
sharing.canDownload
Required
No
Type
boolean
Details
Whether the user is allowed to download files from the folder. Defaults to false.
sharing.canUpload
Required
No
Type
boolean
Details
Whether the user is allowed to upload files to the folder. Defaults to false.
sharing.sendEmailNotification
Required
No
Type
string
Details
Deprecated! Email notifications are always sent now. Values: 0, 1.

get_folder_sharing

wistia-cli get-folder-sharing

folder_id
Required
Yes
Type
string
Details
Hashed ID for the folder for which you'd like to see sharings. minLength: 1.
sharing_id
Required
Yes
Type
integer
Details
The ID of the specific sharing object that you want to see.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_folder_sharing

wistia-cli update-folder-sharing

folder_id
Required
Yes
Type
string
Details
ID of the folder minLength: 1.
sharing_id
Required
Yes
Type
string
Details
ID of the sharing to be updated minLength: 1.
sharing
Required
No; body/guard rules still apply
Type
object
Details
Current schema
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

sharing.canShare
Required
No
Type
boolean
Details
Allow the user or group to share the folder with others.
sharing.canDownload
Required
No
Type
boolean
Details
Allow the user or group to download media from the folder.
sharing.canUpload
Required
No
Type
boolean
Details
Allow the user or group to upload media to the folder.
sharing.isAdmin
Required
No
Type
boolean
Details
Give this user admin rights to the folder.

delete_folder_sharing

wistia-cli delete-folder-sharing

folder_id
Required
Yes
Type
string
Details
Hashed ID of the folder minLength: 1.
sharing_id
Required
Yes
Type
string
Details
ID of the sharing to be deleted minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

list_subfolders

wistia-cli list-subfolders

folder_id
Required
Yes
Type
string
Details
The hashed ID of the folder minLength: 1.
page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Field to sort by. When using cursor pagination (see cursor param), only id is supported. default: position. Values: name, created, updated, position, id.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Sort direction (0 = desc, 1 = asc; default is 1) default: 1. Values: 0, 1.
hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
Filter subfolders by their hashed IDs Array items: string.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

create_subfolder

wistia-cli create-subfolder

folder_id
Required
Yes
Type
string
Details
The hashed ID of the folder minLength: 1.
name
Required
No; body/guard rules still apply
Type
string
Details
The display name of the subfolder. maxLength: 255.
description
Required
No; body/guard rules still apply
Type
string/null
Details
A description for the subfolder. maxLength: 1000.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: name.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: name.

get_subfolder

wistia-cli get-subfolder

folder_id
Required
Yes
Type
string
Details
The hashed ID of the folder minLength: 1.
subfolder_id
Required
Yes
Type
string
Details
The hashed ID of the subfolder minLength: 1.
description_format
Required
No; body/guard rules still apply
Type
string
Details
Format for media descriptions
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_subfolder

wistia-cli update-subfolder

folder_id
Required
Yes
Type
string
Details
The hashed ID of the folder minLength: 1.
subfolder_id
Required
Yes
Type
string
Details
The hashed ID of the subfolder minLength: 1.
name
Required
No; body/guard rules still apply
Type
string
Details
The new name for the subfolder maxLength: 255.
description
Required
No; body/guard rules still apply
Type
string/null
Details
The new description for the subfolder maxLength: 1000.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

delete_subfolder

wistia-cli delete-subfolder

folder_id
Required
Yes
Type
string
Details
The hashed ID of the folder minLength: 1.
subfolder_id
Required
Yes
Type
string
Details
The hashed ID of the subfolder minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

bulk_delete_subfolders

wistia-cli bulk-delete-subfolders

folder_id
Required
Yes
Type
string
Details
The hashed ID of the folder containing the subfolders minLength: 1.
hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
An array of the subfolder hashed IDs to be deleted. Array items: string.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: hashed_ids.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: hashed_ids.

list_channels

wistia-cli list-channels

cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
page
Required
No; body/guard rules still apply
Type
integer
Details
Page number to retrieve minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
Number of channels per page minimum: 1. maximum: 100.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Ordering. Default is ID ASC. Note: Only 'id' and 'created' are supported when using cursor pagination. Values: created, id, updated, name.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Ordering Sort Direction (0 = desc, 1 = asc; default is 1) Values: 0, 1.
hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
Find all of the channels limited to these hashed_ids. Array items: string.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

create_channel

wistia-cli create-channel

name
Required
No; body/guard rules still apply
Type
string/null
Details
The display name for the channel
description
Required
No; body/guard rules still apply
Type
string/null
Details
The channel's description.
auto_publish_enabled
Required
No; body/guard rules still apply
Type
boolean
Details
Whether the episodes are automatically published when added to the channel. Cannot be enabled if podcasting is on.
podcast_enabled
Required
No; body/guard rules still apply
Type
boolean
Details
Whether podcasting is enabled for this channel.
custom_url
Required
No; body/guard rules still apply
Type
string/null
Details
Use if embedding the channel on your own site. The custom URL ensures links always direct to your page and not Wistia's.
podcast_settings
Required
No; body/guard rules still apply
Type
object
Details
Podcast specific settings for a channel. These settings only take effect if podcasting is enabled for the channel. These values appear in the channel's publicly accessible podcast RSS feed.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

podcast_settings.copyright
Required
No
Type
string/null
Details
The channel's copyright information, published in the RSS feed as ``.
podcast_settings.episode_format
Required
No
Type
JSON union
Details
The format for episodes for the podcast channel, published in the RSS feed as `. episodic_with_seasons is published as episodic`. Exactly one of 2 schema branches; inspect the complete schema.
podcast_settings.author_name
Required
No
Type
string/null
Details
The name of the author(s) for the channel, published in the RSS feed as ``.
podcast_settings.explicit
Required
No
Type
boolean/null
Details
Whether the channel contains explicit content, published in the RSS feed as ``.
podcast_settings.owner_name
Required
No
Type
string/null
Details
The podcast owner's name, published in the channel's public RSS feed as ``. Podcast directories use this as the show's administrative contact.
podcast_settings.owner_email
Required
No
Type
string/null
Details
The podcast owner's email address, published in the channel's public RSS feed as ``. Podcast directories such as Apple Podcasts require it for ownership verification.
podcast_settings.category1
Required
No
Type
JSON union
Details
The primary category for the channel, published in the RSS feed as ``. Exactly one of 2 schema branches; inspect the complete schema.
podcast_settings.category2
Required
No
Type
JSON union
Details
The secondary category for the channel, published in the RSS feed as ``. Exactly one of 2 schema branches; inspect the complete schema.
podcast_settings.category3
Required
No
Type
JSON union
Details
The third category for the channel, published in the RSS feed as ``. Exactly one of 2 schema branches; inspect the complete schema.
podcast_settings.language
Required
No
Type
string/null
Details
The ISO 639-1 language code for the channel, published in the RSS feed as `. Values: af, be, bg, ca, cs, da, de-at, de-ch, de-de, de-li, de-lu, de, el, en-au, en-bz, en-ca, en-gb, en-ie, en-jm, en-nz, en-ph, en-tt, en-us, en-za, en-zw, en, es-ar, es-bo, es-cl, es-co, es-cr, es-do, es-ec, es-es, es-gt, es-hn, es-mx, es-ni, es-pa, es-pe, es-pr, es-py, es-sv, es-uy, es-ve, es, et, eu, fi, fo, fr-be, fr-ca, fr-ch, fr-fr, fr-lu, fr-mc, fr, ga, gd, gl, haw, hr, hu, in, is, it-ch, it-it, it, ja, ko, mk, nl-be, nl-nl, nl, no, pl, pt-br, pt-pt, pt, ro-mo, ro-ro, ro, ru-mo, ru-ru, ru, sk, sl, sq, sr, sv-fi, sv-se, sv, tr, uk, zh-cn, zh-tw`.

get_channel

wistia-cli get-channel

channel_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the channel. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_channel

wistia-cli update-channel

channel_hashed_id
Required
Yes
Type
string
Details
The hashed id of the Channel minLength: 1.
name
Required
No; body/guard rules still apply
Type
string/null
Details
The display name for the channel
description
Required
No; body/guard rules still apply
Type
string/null
Details
The channel's description.
auto_publish_enabled
Required
No; body/guard rules still apply
Type
boolean
Details
Whether the episodes are automatically published when added to the channel. Cannot be enabled if podcasting is on.
podcast_enabled
Required
No; body/guard rules still apply
Type
boolean
Details
Whether podcasting is enabled for this channel.
custom_url
Required
No; body/guard rules still apply
Type
string/null
Details
Use if embedding the channel on your own site. The custom URL ensures links always direct to your page and not Wistia's.
podcast_settings
Required
No; body/guard rules still apply
Type
object
Details
Podcast specific settings for a channel. These settings only take effect if podcasting is enabled for the channel. These values appear in the channel's publicly accessible podcast RSS feed.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

podcast_settings.copyright
Required
No
Type
string/null
Details
The channel's copyright information, published in the RSS feed as ``.
podcast_settings.episode_format
Required
No
Type
JSON union
Details
The format for episodes for the podcast channel, published in the RSS feed as `. episodic_with_seasons is published as episodic`. Exactly one of 2 schema branches; inspect the complete schema.
podcast_settings.author_name
Required
No
Type
string/null
Details
The name of the author(s) for the channel, published in the RSS feed as ``.
podcast_settings.explicit
Required
No
Type
boolean/null
Details
Whether the channel contains explicit content, published in the RSS feed as ``.
podcast_settings.owner_name
Required
No
Type
string/null
Details
The podcast owner's name, published in the channel's public RSS feed as ``. Podcast directories use this as the show's administrative contact.
podcast_settings.owner_email
Required
No
Type
string/null
Details
The podcast owner's email address, published in the channel's public RSS feed as ``. Podcast directories such as Apple Podcasts require it for ownership verification.
podcast_settings.category1
Required
No
Type
JSON union
Details
The primary category for the channel, published in the RSS feed as ``. Exactly one of 2 schema branches; inspect the complete schema.
podcast_settings.category2
Required
No
Type
JSON union
Details
The secondary category for the channel, published in the RSS feed as ``. Exactly one of 2 schema branches; inspect the complete schema.
podcast_settings.category3
Required
No
Type
JSON union
Details
The third category for the channel, published in the RSS feed as ``. Exactly one of 2 schema branches; inspect the complete schema.
podcast_settings.language
Required
No
Type
string/null
Details
The ISO 639-1 language code for the channel, published in the RSS feed as `. Values: af, be, bg, ca, cs, da, de-at, de-ch, de-de, de-li, de-lu, de, el, en-au, en-bz, en-ca, en-gb, en-ie, en-jm, en-nz, en-ph, en-tt, en-us, en-za, en-zw, en, es-ar, es-bo, es-cl, es-co, es-cr, es-do, es-ec, es-es, es-gt, es-hn, es-mx, es-ni, es-pa, es-pe, es-pr, es-py, es-sv, es-uy, es-ve, es, et, eu, fi, fo, fr-be, fr-ca, fr-ch, fr-fr, fr-lu, fr-mc, fr, ga, gd, gl, haw, hr, hu, in, is, it-ch, it-it, it, ja, ko, mk, nl-be, nl-nl, nl, no, pl, pt-br, pt-pt, pt, ro-mo, ro-ro, ro, ru-mo, ru-ru, ru, sk, sl, sq, sr, sv-fi, sv-se, sv, tr, uk, zh-cn, zh-tw`.

delete_channel

wistia-cli delete-channel

channel_hashed_id
Required
Yes
Type
string
Details
The hashed id of the Channel minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

get_channel_episode

wistia-cli get-channel-episode

channel_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the channel. minLength: 1.
channel_episode_id
Required
Yes
Type
string
Details
The hashed ID of the channel episode. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

list_channel_episodes_by_channel

wistia-cli list-channel-episodes-by-channel

channel_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the channel to grab channel episodes from. minLength: 1.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Ordering. Default is ID ASC. When using cursor pagination (see cursor param), only id and created are supported. All other sort_by options (position, title, updated, published_at) require offset pagination. Values: position, title, created, updated, published_at, id.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Ordering Sort Direction (0 = desc, 1 = asc; default is 1) Values: 0, 1.
page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
media_id
Required
No; body/guard rules still apply
Type
array
Details
Filter by media id. Accepts either the numeric id or the hashed id of a media. Array items: string.
hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
Filter by hashed id Array items: string.
published
Required
No; body/guard rules still apply
Type
boolean
Details
Filter by published status.
title
Required
No; body/guard rules still apply
Type
string
Details
Filter by channel episode name/title.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

create_channel_episode

wistia-cli create-channel-episode

channel_hashed_id
Required
Yes
Type
string
Details
The hashed ID of the channel to add the episode to. minLength: 1.
media_id
Required
No; body/guard rules still apply
Type
string
Details
The alphanumeric hashed ID of the media to be added as a channel episode.
title
Required
No; body/guard rules still apply
Type
string
Details
The episode's title. If not provided, the channel episode uses the title of the media used to create it.
description
Required
No; body/guard rules still apply
Type
string
Details
The episode's description or episode notes.
summary
Required
No; body/guard rules still apply
Type
string
Details
A short summary of the episode that is displayed when space is limited.
publish_status
Required
No; body/guard rules still apply
Type
string
Details
The status of whether or not the episode has been published to your channel. Values: draft, published, scheduled.
publish_at
Required
No; body/guard rules still apply
Type
string
Details
The date and time when the episode should be published in UTC timezone. Required when publish_status is 'scheduled'. Must be a valid ISO8601 timestamp in UTC (ending with 'Z'). Can only be provided when publish_status is 'scheduled.' format: date-time.
podcast_settings
Required
No; body/guard rules still apply
Type
object
Details
Podcast specific settings for a channel episode. These settings only take effect if podcasting is enabled for the channel.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

podcast_settings.episode_type
Required
No
Type
JSON union
Details
The type of episode. Exactly one of 2 schema branches; inspect the complete schema.
podcast_settings.episode_number
Required
No
Type
integer/null
Details
The number of the episode.
podcast_settings.season_number
Required
No
Type
integer/null
Details
The season number of the episode.
podcast_settings.explicit_content
Required
No
Type
boolean
Details
Whether the episode contains explicit content.
podcast_settings.hide_from_feed
Required
No
Type
boolean
Details
Whether to hide the episode from the podcast feed.

list_channel_episodes

wistia-cli list-channel-episodes

channel_id
Required
No; body/guard rules still apply
Type
string
Details
The hashed ID of the channel to grab channel episodes from.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Ordering. Default is ID ASC. When using cursor pagination (see cursor param), only id and created are supported. All other sort_by options (position, title, updated, published_at) require offset pagination. Values: position, title, created, updated, published_at, id.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Ordering Sort Direction (0 = desc, 1 = asc; default is 1) Values: 0, 1.
page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
media_id
Required
No; body/guard rules still apply
Type
array
Details
Filter by media id. Accepts either the numeric id or the hashed id of a media. Array items: string.
hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
Filter by hashed id Array items: string.
published
Required
No; body/guard rules still apply
Type
boolean
Details
Filter by published status.
title
Required
No; body/guard rules still apply
Type
string
Details
Filter by channel episode name/title.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

update_channel_episode

wistia-cli update-channel-episode

channel_episode_hashed_id
Required
Yes
Type
string
Details
The hashed id of the Channel Episode minLength: 1.
description
Required
No; body/guard rules still apply
Type
string/null
Details
The episode's description or episode notes.
title
Required
No; body/guard rules still apply
Type
string/null
Details
The episode's title. If not provided, the channel episode uses the title of the media used to create it.
media_hashed_id
Required
No; body/guard rules still apply
Type
string
Details
The unique alphanumeric identifier for the media associated with this channel episode.
live_stream_event_hashed_id
Required
No; body/guard rules still apply
Type
string
Details
The unique alphanumeric identifier for the live stream event associated with this channel episode.
summary
Required
No; body/guard rules still apply
Type
string/null
Details
A short summary of the episode that is displayed when space is limited.
publish_status
Required
No; body/guard rules still apply
Type
string
Details
The status of whether or not the episode has been published to your channel. Values: draft, published, scheduled.
publish_at
Required
No; body/guard rules still apply
Type
string
Details
The date and time when the episode is scheduled to be published in UTC timezone. format: date-time.
episode_notes
Required
No; body/guard rules still apply
Type
string
Details
Additional notes for the episode.
podcast_settings
Required
No; body/guard rules still apply
Type
object
Details
Podcast specific settings for a channel episode. These settings only take effect if podcasting is enabled for the channel.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

podcast_settings.episode_type
Required
No
Type
JSON union
Details
The type of episode. Exactly one of 2 schema branches; inspect the complete schema.
podcast_settings.episode_number
Required
No
Type
integer/null
Details
The number of the episode.
podcast_settings.season_number
Required
No
Type
integer/null
Details
The season number of the episode.
podcast_settings.explicit_content
Required
No
Type
boolean
Details
Whether the episode contains explicit content.
podcast_settings.hide_from_feed
Required
No
Type
boolean
Details
Whether to hide the episode from the podcast feed.

delete_channel_episode

wistia-cli delete-channel-episode

channel_episode_hashed_id
Required
Yes
Type
string
Details
The hashed id of the Channel Episode minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

publish_channel_episode

wistia-cli publish-channel-episode

channel_episode_hashed_id
Required
Yes
Type
string
Details
The hashed id of the Channel Episode minLength: 1.
publish_at
Required
No; body/guard rules still apply
Type
string
Details
The date and time when the episode is scheduled to be published in UTC timezone. format: date-time.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

un_publish_channel_episode

wistia-cli un-publish-channel-episode

channel_episode_hashed_id
Required
Yes
Type
string
Details
The hashed id of the Channel Episode minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

list_channel_collaborators

wistia-cli list-channel-collaborators

channel_hashed_id
Required
Yes
Type
string
Details
Channel Hashed ID minLength: 1.
page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Ordering. When using cursor pagination (see cursor param), only id is supported. default: id. Values: created, updated, id.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Ordering Sort Direction (0 = desc, 1 = asc; default is 1) default: 1. Values: 0, 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

create_channel_collaborator

wistia-cli create-channel-collaborator

channel_hashed_id
Required
Yes
Type
string
Details
Hashed ID of the channel minLength: 1.
email
Required
No; body/guard rules still apply
Type
string
Details
Email address of the contact to invite. Creates a new contact if one doesn't exist. format: email.
role
Required
No; body/guard rules still apply
Type
string
Details
The role to grant the collaborator. Values: admin, viewer.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: email, role.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: email, role.

delete_channel_collaborator

wistia-cli delete-channel-collaborator

channel_hashed_id
Required
Yes
Type
string
Details
Channel Hashed ID minLength: 1.
id
Required
Yes
Type
integer
Details
Collaborator ID
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

list_webinars

wistia-cli list-webinars

page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Field to sort by. When using cursor pagination (see cursor param), only id and scheduled_for are supported. All other sort_by options (title, created, updated) require offset pagination. Values: scheduled_for, title, created, updated, id.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Sort direction (0 = desc, 1 = asc; default is 1) Values: 0, 1.
hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
Filter by specific webinars IDs Array items: string.
started
Required
No; body/guard rules still apply
Type
string
Details
Filter by whether the webinar has started. Use "true" for webinars that have started, "false" for webinars that have not started yet Values: true, false.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

create_webinar

wistia-cli create-webinar

title
Required
No; body/guard rules still apply
Type
string
Details
The title of the webinar
description
Required
No; body/guard rules still apply
Type
string
Details
The description of the webinar
scheduled_for
Required
No; body/guard rules still apply
Type
string
Details
The scheduled start time as a UTC formatted ISO 8601 string (offset Z or +00:00). format: date-time.
event_duration
Required
No; body/guard rules still apply
Type
integer
Details
Duration of the event in minutes (minimum 15) minimum: 15.
time_zone
Required
No; body/guard rules still apply
Type
string
Details
The IANA time zone identifier the webinar is scheduled in.
folder_id
Required
No; body/guard rules still apply
Type
string
Details
Hashed ID of the folder to place this webinar in. Defaults to the account's default webinar folder if not provided.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: title, scheduled_for, event_duration, time_zone.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: title, scheduled_for, event_duration, time_zone.

get_webinar

wistia-cli get-webinar

id
Required
Yes
Type
string
Details
The hashed ID of the webinar minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_webinar

wistia-cli update-webinar

id
Required
Yes
Type
string
Details
The hashed ID of the webinar minLength: 1.
webinar
Required
No; body/guard rules still apply
Type
object
Details
Current schema
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

webinar.title
Required
No
Type
string
Details
The title of the webinar
webinar.description
Required
No
Type
string
Details
The description of the webinar
webinar.scheduled_for
Required
No
Type
string
Details
The scheduled start time as a UTC formatted ISO 8601 string (offset Z or +00:00). format: date-time.
webinar.event_duration
Required
No
Type
integer
Details
Duration of the webinar in minutes (minimum 15) minimum: 15.
webinar.time_zone
Required
No
Type
string
Details
The IANA time zone identifier the webinar is scheduled in.
webinar.folder_id
Required
No
Type
string
Details
Hashed ID of the folder to move this webinar to. Can only be changed before the webinar has started.

delete_webinar

wistia-cli delete-webinar

id
Required
Yes
Type
string
Details
The hashed ID of the webinar minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

list_webinar_registrations

wistia-cli list-webinar-registrations

webinar_id
Required
Yes
Type
string
Details
Hashed ID of the webinar. minLength: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
Number of results to return per page (max 100). minimum: 1. maximum: 100. default: 100.
cursor
Required
No; body/guard rules still apply
Type
string
Details
Cursor for pagination. Use the value from the previous response's page_info.end_cursor or page_info.start_cursor.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Sort direction (0 = desc/previous page, 1 = asc/next page; default is 1) default: 1. Values: 0, 1.
attendance
Required
No; body/guard rules still apply
Type
string
Details
Filter registrations by attendance status. default: all. Values: all, attendees, non_attendees.
restriction
Required
No; body/guard rules still apply
Type
string
Details
Filter registrations by restriction status. default: all. Values: all, restricted, allowed.
emails
Required
No; body/guard rules still apply
Type
array
Details
Filter registrations by email addresses. Array items: string.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

create_webinar_registration

wistia-cli create-webinar-registration

webinar_id
Required
Yes
Type
string
Details
Hashed ID of the webinar minLength: 1.
email
Required
No; body/guard rules still apply
Type
string
Details
Email address of the registrant format: email.
first_name
Required
No; body/guard rules still apply
Type
string
Details
First name of the registrant
last_name
Required
No; body/guard rules still apply
Type
string
Details
Last name of the registrant
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: email, first_name, last_name.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: email, first_name, last_name.

list_webinar_collaborators

wistia-cli list-webinar-collaborators

webinar_id
Required
Yes
Type
string
Details
Webinar Hashed ID minLength: 1.
page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Ordering. When using cursor pagination (see cursor param), only id is supported. default: id. Values: created, updated, id.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Ordering Sort Direction (0 = desc, 1 = asc; default is 1) default: 1. Values: 0, 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

create_webinar_collaborator

wistia-cli create-webinar-collaborator

webinar_id
Required
Yes
Type
string
Details
Hashed ID of the webinar minLength: 1.
email
Required
No; body/guard rules still apply
Type
string
Details
Email address of the contact to invite. Creates a new contact if one doesn't exist. Note that viewers cannot be webinar collaborators. format: email.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: email.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: email.

delete_webinar_collaborator

wistia-cli delete-webinar-collaborator

webinar_id
Required
Yes
Type
string
Details
Webinar Hashed ID minLength: 1.
id
Required
Yes
Type
integer
Details
Collaborator ID
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

get_account

wistia-cli get-account

account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_account_usage

wistia-cli get-account-usage

account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_credit_balance

wistia-cli get-credit-balance

account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_brand_preload

wistia-cli get-brand-preload

account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

update_brand_preload

wistia-cli update-brand-preload

selected_player_color
Required
No; body/guard rules still apply
Type
string
Details
Hex color string (e.g. "#3366FF") for the account's default player color : 6 hex digits, with or without the leading #. Omit or send an empty string to leave the current color untouched (there is no clear operation : color always has a value). Malformed values are rejected at the API boundary; without this check, the model's sanitize step would return nil and silently reset the account color to the global default. pattern: ^(#?[0-9a-fA-F]{6})?$.
selected_logo_hashed_id
Required
No; body/guard rules still apply
Type
string
Details
Bakery hashed_id of an uploaded logo image, which will become the account's default page logo. Omit to leave the current logo untouched. Pass an empty string to clear the logo.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

get_brand_kit_colors

wistia-cli get-brand-kit-colors

account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

invite_contacts

wistia-cli invite-contacts

contacts
Required
No; body/guard rules still apply
Type
string
Details
A comma-, whitespace-, or newline-separated list of email addresses to invite to the account. Each entry becomes a new contact if one does not already exist for that email.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: contacts.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: contacts.

dismiss_desktop_install_prompt

wistia-cli dismiss-desktop-install-prompt

account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

start_account_trial

wistia-cli start-account-trial

account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

get_current_token

wistia-cli get-current-token

account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

search

wistia-cli search

q
Required
Yes
Type
string
Details
The search query string
tags
Required
No; body/guard rules still apply
Type
array
Details
Filter results by one or more tag names. When multiple tags are provided, results matching any of the specified tags are returned (OR logic). Array items: string.
resource_type
Required
No; body/guard rules still apply
Type
array
Details
Filter results by one or more resource types. Array items: string.
custom_metadata
Required
No; body/guard rules still apply
Type
object
Details
Filter media by custom metadata field value, keyed by field key: custom_metadata[]=. Only available on accounts with access to custom metadata (other accounts receive a 403 when this parameter is passed). Custom metadata only exists on media, so results contain media only and resource_type must include media. Use an empty q to match all media. The value shape depends on the field's type: - Select, text, url, and email fields take a value (custom_metadata[region]=emea) or an array of values matched as OR (custom_metadata[region][]=emea&custom_metadata[region][]=amer). Select fields match on option keys. - Boolean fields take true or false. - Number, money, and time fields take an exact number (custom_metadata[year]=2026) or a range object (custom_metadata[budget][min]=100&custom_metadata[budget][max]=500; either bound may be omitted). - Date and datetime fields take a YYYY-MM-DD date matching that UTC day, or a range object with ISO8601 bounds (custom_metadata[shoot_date][after]=2026-01-01, custom_metadata[shoot_date][before]=2026-02-01T00:00:00Z). A bare-date bound covers its whole UTC day: after starts at the day's beginning and before runs through the day's end. - Contact fields (contact_ref, contact_multi_ref) only support the presence filter below; a value filter on them is rejected. - Any field type accepts a presence filter: custom_metadata[region][exists]=false returns media missing the field entirely (useful for metadata coverage audits), and exists=true returns media that have any value for it. Unknown or archived field keys return a 400, as do select option keys that don't exist on the field. The primary match set holds at most 100 media with no pagination; a non-blank q can add up to 100 more transcript-only matches, and an empty-q audit returns at most 100. Narrow large audits (e.g. with created_after/created_before) to complete full coverage.
include
Required
No; body/guard rules still apply
Type
string
Details
Pass custom_metadata to include each media result's custom metadata field values (same shape as the Get Custom Metadata Field Values endpoint). Only available on accounts with access to custom metadata (other accounts receive a 403 when this parameter is passed). Values: custom_metadata.
created_after
Required
No; body/guard rules still apply
Type
string
Details
Filter results created on or after this datetime. Must be a valid ISO8601 timestamp in UTC (ending with 'Z'). format: date-time.
created_before
Required
No; body/guard rules still apply
Type
string
Details
Filter results created on or before this datetime. Must be a valid ISO8601 timestamp in UTC (ending with 'Z'). format: date-time.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

resolve_resource_urls

wistia-cli resolve-resource-urls

type
Required
Yes
Type
string
Details
The kind of resource the hashed ID refers to. Values: media, folder, channel, channel_episode, webinar, remix.
hashed_id
Required
Yes
Type
string
Details
The hashed ID of the resource.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

create_expiring_access_token

wistia-cli create-expiring-access-token

expiring_access_token
Required
No; body/guard rules still apply
Type
object
Details
Current schema
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
secret_result_file
Required
Yes
Type
string
Details
New private local result file, saved with exclusive creation and mode 0600. Parent must be owner-only on POSIX. No credentials are returned to the AI client. minLength: 1.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Nested body fields:

expiring_access_token.expires_at
Required
No
Type
string
Details
an ISO8601 string of when the token will expire, defaults to two days from creation format: date-time.
expiring_access_token.scopes
Required
No
Type
array
Details
The scopes the token will be granted. graphql:all allows GraphQL requests (e.g. the embedded transcript editor) and all:delegate_to_contact_permissions allows REST API requests authorized by the token's authorizations. Defaults to ["graphql:all"] when omitted. default: ['graphql:all']. Array items: string.
expiring_access_token.authorizations
Required
No
Type
array
Details
a list of authorizations the token will have Array items: object.
expiring_access_token.authorizations[].type
Required
Yes inside object
Type
string
Details
The type of object the permission is being performed on. Supports media, folder and account. Values: media, folder, account.
expiring_access_token.authorizations[].id
Required
Yes inside object
Type
string
Details
The id of the object the permissions are being performed on: the hashed id of a media or folder, or the numeric id of the account (as returned by GET /modern/account), which must be the token's own account.
expiring_access_token.authorizations[].permissions
Required
Yes inside object
Type
array
Details
The permissions granted on the object. media supports show, update, destroy and edit-transcripts; folder supports show, update and destroy; account supports create-folders. Any permission implicitly allows viewing the object; all other permissions must be declared explicitly. A rule naming a folder also covers its subfolders: any permission lists and shows them, and update creates, renames and deletes them. Array items: string.

get_job_status

wistia-cli get-job-status

background_job_status_id
Required
Yes
Type
string
Details
The hashed ID or numeric ID of the background job minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

list_allowed_domains

wistia-cli list-allowed-domains

page
Required
No; body/guard rules still apply
Type
integer
Details
The page number to retrieve. This cannot be combined with cursor, pagination. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The number of medias per page. Use this for both offset pagination and cursor pagination. minimum: 1. maximum: 100.
cursor
Required
No; body/guard rules still apply
Type
object
Details
If cursor[enabled] is set to 1 then cursor pagination is enabled and the first set of records are fetched up to the per_page. Cursor pagination will also be turned on if cursor[before] or cursor[after] are set. Records returned will have a cursor property set which can be used to fetch more records in the same sort_by ordering. The cursor value of the last record can be used to fetch records after the current result set and the cursor of the first record can be used to fetch records before the result set. NOTE: a cursor value is only valid if the sort_by value hasn't changed from the last fetch. For example, you cannot fetch using sort_by id and then pass that cursor value to a sort_by name.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
Ordering. When using cursor pagination (see cursor param), only id and domain are supported. default: id. Values: id, domain, created.
sort_direction
Required
No; body/guard rules still apply
Type
integer
Details
Ordering Sort Direction (0 = desc, 1 = asc; default is 1) default: 1. Values: 0, 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

create_allowed_domain

wistia-cli create-allowed-domain

domain
Required
No; body/guard rules still apply
Type
string
Details
The domain name to add (www will be automatically stripped)
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.
payload
Required
No; body/guard rules still apply
Type
object
Details
Complete JSON request body instead of body flags. Supports current nested customization, caption and nullable values. Object requires: domain.
payload_file
Required
No; body/guard rules still apply
Type
string
Details
Regular local JSON body file, at most 5 MB. Cannot be mixed with body flags or payload. minLength: 1.

Body requires: domain.

get_allowed_domain

wistia-cli get-allowed-domain

domain
Required
Yes
Type
string
Details
The domain name to retrieve minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

delete_allowed_domain

wistia-cli delete-allowed-domain

domain
Required
Yes
Type
string
Details
The domain name to delete minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
confirm
Required
No; body/guard rules still apply
Type
boolean
Details
Must be true for the specific user-requested write.

get_account_stats

wistia-cli get-account-stats

account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_account_stats_by_date

wistia-cli get-account-stats-by-date

start_date
Required
No; body/guard rules still apply
Type
string
Details
The start date for the stats, formatted YYYY-MM-DD format: date.
end_date
Required
No; body/guard rules still apply
Type
string
Details
The end date for the stats, formatted YYYY-MM-DD format: date.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_project_stats

wistia-cli get-project-stats

project_id
Required
Yes
Type
string
Details
The Hashed ID or ID of the project for which you want to retrieve stats. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_media_stats_stats_media

wistia-cli get-media-stats-stats-media

media_id
Required
Yes
Type
string
Details
The hashed ID or ID of the video for which you want to retrieve stats. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_media_stats_by_date

wistia-cli get-media-stats-by-date

media_id
Required
Yes
Type
string
Details
The ID of the media minLength: 1.
start_date
Required
No; body/guard rules still apply
Type
string
Details
The start date for the stats, formatted YYYY-MM-DD format: date.
end_date
Required
No; body/guard rules still apply
Type
string
Details
The end date for the stats, formatted YYYY-MM-DD format: date.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_media_engagement

wistia-cli get-media-engagement

media_id
Required
Yes
Type
string
Details
The hashed ID or ID of the video for which you want to retrieve engagement data. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

list_visitors

wistia-cli list-visitors

page
Required
No; body/guard rules still apply
Type
integer
Details
The page of results based on the per_page parameter. minimum: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
The maximum number of results to return, capped at 100. minimum: 1. maximum: 100.
filter
Required
No; body/guard rules still apply
Type
string
Details
Filtering parameter to narrow down the list of visitors. Values: has_name, has_email, identified_by_email_gate.
search
Required
No; body/guard rules still apply
Type
string
Details
Search for visitors based on name or email address.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

get_visitor

wistia-cli get-visitor

visitor_key
Required
Yes
Type
string
Details
The unique key of the visitor. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

list_events

wistia-cli list-events

media_id
Required
No; body/guard rules still apply
Type
string
Details
An optional identifier for a specific video.
visitor_key
Required
No; body/guard rules still apply
Type
string
Details
An optional identifier for a specific visitor.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
Maximum number of events to retrieve (capped at 100). minimum: 1. maximum: 100.
page
Required
No; body/guard rules still apply
Type
integer
Details
The page of events to get data from. minimum: 1.
start_date
Required
No; body/guard rules still apply
Type
string
Details
Start date in the format 'YYYY-MM-DD'. format: date.
end_date
Required
No; body/guard rules still apply
Type
string
Details
End date in the format 'YYYY-MM-DD'. format: date.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.
all_pages
Required
No; body/guard rules still apply
Type
boolean
Details
Read bounded page/per_page pages; each request consumes API quota. Not a snapshot or guaranteed complete backup.
max_items
Required
No; body/guard rules still apply
Type
integer
Details
Maximum returned records with all_pages=true, default 1000. At most 100 requests; output includes continuation state. minimum: 1. maximum: 10000.

get_event

wistia-cli get-event

event_key
Required
Yes
Type
string
Details
The unique key of the event. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_account_analytics

wistia-cli get-account-analytics

start_date
Required
Yes
Type
string
Details
Start date for the analytics period in ISO 8601 format (YYYY-MM-DD). Inclusive : the range starts at the beginning of this date. format: date.
end_date
Required
Yes
Type
string
Details
End date for the analytics period in ISO 8601 format (YYYY-MM-DD). Exclusive : the range ends before the beginning of this date. format: date.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_account_analytics_timeseries

wistia-cli get-account-analytics-timeseries

start_date
Required
Yes
Type
string
Details
Start date for the analytics period in ISO 8601 format (YYYY-MM-DD). Inclusive : the range starts at the beginning of this date. format: date.
end_date
Required
Yes
Type
string
Details
End date for the analytics period in ISO 8601 format (YYYY-MM-DD). Exclusive : the range ends before the beginning of this date. format: date.
granularity
Required
Yes
Type
string
Details
The time granularity for the timeseries data. Values: daily, weekly, monthly.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_account_top_content

wistia-cli get-account-top-content

start_date
Required
Yes
Type
string
Details
Start date for the analytics period in ISO 8601 format (YYYY-MM-DD). Inclusive : the range starts at the beginning of this date. format: date.
end_date
Required
Yes
Type
string
Details
End date for the analytics period in ISO 8601 format (YYYY-MM-DD). Exclusive : the range ends before the beginning of this date. format: date.
group_by
Required
No; body/guard rules still apply
Type
string
Details
The type of content to rank. default: media. Values: media, channel, project.
hashed_ids
Required
No; body/guard rules still apply
Type
array
Details
Scope the ranking to these specific media's hashed IDs, rather than the whole account. Only valid with group_by=media. maxItems: 1000. Array items: string.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
The metric to rank content by. default: plays. Values: plays, loads, play_rate, engagement_rate, played_time, unique_visitors.
sort_direction
Required
No; body/guard rules still apply
Type
string
Details
The sort direction. default: desc. Values: asc, desc.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
Number of results to return. Defaults to the number of hashed_ids requested, or 10 when hashed_ids is not given. minimum: 1. maximum: 100.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_account_embed_locations

wistia-cli get-account-embed-locations

start_date
Required
Yes
Type
string
Details
Start date for the analytics period in ISO 8601 format (YYYY-MM-DD). Inclusive : the range starts at the beginning of this date. format: date.
end_date
Required
Yes
Type
string
Details
End date for the analytics period in ISO 8601 format (YYYY-MM-DD). Exclusive : the range ends before the beginning of this date. format: date.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
The metric to sort embed locations by. default: plays. Values: plays, loads, engagement_rate, play_rate, played_time, unique_visitors.
sort_direction
Required
No; body/guard rules still apply
Type
string
Details
The sort direction. default: desc. Values: asc, desc.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
Number of results to return (max 100). minimum: 1. maximum: 100. default: 10.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

find_media_by_embed_location

wistia-cli find-media-by-embed-location

embed_url
Required
Yes
Type
string
Details
The URL of the page to look up, e.g. https://example.com/pricing. The protocol is optional (https is assumed), so example.com/pricing also works.
start_date
Required
No; body/guard rules still apply
Type
string
Details
Start date for the analytics period in ISO 8601 format (YYYY-MM-DD). Inclusive : the range starts at the beginning of this date. Must be within the last 6 months. Defaults to 6 months ago, the start of the queryable window. format: date.
end_date
Required
No; body/guard rules still apply
Type
string
Details
End date for the analytics period in ISO 8601 format (YYYY-MM-DD). Exclusive : the range ends before the beginning of this date. Defaults to tomorrow, so today's activity is included. format: date.
path_match
Required
No; body/guard rules still apply
Type
string
Details
How to match the path of embed_url against embed locations. exact requires the path to match exactly; prefix matches any embed path starting with it. default: exact. Values: exact, prefix.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
Number of media hashed IDs to return (max 1000). minimum: 1. maximum: 100. default: 100.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_media_analytics

wistia-cli get-media-analytics

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
start_date
Required
Yes
Type
string
Details
Start date for the analytics period in ISO 8601 format (YYYY-MM-DD). Inclusive : the range starts at the beginning of this date. format: date.
end_date
Required
Yes
Type
string
Details
End date for the analytics period in ISO 8601 format (YYYY-MM-DD). Exclusive : the range ends before the beginning of this date. format: date.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_media_analytics_timeseries

wistia-cli get-media-analytics-timeseries

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
start_date
Required
Yes
Type
string
Details
Start date for the analytics period in ISO 8601 format (YYYY-MM-DD). Inclusive : the range starts at the beginning of this date. format: date.
end_date
Required
Yes
Type
string
Details
End date for the analytics period in ISO 8601 format (YYYY-MM-DD). Exclusive : the range ends before the beginning of this date. format: date.
granularity
Required
Yes
Type
string
Details
The time granularity for the timeseries data. Values: daily, weekly, monthly.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_media_embed_locations

wistia-cli get-media-embed-locations

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
start_date
Required
Yes
Type
string
Details
Start date for the analytics period in ISO 8601 format (YYYY-MM-DD). Inclusive : the range starts at the beginning of this date. format: date.
end_date
Required
Yes
Type
string
Details
End date for the analytics period in ISO 8601 format (YYYY-MM-DD). Exclusive : the range ends before the beginning of this date. format: date.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
The metric to sort embed locations by. default: plays. Values: plays, loads, engagement_rate, play_rate, played_time, unique_visitors.
sort_direction
Required
No; body/guard rules still apply
Type
string
Details
The sort direction. default: desc. Values: asc, desc.
embed_url
Required
No; body/guard rules still apply
Type
string
Details
Filter results to a single embed URL. When provided, only analytics for the page matching this URL are returned. The protocol is optional (https is assumed).
per_page
Required
No; body/guard rules still apply
Type
integer
Details
Number of results to return (max 100). minimum: 1. maximum: 100. default: 10.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_media_embed_locations_timeseries

wistia-cli get-media-embed-locations-timeseries

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
start_date
Required
Yes
Type
string
Details
Start date for the analytics period in ISO 8601 format (YYYY-MM-DD). Inclusive : the range starts at the beginning of this date. format: date.
end_date
Required
Yes
Type
string
Details
End date for the analytics period in ISO 8601 format (YYYY-MM-DD). Exclusive : the range ends before the beginning of this date. format: date.
granularity
Required
Yes
Type
string
Details
The time granularity for the timeseries data. Values: daily, weekly, monthly.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
The metric used to rank and select the top embed locations. default: plays. Values: plays, loads, engagement_rate, play_rate, played_time, unique_visitors.
embed_url
Required
No; body/guard rules still apply
Type
string
Details
Filter results to a single embed URL. When provided, only analytics for the page matching this URL are returned. The protocol is optional (https is assumed).
per_page
Required
No; body/guard rules still apply
Type
integer
Details
Number of top embed locations per time bucket (max 100). Remaining locations are aggregated into an "All other" entry. minimum: 1. maximum: 100. default: 5.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_media_traffic_breakdown

wistia-cli get-media-traffic-breakdown

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
start_date
Required
Yes
Type
string
Details
Start date for the analytics period in ISO 8601 format (YYYY-MM-DD). Inclusive : the range starts at the beginning of this date. format: date.
end_date
Required
Yes
Type
string
Details
End date for the analytics period in ISO 8601 format (YYYY-MM-DD). Exclusive : the range ends before the beginning of this date. format: date.
group_by
Required
Yes
Type
string
Details
The dimension to group traffic data by. Values: utm_campaign, utm_source, utm_medium, referrer_domain, viewer_screen_size.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
The metric to sort results by. default: plays. Values: plays, loads, engagement_rate.
sort_direction
Required
No; body/guard rules still apply
Type
string
Details
The sort direction. default: desc. Values: asc, desc.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
Number of results to return (max 100). minimum: 1. maximum: 100. default: 100.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_media_form_conversions

wistia-cli get-media-form-conversions

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
start_date
Required
Yes
Type
string
Details
Start date for the analytics period in ISO 8601 format (YYYY-MM-DD). Inclusive : the range starts at the beginning of this date. format: date.
end_date
Required
Yes
Type
string
Details
End date for the analytics period in ISO 8601 format (YYYY-MM-DD). Exclusive : the range ends before the beginning of this date. format: date.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
Number of results to return (max 100). minimum: 1. maximum: 100. default: 25.
cursor
Required
No; body/guard rules still apply
Type
string
Details
Cursor for pagination. Use the value from the previous response's page_info.end_cursor.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_media_languages

wistia-cli get-media-languages

media_id
Required
Yes
Type
string
Details
The hashed ID of the video. minLength: 1.
start_date
Required
Yes
Type
string
Details
Start date for the analytics period in ISO 8601 format (YYYY-MM-DD). Inclusive : the range starts at the beginning of this date. format: date.
end_date
Required
Yes
Type
string
Details
End date for the analytics period in ISO 8601 format (YYYY-MM-DD). Exclusive : the range ends before the beginning of this date. format: date.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
Number of results to return (max 100). minimum: 1. maximum: 100. default: 100.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_webinar_analytics

wistia-cli get-webinar-analytics

webinar_id
Required
Yes
Type
string
Details
The hashed ID of the webinar. minLength: 1.
include_post_event
Required
No; body/guard rules still apply
Type
boolean
Details
Whether to include on-demand viewing data after the live event ended. default: False.
post_event_start_date
Required
No; body/guard rules still apply
Type
string
Details
Start date for the post-event analytics period in ISO 8601 format (YYYY-MM-DD). Inclusive : the range starts at the beginning of this date. Only used when include_post_event is true. format: date.
post_event_end_date
Required
No; body/guard rules still apply
Type
string
Details
End date for the post-event analytics period in ISO 8601 format (YYYY-MM-DD). Exclusive : the range ends before the beginning of this date. Only used when include_post_event is true. format: date.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_webinar_registration_timeseries

wistia-cli get-webinar-registration-timeseries

webinar_id
Required
Yes
Type
string
Details
The hashed ID of the webinar. minLength: 1.
granularity
Required
Yes
Type
string
Details
The time granularity for the timeseries data. Values: daily, weekly, monthly.
include_post_event
Required
No; body/guard rules still apply
Type
boolean
Details
Whether to include on-demand viewing data after the live event ended. default: False.
post_event_start_date
Required
No; body/guard rules still apply
Type
string
Details
Start date for the post-event analytics period in ISO 8601 format (YYYY-MM-DD). Inclusive : the range starts at the beginning of this date. Only used when include_post_event is true. format: date.
post_event_end_date
Required
No; body/guard rules still apply
Type
string
Details
End date for the post-event analytics period in ISO 8601 format (YYYY-MM-DD). Exclusive : the range ends before the beginning of this date. Only used when include_post_event is true. format: date.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_webinar_traffic_breakdown

wistia-cli get-webinar-traffic-breakdown

webinar_id
Required
Yes
Type
string
Details
The hashed ID of the webinar. minLength: 1.
group_by
Required
Yes
Type
string
Details
The dimension to group traffic data by. Values: utm_campaign, utm_source, utm_medium, referrer_domain.
sort_by
Required
No; body/guard rules still apply
Type
string
Details
The metric to sort results by. default: registrations. Values: registrations, attendees, impressions.
sort_direction
Required
No; body/guard rules still apply
Type
string
Details
The sort direction. default: desc. Values: asc, desc.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_webinar_audience

wistia-cli get-webinar-audience

webinar_id
Required
Yes
Type
string
Details
The hashed ID of the webinar. minLength: 1.
per_page
Required
No; body/guard rules still apply
Type
integer
Details
Number of results to return (max 100). minimum: 1. maximum: 100. default: 25.
cursor
Required
No; body/guard rules still apply
Type
string
Details
Cursor for pagination. Use the value from the previous response's page_info.end_cursor.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

get_webinar_histograms

wistia-cli get-webinar-histograms

webinar_id
Required
Yes
Type
string
Details
The hashed ID of the webinar. minLength: 1.
account
Required
No; body/guard rules still apply
Type
string
Details
Named private Wistia account; selects credentials, not a remote account ID.

list_accounts

wistia-cli list-accounts

None
Required
No
Type
None
Details
Local helper, accepts no arguments

Complete client, OS and desktop setup

Enter actual values only into private user settings. INSTALL.md ships in npm. Remote-only clients can use the official hosted MCP with its supported authentication.

Codex

Codex is the current validation priority. Private token paths must exist in the process or remote environment where the server runs.

codex mcp add wistia -- npx -y @thenavidm/wistia-mcp-cli@latest
codex mcp list

Account credentials must reach the server through private environment settings. codex mcp add --env NAME=value stores values in your local config, so never commit that config or put secrets in a shared command. In TOML, the equivalent server is:

[mcp_servers.wistia]
command = "npx"
args = ["-y", "@thenavidm/wistia-mcp-cli@latest"]
env_vars = ["WISTIA_API_TOKEN", "WISTIA_TOKEN_FILE", "WISTIA_API_VERSION", "WISTIA_ACCOUNTS", "WISTIA_DEFAULT_ACCOUNT", "WISTIA_READ_ONLY"]

env_vars forwards those names from the environment available to Codex. If that environment does not contain them, configure private env settings locally. Codex can also call the CLI directly with SKILL.md and --agent output.

Claude Code

For a user-scoped connection, after privately configuring credentials:

claude mcp add --scope user wistia -- npx -y @thenavidm/wistia-mcp-cli@latest
claude mcp list

Use the client's private local environment settings for the account variable if they are not inherited. Claude's -e NAME=value registration option writes values into its config; only use it locally through your secret manager, with no shared command transcript. Never place credentials in a project .mcp.json. Reconnect and ask Claude to verify credentials.

Alternatively install the CLI, make SKILL.md available to Claude, and use shell commands. Registering both surfaces is optional.

Claude Desktop

Install the .mcpb extension

  1. Download wistia-2.0.0.mcpb from GitHub Releases.
  2. In a supported Claude Desktop build, open Settings > Extensions > Advanced settings > Install Extension… and select it.
  3. Enter a private Bearer token in the sensitive setting, or an absolute private token-file path. Leave the unused credential method empty. Wistia uses Bearer authentication.
  4. Enable read-only if you want only the 86 reads. Reconnect and ask for account verification.

The bundle includes production dependencies and no credentials. Use a regular private token-only file if you prefer file-based credentials. The manifest requires Node 22 or newer from a compatible host. Organization policy may restrict custom extensions. Manual bundle updates require installing the new version; no automatic directory updates are promised. GUI installation remains unverified separately from archive/protocol checks.

Manual config

Open Settings > Developer > Edit Config, or use your platform's config file:

OSTypical config path
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json
Linux~/.config/Claude/claude_desktop_config.json; confirm the location through Edit Config in your installed build
{
"mcpServers": {
"wistia": {
"command": "npx",
"args": ["-y", "@thenavidm/wistia-mcp-cli@latest"],
"env": {
"WISTIA_API_TOKEN": "YOUR_PRIVATE_API_TOKEN",
"WISTIA_TOKEN_FILE": ""
}
}
}
}

Replace the placeholders only in your private file. Merge the server entry into an existing mcpServers object instead of replacing other integrations. Fully quit and reopen Claude Desktop. Do not enable an extension and a manual entry with the same name; choose one route.

If a Windows launcher cannot execute npx directly, use "command": "cmd" with "args": ["/c", "npx", "-y", "@thenavidm/wistia-mcp-cli@latest"]. An absolute node executable and installed dist/index.js path also avoids launcher/PATH problems.

Cursor

Use private user settings at ~/.cursor/mcp.json, or Settings > Tools & MCP. Cursor documents environment interpolation and envFile support.

{
"mcpServers": {
"wistia": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@thenavidm/wistia-mcp-cli@latest"],
"env": {
"WISTIA_API_TOKEN": "${env:WISTIA_API_TOKEN}",
"WISTIA_TOKEN_FILE": "${env:WISTIA_TOKEN_FILE}"
}
}
}
}

The environment values must exist for the Cursor process. If you use envFile, keep that file private and outside version control. A project's .cursor/mcp.json must not contain actual credentials. Reconnect the server after saving.

VS Code and Copilot

Use MCP: Open User Configuration. VS Code uses servers and secure inputs, rather than a mcpServers root:

{
"inputs": [
{"type": "promptString", "id": "wistia-api-key", "description": "Wistia scoped API token (leave empty for a private token file)", "password": true},
{"type": "promptString", "id": "wistia-token-file", "description": "Optional private token-file path (leave empty for scoped API token)"}
],
"servers": {
"wistia": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@thenavidm/wistia-mcp-cli@latest"],
"env": {
"WISTIA_API_TOKEN": "${input:wistia-api-key}",
"WISTIA_TOKEN_FILE": "${input:wistia-token-file}"
}
}
}
}

Start Wistia through the MCP controls, approve trust if prompted, and enter credentials in the private input prompts. Workspace .vscode/mcp.json may contain this placeholder-only structure, but never resolved secret values. Remote development runs the server in the selected remote environment, so local file paths refer to that environment.

Windsurf

Open Cascade's MCP settings or edit the private user file ~/.codeium/windsurf/mcp_config.json. Use the Claude Desktop manual mcpServers block above with your locally configured env values. See Windsurf's current MCP documentation. Restart or reconnect Wistia in Cascade; project files must not contain secrets.

Zed

Open Settings > AI > MCP Servers > Add Server > Add Local Server, or your user settings file. Zed uses context_servers:

{
"context_servers": {
"wistia": {
"command": "npx",
"args": ["-y", "@thenavidm/wistia-mcp-cli@latest"],
"env": {
"WISTIA_API_TOKEN": "YOUR_PRIVATE_API_TOKEN",
"WISTIA_TOKEN_FILE": ""
}
}
}
}

Enter actual values only in private user settings. Check the active-server indicator before prompting. Do not wrap command and args inside a nested command object from older Zed examples.

Gemini CLI

Merge the Claude Desktop manual mcpServers block into your private ~/.gemini/settings.json. Configure the private credential values locally, then restart Gemini CLI and inspect /mcp. See Gemini CLI's MCP configuration. Its project settings must not contain real credentials. You can instead use the CLI from an agent shell.

Other local stdio clients use the same command and arguments, adapted to their config format. A client that only accepts a remote MCP URL cannot connect directly: this package does not ship a public HTTP listener. ChatGPT's remote connector setup is not a substitute for local stdio installation.

Docker

Build locally from the reviewed source; no prebuilt registry image is claimed:

git clone https://github.com/thenavidm/wistia-mcp-cli.git
cd wistia-mcp-cli
docker build -t wistia-mcp-cli .
docker run --rm -i -e WISTIA_API_TOKEN wistia-mcp-cli

Cline and other local MCP clients

Use the client's Add MCP server flow with command npx, arguments -y and @thenavidm/wistia-mcp-cli@latest, stdio transport, and private local WISTIA_API_TOKEN or WISTIA_TOKEN_FILE settings. UI names depend on the installed client. Reconnect and discover tools before an account call. Browser-only clients need a remote HTTPS connector; use Wistia's official server rather than this local stdio command.

Command inputs, JSON and output

Tool names become dashed commands; underscores are accepted too. Path parameter names follow the discovered schema, such as media_hashed_id → --media-hashed-id. Body tools accept individual top-level flags, complete --payload JSON, or --payload-file pointing to a regular JSON body file up to 5 MB. Do not mix those body routes. Path/query flags remain separate. Nested objects take JSON and array flags repeat once per item; a whole array is not a single item.

wistia-cli get-media --help
wistia-cli schema create-captions
wistia-cli list-media --hashed-ids MEDIA_A --hashed-ids MEDIA_B --per-page 5 --agent
wistia-cli list-media --cursor '{"enabled":1}' --per-page 5 --agent

IDs above are illustrative; use discovered resources from your own account. Nullable fields require an actual JSON null inside payload; --field null is a string. Nested values preserve current upstream constraints; unknown top-level body fields are refused. Body-required fields are validated during execution even when the wrapper schema allows an alternative payload route. Operations whose upstream request body is required need body flags or an explicit payload; a deliberately supplied empty object is sent as JSON, never omitted.

FlagBehavior
--help / schema COMMANDCurrent argument help / full JSON Schema
--jsonStructured JSON
--compactOne-line JSON
--agentCompact JSON, no prompts or color
--select a,b.cKeep selected fields, including nested objects/arrays
--no-color / --no-inputNoninteractive house flags
--yesNever replaces write confirmation
--confirmConfirm only the requested mutation
--account NAMESelect private local credentials
--payload JSON / --payload-file PATHComplete request body, mutually exclusive with body flags
ExitMeaning
0Success
2Invalid arguments or refused write
3Resource not found
4Authentication/permission failure
5API/transport failure
7Rate limit
10Missing or invalid private configuration

Results go to stdout, errors as JSON to stderr. Selection changes local output, not the original API response or quota charge. API success is not proof of notification delivery or a completed export.

Official MCP, official CLI and community comparisons

Surface
Hosted https://api.wistia.com/mcp/api, OAuth/Bearer
Capabilities and tradeoff
Broad account actions, owners/managers, selectable toolsets including Remix; client approval controls apply
Surface
Native wistia binary / @wistia/wistia-cli
Capabilities and tradeoff
September Data API, JSON/YAML/table/TOON, jq, body schemas, agent mode, dry-run preview and OS keychain setup
This package
Surface
Local MCP + shared task CLI + desktop archive
Capabilities and tradeoff
Same stable schema baseline, mandatory mutation confirmation, direct-call read-only enforcement, bounded pages, named private accounts and private generated-credential output
Legacy Navid wrapper
Surface
MCP-only source
Capabilities and tradeoff
33 manually declared tools; superseded by the current shared implementation, without republishing its private history

Checked October 2, 2026. The official CLI v2026.9.0 Darwin arm64 archive was checksum-verified, and version/help plus network-free dry-run media list/delete were inspected. The tested version command is wistia version. Its global help advertises dry-run and machine formats; the reviewed media delete help does not expose a mandatory confirm flag. That observation concerns the CLI, not hosted MCP client approval. Its media list help offers native page/per_page/cursor flags; our bounded all_pages/max_items/continuation workflow is a distinct local feature. We do not claim that all official resource groups lack workflow helpers.

The official MCP's selective toolsets can reduce discovery scope. Official CLI jq/TOON and schemas are already useful agent features; they are not innovations claimed for our package. The official keychain and dry-run features are advantages where those workflows matter. This package requires local credential setup, Node and maintenance. Neither tool counts nor the no-network preview establish task reliability, coverage superiority or token savings. No authenticated official MCP discovery or destructive live competitor test was performed.

A targeted current GitHub/source search found the provider CLI and our legacy wrapper; no independently validated Wistia-specific community implementation is claimed. Compare the source, actual surface and required task before selecting a package. Official products are useful comparison choices, while this page features the owned implementation we build.

Primary references: making requests, API migration, caption matches, official CLI guide and pinned official schema.

Versions and migration

Package / desktop manifest
Version / baseline
2.0.0
Meaning
Shared MCP/CLI, complete reference and guarded workflows
Modern Data API header
Version / baseline
2026-09
Meaning
Explicit dated release; support lifetime remains provider-controlled
Pinned official schema
Version / baseline
2026.09.0
Meaning
Official CLI v2026.9.0 source, 167 HTTP operations
MCP TypeScript SDK
Version / baseline
1.32.0
Meaning
Actual installed shared protocol baseline
Node
Version / baseline
22+
Meaning
CLI/manual MCP and compatible desktop runtime
TypeScript / Vitest
Version / baseline
7.0.2 / 5.0.3
Meaning
Development build and meaningful behavior checks
MCPB
Version / baseline
2.1.2
Meaning
Development packaging only
Legacy source
Version / baseline
1.0.0, 33 MCP tools
Meaning
Prior manually assembled MCP-only implementation

The public root preserves AGPL-3.0-or-later and the official schema's MIT notice. It does not push private legacy history. Current default schema excludes 25 edge-only HTTP additions, including Remix and custom metadata, until their stable eligibility is reviewed. The hosted official MCP separately documents Remix; this release does not claim matching that hosted surface.

Routes preserve /modern, with a dated version header and separate uploader. Caption creation, bulk tagging and webinar registration use current fields. Folder body camelCase and uploader project_id are retained where declared. Stats projects routes remain valid. Every old tool name maps to a current command in CHANGELOG.md; argument changes still require migration review. No token benchmark or live account outcome is invented.

Original/sanitized SHA-256 and pinned commit are in src/tools/api-source.json. Regeneration strips examples without relying on them for validation. Typecheck/build, 30 fixtures and actual full/read-only discovery are distinct from provider account outcomes, desktop GUI installation and measured Codex task usage.

Updates and removal

npm install -g @thenavidm/wistia-mcp-cli@latest
wistia-cli --version
claude mcp remove --scope user wistia
codex mcp remove wistia
npm uninstall -g @thenavidm/wistia-mcp-cli

Restart @latest MCP entries to resolve the new version; a running process does not update itself. Pin a reviewed version for reproducible automation. Read CHANGELOG.md and GitHub Releases before major updates. Manually installed desktop extensions need the new versioned .mcpb installed separately. No directory-driven automatic desktop update is claimed.

Remove each manual client entry and copied skill as appropriate. Uninstalling does not revoke tokens, delete account media, undo sharing or cancel purchases. Revoke tokens in Wistia separately. Preserve private data before removing local private files. Do not overwrite an existing npm version to roll back.

Validation and remaining evidence

Typecheck, build and 30 behavior/shared-CLI tests pass. Real stdio discovery exposes 169 tools, or 86 in read-only mode. All 83 mutations require confirmation. Public CI passes on Linux, Windows and macOS with Node 22 and 24. Fresh public npm installation and downloaded desktop discovery are verified separately. Source history and both artifacts are scanned for credentials. Production dependency audit has zero findings; development packaging advisories are documented in SECURITY.md and excluded from runtime artifacts. Provider account outcomes and desktop GUI installation remain separately unverified.

Codex is the current setup and measurement priority. Codex CLI 0.147.0 accepts the documented stdio configuration and private environment forwarding. Claude Code is optional and its benchmarks are deferred. Fresh Codex standing context and matched successful task usage remain pending; no character estimates or borrowed measurements replace them.

More tools for video and creator workflows

Connect the tools needed for your requested work.

Wistia MCP Server & CLI FAQs

Official alternatives, private access, captions, uploads, pagination, desktop setup, safeguards and costs.

A local stdio server exposing Wistia account operations through structured schemas to a compatible AI client.

wistia-cli runs the exact same operations through the shared MCP implementation.

Scripts and shell agents receive structured output.

Yes.

It has a hosted MCP and an official wistia task CLI.

Both are compared accurately in this guide.

Mandatory mutation confirmation, bounded page collection, named private accounts and private generated-credential output give this owned package a useful case.

No overall superiority claim is made.

The wrapper is AGPL-3.0-or-later software.

Wistia service plans, media/storage allowances and paid orders remain separate.

An Account Owner opens Account Settings > API and creates a narrowly scoped token.

Store it privately when shown at creation.

Use private local settings or an owner-only file outside repositories.

Never put token values in chats, issues, command arguments or shared project configs.

No.

It prints setup instructions.

The official hosted MCP separately supports OAuth, and the official CLI offers keychain setup.

Yes, use the documented local stdio registration or CLI with the shipped skill.

Codex is the current setup and validation priority.

Yes, the versioned .mcpb contains the same server and production dependencies.

Compatible host/runtime and custom-extension policy apply.

GUI installation is separately unverified.

It needs local stdio access.

Remote-only clients can use the official hosted MCP with its own supported authentication.

The stable September schema and 2026-09 header, with /modern routes.

Wistia controls version retirement and feature eligibility.

This release does not include edge-only Remix routes.

The official hosted MCP documents a Remix toolset; use its current supported surface where that is the task.

Find Caption Matches uses POST but does not modify captions.

It stays available in read-only mode; a match does not authorize an edit.

Read the active track/version, prepare one to 20 exact replacements and confirm the batch.

Paired ordered time windows and a positive expected_version are required; a stale version needs a fresh read.

Yes, upload_media_file sends regular local bytes as multipart after confirmation, with no symlinks and a 250 MiB local cap.

The remote URL uploader is a separate command.

Twenty offset lists support bounded all_pages and max_items with a 100-request cap.

Continuation is not a consistent backup; cursor reads remain manual.

No.

Inspect account state after an unknown upload, edit or order outcome before repeating it.

GET rate-limit retries never resubmit writes.

A new exclusive private secret_result_file inside an owner-only directory.

No generated credentials are returned to the model; uncertain save/creation outcomes need provider inspection or revocation.

Fresh Codex context and matched successful task measurements are pending.

No estimates, borrowed metrics or tool-count savings are substituted.

Navid Moazzez

AI business strategist & AI OS builder

Navid Moazzez helps creators and founders master AI and build their own AI Operating System (AI OS) to automate their business and life.

Navid.me is reader-supported. When you buy through links on this site, I may earn an affiliate commission. Learn more.

More MCP servers & CLIs

Related free tools

Free AI newsletter

The most actionable AI newsletter for founders

Every week, get proven AI strategies, curated tools, and step-by-step systems to grow your audience, create better content, and build a profitable creator business.

No fluff, no filler, no BS. Just five minutes each week that might level up your online business and life.

P.S. Sign up now to get free access to my ultimate AI tools guide for creators.

Loved by 10,000+ readers