Earnings
Get Fan Earnings by Source
Get an overall breakdown of earnings from a specific fan, categorized by revenue source (e.g., subscriptions, tips, media).
Fetch a detailed breakdown of all earnings generated by a specific fan, separated by the specific monetary source type.
https://v1.apifansly.com
GET
/api/fansly/{account_id}/earnings/fans/{fan_id}/stats
Get Started
All requests to the Fansly API require an API Key. See the Authentication page for details.
Path Parameters
curl -X GET "https://v1.apifansly.com/api/fansly/{account_id}/earnings/fans/{fan_id}/stats" \
-H "x-api-key: YOUR_API_KEY"fetch("https://v1.apifansly.com/api/fansly/{account_id}/earnings/fans/{fan_id}/stats", {
method: "GET",
headers: {
"x-api-key": "YOUR_API_KEY"
}
})
.then(response => response.json())
.then(data => console.log(data));import requests
url = "https://v1.apifansly.com/api/fansly/{account_id}/earnings/fans/{fan_id}/stats"
headers = {
"x-api-key": "YOUR_API_KEY"
}
response = requests.get(url, headers=headers)
print(response.json())import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://v1.apifansly.com/api/fansly/{account_id}/earnings/fans/{fan_id}/stats"))
.header("x-api-key", "YOUR_API_KEY")
.GET()
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();using System.Net.Http;
using System.Threading.Tasks;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", "YOUR_API_KEY");
var response = await client.GetAsync("https://v1.apifansly.com/api/fansly/{account_id}/earnings/fans/{fan_id}/stats");
var responseString = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseString);package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://v1.apifansly.com/api/fansly/{account_id}/earnings/fans/{fan_id}/stats"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("x-api-key", "YOUR_API_KEY")
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}Parameters
account_id*
stringThe unique identifier for your connected account, retrieved from your Dashboard.
fan_id*
stringThe unique identifier for the specific fan.
before ?
integerFilter earnings before a specific Unix timestamp in milliseconds.
after ?
integerFilter earnings after a specific Unix timestamp in milliseconds.
Response
Revenue Source Types
The response breaks down the revenue into different sources based on the type field:
15001: Subscriptions7101: Tips2110: Media (e.g., locked posts/messages)
{
"statusCode": 200,
"message": "Success",
"data": {
"status_code": 200,
"data": {
"success": true,
"response": [
{
"type": 7101,
"totalGross": 100,
"totalNet": 80,
"accountId": "xxxxxxxxxxxxxxxxxx",
"correlationAccountId": "xxxxxxxxxxxxxxxxxx",
"timestamp": 1773014400000
},
{
"type": 7101,
"totalGross": 100,
"totalNet": 80,
"accountId": "xxxxxxxxxxxxxxxxxx",
"correlationAccountId": "xxxxxxxxxxxxxxxxxx",
"timestamp": 1772928000000
},
{
"type": 2110,
"totalGross": 1000,
"totalNet": 800,
"accountId": "xxxxxxxxxxxxxxxxxx",
"correlationAccountId": "xxxxxxxxxxxxxxxxxx",
"timestamp": 1772668800000
},
{
"type": 7101,
"totalGross": 200,
"totalNet": 160,
"accountId": "xxxxxxxxxxxxxxxxxx",
"correlationAccountId": "xxxxxxxxxxxxxxxxxx",
"timestamp": 1772064000000
},
{
"type": 7101,
"totalGross": 100,
"totalNet": 80,
"accountId": "xxxxxxxxxxxxxxxxxx",
"correlationAccountId": "xxxxxxxxxxxxxxxxxx",
"timestamp": 1768953600000
}
]
}
},
"timestamp": "2026-03-16T20:51:27.825Z"
}