# Get Campaign Cohort Detail

> The emails and replies of one day.

Requires an API key with the `read` scope.

Every email sent and every reply received on one UTC day, oldest first. **At most 200 emails and 200 replies are returned.** A busier day is cut without a flag, and there is no next page; use [Get Campaign Activity](/api-reference/campaigns/get-campaign-activity) with date filters to page through a large day.


## Path Parameters

<ParamField path="campaign_id" type="string" required>The campaign.</ParamField>
<ParamField path="date" type="string" required>UTC day, `YYYY-MM-DD`.</ParamField>

## Response

<ResponseField name="data" type="object">
  <Expandable title="Day">
    <ResponseField name="date" type="string">The day asked for.</ResponseField>
    <ResponseField name="emails" type="object[]">Sends and replies, each with `id`, `type` (`sent` or `reply`), `leadId`, `leadName`, `leadEmail`, `leadCompany`, `subject`, `bodyPreview`, `sequenceStep`, `status`, `openedAt`, `createdAt`.</ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
```bash cURL
curl -X GET "https://api.foxreach.io/api/v1/campaigns/cmcamp1/cohorts/2026-11-04" \
  -H "X-API-Key: otr_your_key"
```

```python Python SDK
from foxreach import FoxReach

client = FoxReach(api_key="otr_your_key")
day = client.campaigns.cohort_detail("cmcamp1", "2026-11-04")
```

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

const client = new FoxReach({ apiKey: "otr_your_key" });
const day = await client.campaigns.cohortDetail("cmcamp1", "2026-11-04");
```
</RequestExample>

<ResponseExample>
```json
{
  "data": {
    "date": "2026-11-04",
    "emails": [{ "id": "cmlog1", "type": "sent", "leadId": "cmlead1", "leadName": "Ann Lee", "leadEmail": "ann@example.com", "subject": "Quick question", "sequenceStep": 1, "status": "sent", "openedAt": null, "createdAt": "2026-11-04T09:00:00+00:00" }]
  }
}
```
</ResponseExample>

## Errors

| Status | Description |
|--------|-------------|
| `401` | Missing, invalid, revoked or expired API key |
| `403` | API key does not have the required scope: `read` |
| `400` | `date` is not `YYYY-MM-DD` |
| `404` | Campaign not found in this workspace |

## 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 (`Retry-After`, exponential backoff, monitoring `X-RateLimit-Remaining`), see [Rate Limiting](/rate-limiting).
