List uploads
Page through the files you have uploaded and refresh their download URLs.
On this page
Lists the caller's uploads, newest first. Use it to find a file you sent earlier, and to refresh signed URLs that have expired.
GET
https://api2.rundiffusion.com/api/v2/uploadsAcceptsOAuth device flowPersonal API Access TokenCompany API Access Token
Request
Headers
AuthorizationstringRequired- Bearer token. This endpoint accepts an OAuth device flow token, a Personal API Access Token, or a Company API Access Token. See Authentication.
Authorization: Bearer eyJhbGciOi…
Both parameters are optional. With neither you get the most recent 24 uploads.
Query
cursorstringoptional- Opaque pagination token. When a response has has_more true, pass its next_cursor here to get the following page. Do not construct or parse one. An unparseable value is rejected with 400 INVALID_CURSOR.
https://api2.rundiffusion.com/api/v2/uploads?cursor=eyJhIjoiMjAyNi0… limitintegeroptionaldefault24- Page size, from 1 to 24.
https://api2.rundiffusion.com/api/v2/uploads?limit=10
curl "https://api2.rundiffusion.com/api/v2/uploads?limit=24" \
-H "Authorization: Bearer $RUNDIFFUSION_TOKEN"const page = await fetch(
'https://api2.rundiffusion.com/api/v2/uploads?limit=24',
{ headers: { Authorization: `Bearer ${process.env.RUNDIFFUSION_TOKEN}` } },
).then(r => r.json());page = requests.get(
"https://api2.rundiffusion.com/api/v2/uploads",
headers={"Authorization": f"Bearer {os.environ['RUNDIFFUSION_TOKEN']}"},
params={"limit": 24},
).json()Response
200 OK with one cursor page of upload records. Each entry has the same shape
as the create response.
{
"data": [
{
"id": "Yb3kQ9…",
"name": "fa9c1e22-….png",
"mime_type": "image/png",
"size_bytes": 1863245,
"width": 1024,
"height": 1024,
"url": "https://rundiffusion.com/...",
"thumb_url": "https://rundiffusion.com/...",
"created": "2026-07-23T09:31:02Z"
}
],
"has_more": true,
"next_cursor": "eyJhIjoiMjAyNi0…",
"last_cursor": null
}Top level
dataarray- The uploads on this page, newest first. Empty when the caller has none.
has_moreboolean- Whether more pages exist beyond this one. Branch on this when paging.
next_cursorstring | null- Pass this back as cursor to fetch the next page. Null on the last page.
last_cursorstring | null- Echoes the cursor you sent on this request. Null on the first page. It points backwards, so paging with it loops.
Upload object
idstring- The handle for this upload, a 20-character opaque string.
namestring | null- The stored filename, generated as {uuid}.{ext}. Not the filename you sent.
mime_typestring | null- MIME type as stored.
size_bytesinteger | null- Size of the stored file in bytes.
widthinteger | null- Pixel width of the stored image.
heightinteger | null- Pixel height of the stored image.
urlstring | null- Signed download URL, valid for roughly seven days. Re-list to refresh it rather than storing it.
thumb_urlstring | null- Signed URL to a 512x512 WebP thumbnail, same seven-day expiry. Falls back to the same value as url until the thumbnail has been generated.
createdstring (ISO 8601)- When it was created, in UTC.
Errors
400INVALID_CURSOR- The cursor could not be parsed. Start again without one.
401UNAUTHENTICATED- Missing, malformed, or expired token.
429RATE_LIMITED- Too many requests. Back off and retry per the Retry-After header. See Rate limits.
See Errors for the full envelope and the code list.
