
Panda Video
Video hosting: upload, organize and configure videos, analytics, AI subtitles and Shorts.
Что умеет
Какие данные видит
Нужен ли аккаунт
Нужен API-ключ из настроек сервиса
Video hosting: upload, organize and configure videos, analytics, AI subtitles and Shorts.
Как подключить
Как подключить Panda Video к Claude
Адрес сервера, который нужно вставить в настройках Claude:
https://mcp.pandavideo.com/mcp
- Откройте Claude (сайт claude.ai или приложение для компьютера).
- Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
- Нажмите Добавить пользовательский коннектор (Add custom connector).
- Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
- В чате нажмите + → Коннекторы и включите новый коннектор.
Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.
Авторизация
После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.
Как подключить Panda Video к ChatGPT
Адрес сервера, который нужно вставить в настройках ChatGPT:
https://mcp.pandavideo.com/mcp
- Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
- Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
- Откройте Настройки → Коннекторы и нажмите Создать (Create).
- Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
- В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
- В новом чате откройте + → Приложения/Коннекторы и включите коннектор.
Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.
Авторизация
При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.
Как подключить Panda Video к Cursor
Адрес сервера, который нужно вставить в настройках Cursor:
https://mcp.pandavideo.com/mcp
Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.
Вручную:
- В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
- Вставьте JSON, скопированный ниже, в открывшийся файл
~/.cursor/mcp.json(для одного проекта:.cursor/mcp.jsonв корне проекта). - Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.
Авторизация
Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.
Список инструментов сервера (177)
Технические названия из tools/list. Нужны только разработчикам.
| panda_list_videos | List videos. Each video has: id, title, status, created_at, length (seconds), folder_id, config. Results are returned newest first by default. There is NO server-side date filter or sorting — to find videos created on a specific date, fetch videos and check created_at in the response. |
| panda_get_video | Get full properties of a video by its ID, including config, profile, status, duration, folder, subtitles, etc. |
| panda_update_video | Update basic metadata of a video: title, description text, or move to a different folder. Do NOT use this for player settings, chapters, subtitles, thumbnails, or any playback configuration — use the specific tools for those. |
| panda_delete_videos | Delete one or more videos by ID. Sends to trash for 30 days. |
| panda_move_videos | Move one or more videos to a folder |
| panda_duplicate_video | Create a copy of a video. Only works for CONVERTED, non-external, non-funnel videos. |
| panda_reencode_video | Re-encode a video with a specific compression mode |
| panda_upload_video_from_url | Import a video from an external URL (YouTube, Vimeo, S3, generic HTTPS) |
| panda_list_folders | List all folders. Returns array of {id, name, parent_folder_id, status, created_at, videos_count}. |
| panda_create_folder | Create a new folder. Returns the created {id, name, parent_folder_id}. |
| panda_get_folder | Get a folder's details and contents. Returns {id, name, parent_folder_id, status, videos: [{id, title, status}], folders: [{id, name}]}. |
| panda_update_folder | Update folder properties (name, parent). Also used to recover deleted folders with status=true. |
| panda_delete_folder | Delete a folder by ID. WARNING: All videos and subfolders inside are also deleted (cascade). Goes to trash for 30 days. |
| panda_list_playlists | List all playlists. Returns array of {id, name, videos_quantity, duration, access_type, updated_at}. |
| panda_create_playlist | Create a new playlist. Videos are REFERENCES — removing from playlist does NOT delete the video. Returns the created {id, name, description, access_type}. |
| panda_get_playlist | Get details of a specific playlist. Returns {id, name, description, videos_quantity, access_type, creator_name, duration, updated_at}. |
| panda_update_playlist | Update a playlist's properties |
| panda_delete_playlist | Delete a playlist. Videos are NOT deleted — only the collection is removed. |
| panda_get_playlist_videos | List all videos in a playlist. Returns array of {id, video_id, order, video: {id, title, duration}}. |
| panda_add_videos_to_playlist | Add videos to a playlist with order. Returns the updated playlist video entries [{video_id, playlist_id, order}]. |
| panda_remove_video_from_playlist | Remove a video from a playlist. Does NOT delete the video. |
| panda_list_profiles | List all player profiles (GET /profile). 'Profiles' are player UI configs, not user accounts. Returns {data: [{id, name, pullzone_name}]} — a profile's `name` is the ID of the video it was created for. Use panda_get_profile for a profile's full settings. No pagination. |
| panda_create_profile | Create a new player profile (POST /profile). IMPORTANT: per the Panda API, `name` MUST be the ID of an existing video — if it is not a real video ID the API returns 500 and nothing is created. Create only accepts `name` and `exclusive`; it does NOT accept colors/controls/vsl. To set those, call panda_update_profile with the returned profile id afterward. Returns {data: {id, name}}. |
| panda_get_profile | Get details of a specific player profile including all settings (controls, colors, vsl, saveProgress) |
| panda_update_profile | Update a player profile's settings. Covers: player colors (colors.primaryColor / controlsColor), enabled controls list, smart autoplay (vsl.smartAutoplay), VSL mode (vsl.disablePause / disableForward / alternativeProgress), playback speed (general.default_speed), save progress, big play button (use panda_update_video_config — that lives elsewhere), and SUBTITLE APPEARANCE: caption text/background colors (captions.foreground / captions.background — 8-char hex with alpha) and caption font size (general.fontSize as keyword 'extraSmall'|'small'|'normal'|'large'|'extraLarge', plus general.fontSizePx as the matching pixel number). When the user names a UI label like "extra pequeno" / "extra small", map it to the corresponding fontSize keyword and send both fontSize + fontSizePx. Do NOT use this tool for: chapters (use panda_update_video_config), subtitle generation (use panda_generate_ai_subtitles), thumbnails, or title/description (use panda_update_video). Each nested object REPLACES the existing one — send the COMPLETE object you want to keep. |
| panda_delete_profile | Delete a player profile by ID |
| panda_apply_profile_to_videos | Apply a player profile to one or more videos. Returns confirmation with the list of updated video_ids. |
| panda_list_lives | List all live streams. Returns array of {id, title, status, scheduled_at, created_at}. |
| panda_create_live | Create a new live stream event |
| panda_get_live | Get details of a specific live stream. Returns {id, title, status, scheduled_at, stream_key, rtmp, live_hls, created_at}. |
| panda_finish_live | End a live broadcast |
| panda_delete_lives | Delete one or more live streams |
| panda_list_stream_keys | List all stream keys for live broadcasting. Returns array of {id, name, stream_key, rtmp, created_at}. |
| panda_create_stream_key | Create a new named stream key for OBS or other streaming software |
| panda_get_live_viewers | Get viewer history for a live stream. Returns time-series array of viewer counts. |
| panda_get_account_analytics | Get general analytics metrics for the whole account. Returns {views, unique_viewers, watch_time_seconds, avg_watch_percentage, plays}. |
| panda_get_video_analytics | Get analytics metrics for a specific video. Returns {views, unique_viewers, watch_time_seconds, avg_watch_percentage, plays}. |
| panda_get_retention_analytics | Get audience retention analytics (account-wide or per video). Returns array of {percentage, viewers} showing drop-off at each point. |
| panda_get_ranking_analytics | Get ranking analytics for the account. Returns {most_watched: [{video_id, title, watch_time}], most_played: [{video_id, title, plays}]}. |
| panda_get_realtime_analytics | Get real-time viewer count and activity for the account. Returns {current_viewers, active_videos: [{video_id, title, viewers}]}. |
| panda_get_bandwidth_analytics | Get bandwidth/traffic usage by folder, by video, or DRM by video. Returns array of {name, bandwidth_bytes, video_id?} entries. |
| panda_list_funnels | List all funnels. Returns {data: [{id, name, videos_count, created_at}]}. A funnel with videos_count=0 has no videos. Funnels are NOT folders. |
| panda_create_funnel | Create a new video funnel |
| panda_get_funnel | Get a funnel's details and its videos. Returns {data: {id, name, videos: [{id, title, status, is_first}]}}. Funnels are NOT folders. |
| panda_update_funnel | Update a funnel's properties (rename) |
| panda_delete_funnel | Delete a funnel by ID. WARNING: this is destructive. Videos inside the funnel may become inaccessible. |
| panda_add_videos_to_funnel | Add one or more videos to a funnel with optional coordinates |
| panda_remove_videos_from_funnel | Remove one or more videos from a funnel |
| panda_get_watermark_status | Check whether watermark/DRM is currently active on the account. Returns {active: boolean}. |
| panda_enable_watermark | Enable watermark protection for the account |
| panda_disable_watermark | Disable watermark protection for the account |
| panda_list_watermark_groups | List all watermark groups. Returns array of {id, name, active, video_ids: [], folder_ids: [], created_at}. |
| panda_create_watermark_group | Create a new watermark group |
| panda_get_watermark_group | Get a watermark group's details. Returns {id, name, video_ids: [], folder_ids: [], created_at}. |
| panda_update_watermark_group | Update a watermark group |
| panda_delete_watermark_group | Delete a watermark group |
| panda_manage_drm_group_items | Add or remove videos and/or folders from a DRM watermark group. Returns the updated group with current video_ids and folder_ids. |
| panda_get_thumbnails | Get all thumbnails for a video. Returns {start: {url, name}, pause: [{url, name}], end: {url, name}} — each type may be null if not set. |
| panda_add_thumbnail | Upload the video cover (start thumbnail) — the image shown before the user presses play. Provide `image_url` pointing to a publicly reachable image (PNG/JPG/WEBP); the tool downloads it and uploads as multipart to the Panda API. Replaces any existing start thumbnail. After this returns, the cover is active immediately for the player. |
| panda_add_pause_thumbnail | Upload a pause thumbnail — an image shown when the viewer pauses the video. Provide `image_url` pointing to a publicly reachable image. Returns the uploaded thumbnail's filename. NOTE: the upload alone is NOT visible in the player — the viewer-facing display requires a pause CTA wiring (with time window and optional button overlay) which is configured separately via the dashboard. Use this MCP tool only to upload the asset; for full setup, redirect the user to the dashboard pause-thumbnail editor. |
| panda_add_end_thumbnail | Upload an end thumbnail — an image shown after the video finishes. Provide `image_url` pointing to a publicly reachable image. Returns the uploaded filename. NOTE: the upload alone is NOT visible in the player — the viewer-facing display requires an `end` CTA on the player config that references this thumbnail. Use this MCP tool to upload the asset; for full setup (CTA wiring), redirect the user to the dashboard end-thumbnail editor. |
| panda_delete_thumbnail | Delete a thumbnail from a video. Type: 'start' (default), 'pause' (requires thumb_name), 'end'. |
| panda_get_subtitles | Get all subtitle information for a video |
| panda_get_subtitle_by_language | Get a subtitle file for a specific language |
| panda_delete_subtitle | Remove a subtitle from a video by language |
| panda_generate_ai_subtitles | Generate subtitles for a video using Panda AI. Creates a transcription in the specified language. Costs credits based on video duration and tier. |
| panda_update_subtitle_visibility | Show or hide a subtitle language (hidden subtitles are not visible but still indexable for search) |
| panda_download_subtitle | Download a subtitle file for a specific language |
| panda_get_videos_count | Get total video count by status (CONVERTED, CONVERTING, DRAFT, etc.) |
| panda_get_custom_fields | Get all custom fields for a video. Returns array of {id, key, value} metadata pairs. |
| panda_create_custom_field | Create a custom metadata key-value field for a video (for tagging/categorization). Do NOT use this for chapters, subtitles, CTAs, or player settings — use the specific tools for those. Max 50 fields per video. |
| panda_list_users | List all users in the organization. Returns array of {id, name, email, role_id, role_name, created_at}. |
| panda_create_user | Create a new user in the organization. Returns the created {id, name, email, role_id}. |
| panda_update_user | Update a user's information or role |
| panda_delete_user | Remove a user from the organization |
| panda_request_download | Request an async download for a video. Only works for CONVERTED, non-external, non-Hotmart videos. Returns {status, message}. |
| panda_check_download_status | Check the status of an async download request. Returns {status, download_url} — url is present when status is 'ready'. |
| panda_list_shorts | List all Shorts jobs. Projects expire after ~30 days. Returns array of {job_id, status, user_context: {video_title, source_type}, completed_segments, created_at}. |
| panda_import_video_for_shorts | Import a video for AI shorts generation. Sources: library (video_id), youtube (source_url). Default config: vertical aspect, 30-60s duration, no captions. Video must be CONVERTED, 5min-5hrs, <50GB, no DRM. |
| panda_list_short_segments | List all generated segments (clips) for a Shorts job. Each segment has viralScore, duration, transcription. |
| panda_delete_short | Delete a Shorts job/project |
| panda_save_segment_to_library | Save a Short segment to the video library as an independent video |
| panda_list_ai_assistants | List all AI video assistants. Returns array of {id, name, status, videos: [{id, title}], created_at}. |
| panda_get_ai_assistant | Get an AI assistant's details. Returns {id, name, status, videos: [{id, title}], files: [{id, file_name}], answers_count}. |
| panda_create_ai_assistant | Purchase credits and create a new AI assistant for a video. Returns the created {id, name, status, video_id}. |
| panda_get_ai_assistant_purchase_overview | Get credit cost overview before creating an AI assistant. Returns {credit_cost, current_balance, sufficient_credits}. |
| panda_update_ai_assistant | Update AI assistant information (name, status, etc.) |
| panda_update_ai_assistant_video_bindings | Replace the videos bound to an AI assistant. Sends the FULL list of video_ids — existing bindings not in the list will be removed. |
| panda_update_ai_assistant_chat_visibility | Show or hide the AI chat widget on the video player |
| panda_delete_ai_assistant | Delete an AI assistant |
| panda_generate_tutor_file_upload_url | Generate a presigned URL to upload a PDF/file to a Tutor AI assistant. Returns upload_url and file_id. After uploading, call panda_confirm_tutor_file_upload. |
| panda_confirm_tutor_file_upload | Confirm that a file was successfully uploaded to a Tutor AI assistant (call after uploading to the presigned URL) |
| panda_delete_tutor_file | Delete a file from a Tutor AI assistant |
| panda_add_tutor_videos | Add videos to a Tutor AI assistant |
| panda_create_ai_dubbing | Create an AI dubbing job for a video. Costs 2 credits/min (standard) or 10 credits/min (lipsync). Returns {id, status, video_id, from_lang, to_lang}. |
| panda_delete_dubbing_audio | Delete a dubbed audio track from a video |
| panda_get_referrals_summary | Get referral program summary (balance, estimated value) |
| panda_get_credits_balance | Get the current credits balance for the account. 1 credit = R$1. |
| panda_get_credits_history | Get credits transaction history for a date range. Returns {balance, history: [{id, type, amount, status, description, created_at}]}. |
| panda_get_auto_recharge_settings | Get auto-recharge configuration for credits. Returns {enabled, trigger_value, action_value}. |
| panda_enable_auto_recharge | Enable auto-recharge for credits. When balance drops below trigger, recharges action_value. |
| panda_update_auto_recharge | Update auto-recharge settings |
| panda_disable_auto_recharge | Disable auto-recharge for credits |
| panda_list_comparisons | List all A/B test comparisons. Status: DRAFT → IN_PROGRESS → COMPLETED. Returns array of {id, name, description, status, videos: [], winner_video_id, created_at}. |
| panda_create_comparison | Create a new A/B test. Needs at least 2 videos to start. Returns the created {id, name, status, video_ids}. |
| panda_start_comparison | Start an A/B test (begin collecting data). Only from DRAFT status. Returns the updated comparison with status IN_PROGRESS. |
| panda_finish_comparison | Finish an A/B test and declare a winner. PERMANENT — cannot be reversed. |
| panda_delete_comparisons | Delete one or more A/B tests |
| panda_get_player_config | Get global player configuration (applies to all videos without a custom profile) |
| panda_update_player_config | Update global player configuration (applies to all videos without a custom profile). Returns the updated config object. |
| panda_get_video_player_config | Get per-video player configuration (chapters, CTAs, pixels, redirect, AI features, retention markers, subtitle default, offline config) |
| panda_update_video_config | Update per-video config (POST /player?type=video). Send only fields you want to change. Fields: chapters, default_subtitle, redirect_video_id, custom_pixels, on_funnel, panda_branding, questions (AI quiz), mindmap (AI), abstract (AI ebook), retention_markers, ai. NOT for: controls, autoplay, Smart Autoplay, colors, speed, big play button, save progress — use panda_update_profile for those. |
| panda_set_video_offline | Configure offline playback for a video (mobile app feature) |
| panda_add_cta | Add a CTA (Call-to-Action) button to a video. Placement 'inside' = overlay on the video, 'outside' = below the video. Builds the same payload the dashboard's button editor sends. |
| panda_update_cta | Update a CTA on a video. Only the fields you pass are changed; everything else keeps its current value. Placement cannot be changed — delete and re-add the CTA instead. |
| panda_delete_cta | Delete a CTA from a video |
| panda_get_ai_workflows | Get AI workflow status for a video (transcription, dubbing, translation progress) |
| panda_delete_ai_workflow | Delete an AI workflow (transcription, dubbing, etc.) |
| panda_get_subscription | Get current subscription/plan details. Returns {subscription_id, subscriptions: {name, status, active}, currency, addons}. |
| panda_list_invoices | List all invoices. Returns array of {id, status, amount_due, amount_paid, created, due_date, invoice_pdf, hosted_invoice_url}. |
| panda_list_plans | List available subscription plans and pricing |
| panda_list_subaccounts | List all subaccounts and their usage limits. Returns array of {organization_id, name, status, credits_balance, storage_used, limits}. |
| panda_update_subaccount | Update a subaccount's settings (name, limits, status) |
| panda_delete_subaccount | Delete a subaccount |
| panda_transfer_credits | Transfer credits to a subaccount |
| panda_help_search | Search Panda Video help center articles to answer user questions. Searches through ALL 136 pre-indexed articles from the official help center (https://help.pandavideo.com/pt-br/). Use this tool whenever the user has a QUESTION about how Panda Video works, pricing, features, integrations, configuration, etc. DO NOT use this for API execution commands — only for knowledge/support questions. IMPORTANT: Base your answer EXCLUSIVELY on the article content returned. Do NOT infer, assume, or use external knowledge. |
| panda_help_get_article | Get the full content of a specific Panda Video help center article by slug. Use this after searching to read the complete content of an article. The response is the full official documentation. |
| panda_get_business_rules | Returns the platform business rules: the real consequences of actions that modify, delete or move resources (e.g., removing a video from a funnel deletes it permanently, it does not just unlink it). Useful before planning such actions, so the advice given to the user matches how the platform actually behaves. Domains: funnels, videos_and_folders, playlists, drm_watermark, comparisons_ab_tests, lives, shorts, player_profiles, anti_download_and_domains, credits, thumbnails_and_subtitles. |
| panda_list_refer | List the library-level domain referrers (Domain Protection / allow-block list for playback). Returns { refers: [{ id, url, type, status }] } where type is ALLOW|BLOCK and status is one of active|inactive|pending|deleting|turning_inactive. library_id is resolved automatically when omitted. |
| panda_list_refer_all | List all of the library's domains consolidated by hostname across library and folder scopes. Returns { refers: [{ hostname, type, status, scope, library_refer_id, folders, type_inconsistency, created_at }] }. scope is library|folder|mixed; status may be 'mixed' when rows differ; library_refer_id is the library-level row id (null if folder-only); folders is an array of { folder_id, name, refer_id, status }; type_inconsistency=true when the same hostname has divergent ALLOW/BLOCK rows. Referrers with status=deleting are ignored. library_id is resolved automatically when omitted. |
| panda_list_folder_refer | List the domain referrers set directly on a folder. Returns { refers: [{ id, url, type, status, origin: { type, id } }] }. library_id is resolved automatically when omitted. |
| panda_list_folder_refer_inherited | List the effective referrers that apply to a folder using override-total semantics: the folder's own referrers if it has any, otherwise the library-level referrers. Use this to know which domains actually gate playback for videos in the folder. Returns { refers: [{ id, url, type, status, origin: { type, id } }] }. library_id is resolved automatically when omitted. |
| panda_create_refer | Add one or more library-level domain referrers. Each entry has a hostname and a type (ALLOW|BLOCK, default ALLOW). The same hostname cannot coexist as both ALLOW and BLOCK at the library scope (duplicate check is type-agnostic). New rows start in 'pending' (when domain protection is active) or 'inactive'. library_id is resolved automatically when omitted. On error the API returns { errCode, errMsg }. |
| panda_create_folder_refer | Add a domain referrer scoped to a single folder. type is ALLOW|BLOCK. The new row starts in 'pending'. A folder cannot have the same hostname twice. library_id is resolved automatically when omitted. On error the API returns { errCode, errMsg }. |
| panda_set_refer_status | Activate (active=true) or deactivate (active=false) a single referrer by refer_id. Activation moves inactive→pending; deactivation moves active→turning_inactive (the async worker finalizes the state). If the referrer is already in an intermediate state (pending|deleting|turning_inactive) the API returns 400 ({ errCode, errMsg }: 'Operation in progress, ...'). Works for both library- and folder-level referrers. |
| panda_delete_refer | Delete one or more library-level referrers by id (batch). Each referrer must be library-level (folder_id=null) and belong to the library; otherwise the API returns 400 ({ errCode, errMsg }). Rows transition to 'deleting' and are removed asynchronously. |
| panda_delete_folder_refer | Delete one or more folder-level referrers by id (batch). Duplicate ids are de-duplicated; if any id is missing the API returns 404, and if any referrer is library-level it returns 400 ({ errCode, errMsg }). Rows transition to 'deleting' and are removed asynchronously. |
| panda_update_folder_refer | Edit one or more existing referrers (refer_ids) in a single call: rename the hostname, change the type (ALLOW|BLOCK), and/or move them between scopes. scope='library' makes the domain apply to the whole library (omit folder_ids). scope='folder' makes it apply to the listed folder_ids (required and non-empty, the backend computes the add/remove diff). All refer_ids must belong to the same hostname. Returns { message, hostname, type, scope, renamed, folders_added, folders_removed, refers }. On error the API returns { errCode, errMsg }. library_id is resolved automatically when omitted. |
| panda_set_block_none_refer | Set the global 'block_none_refer' policy for the library. When true, playback requests that carry NO referer are blocked; when false, they are allowed. This is the master switch that activates/deactivates domain protection for requests without a referer. On error the API returns { errCode, errMsg }. library_id is resolved automatically when omitted. |
| panda_action_move_videos_by_folder | Deterministically resolve a source and target folder and move every video from the source into the target in one call. Pass target_folder_ref='root' to move to the root (no folder). Skips videos already being deleted. Free action (no credits). dry_run=true (default) returns a preview of which videos would move. |
| panda_action_delete_folder_videos | Deterministically resolve a folder and send every video inside it to the trash (30-day recovery). DESTRUCTIVE. dry_run=true (default) returns a preview of what would be deleted; set dry_run=false AND confirm=true to actually delete. |
| panda_action_reencode_folder_videos | Deterministically resolve a folder and re-encode every CONVERTED video with a given compression mode. Reprocessing consumes processing resources. dry_run=true (default) previews the affected videos. |
| panda_action_duplicate_folder_videos | Deterministically resolve a folder and create a copy of every CONVERTED video inside it. Duplication only works for non-external, non-funnel videos (the API rejects others, surfaced per-video). dry_run=true (default) previews the affected videos. |
| panda_action_set_folder_videos_offline | Deterministically resolve a folder and enable or disable offline (mobile app) playback for every CONVERTED video inside it, in one batch call (POST /app). dry_run=true (default) previews the affected videos. |
| panda_action_rename_folder | Deterministically resolve a folder by name/ID/URL and rename it (PUT /folders/{id}). dry_run=true (default) previews the rename. |
| panda_action_create_folder_path | Deterministically ensure a nested folder path exists (e.g. 'Courses/2026/Module 1'), creating only the missing segments and returning the leaf folder ID. Idempotent: existing segments are reused. dry_run=true (default) previews which segments would be created. |
| panda_action_create_playlist_from_folder | Deterministically resolve a folder, create a new playlist, and add every CONVERTED video to it in folder order. dry_run=true (default) previews the playlist and its videos without creating anything. |
| panda_action_add_folder_videos_to_playlist | Deterministically resolve a folder and an existing playlist (by name or ID), then append every CONVERTED folder video to the playlist after its current items. dry_run=true (default) previews the additions. |
| panda_action_apply_profile_to_folder | Deterministically resolve a player profile and a folder, list eligible (CONVERTED) videos, and apply the profile to all of them in one call. Free action (no credits). dry_run=true (default) returns a preview of which videos would be updated. |
| panda_action_apply_video_config_to_folder | Deterministically resolve a folder and apply per-video player config to every CONVERTED video (POST /player?type=video). Supports: panda_branding, default_subtitle (lang code or 'false'), on_funnel, and the AI toggles questions/mindmap/abstract. Send only the fields you want to change. dry_run=true (default) previews the affected videos. |
| panda_action_configure_folder_profile | Deterministically apply player-profile settings to every CONVERTED video in a folder, taking the correct create-or-update route per video. Covers everything a profile holds: colors (Cores), controls incl. the big play button 'play-large' (Controles / Botão de Play Grande), caption appearance (Legendas), VSL, save-progress, and general settings — pass any subset. Per video: if it already has a profile, that profile is updated (PUT /profile/{id}); if it has none, a new profile is created (POST /profile, name=video id), configured, and assigned (set-videos). dry_run=true (default) first VALIDATES each video (has-profile vs not) and previews the plan without changing anything. |
| panda_action_set_folder_player_control | Enable or disable a single player control on every CONVERTED video in a folder, via player profiles, PRESERVING all other controls. The big play button (dashboard 'Botão de Play Grande') is the 'play-large' control — disable it with control='play-large', enabled=false. Each video's profile controls are read-modify-written; when a profile has no explicit control list it inherits the global player controls, so the action materializes that global list minus/plus the control. Videos without a profile get one created and assigned. dry_run=true (default) validates + previews per-video changes. |
| panda_action_generate_subtitles_for_folder | Deterministically resolve a folder, list eligible (CONVERTED) videos, estimate the AI subtitle cost in credits, and optionally generate subtitles in one or more languages. Tiers: essential (only en/pt-BR/es, 1 credit/30min), advanced (34 langs, 1 credit/5min), pro (34 langs, 1 credit/min). dry_run=true (default) returns a preview. |
| panda_action_set_default_subtitle_for_folder | Deterministically resolve a folder and set the default subtitle language on every CONVERTED video (POST /player?type=video). Pass language 'false' to clear the default. dry_run=true (default) previews the affected videos. Note: videos lacking that subtitle simply won't show it. |
| panda_action_remove_subtitle_language_from_folder | Deterministically resolve a folder and delete a subtitle language from every CONVERTED video that has it (DELETE /subtitles/{id}). DESTRUCTIVE. dry_run=true (default) previews; set dry_run=false AND confirm=true to delete. Videos without that language are simply skipped by the API. |
| panda_action_dub_folder_videos | Deterministically resolve a folder, list eligible (CONVERTED) videos, estimate the dubbing cost in credits, and optionally create AI dubbing jobs for one or more target languages. dry_run=true (default) returns a preview without creating any job. standard mode = 2 credits/min, lipsync = 10 credits/min (lipsync rejects videos over 60 minutes). |
| panda_action_create_tutor_from_folder | Deterministically resolve a folder, estimate the credit cost via purchase_overview, and create an AI Tutor bound to every CONVERTED video in the folder. dry_run=true (default) returns the cost preview without creating anything. |
| panda_action_add_folder_videos_to_tutor | Deterministically resolve an existing AI Tutor (by name or ID) and a folder, then bind every CONVERTED folder video to the tutor (POST /assist_ai/update_assistant_videos). dry_run=true (default) previews the additions. |
| panda_action_enable_ai_package_for_folder | Deterministically resolve a folder and activate the AI package (mindmap + abstract/eBook + quiz) for every CONVERTED video (POST /aiworkflow type=ALL_TEXT_ITEMS). Estimates credits (1/started minute; Gold/Enterprise may have a free daily quota that reduces real cost). dry_run=true (default) returns the cost preview. |
| panda_action_folder_ai_status | Deterministically resolve a folder and report the aggregate status of all its AI workflow jobs (subtitles, dubbing, AI package) via GET /aiworkflow?folder_id. Read-only — returns counts by status and by type. No dry_run (nothing is mutated). |
| panda_action_generate_shorts_from_folder | Deterministically resolve a folder and submit each eligible video (CONVERTED, 5min–5h) for AI Shorts generation (POST /shorts/import-video). Each job consumes Shorts processing. dry_run=true (default) previews eligible videos. DRM-protected videos are rejected by the API and surfaced per-video. |
| panda_action_set_custom_field_for_folder | Deterministically resolve a folder and set a custom metadata field (key/value) on every CONVERTED video (POST /videos/{id}?custom_fields). dry_run=true (default) previews the affected videos. |
| panda_action_apply_watermark_group_to_folder | Deterministically resolve a watermark/DRM group (by name or ID) and a folder, then add the folder to the group so all its videos (current and future) inherit the forensic watermark (PUT /drm/videos/{id} folders.increment). dry_run=true (default) previews. |
| panda_action_create_watermark_group_for_folder | Deterministically resolve a folder and create a new watermark/DRM group seeded with all its videos (POST /drm/videos). dry_run=true (default) previews the group and its videos. |
| panda_action_add_folder_videos_to_funnel | Deterministically resolve a funnel (by name or ID) and a folder, then add every CONVERTED folder video to the funnel (POST /funnels/add_videos). dry_run=true (default) previews the additions. |
| panda_action_schedule_lives | Create one or more scheduled live streams in a single call (POST /lives), optionally recording into a resolved folder. dry_run=true (default) previews the lives that would be created. |
| panda_action_set_anti_download | Enable or disable account-wide anti-download protection (GET/PUT /block_download). Reads the current state first and only changes it if needed. dry_run=true (default) previews the change. |
| panda_action_set_allowed_domains | Add referer domains to the account's allow/block list for playback (POST /library/{id}?action=refer) and optionally toggle 'block requests with no referer'. Resolves the library ID automatically. dry_run=true (default) previews. |
| panda_action_request_folder_downloads | Deterministically resolve a folder and request an async download for every CONVERTED video at a given quality/format/language (POST /download-async/{externalId}). Poll status later with panda_check_download_status. dry_run=true (default) previews the requests. |
| panda_action_export_folder_analytics | Deterministically resolve a folder and aggregate per-video play analytics over a date range (GET /general/{videoId} on the analytics host). Read-only — returns a per-video breakdown and folder total. No dry_run. |
| panda_action_create_ab_test | Create an A/B comparison from 2+ videos (POST /comparison) and optionally start it immediately (PUT /comparison/{id}?type=start). dry_run=true (default) previews. |
| panda_action_credit_preflight | Estimate the credit cost of running a paid operation (dub / subtitles / ai_package) across every CONVERTED video in a folder and compare it to the current balance — WITHOUT executing anything. Read-only; use before the real action to decide whether to proceed. |
| panda_action_transfer_credits_to_subaccount | Resolve a subaccount by name or ID and transfer credits to it (POST /user/limit/transfer_credits). Checks the parent balance first. dry_run=true (default) previews the transfer. |
| panda_action_provision_user | Create a team user, resolving the role by name (or original_name/ID) to its role_id (POST /users). dry_run=true (default) previews. Validates the email format up front. |
| panda_action_create_review_link_for_folder | Deterministically resolve a folder and create a review link for every CONVERTED video (POST /video-review/{id}?action=link). dry_run=true (default) previews the links that would be created. |
| panda_action_set_webhook | Idempotently set the account webhook URL. Reads the current webhook (GET /user/webhook); if a different one exists it is removed (DELETE /user/webhook/{id}) before creating the new one (POST /user/webhook). dry_run=true (default) previews the change. |
| panda_action_set_forms_integration | Create or update a forms/CRM integration by service name. Reads existing integrations (GET /forms-integration/get); updates in place if the service already exists (PUT /forms-integration/update), otherwise creates it (POST /forms-integration/save). dry_run=true (default) previews. |