When fetching Confluence page content via the REST API (e.g. GET /wiki/api/v2/pages/{id}?body-format=storage or markdown), any images or diagrams embedded in the page are returned as blob URLs in the form:
blob:https://media.staging.atl-paas.net/?type=file&localId=null&id=...&collection=contentId-...
These URLs are not resolvable outside an authenticated browser session. They return nothing when called programmatically, even with a valid API token. The actual binary content of the attachment is effectively inaccessible via the API.
Impact
This breaks any automation or AI tooling that reads Confluence pages and needs to process embedded images - architecture diagrams, flow charts, screenshots, etc. The text content of the page is available, but the visual content is silently lost.
Expected behaviour
The API should return either:
- A signed, time-limited URL pointing to the actual media content (similar to how other cloud storage providers handle this), or
- A direct reference to the attachment that can be resolved via the existing Confluence Attachments API (/wiki/rest/api/content/{id}/child/attachment) with the same OAuth scopes used to read the page.
Steps to reproduce
1. Embed any image or diagram in a Confluence page.
2. Fetch the page content via the REST API with any body-format (storage, view, markdown).
3. Observe that image src values are blob:https://media.staging.atl-paas.net/... URLs.
4. Attempt to resolve those URLs programmatically - they return no content.
Environment
- Confluence REST API v2
- Affects all API consumers and MCP integrations
Workaround
None currently. The only way to access the images is to open the page in an authenticated browser session.
Has anyone found a workaround or knows if this is on the roadmap?
The blob:https://media.staging.atl-paas.net/... URLs in the page body are client-side browser references that are not resolvable outside an authenticated browser session. The practical workaround is to bypass the page body for image retrieval and use the Attachments API instead. Call GET /wiki/api/v2/pages/{pageId}/attachments to list attachments on the page, then download each one via the v1 endpoint GET /wiki/rest/api/content/{pageId}/child/attachment/{attachmentId}/download using the same API token. Keep in mind that the v2 API is not a complete replacement for v1, so the download step requires the v1 endpoint specifically. You have to write some soft of script (python etc.), haven't tried it my self though.
Hope this helps!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.