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

# Start a lead generation run

> Sweep several of the signals you already have, all at once, and collect what they find into one list, up to `target_leads`. This is what makes a signal run at all: a signal no program picks never sweeps. It records a lead generation program with no schedule (open it under Settings > Signals > Lead generation to put it on one, add a lead score floor or firmographic rules, rewrite the QA prompt or choose the lists it fills) and starts a run of it immediately. It creates no signal.

Pick the signals from [List signals](/api-reference/signals/list-signals). Every kind with a sweep of its own can be picked; the inbox signals and job change alerts cannot. With `qa_enabled` the run collects about 30% more than the target and has an AI judge each lead against your ICP and personas, dropping the ones that fail.

**This is the operation that spends.** Starting a run starts every picked signal's own sweep immediately, each billing at its own rate (per post or article judged, per person collected), and the QA adds one AI call per lead judged. A run can take from minutes to hours; this returns as soon as it has started.



## OpenAPI

````yaml /reference/openapi.yaml post /v2/lead-generation-runs
openapi: 3.1.0
info:
  title: Tamtam Public API
  version: 2.0.0
servers:
  - url: https://api.tamtam.ai/api
security: []
paths:
  /v2/lead-generation-runs:
    post:
      tags:
        - Signals
      summary: Start a lead generation run
      description: >-
        Sweep several of the signals you already have, all at once, and collect
        what they find into one list, up to `target_leads`. This is what makes a
        signal run at all: a signal no program picks never sweeps. It records a
        lead generation program with no schedule (open it under Settings >
        Signals > Lead generation to put it on one, add a lead score floor or
        firmographic rules, rewrite the QA prompt or choose the lists it fills)
        and starts a run of it immediately. It creates no signal.


        Pick the signals from [List
        signals](/api-reference/signals/list-signals). Every kind with a sweep
        of its own can be picked; the inbox signals and job change alerts
        cannot. With `qa_enabled` the run collects about 30% more than the
        target and has an AI judge each lead against your ICP and personas,
        dropping the ones that fail.


        **This is the operation that spends.** Starting a run starts every
        picked signal's own sweep immediately, each billing at its own rate (per
        post or article judged, per person collected), and the QA adds one AI
        call per lead judged. A run can take from minutes to hours; this returns
        as soon as it has started.
      operationId: start-lead-generation-run
      parameters:
        - description: >-
            Target account UUID. Required for staff callers; ignored for
            customer API keys.
          explode: false
          in: query
          name: account_id
          schema:
            description: >-
              Target account UUID. Required for staff callers; ignored for
              customer API keys.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StartLeadGenerationRunBody'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LeadGenerationRunStartedDto'
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorModel'
          description: Error
      security:
        - apikeyAuth: []
        - bearerAuth: []
components:
  schemas:
    StartLeadGenerationRunBody:
      additionalProperties: false
      properties:
        name:
          description: >-
            Optional name for the program, which also names the list its runs
            fill. Omit for a timestamped default.
          maxLength: 120
          type: string
        qa_enabled:
          description: >-
            Have an AI judge each lead against your ICP and personas and drop
            the failures. Defaults to true.
          type: boolean
        signals:
          description: >-
            One to twenty signals to sweep, from List signals. Every kind with a
            sweep of its own can be picked.
          items:
            $ref: '#/components/schemas/LeadGenerationSignalPickDto'
          maxItems: 20
          minItems: 1
          type:
            - array
            - 'null'
        target_leads:
          description: How many leads you want in the list.
          format: int64
          maximum: 2000
          minimum: 1
          type: integer
      required:
        - target_leads
        - signals
      type: object
    LeadGenerationRunStartedDto:
      additionalProperties: false
      properties:
        name:
          type: string
        program_id:
          description: >-
            The program recorded for this run, with no schedule. Open it under
            Settings > Signals > Lead generation to put it on one.
          type: string
        qa_enabled:
          type: boolean
        run_id:
          type: string
        signals:
          description: How many signals the run sweeps.
          format: int64
          type: integer
        target_leads:
          format: int32
          type: integer
      required:
        - program_id
        - run_id
        - name
        - target_leads
        - qa_enabled
        - signals
      type: object
    ErrorModel:
      additionalProperties: false
      properties:
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
      type: object
    LeadGenerationSignalPickDto:
      additionalProperties: false
      properties:
        id:
          description: The signal's id from List signals.
          type: string
        kind:
          description: The signal's kind, exactly as List signals reports it.
          enum:
            - linkedin_content
            - news_content
            - job_posting
            - page_follower
            - new_hire
            - past_company_move
            - deal_stage_lookalike
            - agent
          type: string
      required:
        - kind
        - id
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
  securitySchemes:
    apikeyAuth:
      description: Account API key passed in the Authorization header
      in: header
      name: Authorization
      type: apiKey
    bearerAuth:
      description: Bearer JWT obtained via the OAuth 2.1 authorization flow
      scheme: bearer
      type: http

````