> 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.

# Get Transform

GET https://app.mk.io/api/v1/projects/{project_name}/media/transforms/{transform_name}

Get a transform by name.

RBAC Capability Required: `ams.transform.get`

Reference: https://mediakind.ferndocs.com/mkio/api/media/transforms/get-transform

## 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)
- `transform_name` (string, required)

## Response

### 200

A single Transform.

- `properties` (TransformProperties, required) — The properties of the Transform
- `id` (string, optional) — Fully qualified resource ID for the resource. Ex - /subscriptions/\{subscriptionId}/resourceGroups/\{resourceGroupName}/providers/\{resourceProviderNamespace}/\{resourceType}/\{resourceName}
- `name` (string, optional) — The name of the resource
- `systemData` (SystemDataSchema, optional) — Metadata pertaining to creation and last modification of the resource.
- `type` (string, optional) — The type of the resource. E.g. "Microsoft.Media/mediaservices/assets"

## 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

### TransformProperties

- `outputs` (list of TransformOutput, required) — An array of TransformOutputs that the Transform should generate. Currently limited to one.
- `created` (datetime, optional) — The creation date and time of the Transform. Set by the system.
- `description` (string, optional) — The description of the Transform.
- `lastModified` (datetime, optional) — The last modified date and time of the Transform. Set by the system.

### SystemDataSchema

- `createdAt` (datetime, required) — The timestamp of resource creation (UTC).
- `createdBy` (string, required) — The identity that created the resource.
- `createdByType` (enum, required) — The type of identity that created the resource.
  - Allowed values: `User`, `Application`, `ManagedIdentity`, `Key`
- `internalId` (string, required) — The internal ID of the resource.
- `lastModifiedAt` (datetime, required) — The timestamp of resource last modification (UTC).
- `lastModifiedBy` (string, required) — The identity that last modified the resource.
- `lastModifiedByType` (enum, required) — The type of identity that last modified the resource.
  - Allowed values: `User`, `Application`, `ManagedIdentity`, `Key`

### 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.

### TransformOutput

- `preset` (TransformOutputPreset, required) — Preset that describes the operations that will be used to modify, transcode, or extract insights from the source file to generate the output.
- `onError` (enum, optional) — Defines what the service should do when one output fails. Continue to produce other outputs, or stop processing.
  - Allowed values: `ContinueJob`, `StopProcessingJob`
- `relativePriority` (enum, optional, default: Normal) — Sets the relative priority of the TransformOutputs within a Transform
  - Allowed values: `High`, `Low`, `Normal`

### TransformOutputPreset

Preset that describes the operations that will be used to modify, transcode, or extract insights from the source file to generate the output.

### BuiltInStandardEncoderPreset

- `@odata.type` (string, required) — The discriminator for derived types.
- `presetName` (string, required) — The built-in preset to be used for encoding videos. Options include: * H264SingleBitrateSD * H264SingleBitrate720p * H264SingleBitrate1080p * H264MultipleBitrateSD * H264MultipleBitrate720p * H264MultipleBitrate1080p * H264MultipleBitrateSDWithCVQ * H264MultipleBitrate720pWithCVQ * H264MultipleBitrate1080pWithCVQ * H265SingleBitrate720p * H265SingleBitrate1080p * H265SingleBitrate4K * AACGoodQualityAudio
- `advancedSettingsName` (string, optional) — Name of the advanced settings configuration to apply to this transform's config. These configuration blocks are managed by MediaKind and you should not set this field unless MediaKind support has asked you to.

### BuiltInAssetConverterPreset

- `@odata.type` (string, required) — The discriminator for derived types.
- `presetName` (enum, required) — The built-in preset to be used for performing asset conversion.
  - Allowed values: `CopyTopBitrateInterleaved`, `CopyAllBitrateNonInterleaved`, `CopyAllBitrateInterleaved`

### ThumbnailGeneratorPreset

- `@odata.type` (string, required) — The discriminator for derived types.
- `thumbnails` (list of ThumbnailGeneratorConfiguration, required) — The set of thumbnails to be produced.
- `baseFilename` (string, optional) — Used to create the output filename as `{BaseFilename}_{Label}{Index}{Extension}`. The default is the name of the input file. If the name of the input file is too long then it will be truncated to 64 characters.

### TrackInserterPreset

- `@odata.type` (string, required) — The discriminator for derived types.
- `tracks` (list of TrackInserterPresetTracksItems, required) — The set of tracks to be inserted. Currently limited to one.
- `baseFilename` (string, optional) — Used to create the output filename. * For text tracks: `{BaseFilename}.cmft`, the default being the input .vtt filename minus the extension, e.g. `subtitles.vtt` -> `subtitles.cmft`. * For audio tracks: `{BaseFilename}.mp4`, the default being the input .mp4 filename, ignored if the audio file is already present in the output asset.

### AIPipelinePreset

- `@odata.type` (string, required) — The discriminator for derived types.
- `pipeline` (PipelineArguments, required) — AI pipeline settings

### EncoderPreset

- `@odata.type` (string, required) — The discriminator for derived types.
- `config` (map from string to any, required) — The configuration for the custom preset.
- `presetName` (string, required) — Name of this preset.
- `advancedSettingsName` (string, optional) — Name of the advanced settings configuration to apply to this transform's config. These configuration blocks are managed by MediaKind and you should not set this field unless MediaKind support has asked you to.

### ThumbnailGeneratorConfiguration

- `format` (enum, required) — The output format for the thumbnails.
  - Allowed values: `Jpeg`, `Png`
- `height` (string, optional) — Either an integer size in pixels, or a percentage of the input resolution. If either width/height is defined as percentage, the other dimension must be the same percentage.
- `label` (string, optional) — Used to create the output filename as `{BaseFilename}_{Label}{Index}{Extension}`. When generating sprites, the output vtt file will be named `{BaseFilename}_{Label}.vtt`
- `quality` (integer, optional, default: 70) — The compression quality for JPEG images. Between 0-100, default: 70.
- `range` (string, optional, default: 1) — Either an ISO8601 duration, or a percentage of the asset duration, or the value '1'. The default is '1', a single thumbnail is produced.
- `spriteColumn` (integer, optional) — The number of columns used if you want a thumbnail sprite image. Default: Single image output files.
- `start` (string, optional, default: PT10S) — Either an ISO8601 duration, or a percentage of the asset duration. Default: PT10S.
- `step` (string, optional) — The intervals at which thumbnails are generated. Either an ISO8601 duration, or a percentage of the asset duration.
- `width` (string, optional) — Either an integer size in pixels, or a percentage of the input resolution. If only one of width/height is present, the aspect ratio from the source is preserved.

### TrackInserterPresetTracksItems

### PipelineArguments

- `name` (string, required) — The name of the AI pipeline the Transform will execute.
- `arguments` (map from string to list of ArgumentSchema, optional) — Arguments to each operation in the AI pipeline

### TextTrack

- `@odata.type` (string, required) — The discriminator for derived types.
- `trackName` (string, required) — The name of the track in the manifest.
- `displayName` (string, optional) — The display name of the track on a video player. In HLS, this maps to the NAME attribute of EXT-X-MEDIA.
- `hlsSettings` (HlsSettings, optional) — The HLS specific setting for the track.
- `languageCode` (string, optional) — The RFC5646 language code for the track.
- `playerVisibility` (enum, optional, default: Visible) — When PlayerVisibility is set to 'Visible', the track will be present in the DASH manifest or HLS playlist when requested by a client. When the PlayerVisibility is set to 'Hidden', the track will not be available to the client. The default value is 'Visible'.
  - Allowed values: `Visible`, `Hidden`

### AudioTrack

- `@odata.type` (string, required) — The discriminator for derived types.
- `trackName` (string, required) — The name of the audio track in the manifest.
- `dashSettings` (DashSettings, optional) — The DASH specific setting for the audio track.
- `displayName` (string, optional) — The display name of the audio track on a video player. In HLS, this maps to the NAME attribute of EXT-X-MEDIA.
- `hlsSettings` (HlsSettings, optional) — The HLS specific setting for the audio track.
- `languageCode` (string, optional) — The RFC5646 language code for the audio track.

### ArgumentSchema

- `name` (string, required) — The name of the argument
- `value` (any, required) — The value of the argument

### HlsSettings

- `characteristics` (string, optional) — The characteristics for the HLS setting.
- `default` (boolean, optional, default: false) — Default track?
- `forced` (boolean, optional, default: false) — Forced track?

### DashSettings

- `role` (string, optional) — The role for the DASH setting.

## Examples

**Response**

```json
{
  "properties": {
    "outputs": [
      {
        "preset": {
          "@odata.type": "string",
          "advancedSettingsName": "string",
          "presetName": "string"
        },
        "onError": "ContinueJob",
        "relativePriority": "Normal"
      }
    ],
    "created": "2024-01-15T09:30:00Z",
    "description": "string",
    "lastModified": "2024-01-15T09:30:00Z"
  },
  "id": "string",
  "name": "name",
  "systemData": {
    "createdAt": "2024-01-15T09:30:00Z",
    "createdBy": "string",
    "createdByType": "User",
    "internalId": "string",
    "lastModifiedAt": "2024-01-15T09:30:00Z",
    "lastModifiedBy": "string",
    "lastModifiedByType": "User"
  },
  "type": "string"
}
```

**SDK Code**

```python
import requests

url = "https://app.mk.io/api/v1/projects/project_name/media/transforms/transform_name"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://app.mk.io/api/v1/projects/project_name/media/transforms/transform_name';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

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"
	"net/http"
	"io"
)

func main() {

	url := "https://app.mk.io/api/v1/projects/project_name/media/transforms/transform_name"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	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/media/transforms/transform_name")

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

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

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.get("https://app.mk.io/api/v1/projects/project_name/media/transforms/transform_name")
  .header("Authorization", "Bearer <token>")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://app.mk.io/api/v1/projects/project_name/media/transforms/transform_name', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://app.mk.io/api/v1/projects/project_name/media/transforms/transform_name");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://app.mk.io/api/v1/projects/project_name/media/transforms/transform_name")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

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()
```