Access the Confluence Cloud API with managed OAuth authentication. Manage pages, spaces, blogposts, comments, attachments, and properties.
All V2 API endpoints use the base path:
/confluence/ex/confluence/{cloudId}/wiki/api/v2Reference
List Pages
GET /pages
GET /pages?space-id={spaceId}
GET /pages?limit=25
GET /pages?status=current
GET /pages?body-format=storageResponse:
{
"results": [
{
"id": "98391",
"status": "current",
"title": "My Page",
"spaceId": "98306",
"parentId": "98305",
"parentType": "page",
"authorId": "557058:...",
"createdAt": "2026-02-12T23:00:00.000Z",
"version": {
"number": 1,
"authorId": "557058:...",
"createdAt": "2026-02-12T23:00:00.000Z"
},
"_links": {
"webui": "/spaces/SPACEKEY/pages/98391/My+Page"
}
}
],
"_links": {
"next": "/wiki/api/v2/pages?cursor=..."
}
}Get Page
GET /pages/{pageId}
GET /pages/{pageId}?body-format=storage
GET /pages/{pageId}?body-format=atlas_doc_format
GET /pages/{pageId}?body-format=viewBody formats:
storage- Confluence storage format (XML-like)atlas_doc_format- Atlassian Document Format (JSON)view- Rendered HTML
Create Page
POST /pages
Content-Type: application/json
{
"spaceId": "98306",
"status": "current",
"title": "New Page Title",
"body": {
"representation": "storage",
"value": "<p>Page content in storage format</p>"
}
}To create a child page, include parentId:
{
"spaceId": "98306",
"parentId": "98391",
"status": "current",
"title": "Child Page",
"body": {
"representation": "storage",
"value": "<p>Child page content</p>"
}
}Response:
{
"id": "98642",
"status": "current",
"title": "New Page Title",
"spaceId": "98306",
"version": {
"number": 1
}
}Update Page
PUT /pages/{pageId}
Content-Type: application/json
{
"id": "98391",
"status": "current",
"title": "Updated Page Title",
"body": {
"representation": "storage",
"value": "<p>Updated content</p>"
},
"version": {
"number": 2,
"message": "Updated via API"
}
}Note: You must increment the version number with each update.
Delete Page
DELETE /pages/{pageId}Returns 204 No Content on success.
Get Page Children
GET /pages/{pageId}/childrenGet Page Versions
GET /pages/{pageId}/versionsGet Page Labels
GET /pages/{pageId}/labelsGet Page Attachments
GET /pages/{pageId}/attachmentsGet Page Comments
GET /pages/{pageId}/footer-commentsGet Page Properties
GET /pages/{pageId}/properties
GET /pages/{pageId}/properties/{propertyId}Create Page Property
POST /pages/{pageId}/properties
Content-Type: application/json
{
"key": "my-property-key",
"value": {"customKey": "customValue"}
}Update Page Property
PUT /pages/{pageId}/properties/{propertyId}
Content-Type: application/json
{
"key": "my-property-key",
"value": {"customKey": "updatedValue"},
"version": {"number": 2}
}Delete Page Property
DELETE /pages/{pageId}/properties/{propertyId}List Spaces
GET /spaces
GET /spaces?limit=25
GET /spaces?type=globalResponse:
{
"results": [
{
"id": "98306",
"key": "SPACEKEY",
"name": "Space Name",
"type": "global",
"status": "current",
"authorId": "557058:...",
"createdAt": "2026-02-12T23:00:00.000Z",
"homepageId": "98305",
"_links": {
"webui": "/spaces/SPACEKEY"
}
}
]
}Get Space
GET /spaces/{spaceId}Get Space Pages
GET /spaces/{spaceId}/pagesGet Space Blogposts
GET /spaces/{spaceId}/blogpostsGet Space Properties
GET /spaces/{spaceId}/propertiesCreate Space Property
POST /spaces/{spaceId}/properties
Content-Type: application/json
{
"key": "space-property-key",
"value": {"key": "value"}
}Get Space Permissions
GET /spaces/{spaceId}/permissionsGet Space Labels
GET /spaces/{spaceId}/labelsList Blogposts
GET /blogposts
GET /blogposts?space-id={spaceId}
GET /blogposts?limit=25Get Blogpost
GET /blogposts/{blogpostId}
GET /blogposts/{blogpostId}?body-format=storageCreate Blogpost
POST /blogposts
Content-Type: application/json
{
"spaceId": "98306",
"title": "My Blog Post",
"body": {
"representation": "storage",
"value": "<p>Blog post content</p>"
}
}Update Blogpost
PUT /blogposts/{blogpostId}
Content-Type: application/json
{
"id": "458753",
"status": "current",
"title": "Updated Blog Post",
"body": {
"representation": "storage",
"value": "<p>Updated content</p>"
},
"version": {
"number": 2
}
}Delete Blogpost
DELETE /blogposts/{blogpostId}Get Blogpost Labels
GET /blogposts/{blogpostId}/labelsGet Blogpost Versions
GET /blogposts/{blogpostId}/versionsGet Blogpost Comments
GET /blogposts/{blogpostId}/footer-commentsList Footer Comments
GET /footer-comments
GET /footer-comments?body-format=storageGet Comment
GET /footer-comments/{commentId}Create Footer Comment
POST /footer-comments
Content-Type: application/json
{
"pageId": "98391",
"body": {
"representation": "storage",
"value": "<p>Comment text</p>"
}
}For blogpost comments:
{
"blogpostId": "458753",
"body": {
"representation": "storage",
"value": "<p>Comment on blogpost</p>"
}
}Update Comment
PUT /footer-comments/{commentId}
Content-Type: application/json
{
"version": {"number": 2},
"body": {
"representation": "storage",
"value": "<p>Updated comment</p>"
}
}Delete Comment
DELETE /footer-comments/{commentId}Get Comment Replies
GET /footer-comments/{commentId}/childrenList Inline Comments
GET /inline-commentsList Attachments
GET /attachments
GET /attachments?limit=25Get Attachment
GET /attachments/{attachmentId}Get Page Attachments
GET /pages/{pageId}/attachmentsList Tasks
GET /tasksGet Task
GET /tasks/{taskId}List Labels
GET /labels
GET /labels?prefix=globalList Custom Content
GET /custom-content
GET /custom-content?type={customContentType}User (V1 API)
The current user endpoint uses the V1 REST API:
GET /confluence/ex/confluence/{cloudId}/wiki/rest/api/user/currentResponse:
{
"type": "known",
"accountId": "557058:...",
"accountType": "atlassian",
"email": "user@example.com",
"publicName": "User Name",
"displayName": "User Name"
}