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

# Get a paginated list of participant status-change events.

> Get a time-windowed, cursor-paginated list of participant status-change events across your workspace. Poll this endpoint with a moving time window to keep an external system in sync with participant status transitions.



## OpenAPI

````yaml https://api.rallyuxr.com/api/openapi post /participant-status-events/search
openapi: 3.1.0
info:
  title: Rally UXR Developer Docs
  version: '1.0'
servers:
  - url: https://api.rallyuxr.com/api/public/v1
security:
  - bearerAuth: []
tags:
  - name: Forms
    description: Operations on Forms in your workspace
  - name: People
    description: Operations on Person's stored in your workspace
  - name: Person Properties
    description: Operations on workspace level Person Properties
  - name: Populations
    description: Operations on Populations in your workspace
  - name: Segments
    description: Operations on Segments in your workspace
  - name: Studies
    description: Operations on Studies in your workspace
  - name: Participants
    description: Operations on Participants in studies
  - name: Participant Status Events
    description: Poll participant status-change events across your workspace
  - name: Study Status Events
    description: Poll-based access to study status-change events in your workspace
  - name: Screener
    description: Operations on a study's screener
  - name: Consent Submissions
    description: Operations on Consent Submissions for studies
  - name: Incentives
    description: Operations on Incentives in your workspace
  - name: Messages
    description: Operations on Message activities in your workspace
  - name: Imports
    description: Operations on Imports in your workspace
  - name: Users
    description: Operations on Workspace Users
  - name: Teams
    description: Operations on Teams in your workspace
  - name: Backfills
    description: >-
      Routes that can be used to backfill data into Rally. If you'd like access
      to these apis, please reach out to your Customer Success rep
  - name: Person
    description: Deprecated, use People
paths:
  /participant-status-events/search:
    post:
      tags:
        - Participant Status Events
      summary: Get a paginated list of participant status-change events.
      description: >-
        Get a time-windowed, cursor-paginated list of participant status-change
        events across your workspace. Poll this endpoint with a moving time
        window to keep an external system in sync with participant status
        transitions.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                from:
                  type: string
                  format: date-time
                  description: >-
                    Inclusive start of the time window (ISO 8601). Filters on
                    when the status change occurred.
                  example: '2025-01-01T00:00:00Z'
                to:
                  type: string
                  format: date-time
                  description: >-
                    Inclusive end of the time window (ISO 8601). Filters on when
                    the status change occurred.
                  example: '2025-01-02T00:00:00Z'
                filter:
                  $ref: '#/components/schemas/ParticipantStatusEventFilter'
                pageInfo:
                  $ref: '#/components/schemas/PageInfoArgs'
              required:
                - from
                - to
      responses:
        '200':
          description: The participant status-change events
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/ParticipantStatusEvent'
                  total:
                    type: number
                    exclusiveMinimum: 0
                    description: >-
                      The total number of items in your workspaces based on your
                      search parameters
                  pageInfo:
                    $ref: '#/components/schemas/PageInfoResponse'
                required:
                  - results
                  - total
                  - pageInfo
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestError'
        '401':
          description: Unauthorized
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            text/plain:
              schema:
                type: string
                example: Unauthorized
        '403':
          description: Forbidden
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            text/plain:
              schema:
                type: string
                example: Forbidden
        '429':
          description: Too Many Requests
          headers:
            Retry-After:
              $ref: '#/components/headers/Retry-After'
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            text/plain:
              schema:
                type: string
                example: Too Many Requests
        '500':
          description: Internal Server Error
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
            X-RateLimit-Reset:
              $ref: '#/components/headers/X-RateLimit-Reset'
          content:
            text/plain:
              schema:
                type: string
                example: Internal Server Error
      security:
        - bearerAuth: []
components:
  schemas:
    ParticipantStatusEventFilter:
      type: object
      properties:
        studyIds:
          type: array
          items:
            type: string
          description: Only include events for participants in these studies
        teamIds:
          type: array
          items:
            type: string
          description: >-
            Only include events for participants in studies belonging to any of
            these teams. Teams the caller cannot access are ignored.
        studyTypes:
          type: array
          items:
            $ref: '#/components/schemas/StudyType'
          description: Only include events for studies of these types
        studyStatuses:
          type: array
          items:
            $ref: '#/components/schemas/StudyStatus'
          description: Only include events for studies in these statuses
      description: Optional filters to narrow the participant status events
    PageInfoArgs:
      type: object
      properties:
        startCursor:
          type: string
          description: The cursor to start from
        size:
          type: number
          exclusiveMinimum: 0
          maximum: 1000
          default: 25
          description: The number of items to return
          example: 10
      description: >-
        Pagination arguments. Use startCursor from the result of the endCursor
        of the response to get the next page. Pagination in reverse is not
        currently supported
      example:
        size: 10
    ParticipantStatusEvent:
      type: object
      properties:
        id:
          type: string
          description: >-
            The unique ID of this status-change event, stable across polls for
            client-side deduplication
        participantId:
          type: string
          description: The ID of the participant whose status changed
        personId:
          type: string
          description: The ID of the person the participant represents
        studyId:
          type: string
          description: The ID of the study the participant belongs to
        previousStatus:
          $ref: '#/components/schemas/ParticipantStatus'
        newStatus:
          allOf:
            - $ref: '#/components/schemas/ParticipantStatus'
            - description: The participant status after the change
        updateMethod:
          $ref: '#/components/schemas/ParticipantStatusUpdateMethod'
        changedBy:
          type:
            - string
            - 'null'
          description: >-
            The ID of the user who made the change, or null when the change was
            automated or made by the participant
        changedAt:
          type: string
          format: date-time
          description: When the status change occurred, in ISO 8601 format
      required:
        - id
        - participantId
        - personId
        - studyId
        - previousStatus
        - newStatus
        - updateMethod
        - changedBy
        - changedAt
      description: A single participant status-change event
    PageInfoResponse:
      type: object
      properties:
        hasNextPage:
          type: boolean
          description: Whether there are additional pages of results
        hasPreviousPage:
          type: boolean
          description: Whether there is a prior page of results
        startCursor:
          type: string
          description: The start of the current page of results
        endCursor:
          type: string
          description: The end of the current page of results. Use to fetch the next page
      required:
        - hasNextPage
        - hasPreviousPage
      description: Information about the current page
    BadRequestError:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
              path:
                type: array
                items:
                  anyOf:
                    - type: string
                    - type: number
            required:
              - message
              - path
      required:
        - errors
      description: Error response for a bad request with details on what was invalid
    StudyType:
      type: string
      enum:
        - SURVEY
        - INTERVIEWS
        - UNMODERATED_TEST
        - GROUP_INTERVIEW
      description: The type of study
    StudyStatus:
      type: string
      enum:
        - DRAFT
        - ACTIVE
        - PAUSED
        - CLOSED
      description: The status of the study
    ParticipantStatus:
      type: string
      enum:
        - NOT_STARTED
        - INVITE_SENT
        - NOT_ELIGIBLE
        - SCREENER_STARTED
        - SCREENER_COMPLETED
        - SCREENER_QUALIFIED
        - SCREENER_DISQUALIFIED
        - INTERVIEW_INVITE_SENT
        - INTERVIEW_SCHEDULED
        - INTERVIEW_COMPLETED
        - INTERVIEW_CANCELLED
        - INTERVIEW_NO_SHOWED
        - SURVEY_STARTED
        - SURVEY_COMPLETED
        - INCENTIVE_SENT
        - INCENTIVE_CLAIMED
        - INCENTIVE_SKIPPED
        - UNMODERATED_TEST_INVITE_SENT
        - UNMODERATED_TEST_STARTED
        - UNMODERATED_TEST_COMPLETED
        - COMPLETED_STUDY
        - CANCELLED
        - OPTED_OUT
        - EMAIL_SOFT_BOUNCED
        - EMAIL_HARD_BOUNCED
      description: The participant status before the change
    ParticipantStatusUpdateMethod:
      type: string
      enum:
        - AUTOMATED
        - MANUAL
        - PARTICIPANT
        - RALLY_INTERN_ENDPOINT
      description: How the participant status change was initiated
  headers:
    X-RateLimit-Limit:
      description: The maximum number of requests the client is allowed to make.
      schema:
        type: integer
        format: int32
    X-RateLimit-Remaining:
      description: >-
        The number of requests remaining for the client in the current time
        window.
      schema:
        type: integer
        format: int32
    X-RateLimit-Reset:
      description: >-
        The time at which the current time window ends (in Unix timestamp
        format).
      schema:
        type: integer
        format: int32
    Retry-After:
      description: The number of seconds until the client should retry the request.
      schema:
        type: integer
        format: int32
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````