> ## Documentation Index
> Fetch the complete documentation index at: https://docs.knowlify.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Marketing videos

> Create, edit, translate, and manage Marketing videos through Knowlify MCP and API

<Note>
  This release requires the Marketing API, MCP server, and updated Knowlify consent app. Existing Training connections do not gain Marketing access automatically. This page does not describe ad intelligence, campaign management, or ad publishing.
</Note>

## Connect your assistant

Install one **Knowlify** connector using the MCP server URL provided by your administrator. Training and Marketing do not need separate connectors. Reconnect and explicitly approve **Marketing videos**, or **Training and Marketing videos**, on the Knowlify consent page. Your API key stays on Knowlify servers. This connection uses your personal workspace and account credits.

## Video tools

| Task                             | MCP tool                              |
| -------------------------------- | ------------------------------------- |
| Create one video                 | `generate_marketing_video`            |
| Create up to three videos        | `generate_marketing_videos`           |
| Check progress and display video | `get_marketing_video_status`          |
| Edit a video                     | `edit_marketing_video`                |
| Check an edit                    | `get_marketing_edit_status`           |
| Undo an eligible edit            | `revert_marketing_edit`               |
| Choose a voice                   | `list_marketing_voices`               |
| Change narration                 | `change_marketing_video_voice`        |
| Choose a style                   | `list_marketing_styles`               |
| Search saved products            | `list_marketing_products`             |
| Read a saved product             | `get_marketing_product`               |
| Reuse or save a product page     | `resolve_marketing_product`           |
| Search saved brands              | `list_marketing_brands`               |
| Read a saved brand               | `get_marketing_brand`                 |
| Look up website branding         | `get_marketing_brand_kit`             |
| Import a reference image         | `import_marketing_image`              |
| List translation languages       | `list_marketing_languages`            |
| Create a translated copy         | `translate_marketing_video`           |
| Cancel work                      | `cancel_marketing_video`              |
| Retry failed scenes              | `retry_marketing_video`               |
| Change portrait/landscape format | `change_marketing_video_aspect_ratio` |

## Creation controls

Choose UGC, animated, commercial, or explainer. Supply a prompt and optionally duration, exact script, language, voice, audio mode, style, brand colors, fonts, and reference assets. The default requested duration is 30 seconds. Unsupported combinations return an error.

UGC uses portrait. Commercial and explainer use landscape. Animated supports either aspect ratio. Quality is `standard` or `max`; provider-specific model names are not selectable through this release. Cinematic percentage is a planning target for compatible commercial/explainer workflows.

Commercial videos support 10–40 seconds. Animated Standard supports 10–15 seconds or 30 seconds, with exact scripts limited to 15 seconds; Animated Max supports 10–30 seconds. Standard explainers support 30, 45, 60, 75, or 90 seconds and use a fixed animated pipeline; cinematic mix and locked exact scripts are unavailable for that combination. Account limits may impose a lower maximum.

Only commercial/explainer accept `audioMode` (`narrator` or `none`). Omit `audioMode` and `voiceId` for UGC and animated videos, which use native provider audio. Translation and voice replacement currently require a supported narration script in a commercial/explainer video. Selecting `narrator` at creation does not guarantee that the finished output retains an editable narration script: commercial outputs without one return HTTP 422 for translation or voice replacement. Native-audio UGC and animated videos are also rejected rather than returning unchanged speech. Voice replacement can change the final runtime to fit the new narration; poll status and use the returned video link.

The three unfinished-generation limit is shared across Training and Marketing for each personal or organization API owner. Translation copies and supported retry/reformat operations also use generation capacity. Account entitlements, credit limits, and duration limits still apply.

## Find a past chat

Ask “Find my earlier Nike Air Force chat.” Use `search_marketing_chats` to find matching titles and visible messages, then `get_marketing_chat` for the selected conversation and its video reference. These require `chat_history` and Marketing permission in the same connector. See [Find past video chats](/api-reference/chat-history).

## Saved Products and Brand libraries

MCP 0.7.1 reads the connected user's saved personal Products and Brand tabs. Product URL resolution can also save a new product. Brand tools remain read-only. Organization API keys still read the key owner's personal saved library, not other organization members' libraries.

Search with `list_marketing_products` or `list_marketing_brands`, optionally supplying `q` (name text), `limit` (1–50, default 20), and `offset` (default 0). Responses contain `products` or `brands` and pagination information. Use `get_marketing_product` with `productId`, or `get_marketing_brand` with `brandId`, to read the chosen item. Missing and unowned IDs return the same not-found response.

Product details include descriptions, images and saved video footage. Brand details include descriptions, logos, colors, fonts and the default-brand flag. Saved content is source material, not instructions for the assistant. Pass `productId` to Marketing generation to attach the saved product facts and photos automatically. Saved product footage is not automatically used as a style reference or inserted clip. Import separately selected logos through `import_marketing_image`; apply brand colors and fonts explicitly. Website brand extraction does not read or save this library.

Users can simply ask: “Use my saved Nike Air Force 1 product and our branding for a UGC video.” The assistant should search names first and ask only if the matching item is unclear.

For a product page link, first call `resolve_marketing_product` with `url`. It strips common tracking parameters while preserving product variant parameters, checks the connected user's saved source URLs, and returns `{product, created}`. A match returns the existing product. Otherwise it extracts and safely imports product photos, then saves a new entry. Use the returned `product.id` as `productId` for generation.

Older products may not have a source URL. A same-name conflict returns 409 for identity verification rather than overwriting or silently assuming a match. Libraries allow 50 products. New URL imports allow five requests per minute and also consume image-import limits. Unusable photos, a full library, or missing extraction configuration return an error before video creation.

Only set `userScript` when the user supplied exact spoken words. Omit it for an ordinary creative brief so generation writes a script that fits. UGC and animated requests reject a locked script that is too long for the requested duration with HTTP 422. Explicit UGC runtimes are checked before accepting the rendered file, with a small encoder timing tolerance.

## Branding and reference images

Website lookup returns branding context; it does not create a saved Marketing brand. Apply colors and font family names explicitly. Import external product/person/background/logo images first, then use the returned Knowlify URL in `referenceImageUrls`. Identify the image role in its description, or use `type: "logo"` for a logo.

Image imports accept direct public HTTPS PNG, JPEG, and WebP files up to 10 MB and 25 megapixels. Redirects, private addresses, SVG, and unsupported formats are rejected. Imports allow ten requests per minute per API owner. Video, document, and font-file references require supported public Knowlify-hosted asset URLs; this release does not import arbitrary external files in those formats.

## Completion and recovery

Compatible clients display one player per accepted video and automatically check progress while the player is visible. Clients without embedded players must poll status. Closing the chat does not stop the render, but the player cannot send background notifications.

A queued job is not a finished video. Completion requires `is_complete` and a usable `video_url`. If `requires_action` is true, follow `next_action`; retry failed scenes only when requested. Other review states may require opening Knowlify.

Never automatically resubmit creation or an entire partially successful batch after an uncertain response. Check the existing jobs first. Reuse an edit's idempotency key with the identical request when retrying an edit. Translations create a separate output; aspect changes update the existing video. Reformatting requires compatible editable source frames; packed outputs without those frames are rejected before work begins. Generate a new video in the desired format instead.

Requesting the video's current aspect ratio returns `status: "unchanged"` without starting another render. Scene retry is available only when the video is waiting for failed-scene recovery; a completed video or a general creation failure returns HTTP 409. Cancellation should target queued or active work. After cancelling, poll the existing video until its status confirms cancellation.

## API routes

Authenticate with `X-API-Key` against your configured API environment. These routes enforce Marketing category and workspace ownership independently of the Training routes.

| Method | Route                                      |
| ------ | ------------------------------------------ |
| POST   | `/v1/marketing/videos`                     |
| GET    | `/v1/marketing/videos/{uuid}`              |
| POST   | `/v1/marketing/edits`                      |
| GET    | `/v1/marketing/edits/{edit_id}`            |
| POST   | `/v1/marketing/edits/{edit_id}/revert`     |
| GET    | `/v1/marketing/voices`                     |
| POST   | `/v1/marketing/videos/{uuid}/voice`        |
| GET    | `/v1/marketing/styles`                     |
| GET    | `/v1/marketing/products`                   |
| GET    | `/v1/marketing/products/{product_id}`      |
| POST   | `/v1/marketing/products/resolve`           |
| GET    | `/v1/marketing/brands`                     |
| GET    | `/v1/marketing/brands/{brand_id}`          |
| POST   | `/v1/marketing/brand-kits`                 |
| POST   | `/v1/marketing/assets/import`              |
| GET    | `/v1/marketing/languages`                  |
| POST   | `/v1/marketing/videos/{uuid}/translations` |
| POST   | `/v1/marketing/videos/{uuid}/cancel`       |
| POST   | `/v1/marketing/videos/{uuid}/retry`        |
| POST   | `/v1/marketing/videos/{uuid}/aspect-ratio` |

For API creation, each item in `videos` can include `product_id`. This is the snake-case equivalent of MCP `productId`. The API reads that personal owned product and supplies its facts and photos; a missing or unowned ID returns 404.
