Confluence Comment API

Create, retrieve, update, and delete comments on pages and blog posts

OpenAPI Specification

confluence-comment-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Confluence Cloud REST API v2 Attachment Comment API
  description: Next generation REST API for Confluence Cloud providing access to pages, spaces, comments, blog posts, attachments, labels, and other content management operations. This API offers improved performance, consistent pagination, and new features compared to the v1 API.
  version: 2.0.0
  contact:
    name: Atlassian
    url: https://developer.atlassian.com/cloud/confluence/
    email: ecosystem@atlassian.com
  license:
    name: Atlassian Developer Terms
    url: https://developer.atlassian.com/platform/marketplace/atlassian-developer-terms/
  termsOfService: https://www.atlassian.com/legal/cloud-terms-of-service
  x-logo:
    url: https://www.atlassian.com/dam/jcr:5d1374c2-276f-4bca-9ce4-b3f5e2dd5d6c/confluence-icon-gradient-blue.svg
servers:
- url: https://{domain}.atlassian.net/wiki/api/v2
  description: Confluence Cloud
  variables:
    domain:
      default: your-domain
      description: Your Atlassian Cloud site domain
security:
- basicAuth: []
- oAuth2: []
- bearerAuth: []
tags:
- name: Comment
  description: Create, retrieve, update, and delete comments on pages and blog posts
  externalDocs:
    url: https://developer.atlassian.com/cloud/confluence/rest/v2/api-group-comment/
paths:
  /pages/{id}/footer-comments:
    get:
      operationId: getFooterComments
      summary: Get Footer Comments for Page
      description: Returns the footer comments of a specific page.
      tags:
      - Comment
      parameters:
      - $ref: '#/components/parameters/ContentIdPath'
      - $ref: '#/components/parameters/BodyFormatParam'
      - $ref: '#/components/parameters/CursorParam'
      - $ref: '#/components/parameters/LimitParam'
      responses:
        '200':
          description: Returned if the footer comments are returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentBulk'
              examples:
                Getfootercomments200Example:
                  summary: Default getFooterComments 200 response
                  x-microcks-default: true
                  value:
                    results:
                    - id: abc123
                      status: current
                      title: Example Title
                      blogPostId: '500123'
                      pageId: '500123'
                      parentCommentId: '500123'
                      authorId: '500123'
                      createdAt: '2026-01-15T10:30:00Z'
                      resolutionStatus: open
                    _links:
                      next: example_value
                      base: example_value
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /pages/{id}/inline-comments:
    get:
      operationId: getInlineComments
      summary: Get Inline Comments for Page
      description: Returns the inline comments of a specific page.
      tags:
      - Comment
      parameters:
      - $ref: '#/components/parameters/ContentIdPath'
      - $ref: '#/components/parameters/BodyFormatParam'
      - $ref: '#/components/parameters/CursorParam'
      - $ref: '#/components/parameters/LimitParam'
      responses:
        '200':
          description: Returned if the inline comments are returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentBulk'
              examples:
                Getinlinecomments200Example:
                  summary: Default getInlineComments 200 response
                  x-microcks-default: true
                  value:
                    results:
                    - id: abc123
                      status: current
                      title: Example Title
                      blogPostId: '500123'
                      pageId: '500123'
                      parentCommentId: '500123'
                      authorId: '500123'
                      createdAt: '2026-01-15T10:30:00Z'
                      resolutionStatus: open
                    _links:
                      next: example_value
                      base: example_value
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /footer-comments:
    post:
      operationId: createFooterComment
      summary: Create Footer Comment
      description: Creates a footer comment on a page or blog post.
      tags:
      - Comment
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommentCreateRequest'
            examples:
              CreatefootercommentRequestExample:
                summary: Default createFooterComment request
                x-microcks-default: true
                value:
                  blogPostId: '500123'
                  pageId: '500123'
                  parentCommentId: '500123'
                  body:
                    representation: storage
                    value: example_value
      responses:
        '200':
          description: Returned if the comment was created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
              examples:
                Createfootercomment200Example:
                  summary: Default createFooterComment 200 response
                  x-microcks-default: true
                  value:
                    id: abc123
                    status: current
                    title: Example Title
                    blogPostId: '500123'
                    pageId: '500123'
                    parentCommentId: '500123'
                    authorId: '500123'
                    createdAt: '2026-01-15T10:30:00Z'
                    version:
                      createdAt: '2026-01-15T10:30:00Z'
                      message: example_value
                      number: 10
                      minorEdit: true
                      authorId: '500123'
                    body: {}
                    resolutionStatus: open
                    properties:
                      textSelection: example_value
                      textSelectionMatchCount: 10
                    _links:
                      webui: example_value
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /inline-comments:
    post:
      operationId: createInlineComment
      summary: Create Inline Comment
      description: Creates an inline comment on a page or blog post. Inline comments are anchored to a specific text selection.
      tags:
      - Comment
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InlineCommentCreateRequest'
            examples:
              CreateinlinecommentRequestExample:
                summary: Default createInlineComment request
                x-microcks-default: true
                value:
                  blogPostId: '500123'
                  pageId: '500123'
                  body:
                    representation: storage
                    value: example_value
                  inlineCommentProperties:
                    textSelection: example_value
                    textSelectionMatchCount: 10
      responses:
        '200':
          description: Returned if the inline comment was created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
              examples:
                Createinlinecomment200Example:
                  summary: Default createInlineComment 200 response
                  x-microcks-default: true
                  value:
                    id: abc123
                    status: current
                    title: Example Title
                    blogPostId: '500123'
                    pageId: '500123'
                    parentCommentId: '500123'
                    authorId: '500123'
                    createdAt: '2026-01-15T10:30:00Z'
                    version:
                      createdAt: '2026-01-15T10:30:00Z'
                      message: example_value
                      number: 10
                      minorEdit: true
                      authorId: '500123'
                    body: {}
                    resolutionStatus: open
                    properties:
                      textSelection: example_value
                      textSelectionMatchCount: 10
                    _links:
                      webui: example_value
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /comments/{id}:
    get:
      operationId: getCommentById
      summary: Get Comment by Id
      description: Returns a specific comment by id.
      tags:
      - Comment
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the comment.
        schema:
          type: integer
          format: int64
        example: abc123
      - $ref: '#/components/parameters/BodyFormatParam'
      - $ref: '#/components/parameters/VersionParam'
      responses:
        '200':
          description: Returned if the comment is returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
              examples:
                Getcommentbyid200Example:
                  summary: Default getCommentById 200 response
                  x-microcks-default: true
                  value:
                    id: abc123
                    status: current
                    title: Example Title
                    blogPostId: '500123'
                    pageId: '500123'
                    parentCommentId: '500123'
                    authorId: '500123'
                    createdAt: '2026-01-15T10:30:00Z'
                    version:
                      createdAt: '2026-01-15T10:30:00Z'
                      message: example_value
                      number: 10
                      minorEdit: true
                      authorId: '500123'
                    body: {}
                    resolutionStatus: open
                    properties:
                      textSelection: example_value
                      textSelectionMatchCount: 10
                    _links:
                      webui: example_value
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    put:
      operationId: updateComment
      summary: Update Comment
      description: Updates a comment by id. The version number must be incremented.
      tags:
      - Comment
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the comment.
        schema:
          type: integer
          format: int64
        example: abc123
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CommentUpdateRequest'
            examples:
              UpdatecommentRequestExample:
                summary: Default updateComment request
                x-microcks-default: true
                value:
                  body:
                    representation: storage
                    value: example_value
                  version:
                    number: 10
                    message: example_value
      responses:
        '200':
          description: Returned if the comment was updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Comment'
              examples:
                Updatecomment200Example:
                  summary: Default updateComment 200 response
                  x-microcks-default: true
                  value:
                    id: abc123
                    status: current
                    title: Example Title
                    blogPostId: '500123'
                    pageId: '500123'
                    parentCommentId: '500123'
                    authorId: '500123'
                    createdAt: '2026-01-15T10:30:00Z'
                    version:
                      createdAt: '2026-01-15T10:30:00Z'
                      message: example_value
                      number: 10
                      minorEdit: true
                      authorId: '500123'
                    body: {}
                    resolutionStatus: open
                    properties:
                      textSelection: example_value
                      textSelectionMatchCount: 10
                    _links:
                      webui: example_value
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    delete:
      operationId: deleteComment
      summary: Delete Comment
      description: Deletes a comment by id.
      tags:
      - Comment
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the comment.
        schema:
          type: integer
          format: int64
        example: abc123
      responses:
        '204':
          description: Returned if the comment was deleted successfully.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /comments/{id}/children:
    get:
      operationId: getChildComments
      summary: Get Child Comments
      description: Returns the child (reply) comments of a specific comment.
      tags:
      - Comment
      parameters:
      - name: id
        in: path
        required: true
        description: The ID of the parent comment.
        schema:
          type: integer
          format: int64
        example: abc123
      - $ref: '#/components/parameters/BodyFormatParam'
      - $ref: '#/components/parameters/CursorParam'
      - $ref: '#/components/parameters/LimitParam'
      responses:
        '200':
          description: Returned if the child comments are returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentBulk'
              examples:
                Getchildcomments200Example:
                  summary: Default getChildComments 200 response
                  x-microcks-default: true
                  value:
                    results:
                    - id: abc123
                      status: current
                      title: Example Title
                      blogPostId: '500123'
                      pageId: '500123'
                      parentCommentId: '500123'
                      authorId: '500123'
                      createdAt: '2026-01-15T10:30:00Z'
                      resolutionStatus: open
                    _links:
                      next: example_value
                      base: example_value
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    CommentUpdateRequest:
      type: object
      required:
      - body
      - version
      properties:
        body:
          $ref: '#/components/schemas/BodyWrite'
        version:
          $ref: '#/components/schemas/VersionWrite'
    InlineCommentCreateRequest:
      type: object
      required:
      - body
      - inlineCommentProperties
      properties:
        blogPostId:
          type: string
          description: The ID of the blog post to add an inline comment on.
          example: '500123'
        pageId:
          type: string
          description: The ID of the page to add an inline comment on.
          example: '500123'
        body:
          $ref: '#/components/schemas/BodyWrite'
        inlineCommentProperties:
          $ref: '#/components/schemas/InlineCommentProperties'
    Version:
      type: object
      description: Version information for content.
      properties:
        createdAt:
          type: string
          format: date-time
          description: The ISO 8601 timestamp of this version.
          example: '2026-01-15T10:30:00Z'
        message:
          type: string
          description: The message associated with this version.
          example: example_value
        number:
          type: integer
          description: The version number.
          example: 10
        minorEdit:
          type: boolean
          description: Whether this was a minor edit.
          example: true
        authorId:
          type: string
          description: The Atlassian account ID of the version author.
          example: '500123'
    PaginationLinks:
      type: object
      description: Pagination links for cursor-based pagination.
      properties:
        next:
          type: string
          description: URL for the next page of results. Contains the cursor parameter.
          example: example_value
        base:
          type: string
          description: The base URL of the Confluence instance.
          example: example_value
    Error:
      type: object
      description: Error response from the Confluence API.
      properties:
        statusCode:
          type: integer
          description: The HTTP status code.
          example: 10
        data:
          type: object
          properties:
            authorized:
              type: boolean
            valid:
              type: boolean
            errors:
              type: array
              items:
                type: object
                properties:
                  message:
                    type: object
                    properties:
                      key:
                        type: string
                      args:
                        type: array
                        items:
                          type: string
                      translation:
                        type: string
            successful:
              type: boolean
          description: Details about the error.
          example: example_value
        message:
          type: string
          description: A human-readable error message.
          example: example_value
    Comment:
      type: object
      description: Represents a comment on a Confluence page or blog post.
      properties:
        id:
          type: string
          description: The unique identifier of the comment.
          example: abc123
        status:
          type: string
          description: The current status of the comment.
          enum:
          - current
          - draft
          - trashed
          example: current
        title:
          type: string
          description: The title of the comment (typically auto-generated).
          example: Example Title
        blogPostId:
          type: string
          description: The ID of the blog post the comment is on, if applicable.
          example: '500123'
        pageId:
          type: string
          description: The ID of the page the comment is on, if applicable.
          example: '500123'
        parentCommentId:
          type: string
          description: The ID of the parent comment, if this is a reply.
          example: '500123'
        authorId:
          type: string
          description: The Atlassian account ID of the comment author.
          example: '500123'
        createdAt:
          type: string
          format: date-time
          description: The ISO 8601 timestamp when the comment was created.
          example: '2026-01-15T10:30:00Z'
        version:
          $ref: '#/components/schemas/Version'
        body:
          $ref: '#/components/schemas/Body'
        resolutionStatus:
          type: string
          description: Resolution status for inline comments.
          enum:
          - open
          - resolved
          - reopened
          example: open
        properties:
          $ref: '#/components/schemas/InlineCommentProperties'
        _links:
          $ref: '#/components/schemas/CommentLinks'
    CommentBulk:
      type: object
      description: A paginated list of comments.
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Comment'
          example: []
        _links:
          $ref: '#/components/schemas/PaginationLinks'
    CommentLinks:
      type: object
      properties:
        webui:
          type: string
          description: Web UI link for the comment.
          example: example_value
    Body:
      type: object
      description: The body content in various representations.
      properties:
        storage:
          $ref: '#/components/schemas/BodyRepresentation'
        atlas_doc_format:
          $ref: '#/components/schemas/BodyRepresentation'
        view:
          $ref: '#/components/schemas/BodyRepresentation'
    CommentCreateRequest:
      type: object
      required:
      - body
      properties:
        blogPostId:
          type: string
          description: The ID of the blog post to comment on.
          example: '500123'
        pageId:
          type: string
          description: The ID of the page to comment on.
          example: '500123'
        parentCommentId:
          type: string
          description: The ID of the parent comment for replies.
          example: '500123'
        body:
          $ref: '#/components/schemas/BodyWrite'
    VersionWrite:
      type: object
      required:
      - number
      properties:
        number:
          type: integer
          description: The new version number. Must be incremented by 1.
          example: 10
        message:
          type: string
          description: An optional message associated with this version.
          example: example_value
    InlineCommentProperties:
      type: object
      description: Properties specific to inline comments.
      properties:
        textSelection:
          type: string
          description: The selected text that this inline comment is anchored to.
          example: example_value
        textSelectionMatchCount:
          type: integer
          description: The match index of the text selection, if the same text appears multiple times.
          example: 10
    BodyWrite:
      type: object
      required:
      - representation
      - value
      properties:
        representation:
          type: string
          description: The representation format of the body content.
          enum:
          - storage
          - atlas_doc_format
          - wiki
          - editor
          example: storage
        value:
          type: string
          description: The body content in the specified representation.
          example: example_value
    BodyRepresentation:
      type: object
      properties:
        representation:
          type: string
          description: The name of the representation format.
          example: example_value
        value:
          type: string
          description: The body content in this representation.
          example: example_value
  parameters:
    BodyFormatParam:
      name: body-format
      in: query
      description: The representation format for the content body.
      schema:
        type: string
        enum:
        - storage
        - atlas_doc_format
        - view
        - export_view
        - anonymous_export_view
        - editor
    CursorParam:
      name: cursor
      in: query
      description: Used for pagination. The cursor value is returned in the response _links.next when there are more results.
      schema:
        type: string
    ContentIdPath:
      name: id
      in: path
      required: true
      description: The ID of the content.
      schema:
        type: integer
        format: int64
    VersionParam:
      name: version
      in: query
      description: The version number of the content to retrieve.
      schema:
        type: integer
        format: int32
    LimitParam:
      name: limit
      in: query
      description: Maximum number of results to return.
      schema:
        type: integer
        format: int32
        minimum: 1
        maximum: 250
        default: 25
  responses:
    Unauthorized:
      description: Returned if the authentication credentials are missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Returned if the requested resource is not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Returned if the request is malformed or contains invalid parameters.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: Basic authentication using email and API token. Provide your Atlassian account email as the username and an API token as the password.
    oAuth2:
      type: oauth2
      description: OAuth 2.0 (3LO) for Confluence Cloud apps.
      flows:
        authorizationCode:
          authorizationUrl: https://auth.atlassian.com/authorize
          tokenUrl: https://auth.atlassian.com/oauth/token
          scopes:
            read:confluence-content.all: Read Confluence content
            read:confluence-content.summary: Read Confluence content summaries
            write:confluence-content: Create and update Confluence content
            read:confluence-space.summary: Read Confluence space summaries
            write:confluence-space: Create and update Confluence spaces
            read:confluence-user: Read Confluence user information
            read:confluence-groups: Read Confluence groups
            write:confluence-file: Upload attachments to Confluence
            delete:confluence-content: Delete Confluence content
    bearerAuth:
      type: http
      scheme: bearer
      description: Personal Access Token or OAuth 2.0 Bearer token.
externalDocs:
  description: Confluence Cloud REST API v2 Documentation
  url: https://developer.atlassian.com/cloud/confluence/rest/v2/intro/