# campaignCreators

Query

Paginate one campaign's roster, newest first, with each creator's campaign-specific custom attributes. An unknown campaign ID, or one from another workspace, returns a `NOT_FOUND` error. Paging is offset-based: rows added or removed between pages can be skipped or returned twice.

Available to agents as MCP tool `getCampaignCreators` — see [Read tools](/api/v2/docs/mcp/read-tools#get-campaign-creators).

## Arguments

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `after` | `String` | No | `null` | Cursor for fetching the next page of results. |
| `campaignId` | `ID!` | Yes | — | ID of the campaign whose roster to page through (as returned by `campaigns`). |
| `customAttributeConditions` | [`[CustomAttributeConditionInput!]`](/api/v2/docs/types/custom-attribute-condition-input) | No | `[]` | Conditions on the campaign creator custom attributes, combined with AND. Read the keys with `customAttributeSchemas(entity: CAMPAIGN_CREATOR)`. Three creator-level fields are also accepted: `labels`, `creator_name` and `posting_activity` (IS or IS_NOT, value "posted" or "not_posted"). Each of these three takes one condition at most. `post_date` and `collections` are refused with `UNSUPPORTED_CUSTOM_ATTRIBUTE_CONDITION`. |
| `first` | `Int` | No | `20` | Number of campaign creators to return (page size). |
| `sorting` | [`[CampaignCreatorSortingInput!]`](/api/v2/docs/types/campaign-creator-sorting-input) | No | `[{sortKey: ADDED_AT, sortOrder: DESC}]` | Sorting instructions to apply to the roster. Ties break on the roster entry ID. |

## Returns

A paginated connection of [`CampaignCreator`](/api/v2/docs/types/campaign-creator) nodes. See [Pagination](/api/v2/docs/types/pagination) for the connection shape.

## Examples

### Page a campaign's roster

Read each roster creator with the date they joined and their campaign-specific attributes.

```graphql
query CampaignCreatorsDefault($campaignId: ID!, $first: Int, $after: String) {
  campaignCreators(campaignId: $campaignId, first: $first, after: $after) {
    totalCount
    edges {
      node {
        id
        addedAt
        customAttributes
        creator {
          id
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}
```

Variables:

```json
{
  "campaignId": "422fac58-557c-5cd4-8986-84ac3db4b133",
  "first": 20
}
```

Response — HTTP 200:

```json
{
  "data": {
    "campaignCreators": {
      "totalCount": 3,
      "edges": [
        {
          "node": {
            "id": "959daa0a-069a-583a-b340-f91de3bfef6f",
            "addedAt": "2024-12-31T23:00:00Z",
            "customAttributes": {
              "status": "not_posted"
            },
            "creator": {
              "id": "13d02f43-65cb-55fb-a558-a89100226d58"
            }
          }
        },
        {
          "node": {
            "id": "3724d187-21e8-55d1-9c1f-def3443116b0",
            "addedAt": "2024-12-31T22:00:00Z",
            "customAttributes": {
              "status": "not_posted"
            },
            "creator": {
              "id": "c36d2c62-26da-5c7b-b198-b8f028209c4f"
            }
          }
        },
        {
          "node": {
            "id": "4284d871-3dff-5205-b40d-50c5ce9a88a6",
            "addedAt": "2024-12-31T21:00:00Z",
            "customAttributes": {
              "status": "not_posted"
            },
            "creator": {
              "id": "01f0f8f3-97dd-597c-8cc1-cf75eaabddb0"
            }
          }
        }
      ],
      "pageInfo": {
        "hasNextPage": false,
        "endCursor": null
      }
    }
  }
}
```
