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

# Get Contacts API

> Retrieve saved contacts by filter or by adapt IDs - POST /get-contacts

<Note>
  This endpoint requires authentication via API key passed as a query parameter (`api_key`).
</Note>

## Query Parameters

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

## Request Body

<Note>
  The request body must be JSON. **Provide either `id` (array of adapt\_ids, max 200) or `filter_id` (number). Do not provide both (XOR).** When using `filter_id`, you may optionally include `limit`, `offset`, `search`, `verification_status`, and `catch_all_status`.
</Note>

<ParamField body="id" type="string[]">
  Array of adapt\_ids (max 200). Required when not using filter\_id.
</ParamField>

<ParamField body="filter_id" type="number">
  Filter ID to get data for. Required when not using id.
</ParamField>

<ParamField body="limit" type="number">
  Number of records to return (1–1000, optional when using filter\_id).
</ParamField>

<ParamField body="offset" type="number">
  Number of records to skip (≥ 0, optional when using filter\_id).
</ParamField>

<ParamField body="search" type="string">
  Search string to filter by first\_name, last\_name, or full\_name.
</ParamField>

<ParamField body="verification_status" type="string">
  Filter by email verification status: valid, catch\_all, or invalid.
</ParamField>

<ParamField body="catch_all_status" type="string">
  Filter by catch-all status: catch\_all\_verified, catch\_all\_soft\_bounced, catch\_all\_hard\_bounced, catch\_all\_unknown, catch\_all\_bounced.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://prospect-api.smartlead.ai/api/v1/search-email-leads/get-contacts?api_key=YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"filter_id": 327105, "limit": 50, "offset": 0}'
  ```
</RequestExample>

## Response Codes

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

<ResponseField name="400" type="Bad Request">
  Bad Request
</ResponseField>

<ResponseField name="401" type="Unauthorized">
  Unauthorized
</ResponseField>

<ResponseField name="500" type="Internal Server Error">
  Internal Server Error
</ResponseField>

<ResponseExample>
  ```json 200 - Success theme={null}
  {
    "success": true,
    "message": "Data retrieved successfully",
    "data": {
      "list": [
        {
          "id": "5f22b0c8cff47e0001616f81",
          "firstName": "Orhan",
          "lastName": "Demiri",
          "fullName": "Orhan Demiri",
          "title": "Director",
          "company": { "name": "Example Corp", "website": "example.com" },
          "email": "orhan@example.com",
          "verificationStatus": "valid",
          "status": "completed"
        }
      ],
      "pagination": {
        "filterId": 327105,
        "limit": 50,
        "offset": 0,
        "total": 100,
        "hasMore": true
      },
      "totalCount": 100
    }
  }
  ```

  ```json 401 - Unauthorized theme={null}
  {
    "statusCode": 401,
    "success": false,
    "message": "Unauthorized",
    "error": "User not authenticated"
  }
  ```
</ResponseExample>
