> ## 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 (v1 legacy)

> Compatibility reference for the original v1 campaign creator response.

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

Returns the original campaign creator record used by existing SDK v1 clients.
The response includes creator profile, role, media, payout, contract, and
operational fields in one object.

<Info>
  Existing clients can continue using this endpoint without changing their
  response parsing. Use the [v2 creator list](/campaign-creators/list) for new
  integrations and a smaller response.
</Info>

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

### Query parameters

* `page` (optional): page number, starting at `1`. Default: `1`.
* `limit` (optional): creators per page. Default: `100`; maximum: `100`.
* `startDate` and `endDate` (optional): an inclusive `YYYY-MM-DD` range. Send
  both or neither.
* `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`, `totalShares`, or `cpmResultValue`.
* `sortOrder` (optional): `asc` or `desc`.

The v1 endpoint always returns the legacy record. It does not project the
response with a `fields` parameter.

### Response fields

Each item may include:

* Creator: `creatorName`, `creatorProfileId`, `creatorImage`, `creatorEmail`,
  `isVerified`, `isRetainer`, `isHidden`, `testPhaseCreator`,
  `campaignCreatorRecordId`
* Role: `roleName`, `rolePay`, `rolePayFrequency`,
  `rolePayFrequencyTimePeriod`, `roleColor`
* Payment: `payoutType`, `campaignPaymentStatus`, `pendingValue`,
  `pendingManualBonusValue`, `spentValue`, `currency`, `invoiceId`,
  `hasCancelledPayout`, `installments`
* Media and performance: `contentUrls`, `mediaCount`, `totalViews`,
  `totalLikes`, `totalComments`, `totalShares`, `cpmResultValue`
* Contract: `contractId`, fixed-rate, CPM, crosspost, bonus, pay-cycle, and
  payment-template fields
* Operational: fixed-media history, sheet-sync overrides, accrual cutoff, and
  score-calculation state

Fields without a value may be `null` or omitted.

### Example response

```json theme={null}
{
  "success": true,
  "data": [
    {
      "creatorName": "Jordan Lee",
      "creatorProfileId": "CP_123",
      "creatorImage": "https://example.com/jordan.jpg",
      "creatorEmail": "jordan@example.com",
      "isVerified": true,
      "isRetainer": false,
      "isHidden": false,
      "payoutType": "HYBRID",
      "campaignPaymentStatus": "PARTIALLY_PAID",
      "pendingValue": 550,
      "spentValue": 300,
      "currency": "USD",
      "contentUrls": ["https://www.tiktok.com/@jordan/video/123"],
      "mediaCount": 4,
      "totalViews": 50000,
      "totalLikes": 3000,
      "totalComments": 200,
      "totalShares": 100,
      "fixedRate": 300,
      "performanceRate": 5,
      "campaignCreatorRecordId": "CCR_123"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 100,
    "total": 1,
    "totalPages": 1
  },
  "effectiveTimeZone": "America/New_York"
}
```

`effectiveTimeZone` is the IANA timezone Grade uses for campaign business
dates after applying the campaign override, agency fallback, and final `UTC`
fallback.

### Common errors

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