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

# Get All Contacts

> Retrieves all contacts who have submitted or been invited to the Call for Speakers (CFS) program for an event. CFS contacts are potential speakers with their profile information and submission status. Requires the `event_id` query parameter.



## OpenAPI

````yaml /api-reference/openapi.yaml get /cfs-contacts
openapi: 3.1.0
info:
  title: Swoogo API
  version: 1.0.0
  summary: REST API for the Swoogo event management platform
  description: >
    The Swoogo API provides programmatic access to manage events, registrants,
    sessions,

    speakers, sponsors, and related resources on the Swoogo event management
    platform.


    ## Authentication


    The API uses OAuth 2.0 with the **client credentials** grant type.


    1. **Get your credentials** — Log in to Swoogo and go to **My Profile > API
    Credentials**
       to find your consumer key and secret.
    2. **Encode credentials** — URL-encode the key and secret (RFC 1738),
    concatenate them
       with a colon (`key:secret`), then Base64-encode the result.
    3. **Request a token** — `POST /oauth2/token` with your encoded credentials
    in the
       `Authorization: Basic {encoded}` header and `grant_type=client_credentials` in the body.
    4. **Use the token** — Include `Authorization: Bearer {access_token}` on all
    subsequent requests.


    > Tokens expire after **30 minutes**. Request a new token when you receive a
    `401` response.


    ## Rate Limiting


    API requests are rate-limited to **2,000 requests per 10-minute window** per
    API credential.

    List endpoints cost **10 credits** per call; all other endpoints cost **1
    credit**.

    Rate limit status is returned in response headers:


    | Header | Description |

    |--------|-------------|

    | `X-Rate-Limit-Limit` | Maximum requests allowed in the current window |

    | `X-Rate-Limit-Remaining` | Requests remaining in the current window |

    | `X-Rate-Limit-Reset` | Seconds until the window resets |


    When the limit is exceeded, the API returns `429 Too Many Requests`.


    ## Pagination


    All list endpoints return paginated results in this envelope:


    ```json

    {
      "items": [...],
      "_links": { "self": { "href": "..." }, "first": { "href": "..." }, "last": { "href": "..." } },
      "_meta": { "totalCount": 95, "pageCount": 5, "currentPage": 1, "perPage": 20 }
    }

    ```


    Control pagination with these query parameters:


    | Parameter | Default | Max | Description |

    |-----------|---------|-----|-------------|

    | `page` | 1 | — | Page number (1-indexed) |

    | `per-page` | 20 | 1000 | Items per page. Capped at **200** when using
    `expand`. |


    Pagination metadata is also returned in `X-Pagination-*` response headers.


    ## Filtering and Sorting


    Use the `search` parameter to filter results. Combine multiple conditions
    with `&`.


    **Operators:** `=`, `!=`, `>`, `<`, `>=`, `<=`, `*contains*`,
    `*beginswith*`, `*endswith*`, `*in*`


    **Examples:**

    - `search=registration_status=confirmed` — exact match

    - `search=created_at>=2024-01-01` — date range

    - `search=last_name=*beginswith*Sm` — starts with "Sm"

    - `search=status=*in*confirmed|attended` — matches any value
    (pipe-separated)

    - `search=id>100&registration_status=confirmed` — multiple conditions (AND
    by default)


    Set `searchCondition=or` to match **any** condition instead of all.


    Use `sort` to order results. Prefix with `-` for descending:
    `sort=-created_at`.


    ## Field Selection and Expansion


    Use `fields` to request only the fields you need:
    `fields=id,email,first_name,last_name`.

    When omitted, a default subset of fields is returned.


    Use `expand` to include related objects in the response:
    `expand=homeAddress,sessions`.

    Each resource documents its available expand values. Using `expand` caps the
    page size at **200**.


    ## Errors


    All errors return a consistent JSON response:


    ```json

    {
      "name": "Not Found",
      "message": "The requested resource does not exist.",
      "code": 0,
      "status": 404
    }

    ```


    | Status | Meaning |

    |--------|---------|

    | `400` | Bad Request — invalid parameters or business rule violation |

    | `401` | Unauthorized — missing or expired bearer token |

    | `403` | Forbidden — valid token but insufficient permissions |

    | `404` | Not Found — resource does not exist or is not accessible |

    | `422` | Unprocessable Entity — validation errors on input fields |

    | `429` | Too Many Requests — rate limit exceeded |

    | `500` | Internal Server Error — unexpected server error |


    ## Webhooks


    Swoogo can send HTTP callbacks when resources are created, updated, or
    deleted.

    Configure webhooks via the API or the Swoogo UI. Supported trigger objects:

    `event`, `contact`, `registrant`, `speaker`, `sponsor`, `session`,

    `session_attendance`, `registrant_line_item`.


    Webhook payloads can be sent as `json` (application/json) or `post`
    (form-encoded).
  termsOfService: https://www.swoogo.com/terms
  contact:
    name: Swoogo Developer Support
    url: https://developer.swoogo.com
    email: dev@swoogo.com
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
servers:
  - url: https://api.swoogo.com/api/v1
    description: Production API server
  - url: https://local.swoogo.com/api/v1
    description: Local API server
security: []
tags:
  - name: Authentication
    description: Obtain and manage OAuth 2.0 bearer tokens for API access.
  - name: Events
    description: >-
      Events are the top-level resource in Swoogo. An event represents a
      conference, meeting, webinar, or other gathering. Most resources
      (registrants, sessions, speakers, sponsors) are scoped to an event via
      `event_id`. Use events to manage scheduling, capacity, registration
      windows, and event metadata.
  - name: Registrants
    description: >-
      Registrants are individuals who have registered for an event. Each
      registrant belongs to one event and carries a registration status, package
      selection, session choices, and financial data (fees, taxes, payments).
      Registrants can be checked in, emailed, approved/denied, and assigned to
      groups.
  - name: Sessions
    description: >-
      Sessions are individual agenda items within an event — talks, workshops,
      panels, or breaks. Sessions have scheduling (date, start/end time,
      timezone), capacity limits, location assignments, track categorization,
      and optional fees. Registrants select sessions during registration.
  - name: Speakers
    description: >-
      Speakers are presenters associated with event sessions. Each speaker has
      profile information (name, bio, company, photo) and can be linked to one
      or more sessions.
  - name: Sponsors
    description: >-
      Sponsors are organizations or individuals providing support for events.
      Sponsors have profile data, custom fields, and optional attendance
      tracking.
  - name: Contacts
    description: >-
      Contacts are people in your Swoogo CRM, independent of any specific event.
      Contacts can be linked to registrants across multiple events and managed
      via invitation lists.
  - name: Registrant Types
    description: >-
      Registration types (reg types) define categories of attendees for an event
      — such as "Attendee", "Exhibitor", or "VIP". Each reg type can have its
      own capacity, naming, and group size constraints.
  - name: Packages
    description: >-
      Packages define pricing tiers for event registration. A package specifies
      the fee amount, early bird pricing, and which sessions or features are
      included. Registrants select a package during registration.
  - name: Discount Codes
    description: >-
      Discount codes provide percentage or absolute discounts on registration
      fees. Codes can have capacity limits, group size requirements, and
      apply-to-all or selective targeting. Codes can be cloned to create
      variants.
  - name: Transactions
    description: >-
      Transactions record financial activity for registrants — payments,
      refunds, and credits. Supports offline payment types (credit card, wire
      transfer, check, cash, etc.) and integration with payment gateways.
  - name: Registrant Sessions
    description: >-
      Manage which sessions a registrant is enrolled in. Add or remove session
      assignments.
  - name: Registrant Session Waitlists
    description: >-
      Manage waitlist entries for sessions that are at capacity. Add or remove
      waitlist positions.
  - name: Registrant Groups
    description: >-
      Manage group registration assignments. Add or remove registrants from
      registration groups.
  - name: Registrant Line Items
    description: >-
      View itemized financial line items for registrant orders, including fees,
      taxes, and discounts.
  - name: Registrant Line Item Audits
    description: View the audit trail for changes to registrant line items.
  - name: Event Fields
    description: >-
      Manage custom fields on events. Create, update, and delete event-level
      custom field definitions.
  - name: Event Questions
    description: View event questions configured for registration forms.
  - name: Event Websites
    description: View websites associated with events.
  - name: Event Badges
    description: Manage event badges. Generate badge PDFs for registrants.
  - name: Event Folders
    description: View event folders used to organize events in the Swoogo dashboard.
  - name: Session Fields
    description: >-
      Manage custom fields on sessions. Create, update, and delete session-level
      custom field definitions.
  - name: Session Locations
    description: >-
      Manage physical or virtual locations where sessions take place. Locations
      can be assigned to sessions and include name, capacity, and address
      information.
  - name: Session Attendance
    description: Track and manage session attendance records for registrants.
  - name: Session Scans
    description: Record and manage check-in scans for session attendance.
  - name: Session Fees
    description: Manage pricing for individual sessions, including early bird rates.
  - name: Package Fees
    description: Manage pricing for packages, including early bird rates.
  - name: Tracks
    description: >-
      Tracks group related sessions into thematic categories (e.g., "Technical",
      "Business", "Keynotes"). Registrants can filter sessions by track.
  - name: Pages
    description: View pages associated with event websites.
  - name: Speaker Sessions
    description: >-
      Manage the association between speakers and sessions. Assign or remove
      speakers from sessions.
  - name: Sponsor Fields
    description: >-
      Manage custom fields on sponsors. Create, update, and delete sponsor-level
      custom field definitions.
  - name: Sponsor Attendance
    description: View sponsor attendance records for events.
  - name: Contact Fields
    description: View custom field definitions for contacts.
  - name: Invitation Lists
    description: >-
      Invitation lists are curated groups of contacts used for targeted event
      invitations and access control. Manage lists and their contact
      memberships.
  - name: Data Lists
    description: >-
      Data lists store reusable sets of key-value options used in custom fields
      (e.g., dropdown choices, checkbox options). Manage lists and their items.
  - name: Data List Items
    description: Manage individual items within a data list.
  - name: Call for Speaker Contacts
    description: Manage contacts who have submitted to a call for speakers program.
  - name: Call for Speaker Reviews
    description: Manage reviews of call for speaker submissions.
  - name: Call for Speaker Submissions
    description: Manage speaker submissions to a call for speakers program.
  - name: Images
    description: >-
      Upload, retrieve, and delete images associated with resources
      (registrants, speakers, sponsors, etc.).
  - name: Webhooks
    description: >-
      Configure HTTP callbacks that fire when resources are created, updated, or
      deleted. Webhooks support JSON and form-encoded payloads, custom headers,
      and retry logic.
  - name: Webhook Groups
    description: >-
      Organize webhooks into groups for easier management. A webhook group
      contains one or more webhooks that share common configuration.
paths:
  /cfs-contacts:
    get:
      tags:
        - Call for Speaker Contacts
      summary: Get All Contacts
      description: >-
        Retrieves all contacts who have submitted or been invited to the Call
        for Speakers (CFS) program for an event. CFS contacts are potential
        speakers with their profile information and submission status. Requires
        the `event_id` query parameter.
      operationId: getAllCfsContacts
      parameters:
        - name: event_id
          in: query
          required: true
          schema:
            type: integer
            example: 1
          description: >-
            integer - required - The ID of the event you want to retrieve
            contacts for
        - name: fields
          in: query
          required: true
          schema:
            type: string
            example: >-
              contact_id,created_at,event_id,id,language,reviewer,submitter,updated_at
          description: >-
            string - optional - Comma separated list of fields you want to
            return
        - name: expand
          in: query
          schema:
            type: string
            example: ''
          description: >-
            string - optional - Comma separated list of objects you want to
            return
        - name: search
          in: query
          schema:
            type: string
            example: reviewer=true
          description: >-
            string - optional - Filter conditions to narrow the results. Valid
            operators are =, !=, >=, <=, >, <, *contains*, *beginswith*,
            *endswith*
        - name: page
          in: query
          schema:
            type: string
            example: '1'
          description: integer - optional - The page of results you want to view
        - name: per-page
          in: query
          schema:
            type: string
            example: '5'
          description: >-
            integer - optional - The number of results per page (to a max of
            200)
        - name: sort
          in: query
          schema:
            type: string
            example: event_id
          description: >-
            string - optional - Sort the results (add - in front for opposite
            sort direction, e.g. "-id")
        - name: ids
          in: query
          schema:
            type: string
          description: >-
            Comma-separated list of IDs to retrieve. When provided, only records
            matching these IDs are returned. All values must be positive
            integers. Maximum 100 IDs per request.
          example: 1,2,3
      responses:
        '200':
          description: Response containing CFS contacts information.
          headers:
            x-rate-limit-limit:
              $ref: '#/components/headers/RateLimitLimit'
            x-rate-limit-remaining:
              $ref: '#/components/headers/RateLimitRemaining'
            x-rate-limit-reset:
              $ref: '#/components/headers/RateLimitReset'
            x-pagination-current-page:
              $ref: '#/components/headers/PaginationCurrentPage'
            x-pagination-page-count:
              $ref: '#/components/headers/PaginationPageCount'
            x-pagination-per-page:
              $ref: '#/components/headers/PaginationPerPage'
            x-pagination-total-count:
              $ref: '#/components/headers/PaginationTotalCount'
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        event_id:
                          type: integer
                          example: 108026
                        contact_id:
                          type: integer
                          example: 19904840
                        submitter:
                          type: boolean
                          example: true
                        reviewer:
                          type: boolean
                          example: true
                        created_at:
                          type: string
                          example: '2023-04-21 15:46:23'
                        updated_at:
                          type: string
                          example: '2023-04-21 15:47:37'
                  _links:
                    type: object
                    properties:
                      self:
                        type: object
                        properties:
                          href:
                            type: string
                            example: >-
                              https://api.swoogo.com/api/v1/cfs-contacts?event_id=108026&fields=contact_id%2Cevent_id%2Csubmitter%2Creviewer%2Csubmitter_role%2Cuser_role_id%2Ccreated_at%2Ccreated_by%2Cupdated_at%2Cupdated_by%2Cdeleted%2Csecure_id&search=reviewer%3Dtrue&page=1
                      first:
                        type: object
                        properties:
                          href:
                            type: string
                            example: >-
                              https://api.swoogo.com/api/v1/cfs-contacts?event_id=108026&fields=contact_id%2Cevent_id%2Csubmitter%2Creviewer%2Csubmitter_role%2Cuser_role_id%2Ccreated_at%2Ccreated_by%2Cupdated_at%2Cupdated_by%2Cdeleted%2Csecure_id&search=reviewer%3Dtrue&page=1
                      last:
                        type: object
                        properties:
                          href:
                            type: string
                            example: >-
                              https://api.swoogo.com/api/v1/cfs-contacts?event_id=108026&fields=contact_id%2Cevent_id%2Csubmitter%2Creviewer%2Csubmitter_role%2Cuser_role_id%2Ccreated_at%2Ccreated_by%2Cupdated_at%2Cupdated_by%2Cdeleted%2Csecure_id&search=reviewer%3Dtrue&page=1
                  _meta:
                    type: object
                    properties:
                      totalCount:
                        type: integer
                        example: 1
                      pageCount:
                        type: integer
                        example: 1
                      currentPage:
                        type: integer
                        example: 1
                      perPage:
                        type: integer
                        example: 20
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - bearerAuth: []
components:
  headers:
    RateLimitLimit:
      schema:
        type: integer
      description: Maximum number of API requests allowed in the current 10-minute window.
      example: 2000
    RateLimitRemaining:
      schema:
        type: integer
      description: Number of requests remaining in the current rate limit window.
      example: 1367
    RateLimitReset:
      schema:
        type: integer
      description: Number of seconds until the current rate limit window resets.
      example: 0
    PaginationCurrentPage:
      schema:
        type: integer
      description: The current page number in the paginated result set.
      example: 1
    PaginationPageCount:
      schema:
        type: integer
      description: Total number of pages available based on the current `per-page` value.
      example: 5
    PaginationPerPage:
      schema:
        type: integer
      description: Number of items returned per page.
      example: 20
    PaginationTotalCount:
      schema:
        type: integer
      description: Total number of items matching the query across all pages.
      example: 95
  responses:
    Unauthorized:
      description: >-
        Authentication failed. The bearer token is missing, expired, or invalid.
        Obtain a new token via `POST /oauth2/token`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            name: Unauthorized
            message: Your request was made with invalid credentials.
            code: 0
            status: 401
    Forbidden:
      description: >-
        The authenticated user does not have permission to access this resource.
        This can occur if the resource belongs to a different account or the API
        credentials lack the required scope.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            name: Forbidden
            message: You do not have access to that resource.
            code: 0
            status: 403
    NotFound:
      description: >-
        The specified resource does not exist or has been deleted. Verify the ID
        is correct and that the resource belongs to an event your credentials
        have access to.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            name: Not Found
            message: The requested resource does not exist.
            code: 0
            status: 404
    InternalServerError:
      description: >-
        An unexpected server error occurred. If this persists, contact Swoogo
        support with the request details and timestamp.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            name: Internal Server Error
            message: An error occurred while processing your request.
            code: 0
            status: 500
  schemas:
    ErrorResponse:
      type: object
      description: Standard error response returned for all 4xx and 5xx status codes.
      properties:
        name:
          type: string
          description: >-
            Human-readable error type name (e.g., "Unauthorized", "Forbidden",
            "Not Found").
          example: Unauthorized
        message:
          type: string
          description: Detailed error message explaining what went wrong.
          example: Your request was made with invalid credentials.
        code:
          type: integer
          description: >-
            Application-specific error code. Currently `0` for all standard
            errors.
          example: 0
        status:
          type: integer
          description: HTTP status code of the error response.
          example: 401
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: access_token
      description: >-
        OAuth 2.0 bearer token obtained from `POST /oauth2/token`. Tokens expire
        after 30 minutes. Include in the `Authorization` header as `Bearer
        {access_token}`.

````