Upload image or video for use in run input
curl --request POST \
--url https://api.apisale.ai/v1/media/upload \
--header 'Authorization: <api-key>' \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file'import requests
url = "https://api.apisale.ai/v1/media/upload"
files = { "file": ("example-file", open("example-file", "rb")) }
headers = {"Authorization": "<api-key>"}
response = requests.post(url, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
const options = {method: 'POST', headers: {Authorization: '<api-key>'}};
options.body = form;
fetch('https://api.apisale.ai/v1/media/upload', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{}Model APIs
Media upload
POST /v1/media/upload — upload images and videos for model input.
POST
/
v1
/
media
/
upload
Upload image or video for use in run input
curl --request POST \
--url https://api.apisale.ai/v1/media/upload \
--header 'Authorization: <api-key>' \
--header 'Content-Type: multipart/form-data' \
--form file='@example-file'import requests
url = "https://api.apisale.ai/v1/media/upload"
files = { "file": ("example-file", open("example-file", "rb")) }
headers = {"Authorization": "<api-key>"}
response = requests.post(url, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('file', '<string>');
const options = {method: 'POST', headers: {Authorization: '<api-key>'}};
options.body = form;
fetch('https://api.apisale.ai/v1/media/upload', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{}Upload reference images or videos before submitting a run. Returns a public URL to pass in model
Response (
See Error codes for the full catalog.
input fields (e.g. image_url, image_urls).
Requires scope runs:write and the same API key as inference.
Request
multipart/form-data with field file:
| Field | Type | Required | Description |
|---|---|---|---|
file | binary | Yes* | image/* or video/*, max 50 MB |
curl
curl -X POST "https://api.apisale.ai/v1/media/upload" \
-H "Authorization: Key $APISALE_API_KEY" \
-F "file=@./reference.png"
Response (201)
string
required
HTTPS URL to use in run
input (e.g. "image_url": "https://...").string
required
Internal storage key (for debugging).
string
required
MIME type, e.g.
image/png.number
required
Uploaded file size in bytes.
Example
{
"url": "https://cdn.apisale.ai/media/org_abc/uploads/2026/06/abc.png",
"object_key": "org_abc/uploads/2026/06/abc.png",
"content_type": "image/png",
"size_bytes": 245760
}
Errors
| HTTP | error.code | Cause |
|---|---|---|
| 401 | missing_api_key / invalid_api_key | No or bad API key |
| 400 | invalid_media | Missing file, bad MIME, or file too large (max 50 MB) |
