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

# List campaign creators (v2)

> List campaign creators with the compact v2 response, selected fields, date-scoped performance, and pagination.

## GET /sdk/v2/campaigns/:campaignId/creators

Returns the creators in one campaign. Use `fields` to request only the data your
application needs. Every response includes `campaignId`,
`campaignCreatorRecordId`, and `creatorProfileId` so you can use the creator in
the other campaign endpoints.

<Info>
  Use this v2 endpoint for new integrations. The [v1 creator list](/campaign-creators/list-v1)
  remains available with its original response for existing clients.
</Info>

All requests require `X-Application-Id` and `X-Api-Key`.

### Path parameter

* `campaignId` (required): the campaign to list.

### Query parameters

* `page` (optional): page number, starting at `1`. Default: `1`.
* `limit` (optional): creators per page. Default: `100`; maximum: `500`.
* `fields` (optional): comma-separated response fields.
* `startDate` and `endDate` (optional): an inclusive `YYYY-MM-DD` range. Send
  both or neither. The maximum range is 366 days.
* `search` or `query` (optional): searches creator names and email addresses.
* `includeHidden` (optional): set to `true` to include hidden campaign creators.
* `sortBy` (optional): `creatorName`, `totalViews`, `totalLikes`,
  `totalComments`, or `totalShares`.
* `sortOrder` (optional): `asc` or `desc`.

When you use a date range, performance totals and `pendingValue` are calculated
for that range. Current contract fields still describe the contract active
today. Date-scoped results can only be sorted by `creatorName`.

### Available fields

* Identity: `campaignId`, `campaignCreatorRecordId`, `creatorProfileId`,
  `creatorName`, `creatorEmail`, `isVerified`, `hidden`
* Payment: `pendingValue`, `currency`, `payoutType`, `fixedRate`,
  `performanceRate`
* Performance: `totalPosts`, `totalViews`, `totalLikes`, `totalComments`,
  `totalShares`, `lastCalculatedAt`
* Contract: `currentContract`, `nextScheduledContract`

If you omit `fields`, the response includes identity, pending payment,
performance, current contract, and next scheduled contract data.

### Example request

```bash theme={null}
curl -sS "$BASE_URL/sdk/v2/campaigns/camp_123/creators?page=1&limit=100&fields=creatorName,creatorEmail,pendingValue,currency,totalViews,currentContract&startDate=2026-07-01&endDate=2026-07-31" \
  -H "X-Application-Id: $APP_ID" \
  -H "X-Api-Key: $API_KEY"
```

### Response

```json theme={null}
{
  "success": true,
  "data": [
    {
      "campaignId": "camp_123",
      "campaignCreatorRecordId": "CCR_123",
      "creatorProfileId": "CP_123",
      "creatorName": "Jordan Lee",
      "creatorEmail": "jordan@example.com",
      "pendingValue": 550,
      "currency": "USD",
      "totalViews": 50000,
      "currentContract": {
        "effectiveDate": "2026-07-01",
        "contract": {
          "type": "HYBRID",
          "currency": "USD",
          "fixedPayment": {
            "currency": "USD",
            "conversionPolicy": null,
            "amount": 300,
            "per": "CREATOR",
            "calculation": "STANDARD",
            "upfrontPercentage": null,
            "expectedPosts": null,
            "minimumPosts": null,
            "prorateByTime": false,
            "platforms": [],
            "crossposts": null
          },
          "cpmPayment": {
            "currency": "USD",
            "conversionPolicy": null,
            "rate": 5,
            "perViews": 1000,
            "viewsFrom": "POST",
            "minimumViews": 0,
            "maximumViews": null,
            "excludeMinimumViews": false,
            "maximumSpend": null,
            "crossposts": "EACH_POST",
            "pays": "NOW"
          },
          "bonusPayment": null,
          "crosspostRequirements": null,
          "recurringPayment": null,
          "postsUploadedOnOrAfter": null
        }
      }
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 100,
    "total": 1,
    "totalPages": 1
  },
  "dateRange": {
    "startDate": "2026-07-01",
    "endDate": "2026-07-31"
  },
  "effectiveTimeZone": "America/New_York"
}
```

`effectiveTimeZone` is the IANA timezone Grade uses for the campaign after
applying the campaign override, agency fallback, and final `UTC` fallback. Use
it when interpreting business dates in campaign payment and contract data.

### Common errors

* `400`: unsupported field, invalid pagination, or invalid date range
* `401`: missing or invalid SDK credentials
* `404`: campaign not found

Use the returned `campaignCreatorRecordId` to [preview a payout](/campaign-creators/payout-preview),
[read line items](/campaign-creators/line-items), or
[read contract history](/campaign-creators/contract-history).
