Skip to main content

Prerequisites

  • A MediaMagic workspace and API key
  • curl, Python, or Node.js installed
  • A media file to upload (video, audio, or document)

Step 1: Generate an upload URL

First, generate a presigned URL for uploading your file:
Response:
The presigned URL expires after one hour. Request it shortly before you upload, then PUT the file straight to Azure Blob Storage.

Step 2: Upload your file

Use the presigned URL to upload your file directly to Azure Blob Storage:

Step 3: Create a submission

Now create a submission with your uploaded asset. sidekickIds is required — at least one sidekick must run. Fetch the IDs available to your workspace from List available sidekicks.
Asset objects only accept blobPath (and an optional previousSubmissionId for versioning). Do not send filename or contentType here — those come from the upload step.
Response (201 Created):
A new submission starts as queued: its assets are accepted and waiting for a free review slot. Processing begins as slots free up — usually within seconds.

Step 4: Check the status

Poll the submission endpoint to see when processing completes. Note there is no /status suffix — you read the status from the submission resource itself:
Status response (200 OK):
status is one of uploading, submitted, queued, processing, complete, partial, or failed. Keep polling until it reaches a terminal complete, partial, or failed state, then stop (queued is non-terminal — it means the submission’s assets are waiting for a free review slot). For production workloads, prefer webhooks over tight polling.workflowId is an internal processing reference and is often null — don’t key any logic off it. Use submissionId for tracking, and assets[].processingStatus for per-asset progress.

Step 5: Get the results

Once the asset reaches complete, retrieve its result by fetching the asset directly (no /results suffix):
Asset result (200 OK):

What’s next?