---
title: "Email delivery report"
description: "Billing email counts by week and by email type for the last weeks weeks, this week included."
canonical_url: "https://twominutebilling.com/help/developers/api-reference/webhooks/email-delivery-report"
---
# Email delivery report

> Billing email counts by week and by email type for the last weeks weeks, this week included.

<api-operation method="GET" path="/v1/businesses/{biz}/emails/report">
<template v-slot:docs="">

Billing email counts by week and by email type for the last `weeks` weeks, this week included. Weeks run Monday to Sunday in the business time zone, and an email counts in the week it was queued. `delivered` and `not_delivered` follow the same rules as `/emails/activity`. A complaint counts in `complained` only, not in `bounced`. There is no open or click tracking.

## Path parameters

<table>
<thead>
  <tr>
    <th>
      Parameter
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Required
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        biz
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      <strong>
        yes
      </strong>
    </td>
    
    <td>
      Business id (biz_…)
    </td>
  </tr>
</tbody>
</table>

## Query parameters

<table>
<thead>
  <tr>
    <th>
      Parameter
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Required
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        weeks
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      no
    </td>
    
    <td>
      How many weeks to count, this week included.
    </td>
  </tr>
</tbody>
</table>

## Response

<table>
<thead>
  <tr>
    <th>
      Field
    </th>
    
    <th>
      Type
    </th>
    
    <th>
      Description
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The object type; always <code>
        email_delivery_report
      </code>
      
      . One of <code>
        email_delivery_report
      </code>
      
      .
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        weeks
      </code>
    </td>
    
    <td>
      <code>
        integer
      </code>
    </td>
    
    <td>
      How many weeks the report covers.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        timezone
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The business time zone the weeks are counted in.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        from
      </code>
    </td>
    
    <td>
      <code>
        string
      </code>
    </td>
    
    <td>
      The first day of the first week (YYYY-MM-DD).
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        weekly
      </code>
    </td>
    
    <td>
      <code>
        array of object
      </code>
    </td>
    
    <td>
      One row for each week, the oldest first.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        by_type
      </code>
    </td>
    
    <td>
      <code>
        array of object
      </code>
    </td>
    
    <td>
      One row for each email type with email in the period.
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        totals
      </code>
    </td>
    
    <td>
      <code>
        object
      </code>
    </td>
    
    <td>
      The counts for the whole period.
    </td>
  </tr>
</tbody>
</table>

## Status codes

<table>
<thead>
  <tr>
    <th>
      Status
    </th>
    
    <th>
      Meaning
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        200
      </code>
    </td>
    
    <td>
      Success
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        400
      </code>
    </td>
    
    <td>
      weeks is not a whole number from 1 to 52
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        404
      </code>
    </td>
    
    <td>
      No such business
    </td>
  </tr>
</tbody>
</table>
</template>

<template v-slot:request="">

```bash [Request]
curl "$TMBILLING_URL/v1/businesses/biz_XXXXXXXXXXXX01/emails/report" \
  -H "Authorization: Bearer $TMBILLING_API_KEY"
```

</template>

<template v-slot:response="">
<code-group>

```json [200 OK]
{
  "object": "email_delivery_report",
  "weeks": 1,
  "timezone": "America/Los_Angeles",
  "from": "2026-03-14",
  "weekly": [
    {
      "week_start": "2026-03-14",
      "delivered": 1,
      "not_delivered": 1,
      "pending": 1,
      "failed": 1,
      "bounced": 1
    }
  ],
  "by_type": [
    {
      "type": "Type",
      "delivered": 1,
      "not_delivered": 1,
      "pending": 1,
      "failed": 1,
      "bounced": 1
    }
  ],
  "totals": {
    "delivered": 1,
    "not_delivered": 1,
    "pending": 1,
    "failed": 1,
    "bounced": 1,
    "complained": 1,
    "skipped": 1
  }
}
```

```json [400 Bad Request]
{
  "error": {
    "type": "invalid_request_error",
    "message": "weeks is not a whole number from 1 to 52"
  }
}
```

```json [404 Not Found]
{
  "error": {
    "type": "invalid_request_error",
    "message": "No such business"
  }
}
```

</code-group>
</template>
</api-operation>


## Sitemap

See the full [sitemap](https://twominutebilling.com/sitemap.md) for all pages.
