GET Snapshots & Changes

Read a monitor's captured snapshots, detected changes, and page bodies

Every check stores a snapshot. When a snapshot differs from the previous one, a change is recorded. These endpoints let you read that history.


GEThttps://api.anakin.io/v1/monitors/{id}/changes

List detected changes for a monitor, newest first (up to 200).

Response

200 OK
{
  "changes": [
    {
      "id": "c_9a1…",
      "monitorId": "b1e7c2a4-…",
      "snapshotId": "s_77b…",
      "changedAt": "2026-01-01T12:00:00Z",
      "summary": "The price dropped from $19.99 to $14.99.",
      "diffJson": {
        "type": "specific_data",
        "changedFields": ["price"],
        "before": { "price": 19.99 },
        "after": { "price": 14.99 },
        "stats": { "adds": 1, "dels": 1 },
        "aiMeaningful": [
          { "description": "Price dropped", "before": "$19.99", "after": "$14.99" }
        ]
      },
      "createdAt": "2026-01-01T12:00:00Z"
    }
  ]
}
FieldTypeDescription
changedAtstringWhen the change was detected.
summarystring | nullHuman-readable summary (AI-generated when aiMode is on).
diffJsonobjectStructured diff (see below).

diffJson fields

FieldTypeDescription
typestringspecific_data or full_page.
changedFieldsstring[]Field keys that changed (specific_data).
before / afterobjectExtracted values before/after (specific_data).
beforeSnapshotId / afterSnapshotIdstringSnapshot IDs for a full_page text diff — fetch each side's body via the content endpoint below.
statsobject{ "adds": number, "dels": number } — line counts for full_page diffs.
aiMeaningfularrayAI-curated substantive changes, each { description, before, after } (present in aiMode).

GEThttps://api.anakin.io/v1/monitors/{id}/snapshots

List captured snapshots, newest first (up to 200).

Response

200 OK
{
  "snapshots": [
    {
      "id": "s_77b…",
      "monitorId": "b1e7c2a4-…",
      "capturedAt": "2026-01-01T12:00:00Z",
      "contentHash": "a1b2c3…",
      "extractedData": { "price": 14.99 },
      "createdAt": "2026-01-01T12:00:00Z"
    }
  ]
}
FieldTypeDescription
contentHashstringHash of the compared content — identical hashes mean no change.
extractedDataobject | nullExtracted fields (specific_data mode).

To read a full_page snapshot's stored body (for rendering a text diff), call the snapshot content endpoint below with the snapshot's id — you never handle a storage path.


GEThttps://api.anakin.io/v1/monitors/{id}/snapshots/{snapshotId}/content

Fetch the stored page body for a full_page snapshot — use it to render before/after text diffs. Returns an empty body for specific_data snapshots (their data is in extractedData).

Response

200 OK
{
  "available": true,
  "content": "# Home page content…",
  "capturedAt": "2026-01-01T12:00:00Z",
  "contentHash": "a1b2c3…"
}
FieldTypeDescription
availablebooleanfalse when no body is stored (e.g. specific_data, or storage not configured).
contentstringThe captured body in the monitor's watchFormat. Empty when available is false.

Code Examples

curl https://api.anakin.io/v1/monitors/b1e7c2a4-.../changes   -H "X-API-Key: your_api_key"
curl https://api.anakin.io/v1/monitors/b1e7c2a4-.../snapshots -H "X-API-Key: your_api_key"
curl https://api.anakin.io/v1/monitors/b1e7c2a4-.../snapshots/s_77b.../content -H "X-API-Key: your_api_key"