Skip to content
DocsBuild with itAPI change watches

API change watches

Review documentation changes with the evidence beside you.

Keep a public API page as a baseline for your project. Check it manually or enable daily checks. PersistMemory compares the returned text and keeps the latest change for review in your workspace. A page change is evidence to investigate; it does not prove your integration is broken.

Open API change watches

Choose a release feed, documentation page or OpenAPI specification

The source picker includes official Stripe, OpenAI, Anthropic and Octokit SDK release feeds. They retain ten recent releases with bounded notes; feed rotation is not an API removal. Incomplete evidence holds automatic repair. Use the complete official contract or changelog when enabling repair automation.

For structured comparison, choose OpenAPI and enter a direct public JSON or YAML specification URL. The saved document can contain up to 512,000 UTF-8 bytes. Its full content participates in the reviewed hash, while the reading panel previews 12,000 characters. Download the saved specification to review its exact content.

Endpoint, parameter, required-field, enum and type changes are assessed with request/response directionality and source pointers. Unsupported schemas, external references and incomplete traversal remain uncertain. Structural checks do not consume model calls; authorized repair investigations use the existing AI workflow and tests.

pm watch remote providers
pm watch remote create --name "API contract" --url https://example.com/openapi.yaml --space YOUR_SPACE_ID --source-type openapi

Use the web workspace

  1. Name the watch and enter an official documentation or changelog URL. Its private Space is created automatically; an unrelated Space with the same name stays separate.
  2. Optionally choose a connected coding project, select repositories, and confirm each source branch and PR target. Change those branches in Coding before saving if needed.
  3. Choose Notify only for change emails without code execution, or Auto-fix + draft PR to assess selected repositories, repair affected code in E2B, run tests, and request reviewer approval before opening draft PRs. Auto-fix requires configured repository tests and draft PRs after checks enabled.
  4. New web watches offer daily checks by default; choose manual checks if preferred. Your policy is saved once for future changes. The saved watch shows the next check, linked repositories, blocked repairs, run results, and draft PR links. Nothing merges automatically.
  5. Choose Check now when you want to compare a later reading. Open the old and new text, source URLs, reading times, warnings and content hashes.
  6. For a pending change, use Find affected code to copy a CLI command for your local repository. Review potential usages alongside the saved page change.
  7. If the change is the one you reviewed, select the review checkbox and accept it. Only that exact pending reading becomes the new baseline.

A failed or blocked reading keeps both your baseline and any pending change. Refresh saved state after a conflicting or uncertain request. Refreshing reads the saved result; it does not run another crawl.

What daily checks do

The first check is due 24 hours after enabling Daily. Checks run roughly once a day, with possible maintenance queue delays; the next check time is a due time, not a guaranteed start time. A manual check resets the next daily check to 24 hours later. A scheduled attempt advances the next daily check even if the source fails or the process is interrupted.

Existing manual watches stay manual until their owners enable Daily. Return to API change watches in your workspace to review results, last failed attempts, and retained pending evidence. Enable the optional email-alert checkbox and save to receive change alerts. Alerts obey account email preferences and quiet hours, and repeated readings of the same change deduplicate. Daily checks keep your accepted baseline.

If an older API response omits the schedule, the web page shows it as unknown and disables schedule controls. Refresh saved state to verify it. A missing field does not establish whether daily checks are enabled or disabled.

Continue from your assistant or chat

Connect an MCP client such as Claude, Codex or Cursor, or link Telegram or WhatsApp, to the same account. The hosted watch tools read and change the same saved watches as this workspace. Ask your assistant to list your watches, inspect a pending change, or check the latest documentation.

api_watch_list and api_watch_get read saved state. Creating, checking, scheduling, accepting or removing a watch requires write access and the surface’s action approval flow. Checking always validates the source now using our crawler. Accepting requires the exact pending hash and watch version you reviewed.

Connect repositories and choose their branches in Coding projects, then configure their test commands. You can request a separate bounded coding run or save an Auto-fix watch policy. A branch change requires confirming that policy again. A documentation change alone does not establish that your code needs repair. See sandboxed coding and the MCP tool reference.

Use local baselines in the CLI

The CLI uses the same comparison rules, with snapshots stored on your computer. Local CLI watches and web watches have separate storage; they do not synchronize. Use pm watch remote list and pm watch remote get with a saved watch ID to work with the hosted watches instead. Hosted mutations require the exact observed --version; acceptance also requires the reviewed --hash. See the CLI reference for create, check, schedule, accept and remove.

pm auth login
pm watch add postgres https://www.postgresql.org/docs/release/
pm watch check postgres --output json
# Review the change, then copy its afterHash:
pm watch accept postgres --hash <afterHash>

For CI, pm watch check postgres --fail-on-change --output json exits 3 when changed and 0 when unchanged. Keep the watch directory between CI runs. Other failures use other nonzero statuses. Install the CLI.

Find affected code locally

With the latest CLI, check a watch and review a pending page change first. Then point the impact command at a local Git worktree or a subdirectory within it. Only the selected directory is scanned. Replace the quoted repository path with yours.

A local CLI watch

Use pm watch impact <name> --repo <path> with a watch saved on this computer:

pm watch impact postgres --repo "/path/to/your/repository"

A saved web watch

Copy the command from the watch’s review page, or replace <saved-watch-id> below with its exact ID. Sign in to the owning account with pm auth login. This variant fetches only that watch’s saved baseline and latest pending reading with a GET request; it does not check the public page or synchronize local watches.

pm watch impact --watch <saved-watch-id> --repo "/path/to/your/repository"

The report lists potential usages by relative file path, line, column and literal public symbol, without source excerpts. It includes the compared hashes, scan coverage and warnings. Compare those hashes with the readings you reviewed: another check may have replaced the pending reading. With no pending change, check and review first; there is no new change to scan. An archived watch with a retained pending reading can still be scanned read-only.

Repository code stays on your computer. The scanner makes no code uploads or AI calls, executes no repository code, and generates no patches. It does not accept a baseline or change the watch’s schedule.

Read matches and limits

The report combines bounded literal search with rule-based interpretation of explicit documented renames, removals, requirements, defaults and signatures. Unclassified changes need manual review. Matches can include comments and are not confirmed breakage; no matches do not prove compatibility. Headers are matched case-insensitively; other literals are case-sensitive. Dynamically constructed names and semantic changes can be missed.

  • Coverage is tracked and nonignored untracked source and configuration files in the selected Git directory. The scanner skips ignored untracked files, .env files, credential configuration, generated directories, lockfiles and symlinks.
  • Fixed limits: 3,000 eligible files, 256 KiB per file, 16 MiB total, 300 matches and 80 symbols. Git discovery has a shared 10-second limit across two commands. The 15-second scan budget is checked between files; a slow filesystem operation can finish after the budget. Inspect completeness, skipped-file counts and warnings in the report.
  • Documentation-page evidence covers at most 12,000 extracted characters. OpenAPI watches compare the full bounded specification and can supply endpoint candidates beyond the preview. SDK scans report exact manifest declarations separately from word matches.

Use --symbol <identifier> to search an exact identifier you want to investigate, especially when the public change has no identifiable terms. It replaces automatically identified symbols and is labeled developer_selected in the report; it does not establish that the public change mentions that identifier. For example:

pm watch impact postgres --repo "/path/to/your/repository" --symbol createPayment --fail-on-match --output json

Use --output json for a structured report. CI exit codes: 3 for matches with --fail-on-match, 4 for an incomplete scan, and 2 when there are no identifiable terms. Inspect the report as well as the exit code; a partial scan can contain matches. Other failures can also return nonzero statuses.

Review a local repair proposal

For an explicit documented rename, choose the old and new names and create a fresh artifact directory. The CLI writes a patch and proposal with documentation and source-file hashes. It proposes JavaScript/TypeScript properties and exact strings; review unrelated matches and skipped usages.

pm watch repair provider --repo "/path/to/repo" --from old_field --to new_field --artifact /tmp/provider-repair
pm watch validate --artifact /tmp/provider-repair --repo "/path/to/repo" --hash <reviewed-proposal-hash> --check syntax

Read proposal.json and repair.patch before passing the proposal hash to validation. Syntax validation checks changed JavaScript files in a temporary source copy. For trusted repository tests, select --check node-test and one to five --test-file paths. This executes those tests and their imports under your user permissions; the temporary directory is not an operating-system sandbox. Dependencies and secrets are not copied, and no installation or package scripts run. Commands have a combined 30-second budget.

A stale source or altered proposal is rejected. Passing the selected checks does not prove compatibility. Apply the reviewed patch and open a PR through your normal workflow. The original repository and watch baseline remain unchanged by generation and validation.

Connect through the API

These routes use the base https://api.persistmemory.com/api/v1 and your account’s Bearer credential. Keep credentials on your server. Reads require read scope; mutations require write scope. A watch belongs to its account and an owned Space.

GET /api-watches/providers

List curated official SDK release source URLs and package identities; this does not subscribe or fetch.

GET /api-watches

List your watches with schedule and nextCheckAt; optional ?spaceId= narrows to one owned Space.

POST /api-watches

Save { name, url, spaceId?, schedule?, notifications?, coding? }. Omitting spaceId creates a private Space. The first reading becomes the baseline.

GET /api-watches/:id

Read saved snapshots, warnings, version, schedule, nextCheckAt and any pending comparison.

PATCH /api-watches/:id/schedule

Send { version, schedule: "manual" | "daily", notifications?: boolean }. Returns the updated watch detail with an incremented version.

POST /api-watches/:id/check

Send { version } from your current saved view. Read the source once.

POST /api-watches/:id/accept

Send { version, hash } using the exact pending hash you reviewed.

DELETE /api-watches/:id

Send { version } to remove this watch and its saved snapshots.

The schedule is manual or daily. Daily watches always include a nonempty ISO nextCheckAt; manual watches omit it. Enabling Daily requires an active Space you own. Pausing with Manual is allowed in an archived Space you own. Schedule changes conflict while a check holds a live lease.

Use the exact version and pending hash from the displayed result. Schedule saves increment the version, so an older review can become stale. On conflict or a lost or unreadable response, refresh and review the saved result before another mutation. Do not blindly repeat the request or substitute a newer version or hash automatically.

Coverage, cost and limits

  • Checks run manually or daily after you enable the schedule. Review results in the workspace and optionally scan a local repository with the CLI. Email alerts are optional. Baseline acceptance, applying patches and publishing PRs remain explicit decisions.
  • Each account can save ten web watches. Only the baseline and latest pending reading are retained. Deleting a watch frees capacity; archiving its Space does not.
  • Documentation pages retain at most 12,000 extracted characters; OpenAPI specifications retain up to 512,000 UTF-8 bytes; SDK feeds retain ten releases with up to 600 note characters each. Coverage limits remain visible. Navigation and formatting changes can appear in page comparisons.
  • Every new watch check validates the website now, including conditional requests when the site supports them. Saved web watch checks are at least 60 seconds apart. The review shows when the content was fetched and checked; older saved readings may still be marked cached.
  • These comparisons use the existing public reader, no paid crawler and no AI model. JavaScript pages use our configured isolated browser. Pages requiring sign-in or CAPTCHA completion may remain unavailable.
  • You can read, pause existing daily checks, or delete watches in an archived Space when no check is in progress. Unarchive the Space before enabling Daily, checking now, or accepting changes. Shared Spaces are not supported for watches.