Callback Notification

Last update:2026-07-15 17:46:32

This document explains how Atomile sends secure notifications about your media processing tasks. It also describes the verification mechanism used to confirm that notifications are authentic and provides detailed information about the processing results.

Notification Security Mechanism

To protect your security, Atomile includes an Authorization header in every notification request. This allows you to verify that the notifications are legitimate and sent by Atomile.

Authorization Header Format

<AccessKey>:URLSAFE_BASE64(HMAC_SHA1(NotifyUrlWithOutQuery + "\n" + NotifyBody, SecretKey))

Where:

  • AccessKey is your account AccessKey.
  • NotifyBody is the notification content.
  • SecretKey is your account AccessKey Secret.

Important: Atomile randomly selects one valid AccessKey and AccessKey Secret pair from your account to generate the Authorization value. You should keep a record of all your AccessKeys and AccessKey Secrets so that you can authenticate callback notifications by matching the AccessKey used in the request.

Notification Content

When you configure a NotifyUrl, Atomile sends JSON-formatted notifications to this endpoint after your media processing task is completed or updated. The notification content is URL-safe Base64 encoded and contains detailed information about your processing tasks.

Notification Requirements

Your callback URL must meet the following requirements:

  • It must be accessible from the public internet.
  • It must return an HTTP/1.1 200 OK status after receiving a notification.

Notification Fields

Field Name Type Description
id string The persistentId of the media processing task.
code int Task status code:
1 - Some tasks are still running, while others have completed.
2 - Some tasks encountered errors, while others completed or are still in progress.
3 - All tasks completed successfully.
desc string A description corresponding to the status code.
separate string Notification type:
0 - A single notification.
1 - One of multiple separate notifications.
inputkey string The original file name.
inputbucket string The bucket that contains the original file.
inputfsize int The size of the original file in bytes.
items array Status information for each processing operation.

Items Array Fields

Each item in the items array contains the following fields:

Field Name Type Description
cmd string The operation command (fops).
code string Processing result code:
2 - Failed
3 - Successful
costTime int The transcoding time in seconds. The default value is 0.
desc string A description of the operation result.
error string Error details if processing failed.
fsize int The size of the output media in bytes.
hash string The hash value of the result.
key string The result key, in the format bucketName:key.
url string The access URL of the transcoded media.
duration double The duration of the transcoded media, in seconds.
bit_rate string The bitrate of the transcoded media.
resolution string The resolution of the transcoded video.
detail array Detailed information about each output when multiple outputs are generated.

Detail Array Fields

Field Name Type Description
fsize int The size of the transcoded media file. For M3U8 format, this is the size of the manifest file.
tssize int The total size of TS files for M3U8 output. For other formats, the value is 0.
hash string The hash value of the output.
key string The output key, in the format bucketName:key.
url string The access URL of the output.
duration double The duration of the output, in seconds.
bit_rate string The bitrate of the output.
resolution string The resolution of the output video.

Example Notification

{
    "id": "2c90802745ee87870145ef1430f90006",
    "code": 3,
    "desc": "operate [\"avthumb/flv\"] is finish",
    "separate": 0,
    "inputkey": "aaa.flv",
    "inputbucket": "alextesttwo",
    "inputfsize": 20000,
    "items": [
        {
            "cmd": "avthumb/flv",
            "code": "3",
            "costTime": 0,
            "desc": "finish",
            "error": null,
            "fsize": 20000,
            "hash": "FlWvHsc-CK6miygKCcLjCaQ5csNO",
            "key": "alextesttwo:aaa.flv",
            "url": "http://alextesttwo.com/aaa.flv",
            "duration": 198.083,
            "bit_rate": "1288025",
            "resolution": "1280X720",
            "detail": [
                {
                    "fsize": 20000,
                    "tssize": 1024,
                    "hash": "FlWvHsc-CK6miygKCcLjCaQ5csNO",
                    "key": "alextesttwo:aaa.flv",
                    "url": "http://alextesttwo.com/aaa.flv",
                    "duration": 198.083,
                    "bit_rate": "1288025",
                    "resolution": "1280X720"
                }
            ]
        }
    ]
}