* Full url including protocol
* Date in stringified ISO format
* Should include extension.
type FilePathAndName = string
* Audio file name to be get
type Mp4RenderOptions = AudioOptions & {
type WebmRenderOptions = AudioOptions & {
type GifRenderOptions = {
* Default is 60 but max for gifs are 50 so it would be caped by 50.
* Path to json file of the snapshot to be rendered
snapshot: FilePathAndName
* Scale factor to resize final video.
* @example 0.5, 1, 2, 3, 4
* Allows cut the left part of the project.
* Allows cut the right part of the project.
projects: RenderProject[]
* Includes parameters for the final video.
* For example, format type, frames per second, bitrate or quality. Check the RenderOptions object for details.
renderOptions: Mp4RenderOptions | WebmRenderOptions | GifRenderOptions
* Hash of storyboard project IDs and audio name.
* This allows to get a render jobs for selected frames in the UI.
* Human readable name of the job. Can be used for the client side.
* Id of the user or team who created the job.
* For user it would have prefix `user-` and for team `team-`.
* For example `user-8715b5d1-0e57-48d8-b826-ba728f0ac0c8`.
* Storyboard object to be converted into a media
* Date the job was created.
* Date the job was updated.
* Any additional JSON data that should be attached to the job.
* It may be useful to add a specific client ID.
metadata?: Record<string, unknown>
type QueuedRenderJob = BaseRenderJob & {
* Make a POST request to this url to cancel the render job.
type ProcessingRenderJob = BaseRenderJob & {
type CompletedRenderJob = BaseRenderJob & {
* Used to load a rendered file. Streaming is supported.
* File URL is available for 7 days. If you need to refresh it you have to send GET request to the `RenderJob` endpount (TBD).
type CancelledRenderJob = BaseRenderJob & {
* Make a POST request to this url to restart the render job.
* Before moving to this status Aninix will try to rerender video up to 3 times with exponential backoff.
* Only after all 3 failed attempts RenderJob would be marked as `failed`.
type FailedRenderJob = BaseRenderJob & {
* Make a POST request to this url to try to retry the rendering job.
* Job is always created in `queued` status.
* Once worker grab job it will move to `rendering` status.
* When render is completed then it would be marked in `completed` status.