---
title: "List all creators with user information"
method: GET
path: "/creators"
tags: ["Creators"]
---

# List all creators with user information

`GET /creators`

## Request

- Base URL: `https://viral.app/api/v1`
- URL: `https://viral.app/api/v1/creators`
- Auth: API key in header `x-api-key`

Retrieves paginated creators with comprehensive user data including names, emails, and profile information. Supports searching by creator name or email address. Returns creator metadata with associated user details for organization management, campaign assignment, and collaboration workflows.

## Query parameters

- `page` number: Page number (1-based index)
- `perPage` number: Number of items per page (1-100)
- `sortCol` union: Sort column
  - 'name' | 'status' | 'email' | 'firstName' | 'lastName' | 'createdAt' | 'updatedAt'
  - string
- `sortDir` 'asc' | 'desc': Sort direction
- `search` string
- `ids` string[]: Filter by creator IDs.
- `campaigns` string[]: Filter by the creator's latest campaign assignment.
- `statuses` string[]
- `tags` string[], nullable: Tag IDs. Custom and project tags must all match (intersection); country tags and `continent:<CODE>` values combine into one geographic group satisfied by any of them. `none:<category>` values (custom/project/country/continent) match entities WITHOUT any tag of the category. Ignored when `tagGroups` is provided.
- `tagGroups` object[], nullable: Advanced tag filter: groups combine with AND; within a group `any` matches videos carrying at least one of the tags, `all` requires every tag. `none:<category>` ids match videos without any tag of the category. Takes precedence over `tags` when provided. Also accepts the compact string form `all:orgtag_a,orgtag_b;any:systag_de,continent:EU`.
  - `mode` 'any' | 'all', required: How the group's tags combine: `any` = OR, `all` = intersection.
  - `ids` string[], required: Tag IDs, including `continent:<CODE>` and `none:<category>` values.
- `tagsMatch` 'rules' | 'videos': How the tag filter targets rows: `rules` (default) matches entity-level tag rules only; `videos` matches rows with at least one video satisfying the whole filter.

## Response `200`

OK

- object
  - `data` object[], required
    - `id` string, required
    - `creatorUserId` string, required
    - `notes` string, nullable, required
    - `sourceApplicationId` string, nullable, required
    - `sourceJobId` string, nullable, required
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `deletedAt` string, date-time, nullable, required
    - `actorType` 'user' | 'system' | 'api_token', required
    - `userId` string, required
    - `orgId` string, required
    - `user` object, required
      - `id` string, required
      - `name` string, required
      - `email` string, required
      - `emailVerified` boolean, required
      - `image` string, nullable, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `role` string, nullable, required
      - `banned` boolean, nullable, required
      - `banReason` string, nullable, required
      - `banExpires` string, date-time, nullable, required
      - `firstName` string, required
      - `lastName` string, required
      - `creatorContactProfileId` string, nullable, required
      - `creatorDiscoveryProfileId` string, nullable, required
      - `affiliateDashboardFirstOpenedAt` string, date-time, nullable, required
      - `isCreator` boolean, required
    - `createdByUser` object, nullable
      - `id` string, required
      - `name` string, required
      - `email` string, required
      - `emailVerified` boolean, required
      - `image` string, nullable, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `role` string, nullable, required
      - `banned` boolean, nullable, required
      - `banReason` string, nullable, required
      - `banExpires` string, date-time, nullable, required
      - `firstName` string, required
      - `lastName` string, required
      - `creatorContactProfileId` string, nullable, required
      - `creatorDiscoveryProfileId` string, nullable, required
      - `affiliateDashboardFirstOpenedAt` string, date-time, nullable, required
      - `isCreator` boolean, required
    - `creatorProfile` object, nullable
      - `id` string, required
      - `address` string, nullable, required
      - `city` string, nullable, required
      - `postalCode` string, nullable, required
      - `countryCode` string, nullable, required
      - `phoneNumber` string, nullable, required
      - `dateOfBirth` string, nullable, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
    - `member` object, nullable
      - `id` string, required
    - `invitation` object, nullable
      - `id` string, required
      - `expiresAt` string, date-time, required
      - `status` 'pending' | 'accepted' | 'rejected' | 'canceled', required
    - `status` 'not invited' | 'invitation sent' | 'invitation rejected' | 'joined', required
    - `creatorStatus` 'active' | 'archived', required
    - `isMarketplaceCreator` boolean
    - `accounts` object[], required
      - `id` string, required
      - `platform` 'facebook' | 'instagram' | 'tiktok' | 'youtube' | 'snapchat', required
      - `platformAccountId` string, required
      - `isCompetitor` boolean
      - `username` string, nullable, required
      - `displayName` string, nullable
      - `analyticsDataRefreshedAt` string, nullable
    - `tags` object[]
      - `id` string, required
      - `name` string, required
      - `description` string, nullable, required
      - `scope` 'system' | 'org' | 'project', required: Tag scope
      - `color` string, nullable, required: Tag color in hex format
      - `kind` string, nullable, required
      - `refId` string, nullable, required
      - `logo` string, nullable, required
    - `accountTags` object[]
      - `id` string, required
      - `name` string, required
      - `description` string, nullable, required
      - `scope` 'system' | 'org' | 'project', required: Tag scope
      - `color` string, nullable, required: Tag color in hex format
      - `kind` string, nullable, required
      - `refId` string, nullable, required
      - `logo` string, nullable, required
      - `accountCount` integer, required
    - `activeCampaign` object, nullable
      - `value` string, required
      - `label` string, required
    - `activeCampaignEndsAt` string, nullable
    - `campaignDisplay` object, nullable
      - `assignmentId` string
      - `id` string, required
      - `name` string, required
      - `status` 'upcoming' | 'active' | 'closing' | 'ended', required: Campaign lifecycle status derived from validity window. upcoming: validFrom in the future; active: started with no end date; closing: started and has an end date in the present/future; ended: end date is in the past.
      - `currency` 'USD' | 'EUR' | 'CHF' | 'GBP' | 'CNY' | 'JPY' | 'KRW' | 'THB' | 'IDR' | 'VND' | 'RUB', nullable
      - `startDate` string, nullable, required
      - `endDate` string, nullable, required
      - `validFrom` string, nullable
      - `validUntil` string, nullable
      - `assignmentValidFrom` string, nullable
      - `assignmentValidUntil` string, nullable
      - `interval` 'day' | 'week' | 'month'
      - `intervalCount` integer
      - `billingAnchor` 'rolling' | 'fixed'
      - `timeZone` string: IANA time zone the campaign's periods and dates follow (a period ends at midnight in this zone). Views are still counted per UTC day.
      - `description` string, nullable
      - `customRates` boolean
    - `campaignProrationApplied` boolean, nullable
    - `upcomingCampaign` object, nullable
      - `assignmentId` string, required
      - `id` string, required
      - `name` string, required
      - `startDate` string, nullable, required
    - `hasPreviousCampaignAssignments` boolean
    - `warnings` union[]
      - union
        - object
          - `type` 'account_sync_error', required
          - `accounts` object[], required
            - `id` string, required: Organization account ID with orgacc_ prefix. Not the same as platform account ID.
            - `platform` 'facebook' | 'instagram' | 'tiktok' | 'youtube' | 'snapchat', required: Social media platform (facebook, instagram, tiktok, youtube, snapchat)
            - `platformAccountId` string, required: Native platform account id
            - `username` string, nullable, required
            - `maxVideos` integer, required
            - `errorCode` 'NOT_FOUND' | 'INVALID_DATA' | 'PRIVATE_CONTENT' | 'RESTRICTED' | 'UNSUPPORTED_CONTENT' | 'APPLE_REQUIRED_AGREEMENT' | 'APPLE_INVALID_VENDOR' | 'APPLE_INVALID_CREDENTIALS', required
            - `errorLastSeenAt` string, nullable, required
        - object
          - `type` 'no_account', required
        - object
          - `type` 'individual_tracking_only', required
          - `accounts` object[], required
            - `id` string, required: Organization account ID with orgacc_ prefix. Not the same as platform account ID.
            - `platform` 'facebook' | 'instagram' | 'tiktok' | 'youtube' | 'snapchat', required: Social media platform (facebook, instagram, tiktok, youtube, snapchat)
            - `platformAccountId` string, required: Native platform account id
            - `username` string, nullable, required
            - `maxVideos` integer, required
            - `individualVideoCount` integer, required
        - object
          - `type` 'tracking_paused', required
          - `accounts` object[], required
            - `id` string, required: Organization account ID with orgacc_ prefix. Not the same as platform account ID.
            - `platform` 'facebook' | 'instagram' | 'tiktok' | 'youtube' | 'snapchat', required: Social media platform (facebook, instagram, tiktok, youtube, snapchat)
            - `platformAccountId` string, required: Native platform account id
            - `username` string, nullable, required
            - `maxVideos` integer, required
            - `individualVideoCount` integer, required
  - `pageCount` number, required: Total number of pages
  - `totalRows` number, required: Total number of rows

## Other responses

- `400`: 400
- `401`: 401
- `402`: 402
- `404`: 404
- `408`: 408
- `429`: 429
- `500`: 500

---

[API](https://skmtc.dev/viral/apis/viral-app-api.md) · [All operations](https://skmtc.dev/viral/apis/viral-app-api/llms.txt) · [OpenAPI document](https://skmtc.dev/viral/apis/viral-app-api/revisions/31e97fa79ef1?raw)
