Pages, blog posts, book pages, FAQ records and custom entity records are versioned. A write makes a new revision, and the site shows only the live one. A patchRevision or revisions write is saved as an inactive revision unless it carries "activeRevision": true inside it, so the request answers "saved successfully" and the live page stays as it was.
Two other causes look the same:
- The record is unpublished, or scheduled. Your credential is a backend user's, which reads unpublished records by id; a visitor gets a 404. Check signed out.
- The page cache. A page served from the cache shows the old content until it is refreshed.