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

# The topics a lead's conversation has been classified into.

> Unpaginated, no limit: the taxonomy is capped at 30 Active topics per agency
(see the remark on /analytics/topics/options), and LeadTopics is unique on
(LeadId, TopicId), so a lead's list is bounded well under any page size.
            
Deliberately not gated on the analytics add-on, unlike /analytics/topics.
The contact card's Topics tab is shown to every agency, so this stays on the
ordinary AgencyUser policy inherited from the controller.
            
For the same reason org:client is *narrowed* to its own sources rather than
rejected outright the way the analytics endpoints reject it: a client who can
open the conversation should see what it was about.



## OpenAPI

````yaml https://megastream25-api.closebot.com/swagger/v1/swagger.json get /lead/{leadId}/topics
openapi: 3.0.4
info:
  title: CloseBot API
  version: v1
servers:
  - url: https://api.closebot.com
    description: CloseBot API Endpoint
security:
  - Key: []
tags:
  - name: Account
  - name: AccountNotification
  - name: Agency
  - name: Analytics
  - name: Billing
  - name: Bot
  - name: BotMetric
  - name: BotSourceVariable
  - name: BotTemplate
  - name: BotTesting
  - name: Dashboard
  - name: Hierarchy
  - name: Lead
  - name: Leaderboard
  - name: Library
  - name: LiveDemo
  - name: Notification
  - name: Persona
  - name: Report
  - name: SmartFAQ
  - name: Source
  - name: SourceChannel
  - name: Webhook
paths:
  /lead/{leadId}/topics:
    get:
      tags:
        - Lead
      summary: The topics a lead's conversation has been classified into.
      description: >-
        Unpaginated, no limit: the taxonomy is capped at 30 Active topics per
        agency

        (see the remark on /analytics/topics/options), and LeadTopics is unique
        on

        (LeadId, TopicId), so a lead's list is bounded well under any page size.
                    
        Deliberately not gated on the analytics add-on, unlike
        /analytics/topics.

        The contact card's Topics tab is shown to every agency, so this stays on
        the

        ordinary AgencyUser policy inherited from the controller.
                    
        For the same reason org:client is *narrowed* to its own sources rather
        than

        rejected outright the way the analytics endpoints reject it: a client
        who can

        open the conversation should see what it was about.
      parameters:
        - name: leadId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LeadTopicDto'
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LeadTopicDto'
            text/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LeadTopicDto'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
            text/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
components:
  schemas:
    LeadTopicDto:
      type: object
      properties:
        topicId:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        slug:
          type: string
          nullable: true
      additionalProperties: false
      description: >-
        One conversation topic carried by a lead.
                    
        Name and slug only. `LeadTopic.StartedOn` and `LeadTopic.Sentiment`

        are deliberately not projected: both are per-<em>conversation</em>
        values

        copied onto every one of a lead's rows, so they are identical across the

        whole list and carry no per-topic information.
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
  securitySchemes:
    Key:
      type: apiKey
      description: CloseBot API Key Authorization
      name: X-CB-KEY
      in: header

````