> ## 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.

# Block Email Domains

> Block one or more email domains to prevent future outreach

<Note>
  Prevent emails to specific domains. Essential for managing bounces, spam complaints, and invalid domains across all campaigns.
</Note>

## Overview

Blocks one or more email domains system-wide to prevent future outreach. Useful for bounce management, spam complaint handling, and maintaining sender reputation.

**Block Effects:**

* No future emails sent to blocked domains
* Applies across ALL campaigns
* Existing leads marked appropriately
* Can be unblocked later via domain block list management

**Common Block Sources:**

* `manual`: User-initiated block
* `bounce`: Auto-block from hard bounces
* `complaint`: Spam complaints
* `invalid`: Email validation failures

## Query Parameters

<ParamField query="api_key" type="string" required>
  Your SmartLead API key
</ParamField>

## Request Body

<ParamField body="domains" type="array" required>
  Array of domain strings to block (minimum 1 domain)

  Examples: `["spam.com", "invalid.com", "bounces.net"]`
</ParamField>

<ParamField body="source" type="string" default="manual">
  Block source for tracking: `manual`, `bounce`, `complaint`, or `invalid`
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://server.smartlead.ai/api/v1/master-inbox/block-domains?api_key=YOUR_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "domains": ["spam.com", "invalid.com"],
      "source": "manual"
    }'
  ```

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

  API_KEY = "YOUR_API_KEY"

  def block_domains(domains, source="manual"):
      """Block multiple domains at once"""
      payload = {
          "domains": domains,
          "source": source
      }
      
      response = requests.post(
          "https://server.smartlead.ai/api/v1/master-inbox/block-domains",
          params={"api_key": API_KEY},
          json=payload
      )
      
      if response.status_code == 200:
          print(f"✅ Blocked {len(domains)} domain(s)")
      
      return response.json()

  # Block spam domains
  block_domains(["spam.com", "junk.net"], source="manual")

  # Auto-block bounced domains
  bounced_domains = ["bounced1.com", "bounced2.com"]
  block_domains(bounced_domains, source="bounce")
  ```

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

  async function blockDomains(domains, source = 'manual') {
    const response = await fetch(
      `https://server.smartlead.ai/api/v1/master-inbox/block-domains?api_key=${API_KEY}`,
      {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ domains, source })
      }
    );
    
    return response.json();
  }

  // Block multiple domains
  await blockDomains(['spam.com', 'invalid.com'], 'manual');
  ```
</RequestExample>

## Response Example

<ResponseExample>
  ```json 200 - Success theme={null}
  {
    "success": true,
    "message": "Domains blocked successfully",
    "data": {
      "blocked_domains": ["spam.com", "invalid.com"],
      "source": "manual",
      "blocked_at": "2025-01-20T15:30:00Z"
    }
  }
  ```

  ```json 422 - Validation Error theme={null}
  {
    "error": "domains array must contain at least 1 domain"
  }
  ```
</ResponseExample>

## Related Endpoints

* [Get Domain Block List](/api-reference/utilities/domain-block-list)
