> ## Documentation Index
> Fetch the complete documentation index at: https://docs.onlyfansapi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Available Fanvue webhook events (/webhooks/fanvue-events)

All Fanvue events are prefixed with `fanvue.` so they never collide with the [OnlyFans events](/webhooks/available-events) or the [Fansly events](/webhooks/fansly-events). Each relayed event is named after its Fanvue webhook topic with `creator.` replaced by `fanvue.`, so Fanvue's `creator.payment.succeeded` arrives as `fanvue.payment.succeeded`.

<Callout>
  We're enabling Fanvue team by team, and these events are only offered once it's on for your team. See the [Fanvue API overview](/api-reference/fanvue).
</Callout>

## Payloads are Fanvue's, passed through

Fanvue events use the same envelope as the OnlyFans and Fansly events: an `event` name, the `account_id` of the connected account, and a platform-native `payload`:

```json title="Envelope"
{
    "event": "fanvue.<category>.<name>",
    "account_id": "fanvue_acct_123",
    "payload": { }
}
```

Apart from the three [account events](#accounts), `payload` is the `data` object of Fanvue's webhook, forwarded unchanged. Nothing is renamed, reshaped or added to match our OnlyFans or Fansly events, so [Fanvue's webhook reference](https://api.fanvue.com/docs/creator/overview) is the field-level source of truth, and every event below links to its page there.

Fanvue's own `id`, `type` and `timestamp` envelope fields are not forwarded. Deduplicate on the `X-OFAPI-Idempotency-Key` header instead, as described in [Delivery and retries](/webhooks/delivery-and-retries).

Amounts in `payload` are integers in minor units of `currency`, as Fanvue sends them. For USD that is cents, so `1999` means `$19.99`.

## Accounts

These three events are ours rather than Fanvue's, so their `payload` is our summary of the connected account instead of a Fanvue resource.

### `fanvue.account.connected`

A Fanvue account was connected or reconnected.

```json title="Example payload"
{
    "event": "fanvue.account.connected",
    "account_id": "fanvue_acct_123",
    "payload": {
        "id": "fanvue_acct_123",
        "fanvue_user_uuid": "3bbe6394-2830-4646-a8ba-4a0a05426947",
        "handle": "jane",
        "display_name": "Jane Doe",
        "avatar_url": null,
        "is_ai_creator": false,
        "roles": [
            "creator"
        ],
        "granted_scopes": [
            "openid",
            "offline_access",
            "offline",
            "read:self",
            "read:chat",
            "write:chat",
            "read:fan",
            "read:creator",
            "write:creator",
            "read:media",
            "write:media",
            "read:post",
            "write:post",
            "read:insights",
            "read:tracking_links",
            "write:tracking_links"
        ],
        "status": "active",
        "connected_at": "2026-09-22T11:26:38.000000Z"
    }
}
```

### `fanvue.account.disconnected`

A Fanvue account was disconnected in the [dashboard](https://app.onlyfansapi.com) or with `DELETE /api/fanvue/accounts/{fanvueAccount}`. Further API calls for it return a `404`, so stop polling it. If the creator is reconnected from the same team, the account comes back under the same `fanvue_acct_` ID.

```json title="Example payload"
{
    "event": "fanvue.account.disconnected",
    "account_id": "fanvue_acct_123",
    "payload": {
        "id": "fanvue_acct_123",
        "fanvue_user_uuid": "3bbe6394-2830-4646-a8ba-4a0a05426947",
        "handle": "jane",
        "display_name": "Jane Doe",
        "avatar_url": null,
        "is_ai_creator": false,
        "roles": [
            "creator"
        ],
        "granted_scopes": [
            "openid",
            "offline_access",
            "offline",
            "read:self",
            "read:chat",
            "write:chat",
            "read:fan",
            "read:creator",
            "write:creator",
            "read:media",
            "write:media",
            "read:post",
            "write:post",
            "read:insights",
            "read:tracking_links",
            "write:tracking_links"
        ],
        "status": "active",
        "connected_at": "2026-09-22T11:26:38.000000Z"
    }
}
```

### `fanvue.account.needs_reauth`

Fanvue rejected the account's credentials, so API calls for it fail until you reconnect it in the [dashboard](https://app.onlyfansapi.com). Its webhook events keep arriving meanwhile.

```json title="Example payload"
{
    "event": "fanvue.account.needs_reauth",
    "account_id": "fanvue_acct_123",
    "payload": {
        "id": "fanvue_acct_123",
        "fanvue_user_uuid": "3bbe6394-2830-4646-a8ba-4a0a05426947",
        "handle": "jane",
        "display_name": "Jane Doe",
        "avatar_url": null,
        "is_ai_creator": false,
        "roles": [
            "creator"
        ],
        "granted_scopes": [
            "openid",
            "offline_access",
            "offline",
            "read:self",
            "read:chat",
            "write:chat",
            "read:fan",
            "read:creator",
            "write:creator",
            "read:media",
            "write:media",
            "read:post",
            "write:post",
            "read:insights",
            "read:tracking_links",
            "write:tracking_links"
        ],
        "status": "needs_reauth",
        "connected_at": "2026-09-22T11:26:38.000000Z"
    }
}
```

## Payments

### `fanvue.payment.succeeded`

A fan paid for a post, message, media or tip, or was charged for a new or renewing subscription.

Fanvue reference: [Payments](https://api.fanvue.com/docs/creator/payments)

```json title="Example payload"
{
    "event": "fanvue.payment.succeeded",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "payment",
        "id": "FV-12345",
        "status": "succeeded",
        "source": "message",
        "billing_reason": "one_time",
        "gross": 1999,
        "net": 1799,
        "fees": {
            "fanvue_fee": 200,
            "transaction_fee": 0
        },
        "currency": "USD",
        "paid_in_full": true,
        "client_reference_id": null,
        "transaction_id": null,
        "post_uuid": null,
        "message_uuid": "2f7c5e8a-6d36-4e3a-98d9-9f1b3b0a1a10",
        "message_type": "SINGLE_RECIPIENT",
        "tip_context": null,
        "created_at": "2026-06-09T08:39:33.139Z",
        "paid_at": "2026-06-09T08:39:33.139Z",
        "subscription": null,
        "purchaser": {
            "uuid": "fan-uuid",
            "email": null,
            "handle": "janed",
            "display_name": "Jane D"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "metadata": {},
        "tracking": {
            "link_url": "https://fanvue.com/creator-handle?fvc=summer-campaign",
            "metadata": {
                "campaign": "summer",
                "source": "x"
            }
        }
    }
}
```

### `fanvue.reward.created`

You earned a referral or affiliate commission.

Fanvue reference: [Payments](https://api.fanvue.com/docs/creator/payments#reward-resource)

```json title="Example payload"
{
    "event": "fanvue.reward.created",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "reward",
        "id": "FVR-4455",
        "amount": 500,
        "currency": "USD",
        "source_payment_id": "FV-12345",
        "referred_creator": {
            "uuid": "referred-creator-uuid"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "created_at": "2026-06-09T08:45:00.000Z",
        "metadata": {}
    }
}
```

### `fanvue.reward.reversed`

A referral or affiliate commission was clawed back because its sale was refunded or charged back. It carries the same `id` as the [`fanvue.reward.created`](#fanvuerewardcreated) it reverses.

Fanvue reference: [Payments](https://api.fanvue.com/docs/creator/payments#reward-resource)

```json title="Example payload"
{
    "event": "fanvue.reward.reversed",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "reward",
        "id": "FVR-4455",
        "amount": 500,
        "currency": "USD",
        "source_payment_id": "FV-12345",
        "referred_creator": {
            "uuid": "referred-creator-uuid"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "created_at": "2026-06-09T08:45:00.000Z",
        "metadata": {}
    }
}
```

## Refunds & disputes

### `fanvue.refund.created`

A payment was refunded in full. `amount` equals the original gross.

Fanvue reference: [Refunds and disputes](https://api.fanvue.com/docs/creator/refunds-disputes)

```json title="Example payload"
{
    "event": "fanvue.refund.created",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "refund",
        "id": "FVC-12345",
        "payment_id": "FV-12345",
        "amount": 1999,
        "currency": "USD",
        "reason": null,
        "full_amount": true,
        "created_at": "2026-06-09T08:40:00.000Z",
        "purchaser": {
            "uuid": "fan-uuid",
            "email": null,
            "handle": "janed",
            "display_name": "Jane D"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "metadata": {
            "campaign": "spring-promo"
        }
    }
}
```

### `fanvue.dispute.flagged`

An early chargeback warning was raised on a payment, before any formal dispute.

Fanvue reference: [Refunds and disputes](https://api.fanvue.com/docs/creator/refunds-disputes)

```json title="Example payload"
{
    "event": "fanvue.dispute.flagged",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "dispute",
        "id": "dp_abc123",
        "status": "warning",
        "amount": 1999,
        "currency": "USD",
        "reason": "fraudulent",
        "created_at": "2026-06-09T08:41:00.000Z",
        "payment": {
            "id": "FV-12345",
            "transaction_id": "txn_abc",
            "purchaser": {
                "uuid": "fan-uuid",
                "email": null,
                "handle": "janed",
                "display_name": "Jane D"
            }
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "metadata": {
            "campaign": "spring-promo"
        }
    }
}
```

### `fanvue.dispute.created`

A formal chargeback dispute was opened on a payment.

Fanvue reference: [Refunds and disputes](https://api.fanvue.com/docs/creator/refunds-disputes)

```json title="Example payload"
{
    "event": "fanvue.dispute.created",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "dispute",
        "id": "dp_abc123",
        "status": "open",
        "amount": 1999,
        "currency": "USD",
        "reason": "fraudulent",
        "created_at": "2026-06-09T08:41:00.000Z",
        "payment": {
            "id": "FV-12345",
            "transaction_id": "txn_abc",
            "purchaser": {
                "uuid": "fan-uuid",
                "email": null,
                "handle": "janed",
                "display_name": "Jane D"
            }
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "metadata": {
            "campaign": "spring-promo"
        }
    }
}
```

## Subscriptions

### `fanvue.subscription.activated`

A subscription became active because a new fan subscribed or a lapsed fan resubscribed. The charge arrives separately as [`fanvue.payment.succeeded`](#fanvuepaymentsucceeded).

Fanvue reference: [Subscriptions](https://api.fanvue.com/docs/creator/subscriptions)

```json title="Example payload"
{
    "event": "fanvue.subscription.activated",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "subscription",
        "id": "FV-12345",
        "status": "active",
        "cancel_at_period_end": false,
        "auto_renew": true,
        "price": 999,
        "expires_at": "2026-07-09T08:39:33.139Z",
        "current_period_start": "2026-06-09T08:39:33.139Z",
        "renew_date": "2026-07-09T08:39:33.139Z",
        "renew_price": 999,
        "created_at": "2026-06-09T08:39:33.139Z",
        "deactivation_reason": null,
        "client_reference_id": "crm-contact-8821",
        "purchaser": {
            "uuid": "fan-uuid",
            "email": null,
            "handle": "janed",
            "display_name": "Jane D"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "metadata": {
            "campaign": "spring-promo"
        },
        "tracking": {
            "link_url": "https://fanvue.com/creator-handle?fvc=spring-promo",
            "metadata": {
                "campaign": "spring-promo",
                "source": "x"
            }
        }
    }
}
```

### `fanvue.subscription.renewed`

A subscription rolled into a new billing period without lapsing. The charge arrives separately as [`fanvue.payment.succeeded`](#fanvuepaymentsucceeded).

Fanvue reference: [Subscriptions](https://api.fanvue.com/docs/creator/subscriptions)

```json title="Example payload"
{
    "event": "fanvue.subscription.renewed",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "subscription",
        "id": "FV-12345",
        "status": "active",
        "cancel_at_period_end": false,
        "auto_renew": true,
        "price": 999,
        "expires_at": "2026-08-09T08:39:33.139Z",
        "current_period_start": "2026-07-09T08:39:33.139Z",
        "renew_date": "2026-08-09T08:39:33.139Z",
        "renew_price": 999,
        "created_at": "2026-06-09T08:39:33.139Z",
        "deactivation_reason": null,
        "client_reference_id": "crm-contact-8821",
        "purchaser": {
            "uuid": "fan-uuid",
            "email": null,
            "handle": "janed",
            "display_name": "Jane D"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "metadata": {
            "campaign": "spring-promo"
        },
        "tracking": null
    }
}
```

### `fanvue.subscription.deactivated`

A subscription ended and the fan lost access. `deactivation_reason` says why.

Fanvue reference: [Subscriptions](https://api.fanvue.com/docs/creator/subscriptions)

```json title="Example payload"
{
    "event": "fanvue.subscription.deactivated",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "subscription",
        "id": null,
        "status": "expired",
        "cancel_at_period_end": false,
        "auto_renew": true,
        "price": 999,
        "expires_at": "2026-07-09T08:39:33.139Z",
        "current_period_start": "2026-06-09T08:39:33.139Z",
        "renew_date": null,
        "renew_price": null,
        "created_at": "2026-06-09T08:39:33.139Z",
        "deactivation_reason": "not_renewed",
        "client_reference_id": "crm-contact-8821",
        "purchaser": {
            "uuid": "fan-uuid",
            "email": null,
            "handle": "janed",
            "display_name": "Jane D"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "metadata": {
            "campaign": "spring-promo"
        },
        "tracking": null
    }
}
```

### `fanvue.subscription.cancel_at_period_end_changed`

A fan turned auto-renew off or back on. Access continues until `expires_at`.

Fanvue reference: [Subscriptions](https://api.fanvue.com/docs/creator/subscriptions)

```json title="Example payload"
{
    "event": "fanvue.subscription.cancel_at_period_end_changed",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "subscription",
        "id": null,
        "status": "active",
        "cancel_at_period_end": true,
        "auto_renew": false,
        "price": 999,
        "expires_at": "2026-07-09T08:39:33.139Z",
        "current_period_start": "2026-06-09T08:39:33.139Z",
        "renew_date": null,
        "renew_price": null,
        "created_at": "2026-06-09T08:39:33.139Z",
        "deactivation_reason": "subscriber_requested",
        "client_reference_id": "crm-contact-8821",
        "purchaser": {
            "uuid": "fan-uuid",
            "email": null,
            "handle": "janed",
            "display_name": "Jane D"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "metadata": {
            "campaign": "spring-promo"
        },
        "tracking": null
    }
}
```

## Messages & chats

### `fanvue.message.received`

A fan sent you a message.

Fanvue reference: [Messages](https://api.fanvue.com/docs/creator/messages)

```json title="Example payload"
{
    "event": "fanvue.message.received",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "message",
        "uuid": "2f7c5e8a-6d36-4e3a-98d9-9f1b3b0a1a10",
        "sender": "fan",
        "created_at": "2026-06-09T08:39:33.139Z",
        "deleted_at": null,
        "text": "Hey! Loved your latest post 😍",
        "message_type": "SINGLE_RECIPIENT",
        "is_muted": false,
        "media_uuids": [
            "b8c47a91-3f2d-4a55-b7e8-1c9d2e4f5a6b",
            "c1d58b02-4e3e-4b66-c8f9-2d0e3f5a6b7c"
        ],
        "price": 300,
        "is_automated": false,
        "unread_messages_count": 3,
        "creator": {
            "uuid": "creator-uuid"
        },
        "fan": {
            "uuid": "fan-uuid",
            "email": null,
            "display_name": "Jane D",
            "handle": "janed",
            "avatar_url": "https://cdn.fanvue.com/avatars/example.jpg"
        },
        "metadata": {}
    }
}
```

### `fanvue.message.sent`

You sent a message to a fan from any app or tool. Mass messages arrive as [`fanvue.message.mass_sent`](#fanvuemessagemass_sent) instead.

Fanvue reference: [Messages](https://api.fanvue.com/docs/creator/messages)

```json title="Example payload"
{
    "event": "fanvue.message.sent",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "message",
        "uuid": "9b1c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d",
        "sender": "creator",
        "created_at": "2026-06-09T08:41:02.114Z",
        "deleted_at": null,
        "message_type": "SINGLE_RECIPIENT",
        "text": "Thanks for subscribing! 💕",
        "media_uuids": [
            "b8c47a91-3f2d-4a55-b7e8-1c9d2e4f5a6b"
        ],
        "unread_messages_count": 0,
        "creator": {
            "uuid": "creator-uuid"
        },
        "fan": {
            "uuid": "fan-uuid",
            "email": null,
            "display_name": "Jane D",
            "handle": "janed"
        },
        "metadata": {}
    }
}
```

### `fanvue.message.mass_sent`

You sent a mass message. One event per send, not per recipient.

Fanvue reference: [Messages](https://api.fanvue.com/docs/creator/messages#mass-message-resource)

```json title="Example payload"
{
    "event": "fanvue.message.mass_sent",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "mass_message",
        "uuid": "7c1e9d24-8a3f-4b52-9d61-0f2a3b4c5d6e",
        "sender": "creator",
        "created_at": "2026-06-09T10:12:05.402Z",
        "message_type": "BROADCAST",
        "text": "Hey {{handle}}, new set just dropped 💕",
        "media_uuids": [
            "b8c47a91-3f2d-4a55-b7e8-1c9d2e4f5a6b"
        ],
        "price": 900,
        "recipient_count": 30142,
        "creator": {
            "uuid": "creator-uuid"
        },
        "metadata": {}
    }
}
```

### `fanvue.message.read`

You read a fan's messages.

<Callout type="warn" title="High volume">
  This fires every time you read a conversation that had unread messages. Only subscribe if you mirror read state.
</Callout>

Fanvue reference: [Messages](https://api.fanvue.com/docs/creator/messages)

```json title="Example payload"
{
    "event": "fanvue.message.read",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "fan_message_read",
        "read_messages_count": 3,
        "unread_messages_count": 0,
        "read_at": "2026-06-09T08:39:32.884Z",
        "fan": {
            "uuid": "fan-uuid",
            "email": null,
            "display_name": "Jane D",
            "handle": "janed"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "metadata": {}
    }
}
```

### `fanvue.message.read_by_fan`

A fan read your messages.

Fanvue reference: [Messages](https://api.fanvue.com/docs/creator/messages#read-by-fan-receipt-resource)

```json title="Example payload"
{
    "event": "fanvue.message.read_by_fan",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "creator_message_read",
        "read_messages_count": 3,
        "read_at": "2026-06-09T08:44:10.502Z",
        "fan": {
            "uuid": "fan-uuid"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "metadata": {}
    }
}
```

### `fanvue.message.deleted`

A single chat message was unsent. The payload carries no message content.

Fanvue reference: [Messages](https://api.fanvue.com/docs/creator/messages)

```json title="Example payload"
{
    "event": "fanvue.message.deleted",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "message",
        "uuid": "9b1c3d4e-5f60-4a7b-8c9d-0e1f2a3b4c5d",
        "sender": "creator",
        "created_at": null,
        "deleted_at": "2026-06-09T09:15:44.000Z",
        "creator": {
            "uuid": "creator-uuid"
        },
        "fan": {
            "uuid": "fan-uuid",
            "email": null,
            "display_name": "Jane D",
            "handle": "janed"
        },
        "metadata": {}
    }
}
```

### `fanvue.message.reaction`

A reaction was added to a chat message. `sender` says whether you or the fan reacted.

Fanvue reference: [Messages](https://api.fanvue.com/docs/creator/messages)

```json title="Example payload"
{
    "event": "fanvue.message.reaction",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "reaction",
        "sender": "fan",
        "message_uuid": "2f7c5e8a-6d36-4e3a-98d9-9f1b3b0a1a10",
        "emoji": "❤️",
        "actor": {
            "uuid": "fan-uuid",
            "email": null,
            "display_name": "Jane D",
            "handle": "janed"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "fan": {
            "uuid": "fan-uuid",
            "email": null,
            "display_name": "Jane D",
            "handle": "janed"
        },
        "created_at": "2026-06-09T08:39:33.139Z",
        "metadata": {}
    }
}
```

### `fanvue.chat.marked_unread`

You marked a conversation unread. No message's read state changes.

Fanvue reference: [Chat state](https://api.fanvue.com/docs/creator/chat)

```json title="Example payload"
{
    "event": "fanvue.chat.marked_unread",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "chat_unread_marker",
        "marked_at": "2026-06-09T08:52:17.106Z",
        "unread_messages_count": 0,
        "fan": {
            "uuid": "fan-uuid",
            "email": null,
            "display_name": "Jane D",
            "handle": "janed"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "metadata": {}
    }
}
```

## Followers

### `fanvue.follow.created`

A fan followed your account.

Fanvue reference: [Engagement](https://api.fanvue.com/docs/creator/engagement)

```json title="Example payload"
{
    "event": "fanvue.follow.created",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "follow",
        "id": null,
        "created_at": "2026-06-09T08:39:33.139Z",
        "follower": {
            "uuid": "fan-uuid",
            "email": null,
            "handle": "janed",
            "display_name": "Jane D"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "metadata": {},
        "tracking": {
            "link_url": "https://fanvue.com/creator-handle?fvc=summer-campaign",
            "metadata": {
                "campaign": "summer",
                "source": "x"
            }
        }
    }
}
```

## Posts

### `fanvue.post.liked`

A fan liked one of your posts.

<Callout type="warn" title="High volume">
  Popular accounts can receive these continuously. Only subscribe if you actually process them, and make sure your endpoint can keep up.
</Callout>

Fanvue reference: [Engagement](https://api.fanvue.com/docs/creator/engagement)

```json title="Example payload"
{
    "event": "fanvue.post.liked",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "post",
        "id": null,
        "post_uuid": "217d5dc9-cae0-4c09-b643-2e3aa498587a",
        "comment_text": null,
        "actor": {
            "uuid": "fan-uuid",
            "email": null,
            "handle": "janed",
            "display_name": "Jane D"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "created_at": "2026-06-09T08:39:33.139Z",
        "metadata": {}
    }
}
```

### `fanvue.post.commented`

A fan commented on one of your posts.

Fanvue reference: [Engagement](https://api.fanvue.com/docs/creator/engagement)

```json title="Example payload"
{
    "event": "fanvue.post.commented",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "post",
        "id": "c0mment-uuid",
        "post_uuid": "217d5dc9-cae0-4c09-b643-2e3aa498587a",
        "comment_text": "Love this!",
        "actor": {
            "uuid": "fan-uuid",
            "email": null,
            "handle": "janed",
            "display_name": "Jane D"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "created_at": "2026-06-09T08:39:33.139Z",
        "metadata": {}
    }
}
```

## Fans

### `fanvue.fan.status_changed`

You muted or unmuted a fan.

Fanvue reference: [Fan status](https://api.fanvue.com/docs/creator/fan-status)

```json title="Example payload"
{
    "event": "fanvue.fan.status_changed",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "fan_status",
        "change_type": "mute",
        "state": "muted",
        "changed_at": "2026-06-09T08:39:33.139Z",
        "fan": {
            "uuid": "fan-uuid",
            "email": null,
            "handle": "janed",
            "display_name": "Jane D"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "metadata": {}
    }
}
```

### `fanvue.fan.presence_changed`

A fan came online or went offline.

<Callout type="warn" title="High volume">
  Fanvue sends one event per fan per online or offline transition. Only subscribe if you track presence, and compare `changed_at` with the state you already hold, because a retried event can arrive after the one that replaced it.
</Callout>

Fanvue reference: [Fan status](https://api.fanvue.com/docs/creator/fan-status)

```json title="Example payload"
{
    "event": "fanvue.fan.presence_changed",
    "account_id": "fanvue_acct_123",
    "payload": {
        "object": "fan_status",
        "change_type": "presence",
        "state": "online",
        "changed_at": "2026-06-09T08:39:33.139Z",
        "fan": {
            "uuid": "fan-uuid",
            "email": null,
            "handle": "janed",
            "display_name": "Jane D"
        },
        "creator": {
            "uuid": "creator-uuid"
        },
        "metadata": {}
    }
}
```