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

# Get all data changes



## OpenAPI

````yaml get /v4/changes
openapi: 3.0.3
info:
  title: Kadoa API
  version: 3.0.0
  contact:
    name: Support
    email: support@kadoa.com
servers:
  - url: https://api.kadoa.com
security: []
paths:
  /v4/changes:
    get:
      tags:
        - Workflows
      summary: Get all data changes
      parameters:
        - name: x-api-key
          in: header
          required: false
          description: API key for authorization
          schema:
            type: string
        - name: Authorization
          in: header
          required: false
          description: Bearer token for authorization
          schema:
            type: string
        - name: workflowIds
          in: query
          required: false
          description: >-
            Comma-separated list of workflow IDs. If not provided, returns
            changes for all ACTIVE workflows
          schema:
            type: string
        - name: startDate
          in: query
          required: false
          description: Start date to filter changes (ISO format)
          schema:
            type: string
            format: date-time
        - name: endDate
          in: query
          required: false
          description: End date to filter changes (ISO format)
          schema:
            type: string
            format: date-time
        - name: skip
          in: query
          required: false
          description: Number of records to skip for pagination
          schema:
            type: integer
        - name: limit
          in: query
          required: false
          description: Number of records to return for pagination
          schema:
            type: integer
        - name: exclude
          in: query
          required: false
          description: >-
            Comma-separated list of fields to exclude from each change object
            (e.g., "data,differences")
          schema:
            type: string
            example: data,differences
      responses:
        '200':
          description: Workflow changes returned successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  timestamp:
                    type: string
                    format: date-time
                    description: Timestamp of the response
                  changesCount:
                    type: integer
                    description: Total number of changes found
                  changes:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Unique identifier of the change
                        workflowId:
                          type: string
                          description: ID of the workflow this change belongs to
                        data:
                          type: array
                          nullable: true
                          description: Current state of the data after the change
                          items:
                            type: object
                        dataPending:
                          type: boolean
                          description: >-
                            True when durable change data is still being stored;
                            change events are emitted first so users see changes
                            as fast as possible.
                        differences:
                          type: array
                          description: >-
                            Structured representation of changes with
                            object-based diffing. List responses omit visualDiff
                            metadata. Pass `exclude=differences` to omit this
                            large field; counts are still returned via
                            `differencesCounts`.
                          items:
                            type: object
                            properties:
                              type:
                                type: string
                                description: Type of change (added, removed, or changed)
                                enum:
                                  - added
                                  - removed
                                  - changed
                              fields:
                                type: array
                                description: List of field changes
                                items:
                                  type: object
                                  properties:
                                    key:
                                      type: string
                                      description: Field name
                                    value:
                                      type: string
                                      description: Current field value
                                    previousValue:
                                      type: string
                                      description: >-
                                        Previous field value (only present for
                                        changed type)
                        differencesCounts:
                          type: object
                          nullable: true
                          description: >-
                            Pre-computed counts of differences by type. Always
                            returned (even when `exclude=differences`) so list
                            views can render summary badges without downloading
                            the full diff.
                          properties:
                            added:
                              type: integer
                            removed:
                              type: integer
                            changed:
                              type: integer
                        url:
                          type: string
                          description: URL where the change was detected
                        summary:
                          type: string
                          nullable: true
                          description: >-
                            AI-generated one-sentence summary of the data
                            change. Null if generation failed, feature is
                            disabled, or change predates the feature.
                        screenshotUrl:
                          type: string
                          description: >-
                            URL of the screenshot taken when the change was
                            detected
                        createdAt:
                          type: string
                          format: date-time
                          description: Timestamp when the change was created
                  pagination:
                    type: object
                    properties:
                      totalCount:
                        type: integer
                        description: Total number of changes found
                      page:
                        type: integer
                        description: Current page number
                      totalPages:
                        type: integer
                        description: Total number of pages
                      limit:
                        type: integer
                        description: Number of records per page
        '400':
          description: Bad request (invalid date range or workflow IDs)
        '401':
          description: Unauthorized (invalid or missing API key or Bearer token)
        '500':
          description: Internal server error
      security:
        - ApiKeyAuth: []
        - BearerAuth: []
      x-code-samples:
        - lang: curl
          source: >
            curl -X GET
            "https://api.kadoa.com/v4/changes?workflowIds=123,456&startDate=2024-01-01T00:00:00Z&endDate=2024-03-01T00:00:00Z"
            \

            -H "x-api-key: YOUR_API_KEY"


            # Exclude data and differences fields for smaller response

            curl -X GET
            "https://api.kadoa.com/v4/changes?workflowIds=123,456&exclude=data,differences"
            \

            -H "x-api-key: YOUR_API_KEY"
        - lang: python
          source: |
            import requests

            url = "https://api.kadoa.com/v4/changes"
            headers = {
                "x-api-key": "YOUR_API_KEY"
            }
            params = {
                "workflowIds": "123,456",
                "startDate": "2024-01-01T00:00:00Z",
                "endDate": "2024-03-01T00:00:00Z"
            }

            response = requests.get(url, headers=headers, params=params)
            data = response.json()
            print(data)

            # Exclude data and differences fields for smaller response
            params["exclude"] = "data,differences"
            response = requests.get(url, headers=headers, params=params)
            data = response.json()
            print(data)
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Bearer token for authentication

````