Media Upload

Create Signed Upload

Requests a single-part or multipart S3 PUT URL set for uploading a file to the OnlyFans CDN. After this call, the client PUTs file bytes **directly to the returned S3 URLs** — no further calls through this API until [Finish Multipart Upload](/api-reference/media-upload/finish-multipart-upload) (for multipart) or the final convert.onlyfans.com step (for both). Requires permission api_media_upload_signed_create.

https://public-api.buffmetrics.com
POST/v1/{account_id}/upload/signed/create
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

    S3 object key. Format: upload/{uuid}/{12-digit-number}/{url-encoded-filename}.

  • parts*string

    Number of S3 parts. 1 for a single-part upload, > 1 for multipart (one part per chunk of ≥ 5 MB except the last).

  • contentType*string

    MIME type of the file (image/jpeg, video/mp4, …).

  • securestring

    Default false. Set true for protected/DRM uploads.

curl --request POST "https://public-api.buffmetrics.com/v1/acct_XXXXX/upload/signed/create" \
  --header "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "key":         "upload/8a3d.../529838163914/photo.jpg",
  "parts":       1,
  "contentType": "image/jpeg",
  "secure":      false
}'

Response

200
{
"data":{
"uploadId":"abc123..."
"keys":[
0:{
"part":1
"putUrl":"https://of2transcoder.s3.amazonaws.com/...&partNumber=1&uploadId=..."
}
1:{
"part":2
"putUrl":"https://of2transcoder.s3.amazonaws.com/...&partNumber=2&uploadId=..."
}
]
"getUrl":"https://of2transcoder.s3.amazonaws.com/upload/.../video.mp4"
}
"_meta":{
"_credits":{
"used":1
}
"_rate_limits":{
"limit_minute":1000
"remaining_minute":999
"limit_day":50000
"remaining_day":49999
}
}
}