Close Comments API

The comments API from Close — 4 operation(s) for comments.

Operations 7

GET /comment/ Fetch multiple comments #
POST /comment/ Create a Comment #
GET /comment/{id}/ Fetch an individual comment #
PUT /comment/{id}/ Update a Comment #
DELETE /comment/{id}/ Remove a comment #
GET /comment_thread/ Fetch multiple comment threads #
GET /comment_thread/{id}/ Fetch an individual comment thread #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/close-comments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

close-comments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Close CRM REST API
  title: Close Comments API
  version: 1.0.0
servers:
- url: https://api.close.com/api/v1
security:
- ApiKeyAuth: []
- OAuth2: []
tags:
- name: comments
  externalDocs:
    url: https://developer.close.com/api/resources/comments
paths:
  /comment/:
    get:
      operationId: comments_list
      tags:
      - comments
      summary: Fetch multiple comments
      description: 'Comments may be fetched by `object_id` (the object that was commented on) or by `thread_id`. Exactly one of those filters must be provided.


        Comments on leads the requestor cannot see are omitted from the response.'
      parameters:
      - in: query
        name: thread_id
        required: false
        schema:
          title: Thread ID
          default: null
          anyOf:
          - type: string
          - type: 'null'
      - in: query
        name: object_id
        required: false
        schema:
          title: Object ID
          default: null
          anyOf:
          - type: string
          - type: 'null'
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                - body: <body><p>Real nice comment you've got here.</p></body>
                  created_at: '2024-03-27T18:57:02.770240+00:00'
                  created_by: user_abc123
                  id: comm_abc123
                  lead_id: lead_abc123
                  mentions: []
                  organization_id: orga_abc123
                  removed_at: null
                  removed_by: null
                  thread_id: comthr_abc123
                  updated_at: '2024-03-27T18:57:02.770240+00:00'
                  updated_by: user_abc123
                has_more: false
          description: Successful response
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
    post:
      operationId: comments_create
      tags:
      - comments
      summary: Create a Comment
      description: Create a comment on an object. If a comment thread already exists on that object, a new comment is added to the existing thread. If no thread exists yet, one is created automatically.
      requestBody:
        content:
          application/json:
            example:
              body: <body><p>Real nice activity you've got here.</p></body>
              object_id: acti_abc123
            schema:
              $ref: '#/components/schemas/CreateComment'
        required: true
      responses:
        '201':
          content:
            application/json:
              example:
                body: <body><p>Real nice activity you've got here.</p></body>
                created_at: '2024-03-27T18:57:02.770240+00:00'
                created_by: user_abc123
                id: comm_abc123
                lead_id: lead_abc123
                mentions: []
                organization_id: orga_abc123
                removed_at: null
                removed_by: null
                thread_id: comthr_abc123
                updated_at: '2024-03-27T18:57:02.770240+00:00'
                updated_by: user_abc123
          description: Successful response
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
  /comment/{id}/:
    get:
      operationId: comments_get
      tags:
      - comments
      summary: Fetch an individual comment
      description: A `404` is returned both when the comment does not exist and when the requestor cannot see its lead.
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              example:
                body: <body><p>Real nice comment you've got here.</p></body>
                created_at: '2024-03-27T18:57:02.770240+00:00'
                created_by: user_abc123
                id: comm_abc123
                lead_id: lead_abc123
                mentions: []
                organization_id: orga_abc123
                removed_at: null
                removed_by: null
                thread_id: comthr_abc123
                updated_at: '2024-03-27T18:57:02.770240+00:00'
                updated_by: user_abc123
          description: Successful response
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
    put:
      operationId: comments_update
      tags:
      - comments
      summary: Update a Comment
      description: You can use this endpoint to edit a comment body. Note that users may only update their own comments.
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            example:
              body: <body><p>Oops, wrong activity</p></body>
            schema:
              $ref: '#/components/schemas/UpdateCommentThreads'
        required: true
      responses:
        '200':
          content:
            application/json:
              example:
                body: <body><p>Oops, wrong activity</p></body>
                created_at: '2024-03-27T18:57:02.770240+00:00'
                created_by: user_abc123
                id: comm_abc123
                lead_id: lead_abc123
                mentions: []
                organization_id: orga_abc123
                removed_at: null
                removed_by: null
                thread_id: comthr_abc123
                updated_at: '2024-03-27T18:57:02.770240+00:00'
                updated_by: user_abc123
          description: Successful response
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
    delete:
      operationId: comments_delete
      tags:
      - comments
      summary: Remove a comment
      description: 'Note that contrary to the HTTP verb, this does not necessarily _delete_ a comment (but it will _remove_ it). Comments bodies are removed, but the comment object still exists until all comments in a thread are removed (at which point the entire thread is deleted).


        Permissions around removing comments inherit from the users permission to delete their own or other users'' activities.'
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No content
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
  /comment_thread/:
    get:
      operationId: comments_list_threads
      tags:
      - comments
      summary: Fetch multiple comment threads
      description: Users with restricted lead visibility cannot list comment threads across all leads, and must scope the request to specific threads or objects via the `ids` or `object_ids` filters. Unscoped requests from such users return a `403`.
      parameters:
      - $ref: '#/components/parameters/LimitParam'
      - $ref: '#/components/parameters/SkipParam'
      - in: query
        name: ids
        required: false
        schema:
          title: IDs
          default: null
          anyOf:
          - type: array
            items:
              type: string
          - type: 'null'
      - in: query
        name: object_ids
        required: false
        schema:
          title: Object IDs
          default: null
          anyOf:
          - type: array
            items:
              type: string
          - type: 'null'
      responses:
        '200':
          content:
            application/json:
              example:
                data:
                - created_at: '2024-03-27T18:57:02.759492+00:00'
                  id: comthr_abc123
                  lead_id: lead_abc123
                  num_comments: 2
                  object_id: acti_abc123
                  object_type: activity.custom_activity
                  organization_id: orga_abc123
                  participating:
                  - user_abc123
                  updated_at: '2024-03-27T21:24:20.379507+00:00'
                has_more: true
          description: Successful response
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '403':
          description: The requestor has restricted lead visibility and did not scope the request by `ids` or `object_ids`.
        '404':
          description: Not found
  /comment_thread/{id}/:
    get:
      operationId: comments_get_thread
      tags:
      - comments
      summary: Fetch an individual comment thread
      description: A `404` is returned both when the comment thread does not exist and when the requestor cannot see its lead.
      parameters:
      - in: path
        name: id
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              example:
                created_at: '2024-03-27T18:57:02.759492+00:00'
                id: comthr_abc123
                lead_id: lead_abc123
                num_comments: 2
                object_id: acti_abc123
                object_type: activity.custom_activity
                organization_id: orga_abc123
                participating:
                - user_abc123
                updated_at: '2024-03-27T21:24:20.379507+00:00'
          description: Successful response
        '400':
          description: Bad request
        '401':
          description: Unauthorized
        '404':
          description: Not found
components:
  parameters:
    LimitParam:
      description: Number of results to return.
      in: query
      name: _limit
      required: false
      schema:
        default: 100
        type: integer
    SkipParam:
      description: Number of results to skip before returning, for pagination.
      in: query
      name: _skip
      required: false
      schema:
        default: 0
        type: integer
  schemas:
    UpdateCommentThreads:
      title: UpdateCommentThreads
      type: object
      properties:
        body:
          title: Body
          type: string
      required:
      - body
      additionalProperties: false
    CreateComment:
      title: CreateComment
      type: object
      properties:
        body:
          title: Body
          type: string
        object_id:
          title: Object ID
          type: string
      required:
      - body
      - object_id
      additionalProperties: false
  securitySchemes:
    ApiKeyAuth:
      description: Use your API key as the username and leave the password empty.
      scheme: basic
      type: http
    OAuth2:
      flows:
        authorizationCode:
          authorizationUrl: https://app.close.com/oauth2/authorize/
          scopes:
            all.full_access: Full access to all resources
            offline_access: Request a refresh token
          tokenUrl: https://api.close.com/oauth2/token/
      type: oauth2