---
title: "Get data change by ID"
method: GET
path: "/v4/changes/{changeId}"
tags: ["Workflows"]
---

# Get data change by ID

`GET /v4/changes/{changeId}`

## Request

- Base URL: `https://api.kadoa.com`
- URL: `https://api.kadoa.com/v4/changes/{changeId}`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

## Path parameters

- `changeId` string, required

## Headers

- `x-api-key` string
- `Authorization` string

## Response `200`

Workflow change returned successfully

- object
  - `id` string: Unique identifier of the change
  - `workflowId` string: ID of the workflow this change belongs to
  - `data` object[], nullable: Current state of the data after the change
  - `dataPending` boolean: True when durable change data is still being stored; change events are emitted first so users see changes as fast as possible.
  - `differences` object[]: Structured representation of changes with object-based diffing
    - `type` 'added' | 'removed' | 'changed': Type of change (added, removed, or changed)
    - `fields` object[]: List of field changes
      - `key` string: Field name
      - `value` string: Current field value
      - `previousValue` string: Previous field value (only present for changed type)
    - `visualDiff` object, nullable: Screenshot-space boxes for this diff item. Present only when row grounding is available.
      - `current` object: Boxes on the current change screenshot for added or changed rows.
        - `url` string
        - `width` number
        - `height` number
        - `rowBox` object
          - `x` number
          - `y` number
          - `width` number
          - `height` number
        - `fieldBoxes` object
      - `previous` object: Boxes on the previous workflow job screenshot for removed or changed rows.
        - `url` string
        - `width` number
        - `height` number
        - `rowBox` object
          - `x` number
          - `y` number
          - `width` number
          - `height` number
        - `fieldBoxes` object
  - `url` string: URL where the change was detected
  - `summary` string, nullable: AI-generated one-sentence summary of the data change. Null if generation failed, feature is disabled, or change predates the feature.
  - `screenshotUrl` string: URL of the screenshot taken when the change was detected
  - `previousJobScreenshotUrl` string, nullable: Screenshot URL from the previous workflow job used by visualDiff.previous boxes.
  - `createdAt` string, date-time: Timestamp when the change was created

## Other responses

- `400`: Bad request (invalid change ID format)
- `401`: Unauthorized (invalid or missing API key or Bearer token)
- `403`: Forbidden (no access to the workflow or workflow not real-time enabled)
- `404`: Change not found
- `500`: Internal server error

---

[API](https://skmtc.dev/kadoa/apis/kadoa-api.md) · [All operations](https://skmtc.dev/kadoa/apis/kadoa-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kadoa/apis/kadoa-api/revisions/bf7803c927b4?raw)
