Skip to main content
GET
Get a run's changes
Works for a compared skill run: a scheduled run, or one started with changes_since. Any other run returns 404. You get the counts, as in changes on Get a run, and the rows themselves:
  • new_rows: every new row.
  • changed_rows: every changed row, as {"row": {...}, "fields": {"price": {"before": 120, "after": 98}}}. When the run has a watch list, only those fields count.
  • removed_rows: rows that were in the earlier run and not in this one, up to 200. removed_truncated is true when there were more.
since_run_id is the run it was compared with. first_run is true for the first run, where every row is new. Rows are matched on key_fields; key_automatic says whether they were chosen automatically or come from the skill’s row_key. How that works is in Only what’s new. Needs runs:read. MCP tool: get_run with changes: true.

Authorizations

Authorization
string
header
required

API key with the vd_sk_ prefix, as Authorization: Bearer vd_sk_.... Create keys in Settings → API Keys.

Path Parameters

run_id
string
required

Response

Successful Response

GET /v1/runs/{run_id}/changes: every row that is new, changed or gone since the run it was compared with. Rows are matched on key_fields; a changed row carries fields: {name: {before, after}} (only watch fields count, when set).

run_id
string
required
status
string
required
skill_slug
string | null
since_run_id
string | null
first_run
boolean
default:false
key_fields
string[]
key_automatic
boolean
default:true
watch
string[] | null
delivery
string
default:all
rows_total
integer
default:0
new
integer
default:0
changed
integer
default:0
removed
integer
default:0
unchanged
integer
default:0
new_rows
any[]
changed_rows
Changed Rows · object[]
removed_rows
any[]
removed_truncated
boolean
default:false