Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.ofauth.com/llms.txt

Use this file to discover all available pages before exploring further.

What You Can Build

  • Fan Dashboards: View all subscribers, filter by status, track engagement
  • CRM Tools: Organize fans into lists, add notes, track interactions
  • Subscription Analytics: Monitor churn, renewal rates, lifetime value
  • Targeted Campaigns: Segment fans for personalized messaging

Quick Example

Subscriber list endpoints are paginated and currently return up to 20 results per page. Use limit values up to 20 and paginate with offset.
Get a list of all active subscribers:
const response = await fetch("https://api.ofauth.com/v2/access/subscribers?type=active", {
  headers: {
    apikey: "YOUR_API_KEY",
    "x-connection-id": "conn_abc123"
  }
})

const fans = await response.json()
console.log(`You have ${fans.length} active subscribers`)

Common Operations

List All Fans

Get all subscribers regardless of status:
const response = await fetch("https://api.ofauth.com/v2/access/subscribers?" + new URLSearchParams({
  type: "all",
  limit: "20",
  offset: "0"
}), {
  headers: {
    apikey: "YOUR_API_KEY",
    "x-connection-id": "conn_abc123"
  }
})

const fans = await response.json()
// Returns array of fan objects with subscription details

Filter by Subscription Status

// Active subscribers only
const active = await fetch(
  "https://api.ofauth.com/v2/access/subscribers?type=active",
  { headers }
)

// Expired (churned) subscribers
const expired = await fetch(
  "https://api.ofauth.com/v2/access/subscribers?type=expired",
  { headers }
)

// All-time subscribers
const all = await fetch(
  "https://api.ofauth.com/v2/access/subscribers?type=all",
  { headers }
)

Search Subscribers

const response = await fetch(
  "https://api.ofauth.com/v2/access/subscribers?" + new URLSearchParams({
    query: "john",
    type: "active"
  }),
  { headers }
)

Get Fan Details

Fetch detailed information about a specific user:
const response = await fetch("https://api.ofauth.com/v2/access/users/123456", {
  headers: {
    apikey: "YOUR_API_KEY",
    "x-connection-id": "conn_abc123"
  }
})

const fan = await response.json()
// Returns full user profile

User Lists

Organize fans into custom lists for targeted messaging.

Get All Lists

const response = await fetch("https://api.ofauth.com/v2/access/users/lists", {
  headers: {
    apikey: "YOUR_API_KEY",
    "x-connection-id": "conn_abc123"
  }
})

const lists = await response.json()
// Returns custom lists like "VIPs", "New Fans", etc.

Get Users in a List

const response = await fetch("https://api.ofauth.com/v2/access/users/lists/LIST_ID/users?" + new URLSearchParams({
  limit: "20",
  offset: "0"
}), {
  headers: {
    apikey: "YOUR_API_KEY",
    "x-connection-id": "conn_abc123"
  }
})

const usersInList = await response.json()

Create a List

const response = await fetch("https://api.ofauth.com/v2/access/users/lists", {
  method: "POST",
  headers: {
    apikey: "YOUR_API_KEY",
    "x-connection-id": "conn_abc123",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    name: "VIP Fans"
  })
})

const newList = await response.json()

Add User to a List

const response = await fetch("https://api.ofauth.com/v2/access/users/lists/LIST_ID/users/USER_ID", {
  method: "POST",
  headers: {
    apikey: "YOUR_API_KEY",
    "x-connection-id": "conn_abc123"
  }
})

Add User to Multiple Lists

const response = await fetch("https://api.ofauth.com/v2/access/users/USER_ID/lists", {
  method: "POST",
  headers: {
    apikey: "YOUR_API_KEY",
    "x-connection-id": "conn_abc123",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    listIds: [123, 456, 789]
  })
})

Remove User from a List

const response = await fetch("https://api.ofauth.com/v2/access/users/lists/LIST_ID/users/USER_ID", {
  method: "DELETE",
  headers: {
    apikey: "YOUR_API_KEY",
    "x-connection-id": "conn_abc123"
  }
})

Subscriber Management

Manage individual subscriber relationships with notes, discounts, and custom names.

Update Subscriber Note

Add or update a private note for a subscriber:
const response = await fetch("https://api.ofauth.com/v2/access/subscribers/123456/note", {
  method: "PUT",
  headers: {
    apikey: "YOUR_API_KEY",
    "x-connection-id": "conn_abc123",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    notice: "VIP fan - always respond quickly!"
  })
})

Apply Discount to Subscriber

Offer a subscription discount to a specific fan:
const response = await fetch("https://api.ofauth.com/v2/access/subscribers/123456/discount", {
  method: "PUT",
  headers: {
    apikey: "YOUR_API_KEY",
    "x-connection-id": "conn_abc123",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    discount: 50,       // Discount percentage (e.g., 50 for 50% off)
    duration: 1         // Number of months
  })
})

Set Custom Display Name

Set a custom name to help identify a subscriber:
const response = await fetch("https://api.ofauth.com/v2/access/subscribers/123456/custom-name", {
  method: "PUT",
  headers: {
    apikey: "YOUR_API_KEY",
    "x-connection-id": "conn_abc123",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    displayName: "John (Friend from Twitter)"
  })
})
Custom display names are private and only visible to you. They help organize fans when usernames aren’t descriptive.

User Management

Restrict a User

Restrict a user from interacting:
const response = await fetch("https://api.ofauth.com/v2/access/users/123456/restrict", {
  method: "POST",
  headers: {
    apikey: "YOUR_API_KEY",
    "x-connection-id": "conn_abc123"
  }
})

Unrestrict a User

const response = await fetch("https://api.ofauth.com/v2/access/users/123456/restrict", {
  method: "DELETE",
  headers: {
    apikey: "YOUR_API_KEY",
    "x-connection-id": "conn_abc123"
  }
})

Get Restricted Users

const response = await fetch("https://api.ofauth.com/v2/access/users/restrict", {
  headers: {
    apikey: "YOUR_API_KEY",
    "x-connection-id": "conn_abc123"
  }
})

Get Blocked Users

const response = await fetch("https://api.ofauth.com/v2/access/users/blocked", {
  headers: {
    apikey: "YOUR_API_KEY",
    "x-connection-id": "conn_abc123"
  }
})

API Endpoints

Subscribers

EndpointMethodDescription
/v2/access/subscribersGETList all subscribers
/v2/access/subscribers/{userId}/notePUTUpdate subscriber note
/v2/access/subscribers/{userId}/discountPUTApply discount
/v2/access/subscribers/{userId}/custom-namePUTSet custom display name

Users

EndpointMethodDescription
/v2/access/users/{userId}GETGet user details
/v2/access/users/searchGETSearch users
/v2/access/users/listGETGet users by IDs
/v2/access/users/{userId}/restrictPOSTRestrict a user
/v2/access/users/{userId}/restrictDELETEUnrestrict a user
/v2/access/users/restrictGETList restricted users
/v2/access/users/blockedGETList blocked users

User Lists

EndpointMethodDescription
/v2/access/users/listsGETGet all user lists
/v2/access/users/listsPOSTCreate a user list
/v2/access/users/lists/{listId}GETGet a user list
/v2/access/users/lists/{listId}PATCHUpdate a user list
/v2/access/users/lists/{listId}DELETEDelete a user list
/v2/access/users/lists/{listId}/usersGETGet users in a list
/v2/access/users/lists/{listId}/users/{userId}POSTAdd user to a list
/v2/access/users/lists/{listId}/users/{userId}DELETERemove user from list
/v2/access/users/{userId}/listsPOSTAdd user to multiple lists

Full API Reference

See complete endpoint documentation

Query Parameters

Subscribers Query

ParameterTypeDefaultDescription
limitnumber10Results per page (1-20)
offsetnumber0Pagination offset
typestring”active”Filter: all, active, expired
querystring""Search by name/username

Advanced Filters

The filter object supports additional filtering:
FilterTypeDescription
promoIdstringFilter by promotion ID
trial_idstringFilter by trial ID
durationstringFilter by subscription duration
tipsstringFilter by tip amount
total_spentstringFilter by total spent
onlinestringFilter by online status

Subscriber Data Structure

Each subscriber object includes:
{
  "id": 123456,
  "username": "fanname",
  "name": "Fan Display Name",
  "avatar": "https://media.ofauth.com/...",
  "subscribedAt": "2024-01-15T10:30:00Z",
  "expiredAt": "2024-02-15T10:30:00Z",
  "renewedAt": null,
  "subscribeDuration": 30,
  "totalSpent": 49.99,
  "subscribesCount": 3,
  "hasStories": false,
  "isVerified": false
}

Tips & Best Practices

Pagination: Large fan lists are paginated. Use the offset and limit parameters to page through results. Maximum limit is 20 per request.
Caching: Fan lists don’t change frequently. Consider caching subscriber data and refreshing periodically rather than on every request.
Privacy: Handle fan data responsibly. Don’t expose personal information and follow applicable data protection regulations.

Messaging & Chats

Send targeted messages to fan segments

Earnings & Analytics

Track revenue by fan