How to Use the API

Flávio Ribeiro edited this page Jul 17, 2016 · 8 revisions

# Snickers API How To

Creating a Preset

Given a JSON file called preset.json:

{
  "name": "mp4_240p",
  "description": "Encodes video in H264/MP4 @ 240p",
  "container": "mp4",
  "rateControl": "vbr",
  "video": {
      "height": "240",
      "width": "426",
      "codec": "h264",
      "bitrate": "1000000",
      "gopSize": "90",
      "gopMode": "fixed",
      "profile": "main",
      "profileLevel": "3.1",
      "interlaceMode": "progressive"
  },
  "audio": {
      "codec": "aac",
      "bitrate": "64000"
  }
}

You can create a preset by sending the follow request:

$ curl -X POST -d @preset.json http://api.host.com/presets
{
  "name": "mp4_240p",
  "description": "Encodes video in H264/MP4 @ 240p",
  "container": "mp4",
  "rateControl": "vbr",
  "video": {
      "height": "240",
      "width": "426",
      "codec": "h264",
      "bitrate": "1000000",
      "gopSize": "90",
      "gopMode": "fixed",
      "profile": "main",
      "profileLevel": "3.1",
      "interlaceMode": "progressive"
  },
  "audio": {
      "codec": "aac",
      "bitrate": "64000"
  }
}

Listing Presets

$ curl -X GET http://api.host.com/presets
[
  {
    "audio": {
      "bitrate": "64000",
      "codec": "aac"
    },
    "container": "mp4",
    "description": "HLS 1080 for tests",
    "name": "mp4_240p",
    "rateControl": "vbr",
    "video": {
      "bitrate": "1000000",
      "codec": "h264",
      "gopMode": "fixed",
      "gopSize": "90",
      "height": "240",
      "profile": "main",
      "profileLevel": "3.1",
      "interlaceMode": "progressive",
      "width": "426"
    }
  },
  {
    "audio": {
      "bitrate": "64000",
      "codec": "vorbis"
    },
    "container": "webm",
    "description": "WebM @ 720p",
    "name": "webm_720p",
    "rateControl": "vbr",
    "video": {
      "profile": "main",
      "profileLevel": "3.1",
      "bitrate": "1000000",
      "codec": "vp8",
      "gopMode": "fixed",
      "gopSize": "90",
      "height": "240",
      "interlaceMode": "progressive",
      "width": "426"
    }
  }
]

Updating a Preset

$ curl -X PUT -d @preset.json http://api.host.com/presets
< HTTP/1.1 200 OK

Creating a Job

In order to create a job you need to specify a HTTP or S3 address of a source and a S3 address for the destination. Snickers only supports one preset per job but this problem is being addressed on issue #40.

The format of the S3 address should be:

http://AWSKEY:AWSSECRET@BUCKET.s3.amazonaws.com/DIRECTORY

See below an example of job.json:

{
  "source": "http://flv.io/KailuaBeach.mp4",
  "destination": "http://AKIAII3C6HP:4wooQI51NXIN5ELJNTq@snickers-media.s3.amazonaws.com/outputs/",
  "preset": "mp4_240p"
}

Then, make a POST request to the API:

$ curl -X POST -H "Content-Type: application/json" -d @job.json  http://api.host.com/jobs
< HTTP/1.1 200 OK

Listing Jobs

$ curl -X GET http://api.host.com/jobs
< HTTP/1.1 200 OK
[
  {
    "destination": "http://AWSKEY:AWSSECRET@BUCKET.s3.amazonaws.com/OBJECT",
    "id": "QWizjJwLP98LgTuQ",
    "preset": {
      "audio": {
        "bitrate": "64000",
        "codec": "vorbis"
      },
      "container": "webm",
      "description": "WebM @ 720p",
      "name": "webm_720p",
      "rateControl": "vbr",
      "video": {
        "profile": "main",
        "profileLevel": "3.1",
        "bitrate": "1000000",
        "codec": "vp8",
        "gopMode": "fixed",
        "gopSize": "90",
        "height": "240",
        "interlaceMode": "progressive",
        "width": "426"
      }
    },
    "progress": "",
    "source": "http://flv.io/comingsoon.mov",
    "status": "created"
  }
]

Getting Job Details

With the job ID:

$ curl -X GET http://api.host.com/jobs/QWizjJwLP98LgTuQ
{
  "destination": "http://AWSKEY:AWSSECRET@BUCKET.s3.amazonaws.com/OBJECT",
  "id": "QWizjJwLP98LgTuQ",
  "preset": {
    "audio": {
      "bitrate": "64000",
      "codec": "vorbis"
    },
    "container": "webm",
    "description": "WebM @ 720p",
    "name": "webm_720p",
    "rateControl": "vbr",
    "video": {
      "profile": "main",
      "profileLevel": "3.1",
      "bitrate": "1000000",
      "codec": "vp8",
      "gopMode": "fixed",
      "gopSize": "90",
      "height": "240",
      "interlaceMode": "progressive",
      "width": "426"
    }
  },
  "progress": "",
  "source": "http://flv.io/comingsoon.mov",
  "status": ""
}

Starting the job

With the job ID:

$ curl -X GET http://api.host.com/jobs/QWizjJwLP98LgTuQ/start

Then you should request job details in order to follow the status and progress of each step (downloading, encoding, uploading).

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.