“They built a bespoke, real-time dashboard tailored to our agency”
Build more with your social data.
From everyday workflows to your next product.
Manage conversations, discover creators, measure campaigns, and automate the work between them.
“FansAPI made building our search engine a smooth and easy process.”
Referral tracking software for an acquisition agency, built with FansAPI.
Creator workflows, connected
Explore creator-account operations, Smart Link attribution, documented webhooks and no-code integrations. Confirm each platform’s endpoint and permissions before building.
What teams build.
What you could build next.
Referral tracking
In their words
“We always had terrible experiences with developers… but not with FansAPI. They allowed us to build a customer software solution for referral tracking connections for our acquisition agency. Whenever something needed a quick fix, update or support it was fast and reliable.”
Product integration
In their words
“Integrating FansAPI was a game-changer — it cut our development time from 6 months down to just one week. Super intuitive, reliable, and exactly what we needed to move fast.”
Search & discovery
In their words
“FansAPI made building our search engine a smooth and easy process. The tool is simple to navigate, pricing is fair, and the support is great at answering questions & fixing issues when they arise.”
Agency operations
In their words
“The team is fantastic to work with—white glove from start to finish. They built a bespoke, real-time dashboard tailored to our agency, and their deep knowledge of the OnlyFans platform made the entire process seamless and impactful.”
Turn API calls into real workflows.
Find creators, connect conversations, and measure revenue. Explore the code behind the features you want to build.
const params = new URLSearchParams({
query: "fitness model",
location: "Los Angeles",
limit: "10",
});
const response = await fetch(
`https://app.fansapi.com/api/search?${params}`, {
headers: {
Authorization: `Bearer ${process.env.FANSAPI_API_KEY}`,
},
});
const profiles = await response.json();import os
import requests
response = requests.get(
"https://app.fansapi.com/api/search",
headers={"Authorization": f"Bearer {os.environ['FANSAPI_API_KEY']}"},
params={
"query": "fitness model",
"location": "Los Angeles",
"limit": 10,
},
)
profiles = response.json()<?php
$params = http_build_query([
'query' => 'fitness model',
'location' => 'Los Angeles', 'limit' => 10,
]);
$ch = curl_init("https://app.fansapi.com/api/search?$params");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('FANSAPI_API_KEY'),
],
]);
$profiles = json_decode(curl_exec($ch), true);
curl_close($ch);require "net/http"
require "json"
uri = URI("https://app.fansapi.com/api/search")
uri.query = URI.encode_www_form(
query: "fitness model", location: "Los Angeles", limit: 10
)
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer #{ENV.fetch('FANSAPI_API_KEY')}"
response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
http.request(request)
end
profiles = JSON.parse(response.body)// Inside a method; full code includes imports and setup.
String query = URLEncoder.encode("fitness model", StandardCharsets.UTF_8);
String location = URLEncoder.encode("Los Angeles", StandardCharsets.UTF_8);
String url = "https://app.fansapi.com/api/search?query=" + query
+ "&location=" + location + "&limit=10";
var request = HttpRequest.newBuilder(URI.create(url))
.header("Authorization", "Bearer " + System.getenv("FANSAPI_API_KEY"))
.GET()
.build();
var response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());/api/searchconst account = process.env.FANSAPI_ACCOUNT_ID;
const fan = process.env.FANSAPI_FAN_ID;
const base = "https://app.fansapi.com/api/account";
const response = await fetch(
`${base}/${account}/chats/${fan}/messages`, {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.FANSAPI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ text: "Welcome aboard!", price: 0 }),
});
const message = await response.json();import os
import requests
account = os.environ["FANSAPI_ACCOUNT_ID"]
fan = os.environ["FANSAPI_FAN_ID"]
base = "https://app.fansapi.com/api/account"
response = requests.post(
f"{base}/{account}/chats/{fan}/messages",
headers={"Authorization": f"Bearer {os.environ['FANSAPI_API_KEY']}"},
json={"text": "Welcome aboard!", "price": 0},
)
message = response.json()<?php
$account = getenv('FANSAPI_ACCOUNT_ID');
$fan = getenv('FANSAPI_FAN_ID');
$ch = curl_init("https://app.fansapi.com/api/account/$account/chats/$fan/messages");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('FANSAPI_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['text' => 'Welcome aboard!', 'price' => 0]),
]);
$message = json_decode(curl_exec($ch), true);
curl_close($ch);require "net/http"
require "json"
account = ENV.fetch("FANSAPI_ACCOUNT_ID")
fan = ENV.fetch("FANSAPI_FAN_ID")
uri = URI("https://app.fansapi.com/api/account/#{account}/chats/#{fan}/messages")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer #{ENV.fetch('FANSAPI_API_KEY')}"
request["Content-Type"] = "application/json"
request.body = { text: "Welcome aboard!", price: 0 }.to_json
response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
http.request(request)
end
message = JSON.parse(response.body)// Inside a method; full code includes imports and setup.
String account = System.getenv("FANSAPI_ACCOUNT_ID");
String fan = System.getenv("FANSAPI_FAN_ID");
String url = "https://app.fansapi.com/api/account/" + account
+ "/chats/" + fan + "/messages";
String body = "{\"text\":\"Welcome aboard!\",\"price\":0}";
var request = HttpRequest.newBuilder(URI.create(url))
.header("Authorization", "Bearer " + System.getenv("FANSAPI_API_KEY"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build();
var response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());/api/account/{account}/chats/{fan}/messagesconst account = process.env.FANSAPI_ACCOUNT_ID;
const base = "https://app.fansapi.com/api";
const response = await fetch(
`${base}/${account}/trial-links`, {
headers: {
Authorization: `Bearer ${process.env.FANSAPI_API_KEY}`,
},
});
const { data } = await response.json();
const campaigns = data.list;import os
import requests
account = os.environ["FANSAPI_ACCOUNT_ID"]
base = "https://app.fansapi.com/api"
response = requests.get(
f"{base}/{account}/trial-links",
headers={"Authorization": f"Bearer {os.environ['FANSAPI_API_KEY']}"},
)
campaigns = response.json()["data"]["list"]<?php
$account = getenv('FANSAPI_ACCOUNT_ID');
$ch = curl_init("https://app.fansapi.com/api/$account/trial-links");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('FANSAPI_API_KEY'),
],
]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
$campaigns = $data['data']['list'];require "net/http"
require "json"
account = ENV.fetch("FANSAPI_ACCOUNT_ID")
uri = URI("https://app.fansapi.com/api/#{account}/trial-links")
request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer #{ENV.fetch('FANSAPI_API_KEY')}"
response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
http.request(request)
end
campaigns = JSON.parse(response.body)["data"]["list"]// Inside a method; full code includes imports and setup.
String account = System.getenv("FANSAPI_ACCOUNT_ID");
String url = "https://app.fansapi.com/api/" + account + "/trial-links";
var request = HttpRequest.newBuilder(URI.create(url))
.header("Authorization", "Bearer " + System.getenv("FANSAPI_API_KEY"))
.GET()
.build();
var response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString());
var campaigns = new ObjectMapper().readTree(response.body())
.get("data").get("list");/api/{account}/trial-linksMessage. Automate. Measure.
Connect account insights to your team’s conversations and measure ad conversions with Smart Links. See what you can build, platform by platform.
Built for your next stage.
More accounts. One connection.
More accounts. More teammates. One place to manage them. Control who can access what, follow API activity, and keep your workflows connected as your product grows.
- Custom permissions
- API keys
- Request logs
- Webhooks
- Data exports
Your next integration starts here.
Build agency tools, connect your CRM, or bring social media context into your AI workflow with FansAPI.
Trusted by Creator Economy Teams
From agency workspaces to creator apps, teams use FansAPI to launch faster, cut development time, and get reliable support when it matters.
Common Questions, Straight Answers
Everything you need to know about FansAPI. Can't find the answer you're looking for? Reach out to our support team.