curl -X POST "https://mvp2.tryunsora.com/api/v1/uploads" \
-H "Authorization: Bearer uns_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com/video.mp4" }'
curl -X POST "https://mvp2.tryunsora.com/api/v1/uploads" \
-H "Authorization: Bearer uns_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"base64\": \"$(base64 -i photo.png)\",
\"fileName\": \"photo.png\",
\"contentType\": \"image/png\"
}"
{
"success": true,
"data": {
"id": "<string>",
"name": "<string>",
"url": "<string>",
"mimeType": "<string>",
"type": "IMAGE",
"fileSize": 123,
"createdAt": "2023-11-07T05:31:56Z"
}
}{
"error": "<string>",
"success": true,
"code": "<string>",
"message": "<string>"
}Uploads
Upload media
Import a file into your Unsora media library from a public URL or base64 payload, ready to use in posts, clipping jobs, and generations.
POST
/
uploads
curl -X POST "https://mvp2.tryunsora.com/api/v1/uploads" \
-H "Authorization: Bearer uns_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com/video.mp4" }'
curl -X POST "https://mvp2.tryunsora.com/api/v1/uploads" \
-H "Authorization: Bearer uns_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"base64\": \"$(base64 -i photo.png)\",
\"fileName\": \"photo.png\",
\"contentType\": \"image/png\"
}"
{
"success": true,
"data": {
"id": "<string>",
"name": "<string>",
"url": "<string>",
"mimeType": "<string>",
"type": "IMAGE",
"fileSize": 123,
"createdAt": "2023-11-07T05:31:56Z"
}
}{
"error": "<string>",
"success": true,
"code": "<string>",
"message": "<string>"
}Imports a file into your Unsora media library. Every upload is stored and
recorded as an asset, and the returned
Provide exactly one of the two.
The asset
url can be used anywhere a media
URL is accepted — post media, reference
images, or clipping input.
Available to every authenticated user (no paid plan required).
Two ways to send the file
| Field | Use for | Limit |
|---|---|---|
url | Any publicly reachable file — the server fetches it | 200 MB |
base64 | Small local files (raw base64 or a data: URL) | ~7 MB (10 MB request body cap) |
fileName is required with base64.
For large local files, use the signed-URL flow instead:
Mint a signed upload URL,
PUT the bytes
directly to storage, then register the asset.
The file bytes never pass through the API server.Examples
curl -X POST "https://mvp2.tryunsora.com/api/v1/uploads" \
-H "Authorization: Bearer uns_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com/video.mp4" }'
curl -X POST "https://mvp2.tryunsora.com/api/v1/uploads" \
-H "Authorization: Bearer uns_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d "{
\"base64\": \"$(base64 -i photo.png)\",
\"fileName\": \"photo.png\",
\"contentType\": \"image/png\"
}"
Response
{
"success": true,
"data": {
"id": "cm456def",
"name": "video.mp4",
"url": "https://.../uploads/usr_123/2026-08-04T10-00-00-000Z-video.mp4",
"mimeType": "video/mp4",
"type": "VIDEO",
"fileSize": 10485760,
"createdAt": "2026-08-04T10:00:00.000Z"
}
}
type is derived from the MIME type: IMAGE, VIDEO, AUDIO, or
DOCUMENT.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json

