Fansly API LogoFansly API

Webhook Events

Learn more about all Fansly API webhook events you can subscribe to.

Webhooks are the best way for your application to receive real-time updates from the Fansly API. Instead of constantly polling for changes, you can configure webhooks to proactively send events directly to your server.

Active Events

The following events are currently fully supported. You will receive a webhook notification with a JSON payload when these events occur.

Every webhook shares the same envelope. Only data changes between event types:

{
  "event": "posts.liked",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:00:00.000Z",
  "data": { }
}

Account Events

Account Connected (accounts.connected)

Triggered when a Fansly account is successfully connected.

{
  "event": "accounts.connected",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:00:00.000Z",
  "data": {
    "id": "CREATOR_ID",
    "accountName": "my_fansly_account",
    "connectedAt": "2026-07-08T18:00:00.000Z"
  }
}

Message Events

Message Received (messages.received)

Triggered when a fan sends you a message.

{
  "event": "messages.received",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:05:05.157Z",
  "data": {
    "senderId": "FAN_ID", // Account that sent the message
    "content": "hi",
    "attachments": [
      {
        "contentId": "MEDIA_ID",
        "contentType": 7,
        "messageId": "MESSAGE_ID",
        "pos": 0
      }
    ],
    "correlationId": "CORRELATION_ID",
    "groupId": "GROUP_ID",
    "interactions": [
      {
        "groupId": "GROUP_ID",
        "userId": "CREATOR_ID",
        "readAt": 0,
        "deliveredAt": 0,
        "messageId": "MESSAGE_ID"
      }
    ],
    "id": "MESSAGE_ID",
    "createdAt": 1783533902.804,
    "embeds": []
  }
}

Message Sent (messages.sent)

Triggered when a message is sent from your account.

{
  "event": "messages.sent",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:04:32.438Z",
  "data": {
    "type": 1,
    "attachments": [
      {
        "contentType": 1,
        "contentId": "MEDIA_ID",
        "messageId": "MESSAGE_ID",
        "pos": 0
      }
    ],
    "content": "hey there",
    "groupId": "GROUP_ID",
    "senderId": "CREATOR_ID",
    "inReplyTo": "",
    "interactions": [
      {
        "groupId": "GROUP_ID",
        "userId": "FAN_ID",
        "readAt": 0,
        "deliveredAt": 0,
        "messageId": "MESSAGE_ID"
      }
    ],
    "id": "MESSAGE_ID",
    "createdAt": 1783533871.59,
    "embeds": []
  }
}

Message Read (messages.read)

Triggered when messages in a conversation are marked as read.

{
  "event": "messages.read",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:06:11.742Z",
  "data": {
    "groupId": "GROUP_ID", // The conversation
    "messageIds": ["MESSAGE_ID"], // Every message marked read by this receipt
    "userId": "CREATOR_ID", // Account whose messages were read
    "userReadReceiptsEnabled": true,
    "type": 1,
    "recipients": [
      {
        "userId": "FAN_ID",
        "readReceiptsEnabled": true
      },
      {
        "userId": "CREATOR_ID",
        "readReceiptsEnabled": true
      }
    ]
  }
}

Message Liked (messages.liked)

Triggered when a message is reacted to.

{
  "event": "messages.liked",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:07:02.410Z",
  "data": {
    "accountId": "FAN_ID",
    "messageId": "MESSAGE_ID",
    "type": 1,
    "groupId": "GROUP_ID",
    "id": "REACTION_ID"
  }
}

Message Unliked (messages.unliked)

Triggered when a reaction is removed from a message.

{
  "event": "messages.unliked",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:07:48.220Z",
  "data": {
    "accountId": "FAN_ID",
    "messageId": "MESSAGE_ID",
    "type": 1,
    "id": "REACTION_ID",
    "groupId": "GROUP_ID"
  }
}

User Typing (users.typing)

Triggered when a fan is typing in a conversation.

{
  "event": "users.typing",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-08-17T22:21:29.586Z",
  "data": {
    "id": "CONVERSATION_ID-TYPED_AT",
    "conversationId": "CONVERSATION_ID",
    "fanId": "FAN_ID",
    "creatorId": "CREATOR_ID",
    "typingAt": 1787005287761
  }
}
There is no matching "stopped typing" event — expire the state on your side.

Post Events

Post Created (posts.created)

Triggered when a post is published to one of your walls.

{
  "event": "posts.created",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:10:46.096Z",
  "data": {
    "postId": "POST_ID",
    "wallId": "WALL_ID",
    "wall": {
      "id": "WALL_ID",
      "accountId": "CREATOR_ID",
      "pos": 2,
      "name": "Posts",
      "description": "",
      "private": 0,
      "metadata": ""
    },
    "post": {
      "id": "POST_ID",
      "accountId": "CREATOR_ID",
      "content": "Hello everyone!",
      "fypFlags": 0,
      "inReplyTo": null,
      "inReplyToRoot": null,
      "createdAt": 1788529184,
      "expiresAt": null,
      "attachments": []
    },
    "metadata": {
      "recentPost": true
    }
  }
}
A post published to more than one wall sends one event per wall.

Post Updated (posts.updated)

Triggered when an existing post is edited.

{
  "event": "posts.updated",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:11:26.470Z",
  "data": {
    "id": "POST_ID",
    "accountId": "CREATOR_ID",
    "content": "Hello everyone! (edited)",
    "fypFlags": 0,
    "inReplyTo": null,
    "inReplyToRoot": null,
    "createdAt": 1788529184,
    "expiresAt": 0,
    "attachments": [],
    "likeCount": 0,
    "postReplyPermissionFlags": [],
    "wallIds": ["WALL_ID", "WALL_ID"]
  }
}

Post Deleted (posts.deleted)

Triggered when a post is removed from a wall.

{
  "event": "posts.deleted",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:12:50.656Z",
  "data": {
    "postId": "POST_ID",
    "wallId": "WALL_ID"
  }
}

Post Pinned (posts.pinned)

Triggered when a post is pinned to a wall.

{
  "event": "posts.pinned",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:13:50.287Z",
  "data": {
    "postId": "POST_ID",
    "accountId": "CREATOR_ID",
    "pos": 0,
    "wallId": "WALL_ID"
  }
}

Post Liked (posts.liked)

Triggered when a fan likes one of your posts.

{
  "event": "posts.liked",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-08-17T22:21:48.930Z",
  "data": {
    "id": "NOTIFICATION_ID",
    "postId": "POST_ID",
    "fanId": "FAN_ID",
    "creatorId": "CREATOR_ID"
  }
}

Post Unliked (posts.unliked)

Triggered when a fan removes their like from one of your posts.

{
  "event": "posts.unliked",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:15:10.633Z",
  "data": {
    "id": "NOTIFICATION_ID",
    "postId": "POST_ID",
    "fanId": "FAN_ID",
    "creatorId": "CREATOR_ID"
  }
}

Post Comment (posts.commented)

Triggered when someone comments on a post.

{
  "event": "posts.commented",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:14:27.047Z",
  "data": {
    "accountId": "FAN_ID",
    "content": "Great post!",
    "fypFlags": 0,
    "inReplyTo": "POST_ID",
    "quotedPostId": null,
    "replyPermissionFlags": 0,
    "postReplyPermissionFlags": [],
    "expiresAt": 0,
    "attachments": [],
    "wallIds": [],
    "pinWallIds": [],
    "pinned": 0,
    "id": "COMMENT_ID",
    "inReplyToRoot": "POST_ID"
  }
}

Follower Events

User Followed (users.followed)

Triggered when an account follows you.

{
  "event": "users.followed",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:16:11.712Z",
  "data": {
    "followerId": "FAN_ID",
    "accountId": "CREATOR_ID",
    "id": "FOLLOW_ID",
    "accountSortOrder": 1
  }
}

User Unfollowed (users.unfollowed)

Triggered when an account unfollows you.

{
  "event": "users.unfollowed",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:17:24.890Z",
  "data": {
    "followerId": "FAN_ID",
    "accountId": "CREATOR_ID",
    "id": "FOLLOW_ID",
    "createdAt": 1788456476000
  }
}

Payment Events

Tip Received (tips.received)

Triggered when a tip is received.

{
  "event": "tips.received",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-06-23T18:11:59.305Z",
  "data": {
    "id": "TRANSACTION_ID",
    "type": 7101,
    "originWalletId": null,
    "destinationWalletId": "WALLET_ID",
    "status": 1,
    "amount": 1000,
    "destinationTax": 2000,
    "destinationAmount": 800,
    "correlationId": "CORRELATION_ID"
  }
}
amount and destinationAmount are in cents. destinationAmount is what you receive after fees.

PPV Message Purchased (ppv.purchased)

Triggered when a user purchases a pay-per-view (PPV) message.

{
  "event": "ppv.purchased",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-06-23T18:11:59.242Z",
  "data": {
    "orderId": "ORDER_ID",
    "accountMediaId": "MEDIA_ID",
    "correlationAccountId": "CREATOR_ID",
    "accountId": "FAN_ID",
    "type": 1,
    "orderMetadata": {
      "accountMediaPrice": 1000
    }
  }
}

New Transaction (transactions.new)

Triggered on every balance movement. Subscribe to this for a single feed of all earnings instead of handling each payment event separately.

{
  "event": "transactions.new",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:20:50.172Z",
  "data": {
    "id": "TRANSACTION_ID",
    "type": 7101,
    "originWalletId": null,
    "destinationWalletId": "WALLET_ID",
    "status": 1,
    "amount": 1000, // Gross amount in cents
    "destinationTax": 2000, // Platform fee in basis points (2000 = 20%)
    "destinationAmount": 800, // Net amount you receive, in cents
    "correlationId": "CORRELATION_ID"
  }
}
This is sent alongside the specific payment event, not instead of it. Subscribing to both means the same earning arrives twice. match on id if you need to reconcile them.

Subscription Events

New Subscription (subscriptions.new)

Triggered when a subscription is created or renewed.

{
  "event": "subscriptions.new",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:24:36.368Z",
  "data": {
    "id": "SUBSCRIPTION_ID",
    "historyId": "HISTORY_ID",
    "accountId": "CREATOR_ID",
    "subscriberId": "FAN_ID",
    "subscriptionTierId": "TIER_ID",
    "subscriptionTierName": "Gold",
    "subscriptionTierColor": "#FFD700",
    "planId": "PLAN_ID",
    "promoId": null,
    "giftCodeId": "GIFT_CODE_ID",
    "status": 3,
    "price": 250,
    "renewPrice": 5000,
    "renewCorrelationId": "HISTORY_ID",
    "autoRenew": 1,
    "version": 5,
    "billingCycle": 30,
    "duration": 37,
    "renewDate": 1788467245000,
    "createdAt": 1788465372000,
    "endsAt": 1791664045863,
    "promoDuration": null,
    "promoStartsAt": null,
    "promoEndsAt": null,
    "updatedAt": 1788467245865,
    "subscriptionStreak": 1,
    "subscriptionTotalDays": 30,
    "giftCodeRenew": true
  }
}
price and renewPrice are in cents. billingCycle is in days.

Subscription Renewed (subscriptions.renewed)

Triggered when an existing subscription rebills for another cycle. Same payload shape as subscriptions.new, with a freshly minted historyId for the cycle.

{
  "event": "subscriptions.renewed",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:25:14.902Z",
  "data": {
    "id": "SUBSCRIPTION_ID",
    "historyId": "HISTORY_ID",
    "accountId": "CREATOR_ID",
    "subscriberId": "FAN_ID",
    "subscriptionTierId": "TIER_ID",
    "subscriptionTierName": "Gold",
    "subscriptionTierColor": "#FFD700",
    "planId": "PLAN_ID",
    "promoId": null,
    "giftCodeId": "GIFT_CODE_ID",
    "status": 3,
    "price": 250,
    "renewPrice": 5000,
    "renewCorrelationId": "HISTORY_ID",
    "autoRenew": 1,
    "version": 5,
    "billingCycle": 30,
    "duration": 37,
    "renewDate": 1788467245000,
    "createdAt": 1788465372000,
    "endsAt": 1791664045863,
    "promoDuration": null,
    "promoStartsAt": null,
    "promoEndsAt": null,
    "updatedAt": 1788467245865,
    "subscriptionStreak": 1,
    "subscriptionTotalDays": 30,
    "giftCodeRenew": true
  }
}
subscriptionStreak counts completed billing cycles and subscriptionTotalDays the total time subscribed. id stays fixed for the life of the subscription; historyId identifies the individual cycle.

Subscription Expired (subscriptions.expired)

Triggered when a subscription reaches the end of its billing period without renewing.

{
  "event": "subscriptions.expired",
  "accountId": "fansly_ACCOUNT_ID",
  "timestamp": "2026-07-08T18:26:05.128Z",
  "data": {
    "id": "NOTIFICATION_ID",
    "subscriptionId": "SUBSCRIPTION_ID",
    "fanId": "FAN_ID",
    "creatorId": "CREATOR_ID"
  }
}

All Event Types

Below is the complete list of all webhook events that can be configured, including both active and upcoming events.

Event ValueDescriptionStatus
accounts.connectedAccount connectedActive
messages.receivedMessage receivedActive
messages.sentMessage sentActive
messages.readMessage readActive
messages.likedMessage likedActive
messages.unlikedMessage unlikedActive
users.typingUser typingActive
posts.createdPost createdActive
posts.updatedPost updatedActive
posts.deletedPost deletedActive
posts.pinnedPost pinnedActive
posts.likedPost likedActive
posts.unlikedPost unlikedActive
posts.commentedPost commentActive
users.followedUser followedActive
users.unfollowedUser unfollowedActive
tips.receivedTip receivedActive
ppv.purchasedPPV message media purchasedActive
transactions.newNew transactionActive
subscriptions.newNew subscriptionActive
subscriptions.expiredSubscription expiredActive
subscriptions.renewedRenewed subscriptionActive
accounts.reconnectedAccount reconnectedUpcoming
accounts.session_expiredAccount session expiredUpcoming
accounts.authentication_failedAccount authentication failedUpcoming
accounts.otp_code_requiredOTP code requiredUpcoming
accounts.face_otp_requiredFace OTP requiredUpcoming

On this page