An open source Wistia MCP server and shared CLI with 169 tools, private accounts and a desktop extension.
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 askingFind 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.
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
- Sign in to the intended Wistia account. An Account Owner creates account API tokens.
- Open Account Settings > API, following Wistia's access-token instructions.
- Create a named token with only the permissions your task needs. Copy the token when it is shown at creation and store it privately.
- Set
WISTIA_TOKEN_FILEto an absolute token-only file outside repositories, or configureWISTIA_API_TOKENonly in private local client/shell settings. - Run
wistia-cli doctor, thenwistia-cli doctor --networkfor 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 --agentwistia-cli --version
wistia-cli doctor
wistia-cli doctor --network
wistia-cli list-accounts --agent
wistia-cli list-media --per-page 5 --agentNetwork 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 --agentThe 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:
| Flag | What it does |
|---|---|
| --json | Structured JSON |
| --compact | One-line JSON |
| --agent | Compact JSON without prompts or color |
| --select a,b.c | Select local output fields |
| --confirm | Confirm the specific requested mutation |
| --account NAME | Choose private credentials |
| --payload JSON / --payload-file PATH | Complete request body instead of body flags |
A script can branch on the exit code:
| Exit code | What it means |
|---|---|
| 0 | Success |
| 2 | Invalid arguments or refused write |
| 3 | Resource not found |
| 4 | Authentication or permission failure |
| 5 | API or transport failure |
| 7 | Rate limit |
| 10 | Missing 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 --agentCopy/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 --agentURL 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 --agentPurchase 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 --agentAutomatic 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
Share links
resolve_share_link- What it does
- Resolves a share link URL segment : the part after
/s/in a share link likehttps://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 anythingTokens 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
actionsarray of up to 1000 orders or onejobthat 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 anythingTokens 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
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 --agentWistia 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.
- Default
- Empty
- What it does
- Private scoped Bearer token
- Default
- Empty
- What it does
- Regular owner-only token-only file, max 64 KB; precedence over env token
- Default
- 2026-09
- What it does
- Reviewed YYYY-MM Data API release header
- Default
- Empty
- What it does
- Private named Bearer credentials; replaces single-account settings
- Default
- First label
- What it does
- Default local credential label
- Default
- 0
- What it does
- Hide/refuse all 83 writes, leaving 86 reads
- Default
- 1
- What it does
- 0 blocks writes even when confirmed
- Default
- None
- What it does
- Private guard-decision log path
- Default
- 30000
- What it does
- Integer request deadline, 100 to 300000 ms
- Default
- 2
- What it does
- GET 429 retries, 0 to 5
- 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 see | What to do |
|---|---|
| No configured account | Set private WISTIA_TOKEN_FILE or WISTIA_API_TOKEN, or named accounts. |
| 401/403 | Check token permissions, resource access, role and feature eligibility. |
| CLI works; GUI fails | Configure the actual GUI process or private user settings. |
| Invalid body | Read the current schema and choose one body input route. |
| Caption version conflict | Read the active track/version again before preparing a new approved edit. |
| First page only | Use supported bounded all_pages/max_items or manual native cursor reads. |
| 429 | Respect shared account quotas and longer Retry-After delays. |
| Unknown mutation outcome | Inspect the account before repeating upload, edit, order or credential creation. |
| Private credential save failed | Inspect/revoke the provider credential; never automatically create another. |
| Desktop bundle rejected | Check 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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
sort_by- Required
- No; body/guard rules still apply
- Type
- string
- Details
- Ordering. When using cursor pagination (see cursor param), only
idandcreatedare 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
speakersto 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
speakersto 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
languagefield (for exampleengorspa). When combined withmedia_ids[], captions must match both. Array items: string.
include- Required
- No; body/guard rules still apply
- Type
- string
- Details
- Set to
metadatato 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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
sort_by- Required
- No; body/guard rules still apply
- Type
- string
- Details
- Ordering. When using cursor pagination (see cursor param), only
idis 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
segmentsfor time-coded caption cues ordiarized_segmentsfor 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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
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 setai_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 return400. 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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
sort_by- Required
- No; body/guard rules still apply
- Type
- string
- Details
- Ordering. When using cursor pagination (see cursor param), only
id,updatedandcreatedare 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.
urlmust 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.
urlmust 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.
urlmust 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.
urlmust 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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
sort_by- Required
- No; body/guard rules still apply
- Type
- string
- Details
- Ordering. When using cursor pagination (see cursor param), only
id,updatedandcreatedare 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
413and 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. Usejobinstead 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. Ascoperesolves to exactly what the matching list endpoint returns for that parent, including its defaults -- so afolderscope onmediareaches 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 withcreate, 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.
deletealso soft-deletes media inside afolderorsubfolder. An account owner or manager can restore it from the trash until it purges.moveapplies tomediaonly, 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.
foldermeans a top-level folder (previously called a project); usesubfolderfor a folder nested inside one.captionsoperates on a single caption track -- one media in one language. Thecustomization_*types each write one concern of a media's player customizations and acceptupdateonly. Theiridis the media's hashed ID, and their payload matches the corresponding Update Customizations endpoint (for example,customization_appearancetakes 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
captionsthis is the caption track's own ID (theidfield 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) andname. Creating captions requiresmedia_idandcaption_file(the SRT contents as a string; the multipart file upload the Create Captions endpoint accepts is not available here) and takes an optionallanguage, detected from the file when omitted. Updating captions takescaption_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 requiresfolder_id(the destination folder's hashed ID) and accepts an optionalsubfolder_id, which must belong to that folder. Omitsubfolder_idto move the media to the folder's root level. Acustomization_*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. Amediaupdate payload can also carry acustom_metadataobject 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. Anullvalue 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.
createis 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_typeandoperation: -mediaand thecustomization_*types:account,folder,subfolder,channel. -captionswithupdateordelete, which address a caption track:account,media,folder,channel. -channel_episode:account,channel,media. -subfolder:account,folder. -folderandchannel: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
idnames. Required, because a hashed ID does not say what it belongs to -- the same value could name a folder or a channel. Useaccountto mean every record the job could reach, with noid. 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
scopewhen 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 eitherscopeorids, 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
updateandmove.
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
413and 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. Usejobinstead 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. Ascoperesolves 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 acceptpurchase. Values:purchase.
actions[].resource_type- Required
- Yes inside object
- Type
- string
- Details
- What to order for the media.
captionsorders Wistia-generated English captions -- computer-generated or human-reviewed.localizationorders a dubbed, language-specific version of the media.extended_audio_descriptionorders an extended audio description track.text_translationtranslates 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.
captionsacceptsautomated(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), andautomatically_enable(show the captions on the video as soon as they are ready). Each is treated asfalsewhen omitted or unrecognized. What each option costs depends on the account's plan and billing settings.localizationrequiresoutput_language, a 3-character IETF language code, and acceptsauto_enable(defaulttrue).extended_audio_descriptionacceptsenabled(defaulttrue),ai_enabled(defaulttrue),ietf_language_tag(defaulteng), andorder_instructions.text_translationrequirestarget_languageand acceptssource_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.
captionsorders Wistia-generated English captions -- computer-generated or human-reviewed.localizationorders a dubbed, language-specific version of the media.extended_audio_descriptionorders an extended audio description track.text_translationtranslates 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
idnames. Required, because a hashed ID does not say what it belongs to -- the same value could name a folder or a channel. Useaccountto 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
scopewhen the media do not share a parent. Give eitherscopeorids, 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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
sort_by- Required
- No; body/guard rules still apply
- Type
- string
- Details
- Ordering. When using cursor pagination (see cursor param), only
id,updatedandcreatedare 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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
sort_by- Required
- No; body/guard rules still apply
- Type
- string
- Details
- Ordering. When using cursor pagination (see cursor param), only
idis 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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
sort_by- Required
- No; body/guard rules still apply
- Type
- string
- Details
- Field to sort by. When using cursor pagination (see cursor param), only
idis 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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
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_seasonsis published asepisodic`. 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_seasonsis published asepisodic`. 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
idandcreatedare 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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
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
idandcreatedare 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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
sort_by- Required
- No; body/guard rules still apply
- Type
- string
- Details
- Ordering. When using cursor pagination (see cursor param), only
idis 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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
sort_by- Required
- No; body/guard rules still apply
- Type
- string
- Details
- Field to sort by. When using cursor pagination (see cursor param), only
idandscheduled_forare 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
Zor+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
Zor+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_cursororpage_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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
sort_by- Required
- No; body/guard rules still apply
- Type
- string
- Details
- Ordering. When using cursor pagination (see cursor param), only
idis 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 andresource_typemust includemedia. Use an emptyqto 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 taketrueorfalse. - 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 aYYYY-MM-DDdate 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:afterstarts at the day's beginning andbeforeruns 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]=falsereturns media missing the field entirely (useful for metadata coverage audits), andexists=truereturns 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-blankqcan add up to 100 more transcript-only matches, and an empty-qaudit returns at most 100. Narrow large audits (e.g. withcreated_after/created_before) to complete full coverage.
include- Required
- No; body/guard rules still apply
- Type
- string
- Details
- Pass
custom_metadatato 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:allallows GraphQL requests (e.g. the embedded transcript editor) andall:delegate_to_contact_permissionsallows 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,folderandaccount. 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
mediaorfolder, or the numericidof theaccount(as returned byGET /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.
mediasupportsshow,update,destroyandedit-transcripts;foldersupportsshow,updateanddestroy;accountsupportscreate-folders. Any permission implicitly allows viewing the object; all other permissions must be declared explicitly. A rule naming afolderalso covers its subfolders: any permission lists and shows them, andupdatecreates, 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 theper_page. Cursor pagination will also be turned on ifcursor[before]orcursor[after]are set. Records returned will have acursorproperty set which can be used to fetch more records in the samesort_byordering. 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 thesort_byvalue hasn't changed from the last fetch. For example, you cannot fetch usingsort_byid and then pass that cursor value to asort_byname.
sort_by- Required
- No; body/guard rules still apply
- Type
- string
- Details
- Ordering. When using cursor pagination (see cursor param), only
idanddomainare 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), soexample.com/pricingalso 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_urlagainst embed locations.exactrequires the path to match exactly;prefixmatches 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
- 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 listAccount 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 listUse 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
- Download
wistia-2.0.0.mcpbfrom GitHub Releases. - In a supported Claude Desktop build, open Settings > Extensions > Advanced settings > Install Extension… and select it.
- 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.
- 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:
| OS | Typical 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-cliCline 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 --agentIDs 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.
| Flag | Behavior |
|---|---|
| --help / schema COMMAND | Current argument help / full JSON Schema |
| --json | Structured JSON |
| --compact | One-line JSON |
| --agent | Compact JSON, no prompts or color |
| --select a,b.c | Keep selected fields, including nested objects/arrays |
| --no-color / --no-input | Noninteractive house flags |
| --yes | Never replaces write confirmation |
| --confirm | Confirm only the requested mutation |
| --account NAME | Select private local credentials |
| --payload JSON / --payload-file PATH | Complete request body, mutually exclusive with body flags |
| Exit | Meaning |
|---|---|
| 0 | Success |
| 2 | Invalid arguments or refused write |
| 3 | Resource not found |
| 4 | Authentication/permission failure |
| 5 | API/transport failure |
| 7 | Rate limit |
| 10 | Missing 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
- 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
- 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
- Version / baseline
- 2.0.0
- Meaning
- Shared MCP/CLI, complete reference and guarded workflows
- Version / baseline
- 2026-09
- Meaning
- Explicit dated release; support lifetime remains provider-controlled
- Version / baseline
- 2026.09.0
- Meaning
- Official CLI v2026.9.0 source, 167 HTTP operations
- Version / baseline
- 1.32.0
- Meaning
- Actual installed shared protocol baseline
- Version / baseline
- 22+
- Meaning
- CLI/manual MCP and compatible desktop runtime
- Version / baseline
- 7.0.2 / 5.0.3
- Meaning
- Development build and meaningful behavior checks
- Version / baseline
- 2.1.2
- Meaning
- Development packaging only
- 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-cliRestart @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.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 newsletterThe 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.











