---
title: "Show what changed between two versions"
method: GET
path: "/sites/{id}/diff"
tags: ["Sites"]
---

# Show what changed between two versions

`GET /sites/{id}/diff`

## Request

- Base URL: `https://api.hypamoon.com/api/v1`
- URL: `https://api.hypamoon.com/api/v1/sites/{id}/diff`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://app.hypamoon.com/oauth/authorize`, token URL `https://api.hypamoon.com/oauth/token`, scopes: `sites:read`)

For each path, whether it was added, modified, removed or replaced between two versions of a site. Text files (html, css, js, json, txt, svg) get a unified diff; binary files (images, fonts) only their old and new size. Without to: the current version. Without from: the version before to (for a preview: the live version). Large diffs are left out (diff_omitted) to keep the response small.

## Path parameters

- `id` string, uuid, required

## Query parameters

- `from` string
- `to` string

## Response `200`

What changed.

- object: What changed between two versions of a site.
  - `object` 'site_diff', required
  - `site_id` string, uuid, required
  - `from` object, nullable, required
    - `id` string, uuid, required
    - `number` integer, required
  - `to` object, required
    - `id` string, uuid, required
    - `number` integer, required
  - `summary` object, required
    - `added` integer, required
    - `modified` integer, required
    - `removed` integer, required
    - `replaced` integer, required
  - `files` object[], required
    - `path` string, required
    - `status` 'added' | 'modified' | 'removed' | 'replaced', required: replaced: a binary file (image, font) with other bytes.
    - `kind` 'text' | 'binary', required
    - `old_bytes` integer, nullable, required
    - `new_bytes` integer, nullable, required
    - `old_type` string, nullable
    - `new_type` string, nullable
    - `diff` string: A unified diff, for text files (html, css, js, json, txt, svg).
    - `diff_omitted` 'too_large' | 'response_limit' | 'unavailable'
  - `truncated` boolean, required: true: some diffs were left out to keep the answer small (diff_omitted per file).

## Other responses

- `401`: Unauthorized: unauthorized, missing_api_key, invalid_api_key, api_key_revoked, project_deleted.
- `402`: Payment Required: plan_limit_reached.
- `403`: Forbidden: project_not_enabled, key_mode_mismatch, missing_scope, verification_required.
- `404`: Not Found: not_found.
- `422`: Unprocessable Content: validation_failed.
- `429`: Too Many Requests: rate_limited.
- `500`: Internal Server Error: internal_error.
- `503`: Service Unavailable: service_unavailable.

---

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