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/profile2. 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 orRFC 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
- Embed ankoder_date, ankoder_action and ankoder_path in string.
- Apply NIST SHA-1 message digest algorithm on string, take the
first 20 hexadecimal digits in lowercase and name the string salt. - 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.
| URL | http://api.ankoder.com/auth/login |
|---|---|
| Method | POST |
| 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=
