Skip to main content
Instead of providing a public URL, you can upload files directly from your local machine using the import endpoint. The flow has three steps: request signed upload URLs, PUT your file bytes, then poll for completion.

Step 1 — Request upload URLs

Call the import endpoint with content_type and file_size instead of url for each media item you want to upload directly. Request
The response includes an upload_urls object keyed by media reference ID. Each entry contains a signed upload_url (valid for 3 hours), plus asset_id and artifact_id for the created asset. Response

Step 2 — Upload the file

PUT the raw file bytes to the signed URL. Use Content-Type: application/octet-stream.
The import job detects the upload automatically and begins processing.

Step 3 — Poll for completion

Check the job status the same way as a URL-based import — poll the job status endpoint with the job_id, or provide a callback_url in the original request.
When the job reaches job_state: "stopped", check result.status for success or failure.

Mixing URL imports and direct uploads

You can combine URL-based and direct upload media items in a single request. Items with url are fetched server-side; items with content_type and file_size return signed upload URLs.
The response will include upload_urls only for the direct upload items.

Required fields