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

# Remove Campaign Lead

> Remove a single lead from a campaign queue before, during, or after dialling, preserving any call records that already exist.

<Warning>
  **Legacy endpoint - deprecated.** Unversioned endpoints are scheduled for removal on **July 31, 2026**. A public v1 replacement is not currently listed in the v1 reference. This endpoint remains available for existing integrations until then.
</Warning>

Removes a single lead from a campaign queue. If the lead has not been called yet, it is skipped entirely and never dialled. If a call is currently in progress, that call is allowed to complete and its log is preserved. If the lead has already been called, the lead record is removed from the queue but the call log it produced remains queryable through [List Call Logs](/docs/api-reference/call-logs/list).

## When to use this

Per-lead removal is the right tool for honoring opt-outs and cleaning up bad data without touching the rest of the campaign. Common cases:

* **Contact requested removal**: a customer asked to be removed from outreach. Removing the lead before its turn comes up prevents the call.
* **Data quality fix**: the lead was uploaded with an incorrect phone number or wrong consent state. Remove it, correct the source, and re-add the corrected record.
* **Compliance review**: the lead needs to be pulled out while you investigate a complaint, but you want to keep the existing call log intact for audit.

To stop the entire campaign rather than a single lead, use [Update Campaign](/docs/api-reference/campaigns/update) to pause it, or cancel it through the dashboard.

## Behavior

* Calls already in progress are not interrupted.
* Call logs produced by previous attempts on this lead remain available.
* The lead's queue position is freed; subsequent leads do not shift their scheduled times.

## Path parameters

| Parameter | Description                                           |
| --------- | ----------------------------------------------------- |
| `id`      | The campaign-lead ID, for example `cmp_5tw8vz2rnx1q`. |

## Errors

* `404 Not Found` is returned when the campaign-lead does not exist or has already been removed.
* `409 Conflict` is returned when the campaign is in a terminal state (completed or cancelled) and per-lead removal is no longer meaningful.

## Related endpoints

* [Get Campaign Lead](/docs/api-reference/campaign-leads/get): inspect a lead before removing it.
* [Upload Campaign Leads](/docs/api-reference/campaign-leads/upload): bulk-add corrected leads.
* [List Call Logs](/docs/api-reference/call-logs/list): review the calls produced before the lead was removed.


## OpenAPI

````yaml DELETE /campaigns-leads/{id}
openapi: 3.0.0
info:
  title: DialNexa API
  description: >-
    Public REST API for the DialNexa voice AI platform. Versioned endpoints are
    under /v1; unversioned endpoints are legacy and deprecated.
  version: 1.0.0
servers:
  - url: https://api.dialnexa.com
    description: DialNexa production API
security:
  - bearer: []
tags:
  - name: API Keys
  - name: Agent Functions
  - name: Agents V1
  - name: Agents2
  - name: Batch Calls
  - name: Batch Calls V1
  - name: Call Logs
  - name: Calls
  - name: Calls V1
  - name: Campaign Leads
  - name: Campaigns
  - name: External Webhooks
  - name: Knowledge Base
  - name: Knowledge Base V1
  - name: LLMs
  - name: LLMs V1
  - name: Languages
  - name: Languages V1
  - name: Organization Phone Numbers
  - name: Organization Phone Numbers V1
  - name: Phone Number Pricing
  - name: Phone Number Pricing V1
  - name: Transcribers
  - name: Transcribers V1
  - name: User Webhooks
  - name: User Webhooks V1
  - name: V1
  - name: Voices
  - name: Voices V1
  - name: Webcall
  - name: Workflow Leads
  - name: Workflow Leads V1
  - name: Workflows
  - name: Workflows V1
paths:
  /campaigns-leads/{id}:
    delete:
      tags:
        - Campaign Leads
      summary: Soft delete a lead (mark as deleted)
      description: >-
        **Legacy endpoint - deprecated, scheduled for removal on July 31,
        2026.** Use the `/v1` version for new integrations. 
      operationId: CampaignsLeadsController_softDelete
      parameters:
        - name: campaignId
          required: true
          in: path
          description: ID of the campaign
          schema:
            type: string
        - name: id
          required: true
          in: path
          description: ID of the lead
          schema:
            type: string
      responses:
        '200':
          description: Lead soft deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignLead'
        '404':
          description: Lead not found
        '500':
          description: Internal server error
      deprecated: true
components:
  schemas:
    CampaignLead:
      type: object
      properties:
        id:
          type: string
          example: lead_abc123
          description: Signed lead ID
      required:
        - id
  securitySchemes:
    bearer:
      scheme: bearer
      bearerFormat: JWT
      type: http

````