🚀 Fansly API (Alpha) is live!WIP - Updated Daily
Fansly API Logo
Earnings

Get Fan-Specific Earnings

Retrieve detailed earning analytics and lifetime value for a specific fan.


Fetch a detailed breakdown of earnings generated by a specific fan over time, including gross and net totals.

Monetary Values

All monetary values (e.g., totalGross, totalNet) are returned in base units and must be divided by 1000 to get the actual amount (e.g., $100.00 is returned as 100000).

https://v1.apifansly.com
GET
/api/fansly/{account_id}/earnings/fans/{fan_id}

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}" \
  -H "x-api-key: YOUR_API_KEY"
fetch("https://v1.apifansly.com/api/fansly/{account_id}/earnings/fans/{fan_id}", {
  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}"
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}"))
        .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}");
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}"
    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

To retrieve the analytics for a specific fan, you must provide BOTH the account_id and the fan_id in the URL path.

account_id*
string
The unique identifier for your connected account, retrieved from your Dashboard.
fan_id*
string
The unique identifier for the specific fan.

Response

{
    "statusCode": 200,
    "message": "Success",
    "data": {
        "status_code": 200,
        "data": {
            "success": true,
            "response": [
                {
                    "year": 2026,
                    "month": 1,
                    "totalGross": 100,
                    "totalNet": 80,
                    "accountId": "xxxxxxxxxxxxxxxxxx",
                    "correlationAccountId": "xxxxxxxxxxxxxxxxxx",
                    "timestamp": 1768953600000
                }
            ]
        }
    },
    "timestamp": "2026-01-21T19:25:12.487Z"
}

On this page