Media Engine Webhook Actions

Media Engine supports third-party integration using webhook actions created through the Signiant Platform API. Once an asset is indexed and a webhook action is created, the action can collect metadata and send it to a third-party service.

The Media Engine action menu open, highlighting webhooks with a default icon and a custom icon

Webhooks use metadata to provide information to third-party applications and integrations. For an example of the information contained within a webhook response, see the example webhook metadata body.

Custom Webhook Icons

Webhooks support custom icons for webhook actions to provide Media Engine users with an easy way to identify webhook integrations, ensuring asset metadata is sent to the correct destination.

The Media Engine action menu open, highlighting a webhook with a custom icon

Icons can be assigned to a webhook action when created with a POST call, or added to an existing webhook action using PATCH.

Webhook icon images have the following requirements:

  • svg or png file format
  • 24 px in width and height
  • Maximum of 5 KB

Once an image is converted into a base64 string, you must prepend one of the data type prefixes to the string when creating the API request.

  • SVG images: data:image/svg+xml;base64,
  • PNG images data:image/png;base64,

An image can be converted to a base64 string using a third-party utility, or by using Windows Powershell or the Linux/macOS terminal.

Windows Powershell

PowerShell requires a file be converted to bytes before it can be converted to a base64 string.

To generate a base64 string from an icon using Powershell:

  1. In PowerShell, navigate to the icon file directory:
Copy
cd c:\path\to\icon\
  1. Use the certutil utility to create a text file containing the base64 string:
Copy
certutil -encode icon.svg icon.txt
  1. In a text editor, remove the certificate header and footer, and all line breaks.

  2. Copy the file contents to your clipboard.

With the file contents on your clipboard, you can now construct an API call. Ensure that the data type prefix is included in the API call.

Linux

To generate a base64 string from an icon using terminal:

  1. In your terminal, navigate to the icon file directory:
Copy
cd /path/to/icon/
  1. Use the base64 utility to create a text file containing the base64 string:
Copy
base64 icon.svg > icon.txt
  1. In a text editor, remove all line breaks.

  2. Copy the file contents to your clipboard.

With the file contents on your clipboard, you can now construct an API call. Ensure that the data type prefix is included in the API call.

macOS

To generate a base64 string from an icon using terminal:

  1. In your terminal, navigate to the icon file directory:
Copy
cd /path/to/icon/
  1. Use the base64 utility to create a text file containing the base64 string:
Copy
base64 -i icon.svg -o icon.txt
  1. Open icon.txt in a text editor.

  2. Copy the file contents to your clipboard.

With the file contents on your clipboard, you can now construct an API call. Ensure that the data type prefix is included in the API call.

Example Metadata Body

The default metadata body sent using a webhook similar to the following format:

Copy
{
  "webhookId": "50fe1ec8-1234-4628-b17c-0e57883a1453",
  "triggeredBy": "user@example.com",
  "triggeredOn": "2025-04-01T18:22:01.653Z",
  "item": {
    "itemId": "362e522f-1234-449e-1234-2e448f71de15.2bfcb6a4d97a4cee9c679076f50867dd",
    "filePath": "/path/to/example/example-video.mp4",
    "filename": "example-video.mp4",
    "fileSize": 42032695,
    "contentType": "video/mp4v-es",
    "lastModifiedOn": "2025-01-31T18:36:32.076Z",
    "accountId": "12345678-abcd-1234-abcd-123451234512",
    "technicalMetadata": {
      "state": "complete",
      "format": "MP4",
      "bitRate": 13461567,
      "duration": { "value": 25.8115 },
      "video": {
        "codec": "H.264",
        "bitRate": 13338267,
        "frameRate": { "value": 60, "numerator": 60, "denominator": 1 },
        "width": 1884,
        "height": 906,
        "displayWidth": 1884,
        "displayHeight": 906,
        "scanType": "progressive",
        "pixelFormatInfo": "YUV 4:2:0 8 bit",
        "profile": "Main",
        "level": "4.2"
      },
      "audio": {
        "codec": "AAC",
        "bitRate": 129817,
        "layout": "1.0 Mono",
        "sampleRate": 48000
      }
    },
    "resources": {
      "thumbnail_240": {
        "state": "complete",
        "url": "https://storage-indexing-resources.123451234512.services.cloud.signiant.com/12345678-abcd-1234-abcd-123451234512/362e522f-6ab5-449e-a3f4-2e448f71de15/2bfcb6a4d97a4cee9c679076f50867dd/..."
      },
      "thumbnail_strip_240": {
        "state": "complete",
        "url": "https://storage-indexing-resources.123451234512.services.cloud.signiant.com/12345678-abcd-1234-abcd-123451234512/362e522f-6ab5-449e-a3f4-2e448f71de15/2bfcb6a4d97a4cee9c679076f50867dd/..."
      }
    },
    "storage": {
      "storageProfileId": "362e522f-6ab5-449e-a3f4-2e448f71de15",
      "storageProfileType": "ON_PREMISE_FILE_STORAGE",
      "name": "Example SDCX Server"
    },
    "hlsStream": {
      "playlistUrl": "https://media-engine-play-sdcx-us-east-1.123451234512.services.cloud.signiant.com/362e522f-6ab5-449e-a3f4-2e448f71de15/...",
      "state": "available"
    },
    "clipPresets": [
      {
        "presetId": "preset.clip.prores",
        "filenamePattern": "example-video_clip_prores_user@example.com_{startInMillis}_{durationInMillis}.mov"
      }
    ]
  }
}