Board Watches

Old-vs-new text for one change

The section's text before and after this specific change, when available (see hasDiff on the change list above).

How many sides a change has depends on its kind, and each is a complete answer:

  • amended -- both sides. This is the only kind where one side alone is not a partial answer but no answer.
  • added -- after side only. There is no before side by definition, and the full text of a newly published section is precisely what the notification is for.
  • removed -- before side only, the last text we held.

A missing side is not an error: hasBefore/hasAfter say which text is actually present, and diffAvailable (with unavailableReason when false) says whether there is a diff at all, so a caller can render a graceful 'diff unavailable' state for older changes or a snapshot that failed to capture, instead of treating null as a failure.

Cost: 4 credits per call (see /api-credits/pricing). This is the only metered route in the alerts family: every other board and watch endpoint, including the /changes list this reads from, is free.

You are charged only for a diff that answers the question its kind asks, and creditsConsumed always reports what was actually billed. Refunded in full (creditsConsumed: 0): an amended change missing either side, an amended change whose two sides resolve to identical text (a capture artifact on our side, not a change on the publisher's), and any change resolving no text at all. A one-sided added or removed diff is the complete answer and is charged normally.

get/api/v1/watches/{watch_id}/changes/{change_id}/diff

Request

Path parameters

watch_idstring required
change_idinteger required

Headers

Idempotency-Keystring nullable

Optional. 16 to 255 visible ASCII characters (a UUIDv4 is ideal). A retry with the same key and the same request replays the original 2xx response for 24 hours without charging again. The same key with a different request is rejected. Scope is the API key, method, path and body. The stored response body is a query-derived cache controlled by the account's data retention setting cacheQueryDerivedData: when it is false the body is never stored and a retry answers 409 idempotency_replay_unavailable, without charging again.

Example:3f9c2a1e-7b44-4d0a-9c1e-5a6b7c8d9e0f

Response

The change's before/after text (either side may be absent).

Changes

No recorded changes to this operation across all 1 revision of this API.