Upload a file from a URL
curl --request POST \
--url https://app.tryordinal.com/api/v1/uploads \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "https://example.com/images/product-photo.jpg"
}
'import requests
url = "https://app.tryordinal.com/api/v1/uploads"
payload = { "url": "https://example.com/images/product-photo.jpg" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({url: 'https://example.com/images/product-photo.jpg'})
};
fetch('https://app.tryordinal.com/api/v1/uploads', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.tryordinal.com/api/v1/uploads",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => 'https://example.com/images/product-photo.jpg'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.tryordinal.com/api/v1/uploads"
payload := strings.NewReader("{\n \"url\": \"https://example.com/images/product-photo.jpg\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.tryordinal.com/api/v1/uploads")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"https://example.com/images/product-photo.jpg\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.tryordinal.com/api/v1/uploads")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"https://example.com/images/product-photo.jpg\"\n}"
response = http.request(request)
puts response.read_body{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "pending",
"createdAt": "2026-02-04T10:30:00.000Z"
}{
"code": "BAD_REQUEST",
"message": "Bad Request",
"data": {
"errors": {
"publishAt": [
"Invalid date format"
],
"status": [
"Invalid enum value"
]
}
}
}{
"code": "UNAUTHORIZED",
"message": "Invalid or unauthorized API key"
}{
"code": "TOO_MANY_REQUESTS",
"message": "Rate limit of 100 requests per 60s exceeded. Quota resets in 45 seconds"
}File Uploads
Upload a file from a URL
Uploads a file by downloading it from the provided URL. The file will be processed asynchronously. Poll the GET endpoint to check when it’s ready, then use the returned assetId in post creation.
Supported file types:
- Images: JPEG, PNG, GIF, WebP
- Videos: MP4, QuickTime (MOV)
File size limits:
- Images: 10 MB max
- GIFs: 15 MB max
- Videos: 350 MB max
Additional constraints:
- Images cannot exceed 36 megapixels
- URL must be publicly accessible
POST
/
uploads
Upload a file from a URL
curl --request POST \
--url https://app.tryordinal.com/api/v1/uploads \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "https://example.com/images/product-photo.jpg"
}
'import requests
url = "https://app.tryordinal.com/api/v1/uploads"
payload = { "url": "https://example.com/images/product-photo.jpg" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({url: 'https://example.com/images/product-photo.jpg'})
};
fetch('https://app.tryordinal.com/api/v1/uploads', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.tryordinal.com/api/v1/uploads",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => 'https://example.com/images/product-photo.jpg'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.tryordinal.com/api/v1/uploads"
payload := strings.NewReader("{\n \"url\": \"https://example.com/images/product-photo.jpg\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.tryordinal.com/api/v1/uploads")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"https://example.com/images/product-photo.jpg\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.tryordinal.com/api/v1/uploads")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"https://example.com/images/product-photo.jpg\"\n}"
response = http.request(request)
puts response.read_body{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "pending",
"createdAt": "2026-02-04T10:30:00.000Z"
}{
"code": "BAD_REQUEST",
"message": "Bad Request",
"data": {
"errors": {
"publishAt": [
"Invalid date format"
],
"status": [
"Invalid enum value"
]
}
}
}{
"code": "UNAUTHORIZED",
"message": "Invalid or unauthorized API key"
}{
"code": "TOO_MANY_REQUESTS",
"message": "Rate limit of 100 requests per 60s exceeded. Quota resets in 45 seconds"
}Authorizations
API key authentication. Generate an API key from your workspace settings.
Body
application/json
URL of the file to upload. Must be publicly accessible.
Was this page helpful?
⌘I