---
title: "List tags"
method: GET
path: "/tags"
tags: ["Tags"]
---

# List tags

`GET /tags`

## Request

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

Retrieves paginated tags scoped to the active organization.

## Query parameters

- `page` number: Page number (1-based index)
- `perPage` number: Number of items per page (1-100)
- `sortCol` string: Sort column
- `sortDir` 'asc' | 'desc': Sort direction
- `search` string
- `scopes` string[], nullable: Tag scopes

## Response `200`

OK

- object
  - `data` object[], required
    - `id` string, required
    - `name` string, required
    - `description` string, nullable, required
    - `scope` 'system' | 'org' | 'project', required
    - `kind` string, nullable, required
    - `refId` string, nullable, required
    - `continentCode` string, nullable, required
    - `continentName` string, nullable, required
    - `color` string, nullable, required: Tag color in hex format
    - `logo` string, nullable, required
    - `visibleToCreators` boolean, required: Whether creators see this tag's name where it decides their pay (campaign payout conditions). When false, creators see “videos the brand selects” instead. Country and continent tags are always visible.
    - `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
    - `accountCount` integer, required
    - `videoCount` integer, required
    - `creativeCount` integer: Active creatives (the same video posted to several platforms, grouped in Analytics → Videos → Creatives; excluded ones left out) that carry the tag as their own: every copy of each carries it, and those copies count in videoCount
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, 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)
