Artifacts
Create Artifact
Create a new artifact from an uploaded file or external source
POST
This endpoint creates an artifact record and initiates file processing. Use this endpoint after uploading a file via presigned URL, or directly with external URLs/S3 paths.
Uploading a local file? First get a presigned URL using Get Presigned Upload URL, upload your file, then use this endpoint with the S3 path.
Can handle files up to 5GB.
Observe your artifacts
View and track all your artifacts and their processing status in real-time via the Artifacts Dashboard.
Request Body
string
required
Display name of the artifact. E.g.,
My Project Video.string
required
Type of artifact. Must be one of:
video- Video filesaudio- Audio filesscript- Text/script files
Source Parameters
Choose exactly one of the following parameters to specify your file source:string
S3 path to the file. Can be:
- Path from Get Presigned Upload URL (e.g.,
s3://dubformer-temp/uploads/aafa1753/file.mp4) - External S3 bucket path (e.g.,
s3://my-bucket/path/to/file.mp4) - requires S3 credentials configured
string
Direct URL to download the artifact from an external source.Must be a publicly accessible URL. The file will be downloaded asynchronously.Use when: File is hosted on a CDN, public storage, or web server
array
Array of media fragments to concatenate into a single artifact.Not supported for
script type. Each fragment object must contain:urlors3Path- source locationtimePositionMs- start time in milliseconds (must be >= 0)
timeInMs- trim start position within the source file in milliseconds (must be >= 0). If omitted, trimming starts from the beginningtimeOutMs- trim end position within the source file in milliseconds (must be > timeInMs when both are provided). If omitted, trimming goes to the end
timePositionMs in the final artifact.All fragments must have the same format (codec, resolution, frame rate). Fragments are sorted by timePositionMs and gaps between them are filled with silence (audio) or black frames (video).Use when: Combining multiple clips (or portions of clips) into one filenumber
Target duration of the final artifact in milliseconds. Can only be used with
audio type fragments.When specified, the concatenated result is adjusted to match this exact duration:- If the result is shorter, silence is appended
- If the result is longer, it is trimmed
Response
Returns a complete artifact object:string
Unique identifier for the artifact. Use this to retrieve artifact status or use in other endpoints.
string
Display name of the artifact.
string
Type of artifact:
video, audio, or script.string
Current processing status. Possible values:
created- Artifact created, processing pendingupload_started- File is being downloaded/copied/processedupload_completed- File is ready for useupload_failed- Processing failed (checkerrorMessage)
string
Upload method used:
direct_url- Presigned upload, direct URL, or S3 pathfragments- Fragment concatenation
number | null
File size in bytes. Will be
null until processing completes.number | null
Duration in seconds (for video/audio). Will be
null until processing completes or for script type.string | null
Error message if processing failed. Will be
null unless status is upload_failed.string
Internal S3 path where the artifact file is stored (without bucket prefix).
string
S3 bucket name where the artifact is stored.
string
ISO 8601 timestamp when the artifact was created.
string
ISO 8601 timestamp when the artifact was last updated.
object | undefined
Company information object containing
id and name fields.object | undefined
User information object containing
id and name fields for the user who created the artifact.Request Examples
Processing Workflow
1
Create Artifact
Send a POST request with one of the source parameters (
s3Path, url, or fragments).The artifact is created with created status.2
Background Processing
The file is downloaded/copied/processed asynchronously.Status transitions to
upload_started during processing.3
Completion
When processing completes:
- Status becomes
upload_completed(success) orupload_failed(error) sizeanddurationfields are populated- If failed, check
errorMessagefor details
4
Monitor Status
Use Get Artifact to check processing status:
See Also
- Artifacts Overview - Choose the right upload method
- Get Presigned Upload URL - Upload local files
- Get Artifact - Check processing status