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](/api-reference/media-upload/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.com
POST/v1/{account_id}/upload/signed/finish
Bearer

Authorization

default
AuthorizationBearer <token>

Send your FansMetric API key as a Bearer token in the Authorization header.

In: header

Path Parameters

  • account_id*integer

    OnlyFans numeric account ID.

Request Body

application/json
  • key*string

    Same S3 key passed to [Create Signed Upload](/api-reference/media-upload/create-signed-upload).

  • uploadId*string

    uploadId returned by [Create Signed Upload](/api-reference/media-upload/create-signed-upload).

  • parts*string

    Array of { ETag, PartNumber } — one entry per uploaded chunk, in PartNumber order.

  • securestring

    Default false. Must match what was passed to create.

curl --request POST "https://public-api.fansmetric.com/v1/acct_XXXXX/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
{
"data":{
"ETag":""098f6bcd4621d373cade4e832627b4f6-2""
}
"_meta":{
"_credits":{
"used":1
}
"_rate_limits":{
"limit_minute":1000
"remaining_minute":999
"limit_day":50000
"remaining_day":49999
}
}
}