> ## 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 Unsubscribes

> Get a paginated list of contacts who unsubscribed via 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), the time of the unsubscribe in your account timezone, and the reason the contact gave (if any).



## OpenAPI

````yaml /openapi-v1.json post /campaign/{id}/unsubs
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}/unsubs:
    post:
      tags:
        - Campaigns
      summary: List Campaign Unsubscribes
      description: >-
        Get a paginated list of contacts who unsubscribed via 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), the time of the unsubscribe in
        your account timezone, and the reason the contact gave (if any).
      operationId: list-campaign-unsubscribes
      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 unsubscribes on or after this date.
                    Format `YYYY-MM-DD`, interpreted in your account timezone.
                date_to:
                  type: string
                  description: >-
                    Optional. Only return unsubscribes 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 unsubscribe. Format: `YYYY-MM-DD
                            HH:mm:ss` in your account timezone.
                        reason:
                          type: string
                          description: >-
                            Reason the contact gave when unsubscribing. Empty
                            string when no reason was provided. The literal
                            string `"Abuse"` when the contact reported the
                            campaign as spam instead of unsubscribing.
                  total:
                    type: integer
                    description: >-
                      Total number of contacts who unsubscribed from the
                      campaign, ignoring pagination.
              examples:
                Example-1---With-rows:
                  value:
                    campaign:
                      name: May newsletter
                      subject_line: Big update inside
                      created_date: '2026-05-10 11:30:00'
                    data:
                      - contact_id: SuwESEuwZZ
                        email: alice@example.com
                        first_name: Alice
                        last_name: Anderson
                        tags:
                          - VIP
                        lists: SuSwZS
                        list_name: Newsletter Subscribers
                        created_date: '2026-05-15 09:24:11'
                        reason: no longer interested
                      - contact_id: SuwESEuHaa
                        email: bob@example.com
                        first_name: Bob
                        last_name: ''
                        tags: []
                        lists: no lists
                        list_name: no lists
                        created_date: '2026-05-15 11:02:47'
                        reason: Abuse
                    total: 42
                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
                Date-range-invalid:
                  value:
                    errors:
                      - field: date_to
                        message: date_to must be on or after 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.

````