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

# Domain Block List Management

> Comprehensive domain and email block list management.

<Note>
  Comprehensive domain and email block list management GET retrieves paginated block list with filtering by client assignment and search terms
</Note>

## Overview

Comprehensive domain and email block list management

**Key Features**:

* Returns blocked entries with: email/domain, source (manual/bounce/spam), creation date, client association

## Get Domain Block List

### GET /v1/leads/get-domain-block-list

Retrieves entries from your domain block list with pagination.

**Query Parameters**:

* `api_key` (required): Your API key
* `offset` (optional, default: 0): Pagination offset
* `limit` (optional, default: 100, max: 1000): Number of records
* `filter_client_id` (optional): Filter by client ID
* `filter_email_or_domain` (optional): Search by email or domain name
* `filter_email_with_domain` (optional): Search by email with domain

<RequestExample>
  ```bash cURL theme={null}
  curl "https://server.smartlead.ai/api/v1/leads/get-domain-block-list?api_key=YOUR_KEY&offset=0&limit=100&filter_client_id=1&filter_email_or_domain=example.com"
  ```

  ```python Python theme={null}
  import requests

  API_KEY = "YOUR_API_KEY"

  response = requests.get(
      "https://server.smartlead.ai/api/v1/leads/get-domain-block-list",
      params={
          "api_key": API_KEY,
          "offset": 0,
          "limit": 100,
          "filter_client_id": 1,
          "filter_email_or_domain": "example.com"
      }
  )

  block_list = response.json()
  print(f"Found {len(block_list)} blocked entries")
  ```

  ```javascript JavaScript theme={null}
  const API_KEY = 'YOUR_API_KEY';

  const response = await fetch(
    `https://server.smartlead.ai/api/v1/leads/get-domain-block-list?api_key=${API_KEY}&offset=0&limit=100&filter_client_id=1&filter_email_or_domain=example.com`
  );

  const blockList = await response.json();
  console.log(`Found ${blockList.length} blocked entries`);
  ```
</RequestExample>

## Response Codes

<ResponseField name="200" type="Success">
  Request successful
</ResponseField>

<ResponseField name="400" type="Bad Request">
  Invalid request parameters or malformed request body
</ResponseField>

<ResponseField name="401" type="Unauthorized">
  Invalid or missing API key. Check your authentication.
</ResponseField>

<ResponseField name="404" type="Not Found">
  The requested resource (campaign, lead, email account, etc.) does not exist or you don't have access to it
</ResponseField>

<ResponseField name="422" type="Validation Error">
  Request validation failed. Check parameter types, required fields, and value constraints.
</ResponseField>

<ResponseField name="429" type="Rate Limit Exceeded">
  Too many requests. Please slow down and retry after the rate limit resets.
</ResponseField>

<ResponseField name="500" type="Internal Server Error">
  Server error occurred. Please try again or contact support if the issue persists.
</ResponseField>

<ResponseField name="503" type="Service Unavailable">
  API is temporarily unavailable or under maintenance. Please try again later.
</ResponseField>

<ResponseExample>
  ```json 200 - Success theme={null}
  [
    {
      "id": 228361167,
      "email_or_domain": "competitor.com",
      "created_at": "2025-11-25T12:38:45.193Z",
      "source": "Smartlead.ai Bounce Detection",
      "client_id": null
    }
  ]
  ```

  ```json 401 - Unauthorized theme={null}
  {
    "message": "Invalid API Key"
  }
  ```

  ```json 422 - Validation Error theme={null}
  {
    "error": "Limit must be between 1 and 1000"
  }
  ```
</ResponseExample>

***

## Add to Block List

### POST /v1/leads/add-domain-block-list

Adds domains or email addresses to the global block list.

**Query Parameters**:

* `api_key` (required): Your API key

**Request Body**:

* `domain_block_list` (required): Array of domains/emails to block
* `client_id` (optional): Associate with specific client

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://server.smartlead.ai/api/v1/leads/add-domain-block-list?api_key=YOUR_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "domain_block_list": ["competitor.com", "spam@example.com"],
      "client_id": null
    }'
  ```

  ```python Python theme={null}
  import requests

  API_KEY = "YOUR_API_KEY"

  payload = {
      "domain_block_list": ["competitor.com", "spam@example.com"],
      "client_id": None
  }

  response = requests.post(
      "https://server.smartlead.ai/api/v1/leads/add-domain-block-list",
      params={"api_key": API_KEY},
      json=payload
  )

  result = response.json()
  print(f"Added {len(payload['domain_block_list'])} entries to block list")
  ```

  ```javascript JavaScript theme={null}
  const API_KEY = 'YOUR_API_KEY';

  const payload = {
    domain_block_list: ['competitor.com', 'spam@example.com'],
    client_id: null
  };

  const response = await fetch(
    `https://server.smartlead.ai/api/v1/leads/add-domain-block-list?api_key=${API_KEY}`,
    {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify(payload)
    }
  );

  const result = await response.json();
  console.log('Block list updated');
  ```
</RequestExample>

## Response Codes

<ResponseField name="200" type="Success">
  Request successful
</ResponseField>

<ResponseField name="400" type="Bad Request">
  Invalid request parameters or malformed request body
</ResponseField>

<ResponseField name="401" type="Unauthorized">
  Invalid or missing API key. Check your authentication.
</ResponseField>

<ResponseField name="404" type="Not Found">
  The requested resource (campaign, lead, email account, etc.) does not exist or you don't have access to it
</ResponseField>

<ResponseField name="422" type="Validation Error">
  Request validation failed. Check parameter types, required fields, and value constraints.
</ResponseField>

<ResponseField name="429" type="Rate Limit Exceeded">
  Too many requests. Please slow down and retry after the rate limit resets.
</ResponseField>

<ResponseField name="500" type="Internal Server Error">
  Server error occurred. Please try again or contact support if the issue persists.
</ResponseField>

<ResponseField name="503" type="Service Unavailable">
  API is temporarily unavailable or under maintenance. Please try again later.
</ResponseField>

<ResponseExample>
  ```json 200 - Success theme={null}
  {
    "success": true,
    "message": "3 entries added to block list"
  }
  ```

  ```json 401 - Unauthorized theme={null}
  {
    "message": "Invalid API Key"
  }
  ```

  ```json 422 - Validation Error theme={null}
  {
    "error": "domain_block_list must be an array"
  }
  ```
</ResponseExample>

***

## Delete from Block List

### DELETE /v1/leads/delete-domain-block-list

Removes an entry from the block list.

**Query Parameters**:

* `api_key` (required): Your API key
* `id` (required): ID of the block list entry to delete

<RequestExample>
  ```bash cURL theme={null}
  curl -X DELETE "https://server.smartlead.ai/api/v1/leads/delete-domain-block-list?api_key=YOUR_KEY&id=123"
  ```

  ```python Python theme={null}
  import requests

  API_KEY = "YOUR_API_KEY"
  block_list_id = 123

  response = requests.delete(
      "https://server.smartlead.ai/api/v1/leads/delete-domain-block-list",
      params={
          "api_key": API_KEY,
          "id": block_list_id
      }
  )

  if response.status_code == 200:
      print("Entry removed from block list")
  ```

  ```javascript JavaScript theme={null}
  const API_KEY = 'YOUR_API_KEY';
  const blockListId = 123;

  const response = await fetch(
    `https://server.smartlead.ai/api/v1/leads/delete-domain-block-list?api_key=${API_KEY}&id=${blockListId}`,
    { method: 'DELETE' }
  );

  console.log('Entry removed from block list');
  ```
</RequestExample>

## Response Codes

<ResponseField name="200" type="Success">
  Request successful
</ResponseField>

<ResponseField name="400" type="Bad Request">
  Invalid request parameters or malformed request body
</ResponseField>

<ResponseField name="401" type="Unauthorized">
  Invalid or missing API key. Check your authentication.
</ResponseField>

<ResponseField name="404" type="Not Found">
  The requested resource (campaign, lead, email account, etc.) does not exist or you don't have access to it
</ResponseField>

<ResponseField name="422" type="Validation Error">
  Request validation failed. Check parameter types, required fields, and value constraints.
</ResponseField>

<ResponseField name="429" type="Rate Limit Exceeded">
  Too many requests. Please slow down and retry after the rate limit resets.
</ResponseField>

<ResponseField name="500" type="Internal Server Error">
  Server error occurred. Please try again or contact support if the issue persists.
</ResponseField>

<ResponseField name="503" type="Service Unavailable">
  API is temporarily unavailable or under maintenance. Please try again later.
</ResponseField>

<ResponseExample>
  ```json 200 - Success theme={null}
  {
    "success": true,
    "message": "Entry deleted successfully"
  }
  ```

  ```json 401 - Unauthorized theme={null}
  {
    "message": "Invalid API Key"
  }
  ```

  ```json 404 - Not Found theme={null}
  {
    "error": "Block list entry not found"
  }
  ```
</ResponseExample>
