API Domain: http://api.ankoder.com

For all API request, include the header "Accept: text/xml”

Auth

Three methods of authentication.

  • Basic Auth
  • Key+Signature Authentication
  • Session

1. Basic Auth Login

Provide your login/password pair each time you invoke Ankoder’s api.

curl --basic --user {username}:{password}  http://api.ankoder.com/profile


2. Key+Signature Authentication

Prove your identity by creating a Signature Token with:

  • Timestamp
  • Request method
  • URL
  • Private key

Definitions

ankoder_date request dispatch time in unix `date` default output format or
RFC 2822 format
ankoder_action the HTTP method with which you make the request. Common examples
are GET, POST, HEAD, PUT and DELETE
ankoder_path the part of URL after api.ankoder.com.
If the URL you are requesting
is http://api.ankoder.com/video/1, then ankoder_path is
/video/1.
ankoder_access_key your access key
ankoder_passkey the token with which you identify yourself.

Creating the ankoder_passkey

  1. Embed ankoder_date, ankoder_action and ankoder_path in string.
  2. Apply NIST SHA-1 message digest algorithm on string, take the
    first 20 hexadecimal digits in lowercase and name the string salt.
  3. ankoder_passkey is Base64-encoded HMAC-SHA1 digest of
    salt with your private key. If trailing linefeed is present, it is not included in ankoder_passkey.

Ruby Example

string = "-#{ankoder_date}-#{ankoder_action}-#{ankoder_path}-"

require "hmac-sha1"
salt = Digest::SHA1.hexdigest("-#{date}-#{action}-#{path}-")[0..19]
>a6cdce75aa6c079b47b7

require "base64"
passkey = Base64.encode64(HMAC::SHA1::digest(private_key, salt)).strip
>zJrt3c48z+GqUnba9O5iOARyoo8=

Request Header

Unique ankoder_date and ankoder_passkey is required on every request.

GET /video/1 HTTP/1.1
Host: api.ankoder.com
Accept: */*
ankoder_access_key: 31e9111ae343c829864e1d159da2f70cd25cd932
ankoder_passkey: zJrt3c48z+GqUnba9O5iOARyoo8=
ankoder_date: Mon Aug 17 11:21:52 UTC 2009

Curl Testing Example

You are recommended to write a script to compute the commandline options.
Working SHA-1 out by hand before ankoder_date expires after 15 minutes
may frequently be physically impossible.

curl api.ankoder.com/video/1
  -X GET -H "ankoder_access_key: 94e7041ae343c829864e1d730da2f70cd25cd561"
  -H "ankoder_passkey: IU2HAzzkxt5bBABuTjDGUOvzJfc="
  -H "ankoder_date: Mon Aug 17 11:21:52 UTC 2009"

3. Session Login

Prove your identity by POSTing login and password as HTTP Request parameters.
A session cookie would be returned as part of the headers.

URLhttp://api.ankoder.com/auth/login
MethodPOST
Parameters
login your login name ( required )
password your password ( required )

Success Example

$  curl -H "Accept: text/xml" -F login=foo \ 
-F password=bar  http://api.ankoder.com/auth/login -i
 
HTTP/1.1 200 OK
....
Set-Cookie: _ankoderapi_session=BAh7BzoJdXNlcmkRIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVyOjpGbGFz%250AaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsA--c29782111b8b3f7afe17be096b572d63e88b8ad4; path=/
....

HTTP/1.1 200 OK indicates that login is successful.

You can then reuse the login session which is _ankoderapi_session:

_ankoderapi_session=BAh7BzoJdXNlcmkRIgpmbGFzaElDOidBY3R....

Failure Example

$  curl -H "Accept: text/xml" -F login=foo \ 
-F password=foobar  http://api.ankoder.com/auth/login -i

HTTP/1.1 401 Authorization Required
....
Set-Cookie: _ankoderapi_session=BAh7BzoJdXNlcmkRIgpmbGFzaElDOidBY3Rpb25Db250cm9sbGVyOjpGbGFz%250AaDo6Rmxhc2hIYXNoewAGOgpAdXNlZHsA--2aa5be92bcd97844b5a7c25c9de72dcd9a58a42a; path=/
....

HTTP/1.1 401 Authorization Required indicates that login is failed.

Here you would still get a session, however this session would not give you authorized access.



Download

[POST] http://api.ankoder.com/download

Support 3 download methods

  • HTTP from URL
  • HTTP from a S3 Bucket
    You need to grant READ access to “aws@ankoder.com” (Even if it is publicly readable)
  • FTP

Parameters

Required Name Description
required url 3 methods: (note it is case-sensitive) * http://www.hostname.com/filename.wmv * s3://bucket_name/filename * ftp://username:password@hostname.com/filename.wmv
custom_profile ID of the Profile that the downloaded video will be converted to automatically
custom_recipe ID of the Recipe that the downloaded video will be converted to automatically
upload_url Destination of the converted file

Support S3, FTP, SFTP :
s3://bucket_name
ftp://username:password@ftpdomain.com/folder
sftp://username:password@ftpdomain.com/folder
thumbnail_upload_url Destination of the thumbnail
Support S3, FTP, SFTP :
s3://bucket_name
ftp://username:password@ftpdomain.com/folder
sftp://username:password@ftpdomain.com/folder
postback_url Url where the result should be posted to
e.g. http://www.ankoder.net/ankoder_notification
* video_format output format. Specify format of encoded file.
Allowed values: 3g2 3gp asf avi dvd flv mjpeg mov mp3 mp4 mpeg mpeg2video mpegts ogg psp rm svcd vcd vob matroska wmv
* video_codec Allowed values: flv h263 h264 huffyuv mjpeg mp4 wmv1 wmv2 xvid mpeg4 theora msmpeg4v2
* audio_codec Allow values: aac ac3 amr flac mp3 vorbis wmav2 mpeg4aac mp2
width Video frame width

Allowed values: non-zero integer
height Video frame height

Allowed values: non-zero integer
video_bitrate video bitrate

Allowed values: integer less than 10000
video_fps video frame rate

Allowed values: non-zero integer
audio_bitrate Audio bitrate

Allowed values: non-zero integer
audio_sample_rate Audio sampling frequency

Allowed values: any non-zero integer.
audio_channel Number of audio channel

Allowed values: 1, 2
keep_aspect Fit video within width and height instead of stretching

Allowed values: 0, 1
add_padding Add padding to fit the specified size

Allowed values: 0, 1
suffix Suffix of output file
trim_begin Start encoding from (sec)

Allowed values: non-negative integer.
duration Duration (sec)

Allowed values: positive integer.
bitrate_tolerance Default value: the same as video_bitrate
thumbnail_width Thumbnail width

Allowed values: non-negative integer.

Default value: the width of the video
thumbnail_height Thumbnail height

Allowed values: non-negative integer.

Default value: the height of the video
thumb_moments Timestamp (in seconds) to capture thumbnail

Allowed values: non-negative number greater than 0.01
thumb_amount Number of additional thumbnails to generate

Allowed values: non-negative integer

Default value: 0
thumb_start Period (in seconds) start point to generate additional thumbnails

Allowed values: non-negative number greater than 0.01

Default value: the start of the video
thumb_end Period (in seconds) end point to generate additional thumbnails

Allowed values: non-negative number greater than 0.01

Default value: the end of the video
thumb_way The way to generate additional thumbnails in the specified period

Allowed values: even, rand

Default value: none
watermark_url The URL of the logo image. The image format can be GIF, JPG or PNG.
watermark_transparent Whether enable transparent watermark

Allowed values: 0, 1
watermark_size The size of the watermark relative to the video

Allowed values: no-negative integer less than 100
watermark_top top offset of watermark image

Allowed values: non-negative integer
watermark_left left offset of watermark image

Allowed values: non-negative integer
segment_duration Segment videos according to Apple’s
HTTP Live Streaming Specifications
, Segment duration in seconds

Allowed values: integer equal or bigger than 5

NOTE: If either custom_profile or custom_recipe is not specified, the items marked with * are mandatory. If custom_profile is specified, additional parameters will override values in the specified profile. If custom_recipe is specified, custom_profile and additional parameters will be ignored.

HTTP/1.1 200 OK indicate that the download job is successfully created.

Success Response Example:

<video>
  <id>8206</id>
  <progress>0</progress>
  <created_at>Tue May 13 10:31:30 +0000 2008</created_at>
</video>

Error Response Example:

<errors>
  <error>Source url can't be blank</error>
</errors>

HTTP/1.1 422 Unprocessable Entity indicate that the job is failed to create

Notification Message:

When the download is completed, our system will POST a notification message in JSON format to your “notification url” – which can be set in your user settings.

result success or fail
error empty or an error message
type Download
video_name e.g. 89db197da259f1be3d9d9cd1f28f9035bf200c5e.flv
video_id e.g. 1456

Success Example

message={
  "result":"success",
  "error":"",
  "video_id":"1456",
  "type":"Download",
  "video_name":"89db197da259f1be3d9d9cd1f28f9035bf200c5e.flv"}
&signature=NibHgyAxXotBRWjZkCztZ/jDHfc=

Failed Example

message={"result":"fail",
  "error":"The downloaded file is not a supported video",
  "video_id":"1456","type":"Download",
  "video_name":"2247ad5b3f396da556cfb391c384404c68bf1115"}
&signature=FRnPav5RWDbVRtqUhg18uT6NoPc=

Curl Testing Example

curl -X POST --basic -user username:password -d
  "url=http://www.mydomain.com/video.wmv"  http://api.ankoder.com/download



Video

[GET] http://api.ankoder.com/video/{id}

Retrieve information of a Source or Converted Video.

Response Example

<video>
  <id>8206</id>
  <filename>bb5a492984c4c06e8d32f08c117a1b5ffd3b6a47_2.flv</filename>
  <readable>true</readable>
  <specs>
    <size>3395183</size>
    <audio codec="mp3"/>
    <video codec="flv" fps="29.97" />
    <spec width="320" height="240" content_type="video/x-flv"/>
  </specs>
  <duration>30000</duration>
  <progress>100</progress>
  <created_at>Tue May 13 10:31:30 +0000 2008</created_at>
</video>



Profile

Profile defines the video codecs, resolutions and duration of a conversion job.

Methods:

  • [GET] http://api.ankoder.com/profile
  • [GET] http://api.ankoder.com/profile/{id}

[GET] http://api.ankoder.com/profile

Retrieve the list of profiles that you have access to.

Response Example:

<profiles>
  <profile>
    <id>2</id>
    <name>psp</name>
    <created_at>2007-12-27 06:33:39 UTC</created_at>
    <width>480</width>
    <height>272</height>
    <video_format>mp4</video_format>
    <video_fps>29.97</video_fps>
    <video_bitrate>768.0</video_bitrate>
    <video_codec>h264</video_codec>
    <audio_channel>2</audio_channel>
    <audio_codec>aac</audio_codec>
    <audio_bitrate>128.0</audio_bitrate>
    <audio_rate>48000</audio_rate>
    <thumbnail_width></thumbnail_width>
    <thumbnail_height></thumbnail_height>
    <trim_begin></trim_begin>
    <max_duration></max_duration>
    <add_padding>false</add_padding>
    <keep_aspect>false</keep_aspect>
  </profile>
</profiles>

[GET] http://api.ankoder.com/profile/{id}

Retrieve information of a Profile

Response Example:

<profile>
  <id>2</id>
  <name>psp</name>
  <created_at>2007-12-27 06:33:39 UTC</created_at>
  <width>480</width>
  <height>272</height>
  <video_format>mp4</video_format>
  <video_fps>29.97</video_fps>
  <video_bitrate>768.0</video_bitrate>
  <video_codec>h264</video_codec>
  <audio_channel>2</audio_channel>
  <audio_codec>aac</audio_codec>
  <audio_bitrate>128.0</audio_bitrate>
  <audio_rate>48000</audio_rate>
  <thumbnail_width></thumbnail_width>
  <thumbnail_height></thumbnail_height>
  <trim_begin></trim_begin>
  <max_duration></max_duration>
  <add_padding>false</add_padding>
  <keep_aspect>false</keep_aspect>
</profile>



Job

Methods:

  • [POST] http://api.ankoder.com/job
  • [GET] http://api.ankoder.com/job/{id}

[POST] http://api.ankoder.com/job

Parameters

Required Name Description
required original_file_id id of source video to convert
profile_id id of Profile to be converted with
upload_url Destination of the converted file

Support S3, FTP, SFTP :
s3://bucket_name
ftp://username:password@ftpdomain.com/folder
sftp://username:password@ftpdomain.com/folder
thumbnail_upload_url Destination of the thumbnail
Support S3, FTP, SFTP :
s3://bucket_name
ftp://username:password@ftpdomain.com/folder
sftp://username:password@ftpdomain.com/folder
postback_url Url where the result should be posted to
e.g. http://www.ankoder.net/ankoder_notification
* video_format output format. Specify format of encoded file.
Allowed values: 3g2 3gp asf avi dvd flv mjpeg mov mp3 mp4 mpeg mpeg2video mpegts ogg psp rm svcd vcd vob matroska wmv
* video_codec Allowed values: flv h263 h264 huffyuv mjpeg mp4 wmv1 wmv2 xvid mpeg4 theora msmpeg4v2
* audio_codec Allow values: aac ac3 amr flac mp3 vorbis wmav2 mpeg4aac mp2
width Video frame width

Allowed values: non-zero integer
height Video frame height

Allowed values: non-zero integer
video_bitrate video bitrate

Allowed values: integer less than 10000
video_fps video frame rate

Allowed values: non-zero integer
audio_bitrate Audio bitrate

Allowed values: non-zero integer
audio_sample_rate Audio sampling frequency

Allowed values: any non-zero integer.
audio_channel Number of audio channel

Allowed values: 1, 2
keep_aspect Fit video within width and height instead of stretching

Allowed values: 0, 1
add_padding Add padding to fit the specified size

Allowed values: 0, 1
suffix Suffix of output file
trim_begin Start encoding from (sec)

Allowed values: non-negative integer.
duration Duration (sec)

Allowed values: positive integer.
bitrate_tolerance Default value: the same as video_bitrate
thumbnail_width Thumbnail width

Allowed values: non-negative integer.

Default value: the width of the video
thumbnail_height Thumbnail height

Allowed values: non-negative integer.

Default value: the height of the video
thumb_moments Timestamp (in seconds) to capture thumbnail

Allowed values: non-negative number greater than 0.01
thumb_amount Number of additional thumbnails to generate

Allowed values: non-negative integer

Default value: 0
thumb_start Period (in seconds) start point to generate additional thumbnails

Allowed values: non-negative number greater than 0.01

Default value: the start of the video
thumb_end Period (in seconds) end point to generate additional thumbnails

Allowed values: non-negative number greater than 0.01

Default value: the end of the video
thumb_way The way to generate additional thumbnails in the specified period

Allowed values: even, rand

Default value: none
watermark_url The URL of the logo image. The image format can be GIF, JPG or PNG.
watermark_transparent Whether enable transparent watermark

Allowed values: 0, 1
watermark_size The size of the watermark relative to the video

Allowed values: no-negative integer less than 100
watermark_top top offset of watermark image

Allowed values: non-negative integer
watermark_left left offset of watermark image

Allowed values: non-negative integer
segment_duration Segment videos according to Apple’s
HTTP Live Streaming Specifications
, Segment duration in seconds

Allowed values: integer equal or bigger than 5

NOTE: If profile_id is not specified, the items marked with * are mandatory. If profile_id is specified, additional parameters will override values in the specified profile.


HTTP/1.1 200 OK indicate that the job is successfully created.

Success Response Example:

<job>
  <id>55</id>
  <status>submitting</status>
  <original_file>
    <id>175</id>
    <filename>bb5a492984c4c06e8d32f08c117a1b5ffd3b6a47.flv</filename>
    <readable>true</readable>
    <size>29714</size>
    <audio codec="mp3"/>
    <video codec="flv" fps="25"/>
    <spec height="240" width="320" content_type="video/x-flv"/>
    <duration>100</duration>
    <progress>0</progress>
    <created_at>2009-08-17 11:15:59 UTC</created_at>
  </original_file>
  <profile>
    <id>2</id>
    <name>psp</name>
    <created_at>2007-12-27 06:33:39 UTC</created_at>
    <width>480</width>
    <height>272</height>
    <video_format>mp4</video_format>
    <video_fps>29.97</video_fps>
    <video_bitrate>768.0</video_bitrate>
    <video_codec>h264</video_codec>
    <audio_channel>2</audio_channel>
    <audio_codec>aac</audio_codec>
    <audio_bitrate>128.0</audio_bitrate>
    <audio_rate>48000</audio_rate>
    <thumbnail_width></thumbnail_width>
    <thumbnail_height></thumbnail_height>
    <trim_begin></trim_begin>
    <max_duration></max_duration>
    <add_padding>false</add_padding>
    <keep_aspect>false</keep_aspect>
  </profile>
  <convert_progress></convert_progress>
  <created_at>2009-08-18 09:45:47 UTC</created_at>
</job>



HTTP/1.1 422 Unprocessable Entity indicate that the job is failed to create

Failed Response Example:

Status: 422 Unprocessable Entity
<errors>
  <error>Original file can't be blank</error>
</errors>

Testing with Curl

$curl -H "Accept: text/xml"  -X POST -d "original_file_id=5134&profile_id=1" http://username:password@api.ankoder.com/job -i
HTTP/1.1 200 OK

Notification Messages

Convert Notification

When the conversion is completed, our system will POST a notification message in JSON format to your “notification url” – which can be set in your user settings.

result success or fail
name filename of output video
error empty or an error message
type Convert
is_trimmed true or false
convert_video_id ID of output video; e.g. 1456
thumbanil_result success or fail or partial_success

Success Example

message={
  "name":"179_bb5a492984c4c06e8d32f08c117a1b5ffd3b6a47_55.mp4",
  "result":"success",
  "convert_video_id":"179",
  "is_trimmed":false,
  "original_video_id":"30",
  "type":"Convert",
  "thumbnail_result":"success",
  "Job":"55",
  "error":""}
&signature=JmpnJoMQrdhdXcunbI+j2VVxtZM=

Failed Example

message={
  "result":"fail",
  "is_trimmed":false,
  "original_video_id":"30",
  "type":"Convert",
  "Job":"55",
  "error":"Original video is corrupted"}
&signature=thLXP8YPRgJesf9W0jmiI4JWc1o=
Upload Notification

If you set “external storage” in user settings, our system will upload the output file to your external storage and POST an additional notification message to your “notification url” after it is done.

type Upload
result success or fail
error empty or an error message
job job details. children: profile, input_file, output_file, id, status
profile profile the job used, children: id, name
input_file details of the input video file, children: duration, size, name, id,
height, width
output_file details of the output video file, children: duration, size, name, id,
height, width, url, filename, thumbnails
thumbnails an array of filenames of thumbnails uploaded to your thumbnail destination
filename filename of output video
id id of the item
name name of the item, in the input_file and output_file situation, it’s the
orginal file of the video
duration duration of the video
size file size of the video file
height height of the video
width width of the video
url the resource identifier of the video
status status of the job

Success Example

message={
  "result":"success",
  "error":"",
  "type":"Upload",
  "job":{
	"id":"75",
	"status":"completed",
  	"profile":{
		"id":"1057165111",
		"name":"high"
	}
	"input_file":{
		"duration":"11540",
		"name": "lake.avi",
		"size":"876986",
		"id":"137",
		"height":"480",
		"width":"720"
	}
	"output_file":{
		"duration":"11540",
		"name":"lake.mp4",
		"size":"2964981",
		"url":"ftp:\/\/user:incorrect_password@ftp.your.server\/138_03727d8f4f7fa0c4229db60f254b86d0e0f72960_75.mp4",
		"id":"138",
		"height":"720",
		"width":"1280",
		"filename":"138_03727d8f4f7fa0c4229db60f254b86d0e0f72960_75.mp4",
		"thumbnails":[\"138-5.77-1280x720.png\"]
	}
}
&signature=EeyStcSQJ9MnCgDc7Jj/CTGQhfg=

Failed Example

message={
  "result":"fail",
  "error":"Authentication failed",
  "type":"Upload",
  "job":{
	"id":"75",
	"status":"completed",
  	"profile":{
		"id":"1057165111",
		"name":"high"
	}
	"input_file":{
		"duration":"11540",
		"name": "lake.avi",
		"size":"876986",
		"id":"137",
		"height":"480",
		"width":"720"
	}
	"output_file":{
		"duration":"11540",
		"name":"lake.mp4",
		"size":"2964981",
		"url":"ftp:\/\/user:incorrect_password@ftp.your.server\/138_03727d8f4f7fa0c4229db60f254b86d0e0f72960_75.mp4",
		"id":"138",
		"height":"720",
		"width":"1280",
		"filename":"138_03727d8f4f7fa0c4229db60f254b86d0e0f72960_75.mp4",
		"thumbnails":[\"138-5.77-1280x720.png\"]
	}

}
&signature=jrggBD1PwPvgd+MsashIK2BhdOg=


[GET] http://api.ankoder.com/job/{id}

HTTP/1.1 200 OK indicate that the job is can be found.

Success Response Example:

<job>
  <id>55</id>
  <status>completed</status>
  <original_file>
    <id>175</id>
    <filename>bb5a492984c4c06e8d32f08c117a1b5ffd3b6a47.flv</filename>
    <readable>true</readable>
    <size>29714</size>
    <audio codec="mp3"/>
    <video codec="flv" fps=""/>
    <spec height="240" width="320" content_type=""/>
    <duration>100</duration>
    <progress>0</progress>
    <created_at>2009-08-17 11:15:59 UTC</created_at>
  </original_file>
  <convert_file>
    <id>175</id>
    <filename>bb5a492984c4c06e8d32f08c117a1b5ffd3b6a47.flv</filename>
    <readable>true</readable>
    <size>29714</size>
    <audio codec="mp3"/>
    <video codec="flv" fps=""/>
    <spec height="240" width="320" content_type=""/>
    <duration>100</duration>
    <progress>0</progress>
    <created_at>2009-08-17 11:15:59 UTC</created_at>
  </convert_file>
  <profile>
    <id>2</id>
    <name>psp</name>
    <created_at>2007-12-27 06:33:39 UTC</created_at>
    <width>480</width>
    <height>272</height>
    <video_format>mp4</video_format>
    <video_fps>29.97</video_fps>
    <video_bitrate>768.0</video_bitrate>
    <video_codec>h264</video_codec>
    <audio_channel>2</audio_channel>
    <audio_codec>aac</audio_codec>
    <audio_bitrate>128.0</audio_bitrate>
    <audio_rate>48000</audio_rate>
    <thumbnail_width></thumbnail_width>
    <thumbnail_height></thumbnail_height>
    <trim_begin></trim_begin>
    <max_duration></max_duration>
    <add_padding>false</add_padding>
    <keep_aspect>false</keep_aspect>
  </profile>
</job>


HTTP/1.1 404 Not Found indicate that the job doesn’t exist

Failed Response Example:

HTTP/1.1 404 Not Found

Testing with Curl

curl -H "Accept: text/xml" -X GET  http://username:password@api.ankoder.com/job/29 -i



Upload

[POST] http://api.ankoder.com/files/upload

You can embed an upload form and let your users directly upload directly to our server. We will transcode the video and send it to your storage server, hence the upload process is transparent to your users.

Sample HTML upload Form

<form action="http://api.ankoder.com/files/upload" 
  method="post" enctype="multipart/form-data" >
  <input name="access_key" type="hidden" value="89e3748d7a4cf2912347ff5422497d198657ec277" />
  <input name="success_redirect" type="hidden" value="http://www.myapp.com/videos/upload/success" />
  <input name="failed_redirect" type="hidden" value="http://www.myapp.com/video/upload/failed" />
  <p> 
  <label for="file">File:</label>
  <input id="file" name="file" type="file" /> (Max 2GB)
  </p>
  <input name="commit" type="submit" value="Submit" />
</form>

Parameters

Required Name Description
required file Video file field
required access_key Your access key
success_redirect The url that will redirect after user successfully upload
failed_redirect The url that will redirect after user failed upload (optional)
custom_* you can add fields start with ‘custom_’, we will post these fields back to your server by “Notification URL

Notification Message

When your user has uploaded a video to our servers, our system will POST a notification message to your application with the details supplied, since the file is never uploaded to your server.

result “success” or “failed”
error empty or error message
type NewVideo
video_id ID of uploaded video
custom_fields serialize of your custom_* fields

Success Message Example

message={
  "result": "success",
  "error": null,
  "video_id": 173,
  "type": "NewVideo",
  "custom_fields": {"custom_user": "1", "custom_profile": "5"},
  "duration":"11540",
  "size":"876986",
  "filename": "lake.avi"}
&signature="rjTlkI06P2M5WF60rFBdbPQOjY8="

Failure Message Example

message={
  "result": "failed",
  "error": "invalid video",
  "video_id": 61,
  "type": "NewVideo",
  "custom_fields": {"custom_user": "1", "custom_profile": "2"},
  "video_name": "c11e2aac937c49aa669b7781b2322213b64485a4.mp4"}
&signature=6LHNLTHUQpDGeVYltTdpfNJVADo=



Olark Livehelp