Media Upload
Finish Multipart Upload
Finalizes a multipart S3 upload by submitting the part ETags returned by each chunk PUT. Only call this when Create Signed Upload returned a multipart response (uploadId + keys[]). Single-part uploads do not need this step. Requires permission api_media_upload_signed_finish.
https://public-api.fansmetric.comAuthorization
defaultAuthorizationBearer <token>Send your FansMetric API key as a Bearer token in the Authorization header.
In: header
Path Parameters
account_id*integerOnlyFans numeric account ID.
Request Body
application/jsonkey*stringSame S3 key passed to Create Signed Upload.
uploadId*stringuploadIdreturned by Create Signed Upload.parts*stringArray of
{ ETag, PartNumber }— one entry per uploaded chunk, inPartNumberorder.securestringDefault
false. Must match what was passed to create.
Response Fields
data.ETagstringS3 combined ETag for the assembled object. Use this when registering the file with the OnlyFans converter at
https://convert.onlyfans.com/file/upload.dataobject | arrayEndpoint-specific payload. See the fields below for this route.
_meta._credits.usedintegerCredits consumed by this request (currently always
1)._meta._rate_limits.limit_minuteintegerMaximum requests per minute for the organization.
_meta._rate_limits.remaining_minuteintegerRemaining requests in the current minute window.
_meta._rate_limits.limit_dayintegerMaximum requests per day for the organization.
_meta._rate_limits.remaining_dayintegerRemaining requests in the current day window.
| Field | Type | Description |
|---|---|---|
| data.ETag | string | S3 combined ETag for the assembled object. Use this when registering the file with the OnlyFans converter at https://convert.onlyfans.com/file/upload. |
| data | object | array | Endpoint-specific payload. See the fields below for this route. |
| _meta._credits.used | integer | Credits consumed by this request (currently always 1). |
| _meta._rate_limits.limit_minute | integer | Maximum requests per minute for the organization. |
| _meta._rate_limits.remaining_minute | integer | Remaining requests in the current minute window. |
| _meta._rate_limits.limit_day | integer | Maximum requests per day for the organization. |
| _meta._rate_limits.remaining_day | integer | Remaining requests in the current day window. |
curl --request POST "https://public-api.fansmetric.com/v1/100000001/upload/signed/finish" \
--header "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"key": "upload/8a3d.../529838163914/video.mp4",
"uploadId": "abc123...",
"parts": [
{ "ETag": "\"d41d8cd98f00b204e9800998ecf8427e\"", "PartNumber": 1 },
{ "ETag": "\"098f6bcd4621d373cade4e832627b4f6\"", "PartNumber": 2 }
],
"secure": false
}'Response
200