Skip to documentation
Deploy on AWS
Menu
Documentation · 12 of 19

Docs/HTTP API reference

JetEncode HTTP API

JetEncode exposes version 1 and version 2 HTTP endpoints. The dashboard uses both versions.

Use /v1 to create jobs, read job status, cancel jobs, and read server system information. Use /v2 to inspect jobs, workers, queues, and transcoding capabilities. Version 2 also provides queue controls.

Endpoint summary

MethodPathPurpose
GET/v1/sysinfoRead system information from the API process.
GET/v1/jobsList version 1 job IDs.
POST/v1/jobsCreate a transcoding job.
GET/v1/jobs/:idRead version 1 job status.
POST/v1/jobs/:id/cancelCancel a job.
GET/v2/jobsList jobs with dashboard status data.
GET/v2/jobs/:idRead detailed job status.
GET/v2/jobs/:id/requestRead the stored job request.
GET/v2/jobs/:id/tasksRead internal task history for a job.
GET/v2/queuesRead worker and queue information.
GET/v2/workers/:uidRead one worker.
GET/v2/queueRead the managed job queue.
POST/v2/queue/:id/run-nextRun a queued job before other eligible jobs.
PATCH/v2/queue/:id/priorityChange a queued job priority.
POST/v2/queue/:id/moveMove a queued job.
POST/v2/queue/:id/pausePause a queued job.
POST/v2/queue/:id/resumeResume a queued job.
POST/v2/queue/:id/cancelCancel a queued job.
POST/v2/queue/:id/retryRetry terminal failed tasks for a job.
GET/v2/transcoding/capabilitiesRead supported transcoding capabilities.
GET/v2/configRead dashboard-safe node configuration.
PUT/v2/configSave node configuration. A restart applies the change.
GET/v2/config/worker-dsnGenerate a worker bootstrap DSN.

Create a Job

POST /v1/jobs

Body

{
  "source": {
    "service": "http",
    "url": "https://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_720p_h264.mov"
  },
  "outputs": {
    "httpstream": {
      "hls": { "path": "/hls" },
      "dash": { "path": "/dash" },
      "variants": [
        "mp4:x:64k",
        "mp4:240p::quality=2",
        "mp4:480p::quality=3,maxrate=1500k",
        "mp4:720p::quality=4,maxrate=3000k"
      ],
      "playlist_name": "master"
    },
    "mp4:480p::quality=3": {
      "key": "480p",
      "path": "/mp4/480p.mp4"
    },
    "jpg:180x": {
      "key": "jpg:thumbs",
      "path": "/jpg/thumbs.jpg",
      "interval": 0,
      "sprite": {
        "columns": 16,
        "limit": 360
      },
      "vtt": {
        "filename": "thumbs.vtt"
      }
    }
  }
}

Retrieve All Jobs

GET /v1/jobs

Response

{
  "jobs": [
    "ff77ef17-81d1-43d9-a977-df0facafbf94",
    "ffc537a2-a8e2-4406-9088-517211b108c6",
    "4208d040-7b57-4742-9331-24ff72684eb6",
    "c515a9ee-26a4-46c8-8757-fbedf9bf67ac",
    "61d31caf-0126-4667-8c0f-09de58f5ec76",
    "310dad74-5ed6-4f92-8917-2de65f723639",
    "c270151a-a74c-4166-a133-dd98de1cb362",
    "26ea6fbc-376a-4001-926e-1cf4bd40c590",
    "a3dfeca3-2acd-4556-84ce-19bf9d6aa78b",
    "c97ae9f0-016d-41bd-92a9-8d756e14eca2",
    "0197f941-8b57-4329-8d98-7dfaaeee86c8",
    "cc7f2121-f082-4ef4-9165-15857fef1103",
    "f06220cc-30ee-427a-a1e1-3f7602867f94",
    "45c16c8c-c2ab-45b2-a7e9-5eca71aae43d",
    "51c33a6f-a947-45d0-afbe-94626efd8248",
    "b6c7196c-a471-459c-b2b0-0c861dafc152"
  ]
}

Retrieve A Job

GET /v1/jobs/:id

Response

{
  "download": {
    "status": "downloaded",
    "progress": 100,
    "output": {
      "url": "https://vhx9nfhlsy.gpcdn.net/uploads/videos/01KKRZQQFFTEYGPDVRHYCDKXR8.mp4",
      "size": 380236470,
      "filename": "f7aa3d0e_01KKRZQQFFTEYGPDVRHYCDKXR8.mp4",
      "original_filename": "01KKRZQQFFTEYGPDVRHYCDKXR8.mp4"
    }
  },
  "prepare": {
    "status": "analyzed",
    "metadata": {
      "streams": [
        {
          "index": 0,
          "codec_name": "aac",
          "codec_long_name": "AAC (Advanced Audio Coding)",
          "profile": "LC",
          "codec_type": "audio",
          "codec_tag_string": "mp4a",
          "codec_tag": "0x6134706d",
          "id": "0x2",
          "r_frame_rate": "0/0",
          "avg_frame_rate": "0/0",
          "time_base": "1/48000",
          "start_pts": 0,
          "start_time": "0.000000",
          "duration_ts": 9020160,
          "duration": "187.920000",
          "bit_rate": "317346",
          "nb_frames": "8810",
          "extradata_size": 2,
          "disposition": {
            "default": 1,
            "dub": 0,
            "original": 0,
            "comment": 0,
            "lyrics": 0,
            "karaoke": 0,
            "forced": 0,
            "hearing_impaired": 0,
            "visual_impaired": 0,
            "clean_effects": 0,
            "attached_pic": 0,
            "timed_thumbnails": 0,
            "non_diegetic": 0,
            "captions": 0,
            "descriptions": 0,
            "metadata": 0,
            "dependent": 0,
            "still_image": 0
          },
          "tags": {
            "creation_time": "2026-03-15T12:21:30Z",
            "language": "eng",
            "handler_name": "#Mainconcept MP4 Sound Media Handler",
            "vendor_id": ""
          },
          "sample_fmt": "fltp",
          "sample_rate": "48000",
          "channels": 2,
          "channel_layout": "stereo"
        },
        {
          "index": 1,
          "codec_name": "h264",
          "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
          "profile": "High",
          "codec_type": "video",
          "codec_tag_string": "avc1",
          "codec_tag": "0x31637661",
          "width": 1080,
          "height": 1920,
          "coded_width": 1080,
          "coded_height": 1920,
          "has_b_frames": 1,
          "pix_fmt": "yuv420p",
          "level": 41,
          "color_range": "tv",
          "color_space": "bt709",
          "color_transfer": "bt709",
          "color_primaries": "bt709",
          "chroma_location": "left",
          "is_avc": "true",
          "nal_length_size": "4",
          "id": "0x1",
          "r_frame_rate": "25/1",
          "avg_frame_rate": "25/1",
          "time_base": "1/25000",
          "start_pts": 0,
          "start_time": "0.000000",
          "duration_ts": 4698000,
          "duration": "187.920000",
          "bit_rate": "15851475",
          "bits_per_raw_sample": "8",
          "nb_frames": "4698",
          "extradata_size": 48,
          "disposition": {
            "default": 1,
            "dub": 0,
            "original": 0,
            "comment": 0,
            "lyrics": 0,
            "karaoke": 0,
            "forced": 0,
            "hearing_impaired": 0,
            "visual_impaired": 0,
            "clean_effects": 0,
            "attached_pic": 0,
            "timed_thumbnails": 0,
            "non_diegetic": 0,
            "captions": 0,
            "descriptions": 0,
            "metadata": 0,
            "dependent": 0,
            "still_image": 0
          },
          "tags": {
            "creation_time": "2026-03-15T12:21:30Z",
            "language": "eng",
            "handler_name": "\u001fMainconcept Video Media Handler",
            "vendor_id": ""
          }
        }
      ],
      "format": {
        "filename": "localstorage/b6c7196c-a471-459c-b2b0-0c861dafc152/f7aa3d0e_01KKRZQQFFTEYGPDVRHYCDKXR8.mp4",
        "nb_streams": 2,
        "nb_programs": 0,
        "nb_stream_groups": 0,
        "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
        "format_long_name": "QuickTime / MOV",
        "start_time": "0.000000",
        "duration": "187.920000",
        "size": "380236470",
        "bit_rate": "16187163",
        "probe_score": 100,
        "tags": {
          "major_brand": "mp42",
          "minor_version": "0",
          "compatible_brands": "mp42mp41",
          "creation_time": "2026-03-15T12:21:29Z"
        }
      }
    }
  },
  "encode": {
    "httpstream": {
      "status": "encoded",
      "outputs": [
        {
          "path": "localstorage/b6c7196c-a471-459c-b2b0-0c861dafc152/httpstream/audio_eng.mp4",
          "metadata": {
            "format": {
              "size": "3046958",
              "tags": {
                "major_brand": "isom",
                "creation_time": "0001-01-01T00:00:00Z",
                "minor_version": "512",
                "compatible_brands": "isomiso2mp41"
              },
              "bit_rate": "129709",
              "duration": "187.925000",
              "filename": "localstorage/b6c7196c-a471-459c-b2b0-0c861dafc152/httpstream/audio_eng.mp4",
              "nb_streams": 1,
              "start_time": "0.000000",
              "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
              "nb_programs": 0,
              "probe_score": 100,
              "format_long_name": "QuickTime / MOV",
              "nb_stream_groups": 0
            },
            "streams": [
              {
                "id": "0x1",
                "tags": {
                  "language": "eng",
                  "vendor_id": "",
                  "handler_name": "#Mainconcept MP4 Sound Media Handler",
                  "creation_time": "0001-01-01T00:00:00Z"
                },
                "index": 0,
                "profile": "LC",
                "bit_rate": "128157",
                "channels": 2,
                "duration": "187.925000",
                "codec_tag": "0x6134706d",
                "nb_frames": "8810",
                "start_pts": 0,
                "time_base": "1/48000",
                "codec_name": "aac",
                "codec_type": "audio",
                "sample_fmt": "fltp",
                "start_time": "0.000000",
                "disposition": {
                  "dub": 0,
                  "forced": 0,
                  "lyrics": 0,
                  "comment": 0,
                  "default": 1,
                  "karaoke": 0,
                  "captions": 0,
                  "metadata": 0,
                  "original": 0,
                  "dependent": 0,
                  "still_image": 0,
                  "attached_pic": 0,
                  "descriptions": 0,
                  "non_diegetic": 0,
                  "clean_effects": 0,
                  "visual_impaired": 0,
                  "hearing_impaired": 0,
                  "timed_thumbnails": 0
                },
                "duration_ts": 9020400,
                "sample_rate": "48000",
                "r_frame_rate": "0/0",
                "avg_frame_rate": "0/0",
                "channel_layout": "stereo",
                "extradata_size": 5,
                "codec_long_name": "AAC (Advanced Audio Coding)",
                "codec_tag_string": "mp4a"
              }
            ]
          }
        }
      ]
    },
    "jpg:120x": {
      "status": "encoded"
    },
    "mp3": {
      "status": "encoded",
      "metadata": {
        "format": {
          "size": "3007818",
          "tags": {
            "major_brand": "mp42",
            "creation_time": "0001-01-01T00:00:00Z",
            "minor_version": "0",
            "compatible_brands": "mp42mp41"
          },
          "bit_rate": "128043",
          "duration": "187.925333",
          "filename": "localstorage/b6c7196c-a471-459c-b2b0-0c861dafc152/mp3/audio_eng.mp3",
          "nb_streams": 1,
          "start_time": "0.023021",
          "format_name": "mp3",
          "nb_programs": 0,
          "probe_score": 51,
          "format_long_name": "MP2/3 (MPEG audio layer 2/3)",
          "nb_stream_groups": 0
        },
        "streams": [
          {
            "id": "",
            "tags": {
              "language": "",
              "vendor_id": "",
              "handler_name": "",
              "creation_time": "0001-01-01T00:00:00Z"
            },
            "index": 0,
            "profile": "",
            "bit_rate": "128000",
            "channels": 2,
            "duration": "187.925333",
            "codec_tag": "0x0000",
            "nb_frames": "",
            "start_pts": 324870,
            "time_base": "1/14112000",
            "codec_name": "mp3",
            "codec_type": "audio",
            "sample_fmt": "fltp",
            "start_time": "0.023021",
            "disposition": {
              "dub": 0,
              "forced": 0,
              "lyrics": 0,
              "comment": 0,
              "default": 0,
              "karaoke": 0,
              "captions": 0,
              "metadata": 0,
              "original": 0,
              "dependent": 0,
              "still_image": 0,
              "attached_pic": 0,
              "descriptions": 0,
              "non_diegetic": 0,
              "clean_effects": 0,
              "visual_impaired": 0,
              "hearing_impaired": 0,
              "timed_thumbnails": 0
            },
            "duration_ts": 2652002304,
            "sample_rate": "48000",
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "channel_layout": "stereo",
            "extradata_size": 0,
            "codec_long_name": "MP3 (MPEG audio layer 3)",
            "codec_tag_string": "[0][0][0][0]"
          }
        ]
      }
    },
    "mp4:480p::quality=1": {
      "status": "encoded",
      "metadata": {
        "format": {
          "size": "19522604",
          "tags": {
            "major_brand": "isom",
            "creation_time": "0001-01-01T00:00:00Z",
            "minor_version": "512",
            "compatible_brands": "isomiso2avc1mp41"
          },
          "bit_rate": "831080",
          "duration": "187.925000",
          "filename": "localstorage/b6c7196c-a471-459c-b2b0-0c861dafc152/mp4:480p::quality=1/480p.mp4",
          "nb_streams": 2,
          "start_time": "0.000000",
          "format_name": "mov,mp4,m4a,3gp,3g2,mj2",
          "nb_programs": 0,
          "probe_score": 100,
          "format_long_name": "QuickTime / MOV",
          "nb_stream_groups": 0
        },
        "streams": [
          {
            "id": "0x1",
            "tags": {
              "language": "und",
              "vendor_id": "",
              "handler_name": "VideoHandler",
              "creation_time": "0001-01-01T00:00:00Z"
            },
            "index": 0,
            "level": 30,
            "width": 480,
            "height": 854,
            "is_avc": "true",
            "pix_fmt": "yuv420p",
            "profile": "High",
            "bit_rate": "696885",
            "duration": "187.920000",
            "codec_tag": "0x31637661",
            "nb_frames": "4698",
            "start_pts": 0,
            "time_base": "1/12800",
            "codec_name": "h264",
            "codec_type": "video",
            "start_time": "0.000000",
            "coded_width": 480,
            "color_range": "tv",
            "color_space": "bt709",
            "disposition": {
              "dub": 0,
              "forced": 0,
              "lyrics": 0,
              "comment": 0,
              "default": 1,
              "karaoke": 0,
              "captions": 0,
              "metadata": 0,
              "original": 0,
              "dependent": 0,
              "still_image": 0,
              "attached_pic": 0,
              "descriptions": 0,
              "non_diegetic": 0,
              "clean_effects": 0,
              "visual_impaired": 0,
              "hearing_impaired": 0,
              "timed_thumbnails": 0
            },
            "duration_ts": 2405376,
            "field_order": "progressive",
            "coded_height": 854,
            "has_b_frames": 2,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "color_transfer": "bt709",
            "extradata_size": 50,
            "chroma_location": "left",
            "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
            "color_primaries": "bt709",
            "nal_length_size": "4",
            "codec_tag_string": "avc1",
            "bits_per_raw_sample": "8"
          },
          {
            "id": "0x2",
            "tags": {
              "language": "eng",
              "vendor_id": "",
              "handler_name": "#Mainconcept MP4 Sound Media Handler",
              "creation_time": "0001-01-01T00:00:00Z"
            },
            "index": 1,
            "profile": "LC",
            "bit_rate": "128157",
            "channels": 2,
            "duration": "187.925000",
            "codec_tag": "0x6134706d",
            "nb_frames": "8810",
            "start_pts": 0,
            "time_base": "1/48000",
            "codec_name": "aac",
            "codec_type": "audio",
            "sample_fmt": "fltp",
            "start_time": "0.000000",
            "disposition": {
              "dub": 0,
              "forced": 0,
              "lyrics": 0,
              "comment": 0,
              "default": 1,
              "karaoke": 0,
              "captions": 0,
              "metadata": 0,
              "original": 0,
              "dependent": 0,
              "still_image": 0,
              "attached_pic": 0,
              "descriptions": 0,
              "non_diegetic": 0,
              "clean_effects": 0,
              "visual_impaired": 0,
              "hearing_impaired": 0,
              "timed_thumbnails": 0
            },
            "duration_ts": 9020400,
            "sample_rate": "48000",
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "channel_layout": "stereo",
            "extradata_size": 5,
            "codec_long_name": "AAC (Advanced Audio Coding)",
            "codec_tag_string": "mp4a"
          }
        ]
      }
    }
  },
  "package": {
    "httpstream": {
      "status": "packaged",
      "outputs": [
        "localstorage/b6c7196c-a471-459c-b2b0-0c861dafc152/httpstream/packaged/hls/master.m3u8"
      ]
    },
    "jpg:120x": {
      "status": "packaged",
      "outputs": [
        "localstorage/b6c7196c-a471-459c-b2b0-0c861dafc152/jpg:120x/image_%05d.jpg",
        "localstorage/b6c7196c-a471-459c-b2b0-0c861dafc152/jpg:120x/sprite.jpg"
      ]
    },
    "mp3": {
      "status": "packaged",
      "outputs": [
        "localstorage/b6c7196c-a471-459c-b2b0-0c861dafc152/mp3/audio_eng.mp3"
      ]
    },
    "mp4:480p::quality=1": {
      "status": "packaged",
      "outputs": [
        "localstorage/b6c7196c-a471-459c-b2b0-0c861dafc152/mp4:480p::quality=1/480p.mp4"
      ]
    }
  },
  "upload": {
    "httpstream": {
      "status": "uploaded",
      "progress": 100,
      "destination": ["jetencode-test/hls"]
    },
    "jpg:120x": {
      "status": "uploaded",
      "progress": 100,
      "destination": ["jetencode-test/jpg/thumbs"]
    },
    "mp3": {
      "status": "uploaded",
      "progress": 100,
      "destination": ["jetencode-test"]
    },
    "mp4:480p::quality=1": {
      "status": "uploaded",
      "progress": 100,
      "destination": ["jetencode-test/mp4"]
    }
  },
  "created_at": "2026-03-29T13:03:19.720971+06:00",
  "updated_at": "2026-03-29T13:04:56.018419+06:00"
}

Cancel A Job

POST /v1/jobs/:id/cancel

Resopnse

  • Successful -> 202 Accepted
  • Error -> 404 Not Found

Webhook

Include a webhook url in the request body to receive callback on every job step

{
  //...
  "webhook": "<optional webhook url>"
  //...
}

Webhooks are emitted after every successful job step and after a terminal job failure. Retryable failures are not emitted until retries are exhausted, so consumers do not receive a failure event for a step that later succeeds.

Each webhook includes an event object identifying the step outcome.

Sample Webhook Body

{
  "id": "ff77ef17-81d1-43d9-a977-df0facafbf94",
  "event": {
    "signature": "job:download",
    "outcome": "succeeded"
  },
  "created_at": "Mon, 11 May 2026 10:33:03 +0600",
  "updated_at": "Mon, 11 May 2026 10:33:03 +0600",
  "download": {
    "status": "downloaded",
    "progress": 100,
    "output": {
      "url": "https://vhx9nfhlsy.gpcdn.net/uploads/videos/01KKRZQQFFTEYGPDVRHYCDKXR8.mp4",
      "size": 380236470,
      "filename": "f7aa3d0e_01KKRZQQFFTEYGPDVRHYCDKXR8.mp4",
      "original_filename": "01KKRZQQFFTEYGPDVRHYCDKXR8.mp4"
    }
  }
}

Failure Webhook

Terminal failures use the same job-step payload and include the error in event:

{
  "id": "ff77ef17-81d1-43d9-a977-df0facafbf94",
  "event": {
    "signature": "job:upload",
    "outcome": "failed",
    "error": "upload failed: connection reset"
  },
  "upload": {
    "mp4:720p": {
      "status": "error",
      "error": "upload failed: connection reset"
    }
  }
}