Webhooks

List Webhook Deliveries

Changed on

Retrieve the delivery history for a webhook — one record per delivery attempt, newest first.

Every attempt made against your endpoint is recorded, including intermediate retries, so a delivery that succeeded on its third try appears as three records sharing one delivery_uuid.

If your API key is restricted to specific accounts, only deliveries for those accounts are returned. Events that are not account-specific (such as data exports) are always included.

<aside class="warning">Delivery records are retained for <strong>7 days</strong> and pruned automatically. Anything older is no longer available through this endpoint.</aside>
get/api/webhooks/{webhook_id}/deliveries

Request

  • Base URL
    https://app.onlyfansapi.com
  • URL
    https://app.onlyfansapi.com/api/webhooks/{webhook_id}/deliveries
  • Auth
    HTTP bearer

Query parameters

date_startstring

Only return deliveries recorded at or after this time (ISO 8601 or date string). Must be a valid date.

Example:2026-01-01T00:00:00Z
date_endstring

Only return deliveries recorded at or before this time (ISO 8601 or date string). Must be a valid date.

Example:2026-01-07T23:59:59Z
event'messages.received' | 'messages.sent' | 'messages.ppv.unlocked' | 'messages.deleted' | 'messages.liked' | 'messages.unliked' | 'chat_queue.updated' | 'chat_queue.finished' | 'subscriptions.new' | 'subscriptions.renewed' | 'subscriptions.expired' | 'users.typing' | 'users.online' | 'users.offline' | 'posts.liked' | 'tips.received' | 'transactions.new' | 'notifications.new' | 'messages.unread_count_updated' | 'messages.priority_count_updated' | 'messages.unread_tips_count_updated' | 'calls.count_request_updated' | 'notifications.count_updated' | 'accounts.connected' | 'accounts.reconnected' | 'accounts.disconnected' | 'accounts.session_expired' | 'accounts.authentication_failed' | 'accounts.otp_code_required' | 'accounts.face_otp_required' | 'data_exports.calculating_credits' | 'data_exports.calculating_credits_failed' | 'data_exports.calculating_credits_completed' | 'data_exports.in_progress' | 'data_exports.completed' | 'data_exports.failed' | 'data_exports.cancelled' | 'fan_summary.completed' | 'media_uploads.completed' | 'media_uploads.failed' | 'fansly.messages.received' | 'fansly.messages.sent' | 'fansly.messages.deleted' | 'fansly.users.typing' | 'fansly.messages.read' | 'fansly.subscriptions.new' | 'fansly.tips.received' | 'fansly.transactions.new' | 'fansly.accounts.connected' | 'fansly.accounts.disconnected' | 'fansly.accounts.authentication_failed' | 'fansly.accounts.otp_code_required' | 'fansly.followers.new' | 'fansly.followers.removed' | 'fansly.subscriptions.expired' | 'fansly.posts.liked' | 'fansly.media.liked' | 'fansly.media.purchased' | 'fansly.payouts.created' | 'fansly.payouts.updated' | 'fansly.messages.reaction_added' | 'fansly.messages.reaction_removed' | 'fansly.posts.created' | 'fansly.posts.updated' | 'fansly.posts.deleted' | 'fansly.posts.pinned' | 'fansly.stories.purchased' | 'fansly.subscriptions.renewed' | 'fansly.accounts.alert' | 'fansly.fans.ignore_updated' | 'fansly.wallets.updated' | 'fansly.posts.expired' | 'fansly.chats.visibility_updated' | 'fansly.profiles.updated' | 'fansly.payouts.debited' | 'fansly.streams.updated' | 'fansly.accounts.updated' | 'fansly.posts.commented' | 'fanvue.subscription.activated' | 'fanvue.payment.succeeded' | 'fanvue.message.received' | 'fanvue.follow.created' | 'fanvue.subscription.renewed' | 'fanvue.subscription.deactivated' | 'fanvue.subscription.cancel_at_period_end_changed' | 'fanvue.reward.created' | 'fanvue.reward.reversed' | 'fanvue.refund.created' | 'fanvue.dispute.flagged' | 'fanvue.dispute.created' | 'fanvue.message.sent' | 'fanvue.message.mass_sent' | 'fanvue.message.read' | 'fanvue.message.read_by_fan' | 'fanvue.message.deleted' | 'fanvue.message.reaction' | 'fanvue.chat.marked_unread' | 'fanvue.post.liked' | 'fanvue.post.commented' | 'fanvue.fan.status_changed' | 'fanvue.fan.presence_changed' | 'fanvue.account.connected' | 'fanvue.account.disconnected' | 'fanvue.account.needs_reauth' | 'test-event'

Only return deliveries for this event type. See the List Available Events endpoint for all values.

Example:subscriptions.new
succeededboolean

Filter by outcome: true for delivered attempts, false for failed ones.

limitinteger

Rows per page (max 100). Default 25. Must be at least 1. Must not be greater than 100.

Example:25
offsetinteger

Pagination offset. Default 0. Must be at least 0.

Response

Example response

{
  "data": [
    {
      "id": 918274,
      "delivery_uuid": "9f1e2c4a-7b3d-4c1e-9a52-0f6b8d2e1a34",
      "event": "subscriptions.new",
      "attempt": 2,
      "succeeded": true,
      "status_code": 200,
      "error_type": null,
      "error_message": null,
      "idempotency_key": "evt_9c1f0a4b2d7e6f3a8b5c1d9e0f2a3b4c5d6e7f80",
      "url": "https://example.com/webhooks",
      "payload": {
        "event": "subscriptions.new",
        "account_id": "acct_abc123",
        "payload": {
          "id": 1234567,
          "user": {
            "id": 7654321,
            "name": "Jane Doe",
            "username": "janedoe"
          },
          "price": 9.99
        }
      },
      "redelivered_from": null,
      "created_at": "2026-01-07T12:04:21.000000Z"
    },
    {
      "id": 918273,
      "delivery_uuid": "9f1e2c4a-7b3d-4c1e-9a52-0f6b8d2e1a34",
      "event": "subscriptions.new",
      "attempt": 1,
      "succeeded": false,
      "status_code": 503,
      "error_type": "GuzzleHttp\\Exception\\ServerException",
      "error_message": "Server error: `POST https://example.com/webhooks` resulted in a `503 Service Unavailable` response",
      "idempotency_key": "evt_9c1f0a4b2d7e6f3a8b5c1d9e0f2a3b4c5d6e7f80",
      "url": "https://example.com/webhooks",
      "payload": {
        "event": "subscriptions.new",
        "account_id": "acct_abc123",
        "payload": {
          "id": 1234567,
          "user": {
            "id": 7654321,
            "name": "Jane Doe",
            "username": "janedoe"
          },
          "price": 9.99
        }
      },
      "redelivered_from": null,
      "created_at": "2026-01-07T12:04:11.000000Z"
    }
  ],
  "_pagination": {
    "next_page": null
  },
  "_meta": {
    "_credits": {
      "used": 0,
      "balance": 1000000016,
      "note": "Always"
    },
    "_cache": {
      "is_cached": false,
      "note": "Cache disabled for this endpoint"
    },
    "_rate_limits": {
      "limit_minute": 1000,
      "limit_day": 50000,
      "remaining_minute": 998,
      "remaining_day": 49996
    }
  }
}

Changes

    • info

      added the new enum value calls.count_request_updated to the query request parameter event

    • info

      added the new enum value messages.priority_count_updated to the query request parameter event

    • info

      added the new enum value messages.unread_count_updated to the query request parameter event

    • info

      added the new enum value messages.unread_tips_count_updated to the query request parameter event

    • info

      added the new enum value notifications.count_updated to the query request parameter event

    • info

      endpoint added