> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://mediakind.ferndocs.com/platform/how-to/templates/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://mediakind.ferndocs.com/_mcp/server. # Build with the Templates API The Templates API manages the configuration templates that Live API resources depend on for encoding, composition, and stream conditioning. Templates are versioned: each upload creates a new version, and the most recent version is always tagged `latest`. ## API overview | Detail | Value | | --------- | ---------------------------------------------- | | Base path | `/api/v1/projects/{project_name}/templating/` | | Scope | Project | | Reference | [Templates API reference](/mkio/api/templates) | Every endpoint the Templates API has, in full: | Endpoint | What it does | | -------------------------------------------------------------------- | ------------------------------------------------------------- | | `GET /templating/types` | Lists the config types your project supports | | `GET /templating/configs`, `GET /templating/configs/{config_type}` | List your own configs, across all types or filtered to one | | `GET /templating/configs/{config_type}/{name}` | Read the latest version of one config | | `PUT /templating/configs/{config_type}/{name}` | Create a config, or a new version of one that already exists | | `DELETE /templating/configs/{config_type}/{name}` | Delete a config and every version of it | | `GET /templating/configs/{config_type}/{name}/versions` | List every version of a config | | `GET /templating/configs/{config_type}/{name}/versions/{version}` | Read one specific version, by hash or tag | | `DELETE /templating/configs/{config_type}/{name}/versions/{version}` | Delete one specific version | | `GET /templating/presets`, `GET /templating/presets/{config_type}` | List MediaKind’s presets, across all types or filtered to one | | `GET /templating/presets/{config_type}/{name}` | Read one specific preset | That’s the complete list. Presets have no PUT, POST, or DELETE anywhere, everything writable lives under `/configs`. ## How templates connect to live resources ### Reference a config A template is referenced by name and version in a Live API resource’s transform spec. For example, an `encodingLive` template is required by every `LiveChannel`, `LiveEvent`, `StaticMultiviewChannel`, and `StaticMultiviewEvent`. A `multiviewComposing` template is optional but provides a way to separate composition layout from encoding settings in multiview workflows. Reference a template from a live resource like this: ```json "encodingLive": { "configRef": { "name": "my-encoding-template", "version": "latest" } } ``` Use `"version": "latest"` to always reference the most recently uploaded version. Pin to a specific version hash when you need stable, reproducible deployments. ### Start from a preset A live resource’s `configRef` always points at a config, the template you create and own. It never points at a preset, a separate, read-only, MediaKind-managed starting point you can optionally copy into a config. See Configs and presets for how the two relate. Use this sequence for a preset-based Live API workflow: List the presets available to the project. * Create a customer config from the selected preset. * Retrieve the created config and copy its input or output pin names. * Reference the customer config from the Live API resource. A Live API resource cannot reference the preset directly. For production, use a version hash instead of the mutable `latest` tag when the broadcast must use reproducible configuration. ### Customize a live resource Alongside `configRef`, a live resource can set **`configValues`**, named values for any parameters the template declares, and **`configOverrides`**, JSON Patch operations against the template’s content directly. Prefer `configValues` where the template supports it: it’s checked against parameters the template author explicitly declared, while `configOverrides` can touch any path and requires knowing the template’s internal structure in detail. See [Set per-instance parameter values](/platform/how-to/live/manage-live#set-per-instance-parameter-values) and [Declare parameters on a config](/platform/how-to/templates/manage-templates#declare-parameters-on-a-config). ## Template types | Config type | Purpose | | -------------------- | -------------------------------------------------------------------------------------------------------------------------- | | `encodingLive` | Live encoding configuration. Required by `liveChannels`, `liveEvents`, `staticMultiviewChannels`, `staticMultiviewEvents`. | | `multiviewComposing` | Composition layout, optional on `staticMultiviewChannels` and `staticMultiviewEvents`. | | `streamConditioning` | Optional stream conditioning settings, usable on any of the four resource types. | Call the types endpoint for the full list of types supported by your project. It is the source of truth, since types can be added over time. `config_type` is a string path parameter. Choose a type returned by `GET /api/v1/projects/{project_name}/templating/types` and supported by the resource you plan to create. The [Live API reference](/mkio/api/live) defines the four resource transforms and their accepted config types. ## Guides [](/platform/how-to/templates/manage-templates) ### Manage templates Create, version, tag, delete, and reference configuration templates. Use presets as a starting point. ## Docs - [Manage templates](https://mediakind.ferndocs.com/platform/how-to/templates/manage-templates.md)