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
- GraphQL
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
}
}
}
}
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
- GraphQL
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
- GraphQL
query ListJob {
listJobs {
after
first
items {
inputs {
options {
floorPlane
mocapModel
trackBall
trackFingers
trackJerseyNumbers
}
}
id
}
}
}
Job state
The lifecycle of a job is:
State | Description |
---|---|
NOT_STARTED | Submitted but not started |
STARTED | Has been sent to a server for processing |
RUNNING | Is running on the server |
FINISHED | Has produced some outputs (this has no relation to the quality of the output, just that some output was generated) |
FAILED | We 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.