Currently, updating a Confluence page’s content via the REST API v2 (PUT /wiki/api/v2/pages/{id}) requires sending the entire page body as an ADF document on every write. There is no way to update a single node, append a table row, or modify a paragraph in isolation.
This is a significant pain point for programmatic page management — particularly for AI agents, automation scripts, and integrations that maintain living documents. A page that is 70KB of ADF must be fully reconstructed and transmitted on every minor change, which is:
- Slow — full round-trip for every edit regardless of change size
- Fragile — concurrent writers overwrite each other’s changes; there is no merge
- Expensive — unnecessary payload size on every request
The ADF specification already includes localId attributes on nodes for precisely this kind of addressing. The infrastructure is there — the API just does not expose it.
Request: Add a PATCH /wiki/api/v2/pages/{id}/content endpoint that accepts one or more ADF node operations targeting nodes by localId:
- append — add a child node to a target node
- replace — replace a target node’s content
- delete — remove a target node
This would make the Confluence API significantly more usable for automated and agent-driven workflows, and aligns with how modern document APIs (Notion, Google Docs) handle partial updates.