# Get Warmup Logs

> The most recent warmup emails sent or received by the workspace.

Requires an API key with the `read` scope.

Returns the last 50 warmup logs where one of the workspace's accounts was the sender or the receiver, newest first. There are no query parameters and no pagination. For one account's last 20, use [Get Account Warmup](/api-reference/email-accounts/get-account-warmup).

## Response

<ResponseField name="data" type="array">
  Up to 50 logs.

  <Expandable title="data">
    <ResponseField name="id" type="string">Log identifier.</ResponseField>
    <ResponseField name="senderEmail" type="string">Sending mailbox, or `unknown`.</ResponseField>
    <ResponseField name="receiverEmail" type="string">Receiving mailbox, or `unknown`.</ResponseField>
    <ResponseField name="subject" type="string">Subject line.</ResponseField>
    <ResponseField name="status" type="string">`sent`, `received`, `replied` or `failed` (the peer account rejected the recipient).</ResponseField>
    <ResponseField name="repliedAt" type="string">When the reply was sent, or `null`.</ResponseField>
    <ResponseField name="createdAt" type="string">ISO 8601 timestamp.</ResponseField>
  </Expandable>
</ResponseField>

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

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

client = FoxReach(api_key="otr_your_key")
logs = client.warmup.get_logs()
```

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

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

<ResponseExample>
```json
{
  "data": [
    {
      "id": "wlg_abc123",
      "senderEmail": "outreach@company.com",
      "receiverEmail": "pool-member@example.com",
      "subject": "Quick question",
      "status": "replied",
      "repliedAt": "2026-10-30T14:12:00",
      "createdAt": "2026-10-30T14:02:00"
    }
  ]
}
```
</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).
