> ## Documentation Index
> Fetch the complete documentation index at: https://api.smartlead.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Day-wise Stats by Sent Time

> Get daily breakdown organized by email sent time for schedule analysis

## Query Parameters

<ParamField query="api_key" type="string" required>
  Your SmartLead API key
</ParamField>

<ParamField query="start_date" type="string" required>
  Start date (YYYY-MM-DD format)
</ParamField>

<ParamField query="end_date" type="string" required>
  End date (YYYY-MM-DD format)
</ParamField>

<ParamField query="timezone" type="string" required>
  IANA timezone string (e.g., "America/New\_York")
</ParamField>

<ParamField query="client_ids" type="string">
  Comma-separated client IDs
</ParamField>

<ParamField query="campaign_ids" type="string">
  Comma-separated campaign IDs
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://server.smartlead.ai/api/v1/analytics/day-wise-overall-stats-by-sent-time?api_key=YOUR_KEY"
  ```

  ```python Python theme={null}
  import requests

  API_KEY = "YOUR_API_KEY"

  response = requests.get(
      "https://server.smartlead.ai/api/v1/analytics/day-wise-overall-stats-by-sent-time",
      params={"api_key": API_KEY}
  )

  result = response.json()
  print(result)
  ```

  ```javascript JavaScript theme={null}
  const API_KEY = 'YOUR_API_KEY';

  const response = await fetch(
    `https://server.smartlead.ai/api/v1/analytics/day-wise-overall-stats-by-sent-time?api_key=${API_KEY}`
  );

  const result = await response.json();
  console.log(result);
  ```
</RequestExample>

## Response Codes

<ResponseField name="200" type="Success">
  Request successful
</ResponseField>

<ResponseField name="400" type="Bad Request">
  Invalid request parameters or malformed request body
</ResponseField>

<ResponseField name="401" type="Unauthorized">
  Invalid or missing API key. Check your authentication.
</ResponseField>

<ResponseField name="404" type="Not Found">
  The requested resource (campaign, lead, email account, etc.) does not exist or you don't have access to it
</ResponseField>

<ResponseField name="422" type="Validation Error">
  Request validation failed. Check parameter types, required fields, and value constraints.
</ResponseField>

<ResponseField name="429" type="Rate Limit Exceeded">
  Too many requests. Please slow down and retry after the rate limit resets.
</ResponseField>

<ResponseField name="500" type="Internal Server Error">
  Server error occurred. Please try again or contact support if the issue persists.
</ResponseField>

<ResponseField name="503" type="Service Unavailable">
  API is temporarily unavailable or under maintenance. Please try again later.
</ResponseField>

<ResponseExample>
  ```json 200 - Success theme={null}
  {
    "ok": true,
    "data": {
      "day_wise_stats": [
        {
          "date": "2024-01-15",
          "sent": 150,
          "opened": 52
        },
        {
          "date": "2024-01-16",
          "sent": 175,
          "opened": 61
        }
      ]
    }
  }
  ```

  ```json 401 - Unauthorized theme={null}
  {
    "message": "Invalid API Key"
  }
  ```

  ```json 404 - Not Found theme={null}
  {
    "error": "Resource not found"
  }
  ```

  ```json 422 - Validation Error theme={null}
  {
    "error": "Invalid parameters provided"
  }
  ```
</ResponseExample>

## How these metrics are calculated

<Note>
  Shared rules (inclusive date boundaries, unique vs raw counts, rate formulas) are documented once in [How Analytics Metrics Are Calculated](/api-reference/analytics/how-metrics-are-calculated).
</Note>

Unlike the [event-date day-wise endpoint](/api-reference/analytics/day-wise-stats), **every metric here is bucketed by the day the email was sent** (`sent_time`). An open or reply is counted on the date its email went out, regardless of when the open/reply actually happened — which is what makes this view useful for analysing send-schedule performance.

| Field                 | How it's calculated                                                                                                                |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `sent`                | Emails sent that day. Raw additive count.                                                                                          |
| `opened`              | Emails (sent that day) that were later opened. Raw additive count.                                                                 |
| `replied`             | Emails (sent that day) that later received a genuine reply. Raw additive count.                                                    |
| `bounced`             | Emails sent that day that bounced. Raw additive count.                                                                             |
| `unsubscribed`        | Leads who unsubscribed. Raw additive count.                                                                                        |
| `unique_lead_reached` | `COUNT(DISTINCT lead)` reached that day, deduplicated per campaign by email. This is a **unique** count, not additive across days. |

The raw counts are additive across days; `unique_lead_reached` is not (a lead reached on two days is counted once per day). Dates are inclusive on both ends — `sent_time >= start 00:00:00 AND sent_time <= end 23:59:59` — and a single date returns that one full day. `timezone` is required so the daily boundaries are drawn in your local time.
