# Get Warmup Pool

> List the workspace's email accounts with warmup progress and pool activity.

Requires an API key with the `read` scope.

Returns every email account in the workspace, not only the ones with warmup on; check `warmupEnabled` on each entry. Pass `tag` to narrow it to accounts carrying one warmup tag.

## Query Parameters

<ParamField query="tag" type="string">
  A warmup tag id from [List Warmup Tags](/api-reference/warmup/list-tags). Only accounts with that tag are returned. An id that is not a warmup tag of this workspace returns an empty list.
</ParamField>

## Response

<ResponseField name="data" type="array">
  One entry per account.

  <Expandable title="data">
    <ResponseField name="accountId" type="string">Email account identifier.</ResponseField>
    <ResponseField name="email" type="string">Mailbox address.</ResponseField>
    <ResponseField name="displayName" type="string">Friendly name, or `null`.</ResponseField>
    <ResponseField name="healthScore" type="integer">The Health Score: share of warmup email that landed in the inbox over the last 7 days, 0 to 100. `null` until enough emails have been measured.</ResponseField>
    <ResponseField name="healthBasis" type="object">Counts behind the score: `window`, `inbox`, `spam`, `verified`, `minVerified`, `state` (`measured`, `building` or `off`), `score`, `weighted`.</ResponseField>
    <ResponseField name="warmupEnabled" type="boolean">Whether warmup is on.</ResponseField>
    <ResponseField name="warmupProgress" type="object">`enabled`, `progress` (percent), `daysCompleted`, `totalDays`, `currentLimit`, `targetLimit`.</ResponseField>
    <ResponseField name="poolStats" type="object">`sentCount`, `receivedCount`, `replyCount`.</ResponseField>
    <ResponseField name="tags" type="array">Warmup tags on the account: `id`, `name`, `color`.</ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
```bash cURL
curl -X GET "https://api.foxreach.io/api/v1/warmup/pool" \
  -H "X-API-Key: otr_your_key"
```

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

client = FoxReach(api_key="otr_your_key")
pool = client.warmup.get_pool()
```

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

const client = new FoxReach({ apiKey: "otr_your_key" });
const pool = await client.warmup.pool();
```
</RequestExample>

<ResponseExample>
```json
{
  "data": [
    {
      "accountId": "cea_abc123",
      "email": "outreach@company.com",
      "displayName": "John from Company",
      "healthScore": 92,
      "healthBasis": { "window": "7d", "inbox": 46, "spam": 4, "verified": 50, "minVerified": 20, "state": "measured", "score": 92, "weighted": true },
      "warmupEnabled": true,
      "warmupProgress": { "enabled": true, "progress": 50, "daysCompleted": 7, "totalDays": 14, "currentLimit": 2, "targetLimit": 5 },
      "poolStats": { "sentCount": 34, "receivedCount": 31, "replyCount": 28 },
      "tags": [{ "id": "tag_abc123", "name": "Primary", "color": "#EA580C" }]
    }
  ]
}
```
</ResponseExample>

## Errors

| Status | Description |
|--------|-------------|
| `401` | Missing, invalid, revoked or expired API key |
| `403` | API key does not have the required scope: `read` |

## Rate Limit

- **100 requests per minute, per API key.** Fixed 60-second window.
- Every response includes `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` (unix epoch seconds).
- A `429` response includes a `Retry-After` header (seconds until the bucket resets).

For client-side patterns (`Retry-After`, exponential backoff, monitoring `X-RateLimit-Remaining`), see [Rate Limiting](/rate-limiting).
