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

# Search existing topics

> Topics we already track, matched on name and related terms. Use them before adding new keywords: an existing topic is live at once, with history, while a new one takes about a day to approve and 2 to 4 days before people show up.

**Free.** This doesn't use any contacts from your plan.



## OpenAPI

````yaml /api-reference/openapi.json get /api/v1/topics
openapi: 3.1.0
info:
  title: Intent Leads API
  version: '1.0'
  description: >-
    The Intent Leads API finds B2B people actively researching the topics you
    sell into, and exports them with contact details into your own tools.


    **Authentication.** Send an API key as a bearer token: `Authorization:
    Bearer il_live_…`. Keys belong to one organization. Standard keys work with
    everything except billing, team and key management, which need an admin key.


    **What costs contacts.** Only `POST /api/v1/exports` with `"dry_run": false`
    uses contacts from your plan. Quotes, counts, checks, samples and
    re-downloads are free.


    **Errors.** Every error is JSON: `{"error": "code", "message":
    "Plain-English explanation"}`. Codes are stable; messages may change.


    **Conventions.** JSON by default. Dates are `YYYY-MM-DD` and timestamps ISO
    8601, all in UTC. Lane codes (`L1`) are case-insensitive.
servers:
  - url: https://intentleads.si
security:
  - bearerAuth: []
tags:
  - name: Exports
    description: Quote (free) and buy new people from your lanes, then download them.
  - name: Leads
    description: Pull and re-download the leads you've exported, and list deliveries.
  - name: Lanes
    description: >-
      Create, inspect and tune lanes: keywords plus the companies and roles you
      want.
  - name: Topics
    description: >-
      Topics we already track: live at once, with history. Use them before
      adding new keywords.
  - name: Keywords
    description: >-
      Add and remove a lane's keywords: existing topics, or new ones approved as
      their own topic.
  - name: Checks
    description: >-
      Free lane checks that size every filter step over 14 days, plus quick
      topic signals.
  - name: Company list
    description: >-
      The target-company list your lanes can narrow to or use instead of
      industries.
  - name: Exclusions
    description: Companies and people left out of every lane, before anything is bought.
  - name: Suppressions
    description: People you exported who later asked to be removed.
  - name: Usage
    description: Contacts used and left this billing period.
  - name: Billing
    description: Plan, invoices and plan changes. Admin keys only.
  - name: Team
    description: Members and invite links. Admin keys only.
  - name: API keys
    description: Create, rename, rotate and revoke API keys. Admin keys only.
  - name: Account
    description: Check which organization a key belongs to, and rename it.
  - name: Reference
    description: Valid values for lane filters.
  - name: Activity
    description: A feed of changes and events in your organization.
paths:
  /api/v1/topics:
    get:
      tags:
        - Topics
      summary: Search existing topics
      description: >-
        Topics we already track, matched on name and related terms. Use them
        before adding new keywords: an existing topic is live at once, with
        history, while a new one takes about a day to approve and 2 to 4 days
        before people show up.


        **Free.** This doesn't use any contacts from your plan.
      operationId: searchTopics
      parameters:
        - name: search
          in: query
          required: true
          description: What buyers research, e.g. `answering service`.
          schema:
            type: string
          example: answering service
        - name: type
          in: query
          required: false
          description: '`b2b` (default), `b2c` or `all`.'
          schema:
            type: string
            enum:
              - b2b
              - b2c
              - all
        - name: limit
          in: query
          required: false
          description: 1 to 100, default 20.
          schema:
            type: integer
            minimum: 1
            maximum: 100
        - name: offset
          in: query
          required: false
          description: For the next page.
          schema:
            type: integer
            minimum: 0
        - name: signal
          in: query
          required: false
          description: '`true` adds the first 10 results'' one-day size.'
          schema:
            type: boolean
      responses:
        '200':
          description: Matching topics.
          content:
            application/json:
              schema:
                type: object
                properties:
                  search:
                    type: string
                  topics:
                    type: array
                    items:
                      $ref: '#/components/schemas/Topic'
                  next_offset:
                    type:
                      - integer
                      - 'null'
                    description: Pass as `offset` for more.
                  note:
                    type: string
                required:
                  - search
                  - topics
                  - next_offset
                  - note
              example:
                search: answering service
                topics:
                  - topic: tp503611
                    name: Outsourced Receptionist
                    type: B2B
                    category: Business & Industrial › Business Services
                    path:
                      - Business & Industrial
                      - Business Services
                    first_tracked: '2026-08-06'
                    signal_latest_day:
                      all: 3558
                      medium_plus: 308
                      as_of: '2026-10-14'
                      deliverable: false
                next_offset: null
                note: Existing topics are live now, with history.
        '400':
          description: Bad search.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                invalid_search:
                  value:
                    error: invalid_search
                    message: Search for at least 2 characters.
                invalid_type:
                  value:
                    error: invalid_type
                    message: type must be b2b, b2c or all.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    Topic:
      type: object
      properties:
        topic:
          type: string
          description: >-
            Topic id, like `tp503611`. Add it to a lane with `POST
            /api/v1/lanes/{code}/keywords {"topic": ...}`.
        name:
          type: string
        type:
          type:
            - string
            - 'null'
          description: '`B2B` or `B2C`.'
        category:
          type:
            - string
            - 'null'
        path:
          type: array
          items:
            type: string
          description: Where the topic sits, broadest first.
        first_tracked:
          type:
            - string
            - 'null'
          format: date
          description: When we started tracking it.
        signal_latest_day:
          type: object
          properties:
            all:
              type:
                - integer
                - 'null'
            medium_plus:
              type:
                - integer
                - 'null'
            as_of:
              type:
                - string
                - 'null'
              format: date
            deliverable:
              type: boolean
              const: false
          required:
            - all
            - medium_plus
            - as_of
            - deliverable
          description: >-
            One day's research on the topic, worldwide and before any filter. A
            size guide, not people you could export.
      required:
        - topic
        - name
      example:
        topic: tp503611
        name: Outsourced Receptionist
        type: B2B
        category: Business & Industrial › Business Services
        path:
          - Business & Industrial
          - Business Services
        first_tracked: '2026-08-06'
        signal_latest_day:
          all: 3558
          medium_plus: 308
          as_of: '2026-10-14'
          deliverable: false
    Error:
      type: object
      properties:
        error:
          type: string
          example: lane_not_found
          description: Stable machine-readable code, e.g. `lane_not_found`.
        message:
          type: string
          example: No lane L9.
          description: Plain-English explanation you can show to a person.
      required:
        - error
        - message
      description: Every error has this shape.
  responses:
    Unauthorized:
      description: Missing, malformed, unknown or revoked API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            unauthorized:
              value:
                error: unauthorized
                message: 'Send a valid API key as: Authorization: Bearer il_live_…'
    InternalError:
      description: >-
        Unexpected server error. Safe to retry reads; retry an export only with
        the same `idempotency_key`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            internal_error:
              value:
                error: internal_error
                message: Something went wrong. Try again.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: il_live_…
      description: >-
        An Intent Leads API key, e.g. `il_live_` followed by 32 letters and
        digits. Create one on the API and CLI page of the dashboard.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.