# List Block List

> List blocked emails and domains, newest first.

<Note>
  **Beta.** This endpoint is not in production yet and may change before it ships.
</Note>

Requires an API key with the `read` scope.

## Query Parameters

<ParamField query="page" type="integer" default="1">Page number.</ParamField>
<ParamField query="pageSize" type="integer" default="50">Items per page (1-100).</ParamField>
<ParamField query="search" type="string">Substring of the email or domain.</ParamField>
<ParamField query="kind" type="string">`email` or `domain`.</ParamField>

## Response

<ResponseField name="data" type="array">
  <Expandable title="entry">
    <ResponseField name="id" type="string">Entry identifier.</ResponseField>
    <ResponseField name="kind" type="string">`email` or `domain`.</ResponseField>
    <ResponseField name="value" type="string">Lowercased address or domain.</ResponseField>
    <ResponseField name="source" type="string">`manual`, `import`, `unsubscribe` or `api`.</ResponseField>
    <ResponseField name="note" type="string">Optional note, or `null`.</ResponseField>
    <ResponseField name="createdBy" type="string">User id that added it, or `null` for unsubscribes.</ResponseField>
    <ResponseField name="createdAt" type="string">ISO 8601 timestamp.</ResponseField>
  </Expandable>
</ResponseField>
<ResponseField name="meta" type="object">`page`, `pageSize`, `total` and `totalPages`.</ResponseField>

<RequestExample>
```bash cURL
curl "https://api.foxreach.io/api/v1/block-list?kind=domain" \
  -H "X-API-Key: otr_your_key"
```

```python Python SDK (beta)
from foxreach import FoxReach

client = FoxReach(api_key="otr_your_key")
page = client.block_list.list(kind="domain")
```

```typescript TypeScript SDK (beta)
import { FoxReach } from "foxreach";

const client = new FoxReach({ apiKey: "otr_your_key" });
const page = await client.blockList.list({ kind: "domain" });
```
</RequestExample>

<ResponseExample>
```json
{
  "data": [
    {
      "id": "blk_abc123",
      "kind": "domain",
      "value": "acme.com",
      "source": "api",
      "note": null,
      "createdBy": "usr_abc123",
      "createdAt": "2026-11-04T10:00:00Z"
    }
  ],
  "meta": { "page": 1, "pageSize": 50, "total": 1, "totalPages": 1 }
}
```
</ResponseExample>

## Errors

| Status | Description |
|--------|-------------|
| `401` | Missing, invalid, revoked or expired API key |
| `403` | API key does not have the required scope: `read` |
| `422` | `kind` is not `email` or `domain`, or `pageSize` is out of range |

## Rate Limit

- **300 requests per minute, shared by every `read` call in your workspace.** Fixed 60-second window.
- Every response includes `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset` (unix epoch seconds) and `X-RateLimit-Bucket` (`read`).
- A `429` response includes a `Retry-After` header (seconds until the bucket resets).

For client-side patterns, see [Rate Limiting](/rate-limiting).
