> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://mailchimp.com/developer/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://mailchimp.com/developer/_mcp/server.

# List rejection blacklist entries

POST https://mandrillapp.com/api/1.4/rejects/list
Content-Type: application/json

Retrieves your email rejection denylist. You can provide an email address to limit the results. Returns up to 1000 results. By default, entries that have expired are excluded from the results; set include_expired to true to include them.

Reference: https://mailchimp.com/developer/transactional/api/rejects/list

## Request

### Body (application/json)

This endpoint expects a RejectsListRequest.

- `key` (string, required) — A valid Mandrill API key
- `email` (string, optional) — An optional email address to search by
- `include_expired` (boolean, optional) — Whether to include rejections that have already expired
- `subaccount` (string, optional) — An optional unique identifier for the subaccount to limit the blacklist

## Response

### 200

Success

- `list of RejectsListResponseItems`

## Errors

### 401 Unauthorized Error

Invalid or missing API key.

- `status` (string, required) — Status of the response, typically "error"
- `code` (enum, required) — Numeric error code
  - Allowed values: `401`
- `name` (enum, required) — Machine-friendly error name
  - Allowed values: `Invalid_Key`
- `message` (string, required) — Human-readable error message

### 404 Not Found Error

Unknown subaccount

- `status` (string, required) — Status of the response, typically "error"
- `code` (integer, required) — Numeric error code
- `name` (string, required) — Machine-friendly error name
- `message` (string, required) — Human-readable error message

### 429 Too Many Requests Error

Request rate limit exceeded. Retry after a brief delay.

- `status` (string, required) — Status of the response, typically "error"
- `code` (enum, required) — Numeric error code
  - Allowed values: `429`
- `name` (enum, required) — Machine-friendly error name
  - Allowed values: `RequestLimitExceeded`
- `message` (string, required) — Human-readable error message

### 500 Internal Server Error

An unexpected internal server error occurred.

- `status` (string, required) — Status of the response, typically "error"
- `code` (integer, required) — Numeric error code
- `name` (string, required) — Machine-friendly error name
- `message` (string, required) — Human-readable error message

## Types

### RejectsListResponseItems

- `email` (string, required) — The email that is blocked
- `reason` (enum, required) — The type of event that caused this rejection
  - Allowed values: `hard-bounce`, `soft-bounce`, `spam`, `unsub`, `custom`
- `detail` (string, required, nullable) — Extended details about the event, such as the SMTP diagnostic for bounces or the comment for manually-created rejections, or null if none was recorded
- `created_at` (string, required) — When the email was added to the blocklist
- `last_event_at` (string, required) — The timestamp of the most recent event that either created or renewed this rejection
- `expires_at` (string, required, nullable) — When the blocklist entry will expire (this may be in the past)
- `expired` (boolean, required) — Whether the blocklist entry has expired
- `sender` (RejectsListResponseItemsSender, optional, nullable) — The sender that this blocklist entry applies to, or null if none
- `subaccount` (string, optional, nullable) — The subaccount that this denylist entry applies to, or null if none

### RejectsListResponseItemsSender

The sender that this blocklist entry applies to, or null if none

- `address` (string, optional) — The sender's email address
- `created_at` (string, optional) — The date and time that the sender was first seen by Mandrill as a UTC date string in YYYY-MM-DD HH:MM:SS format
- `sent` (integer, optional) — The total number of messages sent by this sender
- `hard_bounces` (integer, optional) — The total number of hard bounces by messages by this sender
- `soft_bounces` (integer, optional) — The total number of soft bounces by messages by this sender
- `rejects` (integer, optional) — The total number of rejected messages by this sender
- `complaints` (integer, optional) — The total number of spam complaints received for messages by this sender
- `unsubs` (integer, optional) — The total number of unsubscribe requests received for messages by this sender

## Examples

**Request**

```json
{
  "key": "ONzNrsmbtNXoIKyfPmjnig",
  "email": "user@example.com",
  "include_expired": false,
  "subaccount": "cust-123"
}
```

**Response**

```json
[
  {
    "email": "user1@example.com",
    "reason": "hard-bounce",
    "detail": "550 5.1.1 User unknown",
    "created_at": "2023-01-15 10:30:00",
    "last_event_at": "2023-01-15 10:30:00",
    "expires_at": "2023-02-15 10:30:00",
    "expired": false,
    "sender": null,
    "subaccount": null
  },
  {
    "email": "user2@example.com",
    "reason": "spam",
    "detail": "Manually blocked due to spam complaints",
    "created_at": "2023-01-10 14:20:00",
    "last_event_at": "2023-01-10 14:20:00",
    "expires_at": "2023-02-10 14:20:00",
    "expired": false,
    "sender": {
      "address": "sender@example.com",
      "created_at": "2023-01-01 00:00:00",
      "sent": 100,
      "hard_bounces": 5,
      "soft_bounces": 2,
      "rejects": 7,
      "complaints": 1,
      "unsubs": 3
    },
    "subaccount": "subaccount-123"
  }
]
```

**SDK Code**

```python
import requests

url = "https://mandrillapp.com/api/1.4/rejects/list"

payload = {
    "key": "ONzNrsmbtNXoIKyfPmjnig",
    "email": "user@example.com",
    "include_expired": False,
    "subaccount": "cust-123"
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://mandrillapp.com/api/1.4/rejects/list';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"key":"ONzNrsmbtNXoIKyfPmjnig","email":"user@example.com","include_expired":false,"subaccount":"cust-123"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://mandrillapp.com/api/1.4/rejects/list"

	payload := strings.NewReader("{\n  \"key\": \"ONzNrsmbtNXoIKyfPmjnig\",\n  \"email\": \"user@example.com\",\n  \"include_expired\": false,\n  \"subaccount\": \"cust-123\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://mandrillapp.com/api/1.4/rejects/list")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"key\": \"ONzNrsmbtNXoIKyfPmjnig\",\n  \"email\": \"user@example.com\",\n  \"include_expired\": false,\n  \"subaccount\": \"cust-123\"\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://mandrillapp.com/api/1.4/rejects/list")
  .header("Content-Type", "application/json")
  .body("{\n  \"key\": \"ONzNrsmbtNXoIKyfPmjnig\",\n  \"email\": \"user@example.com\",\n  \"include_expired\": false,\n  \"subaccount\": \"cust-123\"\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://mandrillapp.com/api/1.4/rejects/list', [
  'body' => '{
  "key": "ONzNrsmbtNXoIKyfPmjnig",
  "email": "user@example.com",
  "include_expired": false,
  "subaccount": "cust-123"
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://mandrillapp.com/api/1.4/rejects/list");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"key\": \"ONzNrsmbtNXoIKyfPmjnig\",\n  \"email\": \"user@example.com\",\n  \"include_expired\": false,\n  \"subaccount\": \"cust-123\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  "key": "ONzNrsmbtNXoIKyfPmjnig",
  "email": "user@example.com",
  "include_expired": false,
  "subaccount": "cust-123"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://mandrillapp.com/api/1.4/rejects/list")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```