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

# List Campaign Contacts

> Returns the Campaign Contacts corresponding to the given identifier

<Info>
  **Rate Limit:** 12 requests per second
</Info>

## Status Values by Campaign Type

<Tabs>
  <Tab title="Phone Campaigns">
    * `queue` — Contact is waiting in queue
    * `sending` — Call is being initiated
    * `failed` — Call failed to connect
    * `retrying` — Scheduled for retry
    * `converted` — Contact was converted
    * `voicemail` — Reached voicemail
    * `answered` — Call was answered
  </Tab>

  <Tab title="WhatsApp Campaigns">
    * `queue` — Message is queued
    * `sending` — Message is being sent
    * `sent` — Message was sent
    * `delivered` — Message was delivered
    * `read` — Message was read
    * `accepted` — Contact accepted
    * `rejected` — Contact rejected
    * `failed` — Message failed
    * `retrying` — Scheduled for retry
    * `converted` — Contact was converted
  </Tab>
</Tabs>


## OpenAPI

````yaml GET /campaigns/{id}/contacts
openapi: 3.0.1
info:
  title: Altur API
  description: >-
    An API aimed to allow third-party developers to interact with the Altur
    platform through a RESTful interface.
  license:
    name: MIT
  version: '1.0'
servers:
  - url: https://api.altur.io/api/v1.0
security:
  - apiKeyAuth: []
paths:
  /campaigns/{id}/contacts:
    get:
      description: Returns the Campaign Contacts corresponding to the given identifier
      parameters:
        - name: id
          in: path
          description: The identifier of the Campaign to return the Contacts
          schema:
            type: integer
          required: true
        - name: status
          in: query
          description: Filters the Campaign Contacts by the Status of the Campaign Contact
          schema:
            type: string
            enum:
              - queue
              - sending
              - sent
              - delivered
              - voicemail
              - read
              - failed
              - retrying
              - converted
              - answered
              - accepted
              - rejected
          required: false
        - name: pageSize
          in: query
          description: Number of items per page to return.
          schema:
            type: integer
            default: 50
            minimum: 1
            maximum: 100
          required: false
        - name: pageIndex
          in: query
          description: Page number to the next page to return.
          schema:
            type: integer
            default: 0
            maximum: 25000
            minimum: 0
          required: false
      responses:
        '200':
          description: Campaign Contacts response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignContactsResponse'
        '400':
          description: Invalid input
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DRFBadRequestError'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Campaign not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    CampaignContactsResponse:
      type: object
      properties:
        total_count:
          description: >-
            Total number of Campaign Contacts for the given query. NOTE: Only
            calculated in the first page.
          type: integer
        contacts:
          type: array
          items:
            $ref: '#/components/schemas/CampaignContact'
        pagination:
          $ref: '#/components/schemas/OffsetPagination'
          type: object
    DRFBadRequestError:
      type: object
      description: >-
        Validation error response where each field name that has an error is a
        property containing an array of error messages
      additionalProperties:
        type: array
        items:
          type: string
      example:
        field1:
          - This field is required.
        field2:
          - Incorrect format.
        non_field_errors:
          - The date range is not valid.
    Error:
      required:
        - error
        - message
      type: object
      properties:
        error:
          type: integer
          format: int32
        message:
          type: string
    CampaignContact:
      type: object
      properties:
        f_id:
          description: Unique External identifier for the Campaign Contact
          type: string
        id:
          description: Unique identifier for the Campaign Contact
          type: integer
        name:
          description: Name of the Campaign Contact
          type: string
        contact:
          description: Phone number of the contact
          type: string
        status:
          description: Status of the Campaign Contact
          type: string
        context:
          description: Context of the Campaign Contact
          type: string
        retries:
          description: Voicemail retries of the Campaign Contact
          type: integer
        has_follow_up:
          description: Boolean describing if the Campaign Contact has a follow up scheduled
          type: boolean
        call_count:
          description: Number of calls made to the Campaign Contact
          type: integer
        billed_duration:
          description: The total billed duration of the Campaign Contact Calls in seconds
          type: integer
          example: 270
        last_call_at:
          description: The datetime of the last call made to the Campaign Contact
          type: string
          example: '2025-10-03 19:11:39'
        extracted_data:
          description: Extracted data of the Campaign Contact
          type: object
          example:
            monto_prometido: '1000'
            fecha_limite: 01-01-2025
        tags:
          description: Tags assigned to the Campaign Contact
          type: array
          items:
            type: string
          example:
            - tag1
            - tag2
    OffsetPagination:
      type: object
      description: >-
        Filters are applied to each request independently. Changing filters
        while paginating may result in gaps or overlaps in the result set. For
        consistent results, maintain the same filters throughout pagination.
      properties:
        has_next:
          type: boolean
          description: Boolean describing if there are more items to fetch
        has_previous:
          type: boolean
          description: Boolean describing if there are previous items to fetch
        next_page:
          type: integer
          description: >-
            Page Index to the next page to return. Can be null if there are no
            more pages.
        previous_page:
          type: integer
          description: >-
            Page Index to the previous page to return. Can be null if there are
            no previous pages.
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Add `api-key YOUR_API_SECRET_KEY` as the value of the `Authorization`
        header.

````