Media
Upload media to the OnlyFans CDN
The response can be used **only once** to manually include media in a post or message. This endpoint does not upload media to the Vault.
AuthorizationBearer <token>
You can retrieve your token by visiting the OnlyFansAPI Console and clicking API Keys -> Create API Key.
In: header
Path Parameters
accountstring
The Account ID
filestring
The file to upload.
type?string
Set to avatar
if this file will be used as a profile picture, header
for a profile banner, or keep empty if this file will be for anything else.
Value in
"default" | "avatar" | "header"
Response Body
curl -X POST "https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/media/upload" \
-H "Content-Type: application/json" \
-d '{
"file": "file.jpg"
}'
const body = JSON.stringify({
"file": "file.jpg"
})
fetch("https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/media/upload", {
body
})
package main
import (
"fmt"
"net/http"
"io/ioutil"
"strings"
)
func main() {
url := "https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/media/upload"
body := strings.NewReader(`{
"file": "file.jpg"
}`)
req, _ := http.NewRequest("POST", url, body)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
import requests
url = "https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/media/upload"
body = {
"file": "file.jpg"
}
response = requests.request("POST", url, json = body, headers = {
"Content-Type": "application/json"
})
print(response.text)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
import java.time.Duration;
import java.net.http.HttpRequest.BodyPublishers;
var body = BodyPublishers.ofString("""{
"file": "file.jpg"
}""");
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
.uri(URI.create("https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/media/upload"))
.header("Content-Type", "application/json")
.POST(body)
.build();
try {
HttpResponse<String> response = client.send(requestBuilder.build(), BodyHandlers.ofString());
System.out.println("Status code: " + response.statusCode());
System.out.println("Response body: " + response.body());
} catch (Exception e) {
e.printStackTrace();
}
using System;
using System.Net.Http;
using System.Text;
var body = new StringContent("""
{
"file": "file.jpg"
}
""", Encoding.UTF8, "application/json");
var client = new HttpClient();
var response = await client.PostAsync("https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/media/upload", body);
var responseBody = await response.Content.ReadAsStringAsync();
{
"prefixed_id": "ofapi_media_123",
"file_name": "MyPhoto.png",
"processId": "a9k3l2m7n8p0q4r5s6t",
"host": "convert1.onlyfans.com",
"sourceUrl": "https://of2transcoder.s3.amazonaws.com/upload/642a4d7e-134e-4cb4-99b5-6774248341c2/57141494436/file_name.jpg?X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Security-Token=token&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=credentials&X-Amz-Date=20250521T151119Z&X-Amz-SignedHeaders=host&X-Amz-Expires=604800&X-Amz-Signature=signature",
"extra": "YW4gZW5jb2RlZCBzdHJpbmcgYW4gZW5jb2RlZCBzdHJpbmcgYW4gZW5jb2RlZCBzdHJpbmcgYW4gZW5jb2RlZCBzdHJpbmcgYW4gZW5jb2RlZCBzdHJpbmcgYW4gZW5jb2RlZCBzdHJpbmcgYW4gZW5jb2RlZCBzdHJpbmcgYW4gZW5jb2RlZCBzdHJpbmcgYW4gZW5jb2RlZCBzdHJpbmcgYW4gZW5jb2RlZCBzdHJpbmcgYW4gZW5jb2RlZA==",
"additional": {
"user": "123"
},
"thumbs": [
{
"id": 1,
"url": "https://cdn2.onlyfans.com/files/f/f0/fsdnjdsnf3k2rk/300x300_fjkdnknk23efsknj.jpg?Expires=1750518679&Signature=signature&Key-Pair-Id=PAIRID"
}
]
}