> ## Documentation Index
> Fetch the complete documentation index at: https://developers.hubspot.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

---
id: 34ffd4d5-4490-4b4a-8014-5258c4f3829d
---

# Retrieve conversation recap data

> Retrieve a recap of a conversation based on the specified object type and object ID. This endpoint provides a variety of insights related to the conversation, including summary, action items, questions asked, call stats, participants, and recording URL.

export const ScopesList = ({scopes = [], description = "This API requires one of the following scopes:"}) => {
  if (!scopes || scopes.length === 0) {
    return null;
  }
  const sortedScopes = scopes.sort((a, b) => a.localeCompare(b));
  return <div>
      <div className="text-sm mb-2">{description}</div>
      <div>
        {sortedScopes.map((scope, index) => <div key={index}>
            <code>
              <span className="text-xs">{scope}</span>
            </code>
          </div>)}
      </div>
    </div>;
};

export const SupportedProducts = ({marketing, sales, service, cms, data, commerce, crm, marketingLevel, salesLevel, serviceLevel, cmsLevel, dataLevel, commerceLevel, crmLevel}) => {
  const translations = {
    description: "Requires one of the following products or higher.",
    productNames: {
      marketing: "Marketing Hub",
      sales: "Sales Hub",
      service: "Service Hub",
      cms: "Content Hub",
      data: "Data Hub",
      commerce: "Revenue Hub",
      crm: "Smart CRM"
    },
    tiers: {
      free: "Free",
      starter: "Starter",
      professional: "Professional",
      enterprise: "Enterprise"
    }
  };
  const translateTier = tier => {
    if (!tier) return '';
    const lowerTier = tier.toLowerCase();
    return translations.tiers[lowerTier] || tier;
  };
  const products = [{
    name: marketing ? translations.productNames.marketing : '',
    level: translateTier(marketingLevel),
    icon: "https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/developer/icons/MarketingHub.svg",
    alt: "Marketing Hub"
  }, {
    name: sales ? translations.productNames.sales : '',
    level: translateTier(salesLevel),
    icon: "https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/developer/icons/SalesHub.svg",
    alt: "Sales Hub"
  }, {
    name: service ? translations.productNames.service : '',
    level: translateTier(serviceLevel),
    icon: "https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/developer/icons/ServiceHub.svg",
    alt: "Service Hub"
  }, {
    name: cms ? translations.productNames.cms : '',
    level: translateTier(cmsLevel),
    icon: "https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/developer/icons/ContentHub.svg",
    alt: "Content Hub"
  }, {
    name: data ? translations.productNames.data : '',
    level: translateTier(dataLevel),
    icon: "https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/developer/icons/DataHub.svg",
    alt: "Data Hub"
  }, {
    name: commerce ? translations.productNames.commerce : '',
    level: translateTier(commerceLevel),
    icon: "https://www.hubspot.com/hubfs/Knowledge_Base/subscription_key_icons/commerce_icon.svg",
    alt: "Revenue Hub"
  }, {
    name: crm ? translations.productNames.crm : '',
    level: translateTier(crmLevel),
    icon: "https://www.hubspot.com/hubfs/Knowledge_Base_2023-24-25/developer/icons/SmartCRM.svg",
    alt: "Smart CRM"
  }].filter(product => product.name && product.level);
  if (products.length === 0) return null;
  return <div>
      <div className="text-sm mb-2">{translations.description}</div>
      <div className={`grid ${products.length === 1 ? 'grid-cols-1' : 'grid-cols-2'} gap-1.5`}>
        {products.map((product, index) => <div key={index} style={{
    display: 'flex',
    alignItems: 'center'
  }}>
            <img src={product.icon} alt={product.alt} className="w-3.5 h-3.5 mr-1.5 mt-2.5 mb-2.5 flex-shrink-0 align-middle" />
            <span className="font-medium mr-1 text-sm">{product.name} -</span>
            <span className="text-sm">{product.level}</span>
          </div>)}
      </div>
    </div>;
};

<AccordionGroup>
  <Accordion title="Supported products" defaultOpen="true" icon="cubes">
    <SupportedProducts sales={true} service={true} salesLevel="PROFESSIONAL" serviceLevel="PROFESSIONAL" />
  </Accordion>

  <Accordion title="Required Scopes" icon="key">
    <ScopesList
      scopes={[
  'crm.objects.contacts.read'
]}
    />
  </Accordion>
</AccordionGroup>


## OpenAPI

````yaml specs/2026-09/crm-notetaker-conversation-recap-v2026-09.json GET /notetaker/2026-09/conversation/recap/{objectTypeId}/{objectId}
openapi: 3.0.1
info:
  title: CRM Notetaker Conversation Recap
  description: Basepom for all HubSpot Projects
  version: 2026-09
  x-hubspot-product-tier-requirements:
    marketing: FREE
    sales: FREE
    service: FREE
    cms: FREE
    commerce: FREE
    crmHub: FREE
    dataHub: FREE
servers:
  - url: https://api.hubapi.com
security: []
tags:
  - name: Basic
paths:
  /notetaker/2026-09/conversation/recap/{objectTypeId}/{objectId}:
    get:
      tags:
        - Basic
      summary: Retrieve conversation recap data
      description: >-
        Retrieve a recap of a conversation based on the specified object type
        and object ID. This endpoint provides a variety of insights related to
        the conversation, including summary, action items, questions asked, call
        stats, participants, and recording URL.
      operationId: get-/notetaker/2026-09/conversation/recap/{objectTypeId}/{objectId}
      parameters:
        - name: objectId
          in: path
          description: >-
            The unique identifier of the object for which the conversation recap
            is being retrieved. This is a required integer parameter.
          required: true
          style: simple
          explode: false
          schema:
            type: string
        - name: objectTypeId
          in: path
          description: >-
            The type of the object for which the conversation recap is being
            retrieved. This is a required string parameter.
          required: true
          style: simple
          explode: false
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConversationRecapResponse'
        default:
          $ref: '#/components/responses/Error'
          description: ''
      security:
        - oauth2:
            - crm.objects.contacts.highly_sensitive.read.v2
        - oauth2:
            - crm.objects.contacts.sensitive.read.v2
        - oauth2:
            - crm.schemas.contacts.read
        - oauth2:
            - crm.objects.contacts.read
components:
  schemas:
    ConversationRecapResponse:
      required:
        - actionItems
        - callStats
        - notes
        - participants
        - questionsAsked
        - recordingUrl
      type: object
      properties:
        actionItems:
          $ref: '#/components/schemas/ConversationRecapActionItemsResult'
        callStats:
          $ref: '#/components/schemas/ConversationRecapCallStatsResult'
        notes:
          $ref: '#/components/schemas/ConversationRecapNotesResult'
        participants:
          $ref: '#/components/schemas/ConversationRecapParticipantsResult'
        questionsAsked:
          $ref: '#/components/schemas/ConversationRecapQuestionsAskedResult'
        recordingUrl:
          $ref: '#/components/schemas/ConversationRecapRecordingUrlResult'
        summary:
          $ref: '#/components/schemas/ConversationRecapSummaryResult'
    ConversationRecapActionItemsResult:
      required:
        - items
        - status
      type: object
      properties:
        errorMessage:
          type: string
          description: >-
            A description of the error that occurred. Only present when status
            is FAILED.
        items:
          type: array
          description: >-
            The list of action items extracted from the conversation. Populated
            when status is SUCCEEDED; empty otherwise.
          items:
            $ref: '#/components/schemas/ActionItem'
        status:
          type: string
          description: >-
            The current state of action item generation. SUCCEEDED — action
            items are available. NOT_FOUND — no action items have been generated
            for this engagement. IN_PROGRESS — generation is currently underway.
            FAILED — an error occurred while retrieving action items.
          enum:
            - FAILED
            - IN_PROGRESS
            - NOT_FOUND
            - SUCCEEDED
    ConversationRecapCallStatsResult:
      required:
        - hasTranscript
        - status
      type: object
      properties:
        durationMs:
          type: integer
          description: The length of the recorded conversation in milliseconds.
          format: int64
        errorMessage:
          type: string
          description: >-
            A description of the error that occurred. Only present when status
            is FAILED.
        hasTranscript:
          type: boolean
          description: Whether a transcript for a conversation is found.
        ownerTalkTimePercentage:
          type: number
          description: The percentage of talk-time attributed to the owner participant.
        status:
          type: string
          description: >-
            The status of fetching call stats. Either SUCCEEDED, NOT_FOUND, or
            FAILED.
          enum:
            - FAILED
            - IN_PROGRESS
            - NOT_FOUND
            - SUCCEEDED
    ConversationRecapNotesResult:
      required:
        - status
      type: object
      properties:
        errorMessage:
          type: string
          description: >-
            A description of the error that occurred. Only present when status
            is FAILED.
        notes:
          type: string
          description: The notes on the conversation object in HTML.
        status:
          type: string
          description: >-
            The status of fetching the notes. Either SUCCEEDED, NOT_FOUND, or
            FAILED.
          enum:
            - FAILED
            - IN_PROGRESS
            - NOT_FOUND
            - SUCCEEDED
    ConversationRecapParticipantsResult:
      required:
        - participants
        - status
      type: object
      properties:
        errorMessage:
          type: string
          description: >-
            A description of the error that occurred. Only present when status
            is FAILED.
        participants:
          type: array
          description: A list of participants.
          items:
            $ref: '#/components/schemas/ParticipantInfo'
        status:
          type: string
          description: The status of fetching participants. Either SUCCEEDED or FAILED.
          enum:
            - FAILED
            - IN_PROGRESS
            - NOT_FOUND
            - SUCCEEDED
    ConversationRecapQuestionsAskedResult:
      required:
        - questionsAndAnswers
        - status
      type: object
      properties:
        errorMessage:
          type: string
          description: >-
            A description of the error that occurred. Only present when status
            is FAILED.
        questionsAndAnswers:
          type: array
          description: 'A list of question and answer pairs. '
          items:
            $ref: '#/components/schemas/QuestionAndAnswer'
        status:
          type: string
          description: >-
            The status of fetching questions and answers. Either FAILED,
            NOT_FOUND, or SUCCEEDED.
          enum:
            - FAILED
            - IN_PROGRESS
            - NOT_FOUND
            - SUCCEEDED
    ConversationRecapRecordingUrlResult:
      required:
        - status
      type: object
      properties:
        errorMessage:
          type: string
          description: >-
            A description of the error that occurred. Only present when status
            is FAILED.
        recordingUrl:
          type: string
          description: A temporary URL hosting a recording of a conversation.
        status:
          type: string
          description: >-
            The status of creating a URL. Either FAILED, NOT_FOUND, or
            SUCCEEDED.
          enum:
            - FAILED
            - IN_PROGRESS
            - NOT_FOUND
            - SUCCEEDED
    ConversationRecapSummaryResult:
      required:
        - status
      type: object
      properties:
        errorMessage:
          type: string
          description: >-
            A description of the error that occurred. Only present when status
            is FAILED.
        status:
          type: string
          description: >-
            The current state of summary generation. SUCCEEDED — summary is
            available. NOT_FOUND — no summary has been generated for this
            engagement. FAILED — an error occurred while retrieving the summary.
          enum:
            - FAILED
            - NOT_FOUND
            - SUCCEEDED
        value:
          type: string
          description: >-
            The AI-generated summary text for the conversation. Present when
            status is SUCCEEDED; absent otherwise.
    Error:
      required:
        - category
        - correlationId
        - message
      type: object
      properties:
        category:
          type: string
          description: The error category, represented as a string.
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: >-
            An object providing context about the error condition, where each
            property is an array of strings.
          example: >-
            {invalidPropertyName=[propertyValue], missingScopes=[scope1,
            scope2]}
        correlationId:
          type: string
          description: >-
            A unique identifier for the request, used for tracking and support
            purposes. It is a string in UUID format.
          format: uuid
          example: aeb5f871-7f07-4993-9211-075dc63e7cbf
        errors:
          type: array
          description: >-
            An array containing further information about the error, with each
            item being an ErrorDetail object.
          items:
            $ref: '#/components/schemas/ErrorDetail'
        links:
          type: object
          additionalProperties:
            type: string
          description: >-
            A map of link names to associated URIs containing documentation
            about the error or recommended remediation steps. Each link is
            represented as a string.
        message:
          type: string
          description: >-
            A human readable message describing the error along with remediation
            steps where appropriate. It is a string.
          example: An error occurred
        subCategory:
          type: string
          description: >-
            A specific category providing more detailed information about the
            error. It is a string.
      description: >-
        Represents an error response returned by the API when an operation
        fails. This component is used in various endpoints to provide detailed
        information about the error encountered.
      example:
        message: Invalid input (details will vary based on the error)
        correlationId: aeb5f871-7f07-4993-9211-075dc63e7cbf
        category: VALIDATION_ERROR
        links:
          knowledge-base: https://www.hubspot.com/products/service/knowledge-base
    ActionItem:
      required:
        - title
      type: object
      properties:
        assignee:
          type: string
          description: >-
            A string indicating the individual assigned to the action item. This
            property is optional.
        title:
          type: string
          description: >-
            A string representing the title or main description of the action
            item. This property is required.
    ParticipantInfo:
      required:
        - isHost
        - name
      type: object
      properties:
        email:
          type: string
          description: >-
            The email address of the participant. Only present when the
            participant is a HubSpot Contact.
        isHost:
          type: boolean
          description: Whether this participant was the host of the conversation.
        name:
          type: string
          description: 'The name of the participant. '
        phoneNumber:
          type: string
          description: >-
            The phone number of the participant. Only present when the
            participant is a HubSpot Contact.
    QuestionAndAnswer:
      required:
        - question
      type: object
      properties:
        answer:
          $ref: '#/components/schemas/SpeakerStatement'
        question:
          $ref: '#/components/schemas/SpeakerStatement'
    ErrorDetail:
      required:
        - message
      type: object
      properties:
        code:
          type: string
          description: >-
            The status code associated with the error detail. This helps
            identify the type of error that occurred.
        context:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: >-
            An object providing context about the error condition. It contains
            additional properties that offer more details, such as missing
            scopes or other relevant information.
          example: '{missingScopes=[scope1, scope2]}'
        in:
          type: string
          description: >-
            The name of the field or parameter in which the error was found. It
            provides context about the location of the error.
        message:
          type: string
          description: >-
            A human-readable message describing the error along with remediation
            steps where appropriate. This is a required field.
        subCategory:
          type: string
          description: >-
            A specific category that contains more specific detail about the
            error. It offers further classification of the error.
      description: >-
        Represents detailed information about an error that occurred in the API.
        This component is used to provide additional context and specifics about
        errors, typically as part of an error response.
    SpeakerStatement:
      type: object
      properties:
        speakerName:
          type: string
          description: The speaker attributed to this statement.
        text:
          type: string
          description: The time at which this statement occurred.
        timestampSeconds:
          type: number
          description: >-
            The time in a recorded conversation at which this statement
            occurred.
  responses:
    Error:
      description: An error occurred.
      content:
        '*/*':
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://app.hubspot.com/oauth/authorize
          tokenUrl: https://api.hubapi.com/oauth/v1/token
          scopes:
            crm.objects.contacts.highly_sensitive.read.v2: ''
            crm.objects.contacts.read: ''
            crm.objects.contacts.sensitive.read.v2: ''
            crm.schemas.contacts.read: ''

````