Skip to main content

Jobs API

The Jobs API allows you to create and monitor processing jobs for your uploaded video files.

Jobs are the processing entity in Move. By creating a Job, you can initiate the processing for a take. A job can have multiple output types, currently the only output types supported are mp4 and fbx files.

Prerequisites

Before creating a job, please make sure that a take is created. If you've not created a take please refer to this usage guide.

Creating a singlecam job

mutation CreateJob {
job: createJob(takeId: "take-2be2463e-ffa3-419b-beb4-ea0f99c79512") { // (1)
id
metadata
state
created
client {
id
}
take {
id
}
outputs {
key
file {
id
presignedUrl
}
}
}
}
  1. takeId is the id of the take for which you want to create a job. This is typically fetched from the response of creating a take

Attaching a metadata to a job

You can attach a metadata to a job. This metadata will be returned when you create/retrieve the job. This can be useful to store additional information about the job which can fulfil any custom business logic.

mutation CreateJob {
job: createJob(takeId: "take-2be2463e-ffa3-419b-beb4-ea0f99c79512", metadata: "{\"key\": \"value\"}") {
id
metadata
}
}

Retrieving a job

query retrieveJob {
job: getJob(jobId: "job-43171933-7526-41a9-a1e2-d6ef328e2cbe") {
id
metadata
state
created
client {
id
}
take {
id
}
outputs {
key
file {
id
presignedUrl
}
}
}
}

List Jobs

You can retrieve a list of jobs to monitor all processing tasks associated with your account. This is useful for displaying job history, tracking progress, or managing outputs.

To list jobs, use the listJobs query. You can filter, sort, and paginate the results using the available parameters.

See the schema documentation for

query ListJob {
listJobs {
after
first
items {
inputs {
options {
floorPlane
mocapModel
trackBall
trackFingers
trackJerseyNumbers
}
}
id
}
}
}

Job state

The lifecycle of a job is:

StateDescription
NOT_STARTEDSubmitted but not started
STARTEDHas been sent to a server for processing
RUNNINGIs running on the server
FINISHEDHas produced some outputs (this has no relation to the quality of the output, just that some output was generated)
FAILEDWe couldn’t process the output

We also return a percentage_complete attribute for feedback on the job progress.

Processing time

Three main factors drive the time it takes for a take to process:

  • Duration of video
  • Resolution/framerate
  • Availability of processing servers

For 10s FHD at 60fps with a server immediately available the processing should be complete with 5 minutes. If there isn't a server available then the time may be as high as 30 minutes for the same video. We make efforts to ensure that this happens as rarely as possible but at certain times, especially as we release updates to the processing engine, these may be more common. This is part of the reason we advise you avoid polling in production and use webhooks.

Next steps