---
title: "List leaderboard participants"
method: GET
path: "/campaign/{id}/leaderboard"
tags: ["Participants"]
---

# List leaderboard participants

`GET /campaign/{id}/leaderboard`

Retrieves participants in leaderboard order for the specified leaderboard type.

## Path parameters

- `id` string, required

## Query parameters

- `nextId` string
- `limit` integer
- `isMonthly` boolean
- `leaderboardType` 'ALL_TIME' | 'CURRENT_MONTH' | 'PREV_MONTH' | 'TOTAL_IMPRESSION_COUNT' | 'UNIQUE_IMPRESSION_COUNT' | 'BY_COMMISSIONS' | 'BY_REVENUE' | 'BY_REFERRALS' | 'BY_LEADS'

## Response `200`

Leaderboard participants returned.

- ParticipantListResponse
  - `participants` Participant[], required
    - `id` string, required
    - `firstName` string, nullable
    - `lastName` string, nullable
    - `email` string, required
    - `paypalEmailAddress` string, email
    - `referralCount` integer, required
    - `monthlyReferralCount` integer, required
    - `prevMonthlyReferralCount` integer
    - `rank` integer, required
    - `monthlyRank` integer, required
    - `prevMonthlyRank` integer
    - `shareUrl` string, required
    - `createdAt` integer
    - `referralSource` 'DIRECT' | 'PARTICIPANT'
    - `referralStatus` 'CREDIT_PENDING' | 'CREDIT_AWARDED' | 'CREDIT_EXPIRED' | 'INVITE_SENT'
    - `referredBy` string
    - `fraudRiskLevel` 'LOW' | 'MEDIUM' | 'HIGH'
    - `fraudReasonCode` string
    - `isWinner` boolean
    - `shareCount` object
    - `impressionCount` integer
    - `uniqueImpressionCount` integer
    - `inviteCount` integer
    - `referrals` string[]
    - `monthlyReferrals` string[]
    - `referrer` ParticipantReferrer
      - `id` string
      - `firstName` string, nullable
      - `lastName` string, nullable
      - `email` string
      - `referralCount` integer
      - `monthlyReferralCount` integer
      - `prevMonthlyReferralCount` integer
      - `rank` integer
      - `monthlyRank` integer
      - `prevMonthlyRank` integer
      - `shareUrl` string
      - `createdAt` integer
      - `referralSource` 'DIRECT' | 'PARTICIPANT'
      - `referralStatus` 'CREDIT_PENDING' | 'CREDIT_AWARDED' | 'CREDIT_EXPIRED' | 'INVITE_SENT'
      - `fraudRiskLevel` 'LOW' | 'MEDIUM' | 'HIGH'
      - `fraudReasonCode` string
      - `isWinner` boolean
      - `shareCount` object
      - `impressionCount` integer
      - `uniqueImpressionCount` integer
      - `inviteCount` integer
      - `referrals` string[]
      - `monthlyReferrals` string[]
      - `ipAddress` string, nullable
      - `fingerprint` string, nullable
      - `metadata` Metadata — Shallow custom metadata object.
      - `unsubscribed` boolean
    - `ipAddress` string, nullable
    - `fingerprint` string, nullable
    - `mobileInstanceId` string, nullable — App-install scoped mobile identifier used for anti-fraud matching when provided by native mobile apps. The official mobile SDKs generate this as a lowercase UUID. Not stored when strict GDPR/CCPA mode is enabled.
    - `metadata` Metadata — Shallow custom metadata object.
    - `notes` string, nullable
    - `unsubscribed` boolean
    - `rewards` ParticipantReward[], required
      - `id` string, required
      - `rewardId` string, required
      - `status` 'PENDING' | 'FULFILLED', required
      - `unread` boolean
      - `approved` boolean
      - `approvedAt` integer, nullable
      - `fulfilledAt` integer, nullable
      - `isReferrer` boolean
      - `isAvailable` boolean
      - `isFulfilled` boolean
      - `referredId` string
      - `referrerId` string
      - `commissionStructure` CommissionStructure
        - `amount` integer, nullable
        - `event` string, nullable
        - `type` 'PERCENT' | 'AMOUNT' | 'null', nullable
        - `minPaidReferrals` integer, nullable
        - `holdDuration` integer, nullable
        - `duration` string, nullable
        - `durationInMonths` integer, nullable
        - `approvalRequired` boolean, nullable
        - `percent` number, nullable
        - `hasMaxAmount` boolean, nullable
        - `maxAmount` integer, nullable
        - `maxAmountISO` string, nullable
        - `hasIntro` boolean, nullable
        - `introType` string, nullable
        - `introPercent` number, nullable
        - `introAmount` integer, nullable
        - `introAmountISO` string, nullable
        - `introDuration` string, nullable
        - `introDurationInMonths` integer, nullable
    - `vanityKeys` string[]
    - `unreadCommissionsCount` integer
    - `unreadPayoutsCount` integer
    - `isNew` boolean
    - `allMatchingFraudsters` object[]
    - `payoutSettings` object — Payout-related actions the participant must complete before a payout can be released (e.g. confirming a PayPal email or submitting a W-9/W-8 tax form). Always present; the requiredActions array is empty when no action is required.
      - `requiredActions` string[]
  - `limit` integer, required
  - `nextId` string, nullable, required

## Other responses

- `400` — Invalid request.
- `401` — Authorization is missing or invalid.
- `403` — The API key is not allowed to perform this action.
- `404` — Resource not found.
- `422` — Request is not valid for the current program or participant state.
- `429` — Too many requests.

---

[API](https://skmtc.net/growsurf/apis/growsurf-rest-api.md) · [All operations](https://skmtc.net/growsurf/apis/growsurf-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/growsurf/growsurf-rest-api/revisions/26f06e273394/schema)
