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

# List Campaign Clicks

> Get a paginated list of contacts who clicked a link in a specific campaign.

Each row carries the contact's encrypted id, email, name, the tags currently assigned to the contact, the lists the contact currently belongs to (with their ids and names), and the time of the click in your account timezone.

Each contact appears at most once in the response. If a contact clicked more than once, the time shown is the most recent click.



## OpenAPI

````yaml /openapi-v1.json post /campaign/{id}/clicks
openapi: 3.1.0
info:
  title: Mailercloud Marketing API
  version: 1.0.0
  description: >-
    Campaigns, contacts, lists, segments, automations, and webhooks for the
    Mailercloud Marketing Platform.
servers:
  - url: https://cloudapi.mailercloud.com/v1
security:
  - apiKey: []
tags:
  - name: Campaigns
  - name: Contacts
  - name: Lists
  - name: Tags
  - name: Segments
  - name: Custom Properties
  - name: Senders
  - name: Templates
  - name: Automations
  - name: Webhooks
  - name: Webforms
  - name: Inbox Tracker
  - name: Account
paths:
  /campaign/{id}/clicks:
    post:
      tags:
        - Campaigns
      summary: List Campaign Clicks
      description: >-
        Get a paginated list of contacts who clicked a link in a specific
        campaign.


        Each row carries the contact's encrypted id, email, name, the tags
        currently assigned to the contact, the lists the contact currently
        belongs to (with their ids and names), and the time of the click in your
        account timezone.


        Each contact appears at most once in the response. If a contact clicked
        more than once, the time shown is the most recent click.
      operationId: list-campaign-clicks
      parameters:
        - name: id
          in: path
          required: true
          description: Encrypted campaign id
          schema:
            type: string
        - name: Content-Type
          in: header
          required: true
          description: Request body type
          schema:
            type: string
            default: application/json
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - page
                - limit
              properties:
                page:
                  type: integer
                  minimum: 1
                  description: |-
                    Page number (1-indexed).

                    Minimum: 1
                limit:
                  type: integer
                  minimum: 1
                  maximum: 100
                  description: |-
                    Maximum rows per page.

                    Minimum: 1
                    Maximum: 100
                date_from:
                  type: string
                  description: >-
                    Optional. Only return clicks on or after this date. Format
                    `YYYY-MM-DD`, interpreted in your account timezone.
                date_to:
                  type: string
                  description: >-
                    Optional. Only return clicks on or before this date. Format
                    `YYYY-MM-DD`, interpreted in your account timezone. Must be
                    on or after `date_from`.
            examples:
              Example-1---Default:
                value:
                  page: 1
                  limit: 25
              Example-2---With-date-filter:
                value:
                  page: 1
                  limit: 50
                  date_from: '2026-01-01'
                  date_to: '2026-01-31'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  campaign:
                    type: object
                    properties:
                      name:
                        type: string
                        description: Campaign name.
                      subject_line:
                        type: string
                        description: Campaign subject line.
                      created_date:
                        type: string
                        description: >-
                          Campaign creation date and time. Format: `YYYY-MM-DD
                          HH:mm:ss` in your account timezone.
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        contact_id:
                          type: string
                          description: >-
                            Encrypted contact id (use with `GET
                            /v1/contacts/{id}`).
                        email:
                          type: string
                          description: Contact email.
                        first_name:
                          type: string
                          description: Contact first name.
                        last_name:
                          type: string
                          description: Contact last name.
                        tags:
                          type: array
                          items:
                            type: string
                          description: >-
                            Names of the tags currently assigned to the contact.
                            Empty array when the contact has no tags.
                        lists:
                          type: string
                          description: >-
                            Comma-separated encrypted ids of the lists the
                            contact currently belongs to. The literal string
                            `"no lists"` when the contact belongs to no lists.
                        list_name:
                          type: string
                          description: >-
                            Comma-separated names of the lists the contact
                            currently belongs to. Each list appears only once.
                            The literal string `"no lists"` when the contact
                            belongs to no lists.
                        created_date:
                          type: string
                          description: >-
                            Time of the click. Format: `YYYY-MM-DD HH:mm:ss` in
                            your account timezone.
                  total:
                    type: integer
                    description: >-
                      Total number of contacts who clicked the campaign,
                      ignoring pagination.
              examples:
                Example-1:
                  value:
                    campaign:
                      name: May newsletter
                      subject_line: Big update inside
                      created_date: '2026-05-10 11:30:00'
                    data:
                      - contact_id: SuwESEuwZy
                        email: alice@example.com
                        first_name: Alice
                        last_name: Anderson
                        tags:
                          - VIP
                        lists: SuSwZS
                        list_name: Newsletter Subscribers
                        created_date: '2026-05-15 08:50:33'
                    total: 217
                Example-2---Empty-result:
                  value:
                    campaign:
                      name: May newsletter
                      subject_line: Big update inside
                      created_date: '2026-05-10 11:30:00'
                    data: []
                    total: 0
        '400':
          description: Bad Request - validation failure
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                        message:
                          type: string
              examples:
                Limit-too-high:
                  value:
                    errors:
                      - field: limit
                        message: Limit must be 100 or less
                Bad-date-format:
                  value:
                    errors:
                      - field: date_from
                        message: Invalid date_from
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                        message:
                          type: string
              examples:
                Example-1:
                  value:
                    errors:
                      - field: ''
                        message: Authorization failed
        '404':
          description: Not Found - the campaign id does not exist in your account
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                        message:
                          type: string
              examples:
                Example-1:
                  value:
                    errors:
                      - field: id
                        message: Campaign not found
        '429':
          description: Too Many Requests - rate limit exceeded
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              examples:
                Example-1:
                  value:
                    message: Too Many Requests
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              examples:
                Example-1:
                  value:
                    message: >-
                      Sorry, we are experiencing some technical difficulties.
                      Please try after some time.
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Your Mailercloud API key (plain text, no Bearer prefix). Create keys in
        Settings → API.

````