OnlyFans API
Connect onlyfans account

Start Authentication

Start the authentication process for a new account. Our systems will bypass Captcha and also ask you for 2FA code if required. All credentials are stored securely using bcrypt and only used during login.

POST
/api/authenticate
AuthorizationBearer <token>

You can retrieve your token by visiting the OnlyFansAPI Console and clicking API Keys -> Create API Key.

In: header

emailstring

The email address of the OnlyFans account

passwordstring

The password of the OnlyFans account

proxyCountrystring

The country of the proxy server you want to use. Eg. "us" for United States

Value in"us" | "uk" | "de" | "es" | "ua"

Response Body

curl -X POST "https://app.onlyfansapi.com/api/authenticate" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "password": "~ekgTF}igA&]",
    "proxyCountry": "ua"
  }'
const body = JSON.stringify({
  "email": "[email protected]",
  "password": "~ekgTF}igA&]",
  "proxyCountry": "ua"
})

fetch("https://app.onlyfansapi.com/api/authenticate", {
  body
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
  "strings"
)

func main() {
  url := "https://app.onlyfansapi.com/api/authenticate"
  body := strings.NewReader(`{
    "email": "[email protected]",
    "password": "~ekgTF}igA&]",
    "proxyCountry": "ua"
  }`)
  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/authenticate"
body = {
  "email": "[email protected]",
  "password": "~ekgTF}igA&]",
  "proxyCountry": "ua"
}
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("""{
  "email": "[email protected]",
  "password": "~ekgTF}igA&]",
  "proxyCountry": "ua"
}""");
HttpClient client = HttpClient.newBuilder()
  .connectTimeout(Duration.ofSeconds(10))
  .build();

HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
  .uri(URI.create("https://app.onlyfansapi.com/api/authenticate"))
  .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("""
{
  "email": "[email protected]",
  "password": "~ekgTF}igA&]",
  "proxyCountry": "ua"
}
""", Encoding.UTF8, "application/json");

var client = new HttpClient();
var response = await client.PostAsync("https://app.onlyfansapi.com/api/authenticate", body);
var responseBody = await response.Content.ReadAsStringAsync();
{
  "attempt_id": "auth_XXXXXXXXXXXXXXXXXXXXX",
  "message": "Authentication process started. Query the polling_url to check the progress.",
  "polling_url": "https://app.onlyfansapi.com/api/authenticate/auth_XXXXXXXXXXXXXXXXXXXXX"
}