> This page is for mk.io.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://mediakind.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://mediakind.ferndocs.com/_mcp/server.

# Update Static Multiview Event

PATCH https://app.mk.io/api/v1/projects/{project_name}/live/staticMultiviewEvents/{name}
Content-Type: application/json

Update a Static Multiview Event.

RBAC Capability Required: `transform.staticmultiviewevent.update`

Reference: https://mediakind.ferndocs.com/mkio/api/live/static-multiview-event/update-static-multiview-event

## Authentication

- `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer <token>`, where token is your auth token.

## Request

### Path parameters

- `project_name` (string, required)
- `name` (string, required)

### Body (application/json)

This endpoint expects a FlowPatchBody.

- `metadata` (DefaultPatchMetadata, optional) — Resource metadata.
- `spec` (FlowPatchBodySpec, optional) — Flow specification.

## Response

### 200

The updated Static Multiview Event.

- `kind` (string, required) — The kind of record.
- `metadata` (MetadataSchema, required) — Flow metadata.
- `spec` (FlowBodySpec, required) — Flow specification.
- `status` (FlowStatusGetSchema, required) — Flow status.

## Errors

### 400 Bad Request Error

Bad Request

- `error` (ErrorDetail, required) — Pertinent information about the error
- `ref` (string, required) — A reference to the request that caused the error.
- `status` (integer, required) — The HTTP status code

### 401 Unauthorized Error

Unauthorized

- `error` (ErrorDetail, required) — Pertinent information about the error
- `ref` (string, required) — A reference to the request that caused the error.
- `status` (integer, required) — The HTTP status code

### 403 Forbidden Error

Forbidden

- `error` (ErrorDetail, required) — Pertinent information about the error
- `ref` (string, required) — A reference to the request that caused the error.
- `status` (integer, required) — The HTTP status code

### 404 Not Found Error

Not Found

- `error` (ErrorDetail, required) — Pertinent information about the error
- `ref` (string, required) — A reference to the request that caused the error.
- `status` (integer, required) — The HTTP status code

### 429 Too Many Requests Error

Too Many Requests

- `error` (ErrorDetail, required) — Pertinent information about the error
- `ref` (string, required) — A reference to the request that caused the error.
- `status` (integer, required) — The HTTP status code

### 500 Internal Server Error

Internal Server Error

- `error` (ErrorDetail, required) — Pertinent information about the error
- `ref` (string, required) — A reference to the request that caused the error.
- `status` (integer, required) — The HTTP status code

## Types

### DefaultPatchMetadata

- `displayName` (string, optional) — A human-readable name for the resource.
- `labels` (map from string to string, optional) — A dictionary of labels associated with the resource. Maximum number of labels: 32. Maximum length of a label or value: 256 characters. Label: alphanumeric, hyphens and underscores. Value: alphanumeric, hyphens, underscores and spaces.

### FlowPatchBodySpec

- `state` (enum, optional) — The desired state of the flow.
  - Allowed values: `Stopped`, `Running`
- `transform` (FlowPatchBodySpecTransform, optional) — Configuration for the transformation that this flow performs

### MetadataSchema

- `id` (string, required) — The ID of the resource
- `created` (datetime, optional) — The time when the resource was created
- `createdBy` (string, optional) — ID of the user who created the resource
- `createdByEmail` (string, optional) — Email of the user who created the resource
- `displayName` (string, optional) — The display name of the resource
- `labels` (map from string to string, optional) — A dictionary of labels associated with the resource
- `name` (string, optional) — The name of the resource
- `updated` (datetime, optional) — The time when the resource was last updated
- `updatedBy` (string, optional) — ID of the user who last updated the resource
- `updatedByEmail` (string, optional) — Email of the user who last updated the resource

### FlowBodySpec

- `inputs` (list of FlowInputFragment, required) — List of flow inputs. Read [Flow inputs and outputs](doc:flows#flow-inputs-and-outputs) to learn more about how to connect flow inputs between content and flow transform inputs.
- `outputs` (list of FlowOutputFragment, required) — List of flow outputs. Read [Flow inputs and outputs](doc:flows#flow-inputs-and-outputs) to learn more about how to connect flow outputs between flow transform outputs and destinations or to make them available to other flows.
- `state` (enum, required) — The desired state of the flow.
  - Allowed values: `Stopped`, `Running`
- `transform` (FlowBodySpecTransform, required) — Configuration for the transformation that this flow performs
- `refiner` (FlowRefinerFragment, optional) — The \<\<glossary:refiners>> that influence how this flow will be assigned. This is a placeholder for future functionality.
- `siteName` (string, optional) — The name of the \<\<glossary:site>> where the flow will run. If omitted, the site is inferred from the flow type: cloud flows default to the project's cloud site; device flows default to the 'world' site.

### FlowStatusGetSchema

- `deviceDisplayName` (string, optional) — The display name of the \<\<glossary:device>> the flow is assigned to. Empty if not assigned or if the flow is on a \<\<glossary:SaaS site>>.
- `deviceName` (string, optional, default: ) — The name of the \<\<glossary:device>> the flow is assigned to. Empty if not assigned or if the flow is on a \<\<glossary:SaaS site>>.
- `info` (string, optional) — An optional informational message. Only present if not empty.
- `inputs` (list of FlowInputStatusFragment, optional) — The status of flow inputs.
- `metrics` (map from string to FlowStatusMetricSchema, optional) — A dictionary of metrics reported by the flow.The keys are metrics names and the values contains an array of samples for that metric.The Sample contains a 'value' field and a 'labels' field which is a dictionary of label keys and values.
- `monitoring` (map from string to MonitoringDetailsSchema, optional) — Details for how to access monitoring feedback. Each key is a monitoring context that is influenced by the \<\<glossary:flow transform>> selected in the flow and the configuration of the flow transform. Read [flow monitoring](doc:flows#monitoring) to learn more.
- `outputs` (list of FlowOutputStatusFragment, optional) — The status of flow outputs.
- `shortId` (string, optional) — An alternative short identifier for the flow. This is used only for visual inspection and should not be used for any programmatic purposes.
- `siteDisplayName` (string, optional) — The display name of \<\<glossary:site>> associated with the flow.
- `state` (enum, optional) — The last reported state of the flow.
  - Allowed values: ``, `Stopping`, `Stopped`, `Starting`, `Running`, `Pending`, `Deleting`, `Deleted`, `Updating`, `Started`, `Allocating`, `Allocated`, `UnableToStart`
- `transform` (FlowTransformStatus, optional)

### ErrorDetail

- `code` (string, required) — The error code.
- `detail` (string, required) — The error message.
- `extraDetail` (map from string to any, optional) — Extra information regarding this error.

### FlowPatchBodySpecTransform

Configuration for the transformation that this flow performs

- `type`: `LiveChannel` (LiveChannelPatchFlow)
- `type`: `LiveEvent` (LiveEventPatchFlow)
- `type`: `StaticMultiviewChannel` (StaticMultiviewChannelPatchFlow)
- `type`: `StaticMultiviewEvent` (StaticMultiviewEventPatchFlow)

### FlowInputFragment

Describes an input to a flow. A flow input can be specified as either a connection to \<\<glossary:content>>, a connection to a specific \<\<glossary:source>>, or a connection to a specific \<\<glossary:flow>>. Exactly one of either contentName, sourceName or flowName must be specified.

- `contentName` (string, optional) — The \<\<glossary:content>> that the flow input is connected to. This also influences the content that will be available on the flow outputs. Read [Resolving content](doc:content-and-sources#resolving-content) to learn more about how content is resolved to the \<\<glossary:source>>s and \<\<glossary:flow>>s that can supply it.
- `flowName` (string, optional) — The upstream \<\<glossary:flow>> that the flow input is connected to. This also influences the content that will be available on the flow outputs.
- `refiner` (FlowInputRefinerFragment, optional) — The \<\<glossary:refiners>> that influence how this flow input will be assigned and how [content will be resolved](/api-guides/how-to/media/content-and-sources#resolving-content) for it. For example, flow inputs can be constrained to specific upstream \<\<glossary:flow>>s and \<\<glossary:source>>s. To learn more, read [Flow input refiners](doc:flows#flow-input-refiners).
- `sourceName` (string, optional) — The \<\<glossary:source>> that the flow input is connected to. This also influences the content that will be available on the flow outputs.
- `transformInput` (string, optional) — The name of the input pin to connect in the associated processing config. Retrieve the config through the Templates API and use a name from `status.inputPins[].name`.

### FlowOutputFragment

- `contentName` (string, optional) — Optional, sets the \<\<glossary:content>> that is provided by this flow output.
- `destinationName` (string, optional) — The destination to connect the flow output to. Omit this field to create an \<\<glossary:internal flow output>>. Read [Flows](doc:flows) to learn more about how to connect flows to other flows.
- `refiner` (FlowOutputRefinerFragment, optional) — The \<\<glossary:refiners>> that influence how this flow output will be assigned. This is a placeholder for future functionality.
- `transformOutput` (string, optional) — The name of the output pin to connect in the associated processing config. Retrieve the config through the Templates API and use a name from `status.outputPins[].name`.
- `transport` (FlowOutputTransportFragment, optional) — Transport setting overrides for this specific flow output. If not specified, the transport will use the default settings.

### FlowBodySpecTransform

Configuration for the transformation that this flow performs

- `type`: `LiveChannel` (LiveChannelFlow)
  - `assetName` (string, required) — The name of asset that you want this flow to store material in.
  - `encodingLive` (ConfigSchema, required) — Reference to template of type 'encodingLive'
  - `archiveWindowLength` (string, optional) — The maximum content length that can be archived in the asset for the live output. This also limits the maximum content length for the timeshift window. For example, use PT1H30M to indicate 1 hour and 30 minutes of archive window. Max value = 30 days.
  - `assetPath` (string, optional) — If an asset name is given, then you may also specify a subpath within the asset for the material.
  - `streamConditioning` (ConfigSchema, optional) — Optional reference to template of type 'streamConditioning'
- `type`: `LiveEvent` (LiveEventFlow)
  - `assetName` (string, required) — The name of asset that you want this flow to store material in.
  - `encodingLive` (ConfigSchema, required) — Reference to template of type 'encodingLive'
  - `archiveWindowLength` (string, optional) — The maximum content length that can be archived in the asset for the live output. This also limits the maximum content length for the timeshift window. For example, use PT1H30M to indicate 1 hour and 30 minutes of archive window. Max value = 30 days.
  - `assetPath` (string, optional) — If an asset name is given, then you may also specify a subpath within the asset for the material.
  - `streamConditioning` (ConfigSchema, optional) — Optional reference to template of type 'streamConditioning'
- `type`: `StaticMultiviewChannel` (StaticMultiviewChannelFlow)
  - `assetName` (string, required) — The name of asset that you want this flow to store material in.
  - `encodingLive` (ConfigSchema, required) — Reference to template of type 'encodingLive'
  - `archiveWindowLength` (string, optional) — The maximum content length that can be archived in the asset for the live output. This also limits the maximum content length for the timeshift window. For example, use PT1H30M to indicate 1 hour and 30 minutes of archive window. Max value = 30 days.
  - `assetPath` (string, optional) — If an asset name is given, then you may also specify a subpath within the asset for the material.
  - `multiviewComposing` (ConfigSchema, optional) — Optional reference to template of type 'multiviewComposing'. If omitted, inputs are taken from encodingLive.
  - `streamConditioning` (ConfigSchema, optional) — Optional reference to template of type 'streamConditioning'
- `type`: `StaticMultiviewEvent` (StaticMultiviewEventFlow)
  - `assetName` (string, required) — The name of asset that you want this flow to store material in.
  - `encodingLive` (ConfigSchema, required) — Reference to template of type 'encodingLive'
  - `archiveWindowLength` (string, optional) — The maximum content length that can be archived in the asset for the live output. This also limits the maximum content length for the timeshift window. For example, use PT1H30M to indicate 1 hour and 30 minutes of archive window. Max value = 30 days.
  - `assetPath` (string, optional) — If an asset name is given, then you may also specify a subpath within the asset for the material.
  - `multiviewComposing` (ConfigSchema, optional) — Optional reference to template of type 'multiviewComposing'. If omitted, inputs are taken from encodingLive.
  - `streamConditioning` (ConfigSchema, optional) — Optional reference to template of type 'streamConditioning'

### FlowRefinerFragment

### FlowInputStatusFragment

- `contentDisplayName` (string, optional) — If the flow input references content, this field contains the display name of that \<\<glossary:content>>. If the flow input references a source, this field contains the display name of the \<\<glossary:content>> referenced by that source. If the flow input references a flow, this field contains the display name of the \<\<glossary:content>> assigned to the resolved upstream flow output, or empty if resolution failed.
- `contentName` (string, optional) — If the flow input references content, this field contains the name of that \<\<glossary:content>>. If the flow input references a source, this field contains the name of the \<\<glossary:content>> referenced by that source. If the flow input references a flow, this field contains the name of the \<\<glossary:content>> assigned to the resolved upstream flow output, or empty if resolution failed.
- `deviceInterfaceName` (string, optional) — The name of the \<\<glossary:device interface>> assigned to the flow input. Empty if a device interface is not assigned.
- `networkDisplayName` (string, optional) — The display name of the \<\<glossary:network>> assigned to the flow input. Empty if the content was resolved from a directly-connected \<\<glossary:source>> (e.g. SDI) or a network is not assigned.
- `networkName` (string, optional) — The name of the \<\<glossary:network>> assigned to the flow input. Empty if the content was resolved from a directly-connected \<\<glossary:source>> (e.g. SDI) or a network is not assigned.
- `sourceDisplayName` (string, optional) — The display name of the \<\<glossary:source>> assigned to the flow input. Empty if the content was resolved to an upstream \<\<glossary:flow>> or a source is not assigned.
- `sourceName` (string, optional) — The name of the \<\<glossary:source>> assigned to the flow input. Empty if the content was resolved to an upstream \<\<glossary:flow>> or a source is not assigned.
- `sourceShortId` (string, optional) — An alternative short identifier for the source. This is used only for visual inspection and should not be used for any programmatic purposes.
- `sourceUrl` (string, optional, nullable) — The ingress URL for the \<\<glossary:source>> assigned to the flow input. Empty if the source does not have a URL.
- `upstreamFlowName` (string, optional) — The name of an upstream \<\<glossary:flow>> providing the input. Empty if the content was resolved to a \<\<glossary:source>> or if an upstream flow is not assigned.

### FlowStatusMetricSchema

- `value` (double, required) — The value of the metric sample.
- `labels` (map from string to string, optional) — A dictionary of label keys and values for this metric sample.

### MonitoringDetailsSchema

- `metadataUrl` (string, required) — URL of the metadata.
- `thumbnailUrl` (string, required) — URL of the thumbnail image.

### FlowOutputStatusFragment

- `contentDisplayName` (string, required) — The display name of the \<\<glossary:content>> that is provided by this flow output.
- `contentName` (string, required) — The \<\<glossary:content>> that is provided by this flow output.
- `destinationDisplayName` (string, optional) — The display name of the \<\<glossary:destination>> reference from the flow output. Empty if this is a \<\<glossary:internal flow output>> with no destination.
- `destinationUrl` (string, optional, nullable) — The egress URL for the \<\<glossary:destination>> assigned to the flow output. Empty if the destination does not have a URL.
- `deviceInterfaceName` (string, optional) — The name of the \<\<glossary:device interface>> assigned to the flow output. Empty if a device interface is not assigned.
- `downstreamFlowNames` (list of string, optional) — List of names of \<\<glossary:flow>>s that are connected to this flow output. Empty if the flow output is not connected to any downstream flows.
- `networkDisplayName` (string, optional) — The display name of the \<\<glossary:network>> assigned to the flow outputEmpty if the output references a directly-connected \<\<glossary:destination>> (e.g. SDI) or a network is not assigned.
- `networkName` (string, optional) — The name of the \<\<glossary:network>> assigned to the flow output. Empty if the output references a directly-connected \<\<glossary:destination>> (e.g. SDI) or a network is not assigned.
- `transport` (FlowOutputStatusTransportFragment, optional) — Transport settings specific to this flow output.

### FlowTransformStatus

- `streamPersonalization` (FlowTransformStatusStreamPersonalization, optional)

### FlowInputRefinerFragment

- `flow` (NameRefinerFragment, optional) — Refiner to restrict a flow's input to originate from a specific flow.
- `labelMatch` (LabelMatchRefinerFragment, optional) — Refiner to restrict a flow's input to originate from one of a set of both flows and content sources.

### FlowOutputRefinerFragment

### FlowOutputTransportFragment

- `maxConnections` (integer, optional) — Optional, specifies the maximum number of connections for this output if no destination is specified.

### ConfigSchema

- `configRef` (ConfigRefSchema, required) — Reference to configuration template
- `advancedSettingsName` (string, optional, nullable) — Name of the advanced settings configuration to apply to this component. These configuration blocks are managed by MediaKind and you should not set this field unless MediaKind support has asked you to.
- `configOverrides` (ConfigSchemaConfigOverrides, optional) — Optional control over template contents. These are applied after any configValues.
- `configValues` (map from string to any, optional, nullable) — Optional control over template contents, replacing parameters exposed by the configuration. These are applied before any configOverrides.

### FlowOutputStatusTransportFragment

- `maxBitrate` (integer, required) — The calculated maximum bitrate for the flow output's transport.
- `latency` (double, optional) — The minimum SRT Latency, in seconds for this output's connections, if known.
- `maxConnections` (integer, optional) — The maximum number of connections allowed for this output where a restriction applies.

### FlowTransformStatusStreamPersonalization

- `hostName` (string, optional)

### NameRefinerFragment

- `name` (string, required) — Name of the resource to match.

### LabelMatchRefinerFragment

- `key` (string, required) — Name of the label to match against. Case sensitive.
- `value` (string, required) — The desired value of the label. Case sensitive.

### ConfigRefSchema

- `name` (string, required) — Name of the configuration template to use, must match the configType.
- `version` (string, required) — Which revision of the configuration to use, either a tag or a hash must be provided

### ConfigSchemaConfigOverrides

Optional control over template contents. These are applied after any configValues.

- `type`: `application/json-patch+json` (FlowJsonPatchOverrides)
  - `operations` (list of JsonPatchEntry, required) — List of 'JSON Patch' (https://en.wikipedia.org/wiki/JSON_Patch) operations.

### JsonPatchEntry

- `op` (enum, required) — Operation
  - Allowed values: `add`, `remove`, `replace`, `stringReplace`, `numberReplace`
- `path` (string, required) — Path
- `search` (string, optional) — Search string for 'stringReplace' and 'numberReplace' operations. 'numberReplace' replaces with JSON number type but only when the search string matches the entire value. I.e "audio_pid" would be replaced with 50, not "50".
- `value` (any, optional) — Value

## Examples

**Request**

```json
{}
```

**Response**

```json
{
  "kind": "string",
  "metadata": {
    "id": "string",
    "created": "2024-01-15T09:30:00Z",
    "createdBy": "string",
    "createdByEmail": "string",
    "displayName": "string",
    "labels": {
      "label1": "value1",
      "label2": "value2"
    },
    "name": "string",
    "updated": "2024-01-15T09:30:00Z",
    "updatedBy": "string",
    "updatedByEmail": "string"
  },
  "spec": {
    "inputs": [
      {
        "contentName": "channel-1",
        "flowName": "flow-1",
        "refiner": {
          "flow": {
            "name": "string"
          },
          "labelMatch": {
            "key": "string",
            "value": "string"
          }
        },
        "sourceName": "source-1",
        "transformInput": "encoding/input_1"
      }
    ],
    "outputs": [
      {
        "contentName": "string",
        "destinationName": "production-1",
        "refiner": {},
        "transformOutput": "encoding/output_1",
        "transport": {
          "maxConnections": 10
        }
      }
    ],
    "state": "Running",
    "transform": {
      "archiveWindowLength": "string",
      "assetName": "string",
      "assetPath": "string",
      "encodingLive": {
        "advancedSettingsName": "string",
        "configOverrides": {
          "operations": [
            {
              "op": "add",
              "path": "string",
              "search": "string"
            }
          ],
          "type": "application/json-patch+json"
        },
        "configRef": {
          "name": "string",
          "version": "latest"
        },
        "configValues": {
          "audio1label": "Spanish",
          "audio1lang": "spa",
          "audio1pid": 257,
          "epochts": false
        }
      },
      "streamConditioning": {
        "advancedSettingsName": "string",
        "configOverrides": {
          "operations": [
            {
              "op": "add",
              "path": "string",
              "search": "string"
            }
          ],
          "type": "application/json-patch+json"
        },
        "configRef": {
          "name": "string",
          "version": "latest"
        },
        "configValues": {
          "audio1label": "Spanish",
          "audio1lang": "spa",
          "audio1pid": 257,
          "epochts": false
        }
      },
      "type": "string"
    },
    "refiner": {},
    "siteName": "world"
  },
  "status": {
    "deviceDisplayName": "Device 1",
    "deviceName": "device-1",
    "info": "There was an issue with start due to a mismatch of Template inputs and configured inputs.",
    "inputs": [
      {
        "contentDisplayName": "Channel 1",
        "contentName": "channel-1",
        "deviceInterfaceName": "eth0",
        "networkDisplayName": "Internet",
        "networkName": "internet",
        "sourceDisplayName": "Channel 1 SRT",
        "sourceName": "channel-1-srt",
        "sourceShortId": "a1b2c3d4e5f6",
        "sourceUrl": "srt://10.10.10.1:6000",
        "upstreamFlowName": "channel-1-encode"
      }
    ],
    "metrics": {
      "mk_resource_status": [
        {
          "labels": {
            "mkio_stage": "encode"
          },
          "value": 0
        },
        {
          "labels": {
            "mkio_stage": "output"
          },
          "value": 0
        },
        {
          "labels": {
            "mkio_stage": "resource"
          },
          "value": 0
        }
      ]
    },
    "monitoring": {},
    "outputs": [
      {
        "contentDisplayName": "string",
        "contentName": "string",
        "destinationDisplayName": "production-1",
        "destinationUrl": "srt://10.10.10.2:6000",
        "deviceInterfaceName": "eth0",
        "downstreamFlowNames": [
          "string"
        ],
        "networkDisplayName": "Internet",
        "networkName": "internet",
        "transport": {
          "maxBitrate": 1,
          "latency": 10,
          "maxConnections": 10
        }
      }
    ],
    "shortId": "a1b2c3d4e5f6",
    "siteDisplayName": "World",
    "state": "Started",
    "transform": {
      "streamPersonalization": {
        "hostName": "string"
      }
    }
  }
}
```

**SDK Code**

```python
import requests

url = "https://app.mk.io/api/v1/projects/project_name/live/staticMultiviewEvents/name"

payload = {}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.patch(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://app.mk.io/api/v1/projects/project_name/live/staticMultiviewEvents/name';
const options = {
  method: 'PATCH',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://app.mk.io/api/v1/projects/project_name/live/staticMultiviewEvents/name"

	payload := strings.NewReader("{}")

	req, _ := http.NewRequest("PATCH", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://app.mk.io/api/v1/projects/project_name/live/staticMultiviewEvents/name")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.patch("https://app.mk.io/api/v1/projects/project_name/live/staticMultiviewEvents/name")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PATCH', 'https://app.mk.io/api/v1/projects/project_name/live/staticMultiviewEvents/name', [
  'body' => '{}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://app.mk.io/api/v1/projects/project_name/live/staticMultiviewEvents/name");
var request = new RestRequest(Method.PATCH);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://app.mk.io/api/v1/projects/project_name/live/staticMultiviewEvents/name")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PATCH"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```