curl --request GET \
--url https://api.fanvue.com/v1/creators/{creatorUserUuid}/media/uploads/{uploadId}/parts/urls \
--header 'Authorization: Bearer <token>' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>'import requests
url = "https://api.fanvue.com/v1/creators/{creatorUserUuid}/media/uploads/{uploadId}/parts/urls"
headers = {
"X-Fanvue-API-Version": "<x-fanvue-api-version>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Fanvue-API-Version': '<x-fanvue-api-version>',
Authorization: 'Bearer <token>'
}
};
fetch('https://api.fanvue.com/v1/creators/{creatorUserUuid}/media/uploads/{uploadId}/parts/urls', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"partSize": 6291456,
"parts": [
{
"partNumber": 1,
"url": "https://s3.amazonaws.com/fanvue-uploads/media/d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a?partNumber=1&uploadId=abc123XYZ789multipart&X-Amz-Signature=..."
},
{
"partNumber": 2,
"url": "https://s3.amazonaws.com/fanvue-uploads/media/d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a?partNumber=2&uploadId=abc123XYZ789multipart&X-Amz-Signature=..."
}
]
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}Get signed URLs for a range of upload parts
Return presigned URLs for a contiguous range of part numbers in a single request, for a creator’s media upload session.
Prefer this over GET /creators/{creatorUserUuid}/media/uploads/{uploadId}/parts/{partNumber}/url
for anything but a single-part retry: one call covers a whole upload (up to 256
parts, the maximum a file of the supported size can have), and costs one request against your rate
limit instead of one per part.
URLs are signed when the request is served and are valid for a limited time, so for a slow upload request the range you are about to send rather than the whole file up front.
curl --request GET \
--url https://api.fanvue.com/v1/creators/{creatorUserUuid}/media/uploads/{uploadId}/parts/urls \
--header 'Authorization: Bearer <token>' \
--header 'X-Fanvue-API-Version: <x-fanvue-api-version>'import requests
url = "https://api.fanvue.com/v1/creators/{creatorUserUuid}/media/uploads/{uploadId}/parts/urls"
headers = {
"X-Fanvue-API-Version": "<x-fanvue-api-version>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-Fanvue-API-Version': '<x-fanvue-api-version>',
Authorization: 'Bearer <token>'
}
};
fetch('https://api.fanvue.com/v1/creators/{creatorUserUuid}/media/uploads/{uploadId}/parts/urls', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"partSize": 6291456,
"parts": [
{
"partNumber": 1,
"url": "https://s3.amazonaws.com/fanvue-uploads/media/d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a?partNumber=1&uploadId=abc123XYZ789multipart&X-Amz-Signature=..."
},
{
"partNumber": 2,
"url": "https://s3.amazonaws.com/fanvue-uploads/media/d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e8f9a?partNumber=2&uploadId=abc123XYZ789multipart&X-Amz-Signature=..."
}
]
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"message": "<string>",
"nextVersion": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>"
}write:creator— Modify creator profiles, settings, and creator-specific data.write:media— Upload, modify, and manage media files and content assets. Also required for vault folder management.
Authorizations
OAuth 2.0 access token, presented as a JWT bearer token in the Authorization header. Obtain a token via the authorization-code flow; the scopes granted to the token determine which operations it may call.
Headers
API version to use for the request
"2025-06-26"
Query Parameters
First part number to sign, 1-based.
1
Last part number to sign, inclusive. Must not be lower than from, and no higher than 256 — a part beyond the maximum supported file size is refused with 413, as on the single-part route.
161
Was this page helpful?