---
title: "Get delivery per sending domain"
method: GET
path: "/email-deliverability"
tags: ["Email"]
---

# Get delivery per sending domain

`GET /email-deliverability`

## Request

- Base URL: `https://api.hypamoon.com/api/v1`
- URL: `https://api.hypamoon.com/api/v1/email-deliverability`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://app.hypamoon.com/oauth/authorize`, token URL `https://api.hypamoon.com/oauth/token`, scopes: `messages:read`)

Per sending domain over the last 7 and 30 days: emails sent, delivered, bounced and marked as spam, with the rates (counted per email). Mailboxes start filtering above 2% bounces or 0.1% spam complaints; health and advice say what to do in plain words. Opens are not measured. Also SPF and DKIM (pass once the domain is verified) and the DMARC record that is in the DNS now, and the state of a dedicated sending IP with its price. With a test key the numbers come from simulated test emails, so there is no delivery data. Read-only.

## Response `200`

Delivery per sending domain.

- object
  - `test` boolean, required: true with a test key: test emails are simulated, so there is no delivery data.
  - `thresholds` object, required
    - `bounce_rate` number, required
    - `complaint_rate` number, required
  - `opens_measured` false, required
  - `domains` object[], required
    - `email_domain_id` string, required
    - `domain` string, required
    - `status` 'pending' | 'verified' | 'failed', required
    - `authentication` object, required
      - `spf` 'pass' | 'not_verified', required
      - `dkim` 'pass' | 'not_verified', required
      - `dmarc` object, required
        - `record` string, nullable, required
        - `policy` 'none' | 'quarantine' | 'reject' | 'null', nullable, required
        - `status` 'enforced' | 'monitoring' | 'missing' | 'unknown', required
    - `last_7_days` object, required
      - `sent` integer, required
      - `delivered` integer, required
      - `bounced` integer, required
      - `complained` integer, required
      - `opened` unknown, required
      - `bounce_rate` number, nullable, required: bounced / sent, 0 to 1; null without emails.
      - `complaint_rate` number, nullable, required: complained / sent, 0 to 1; null without emails.
    - `last_30_days` object, required
      - `sent` integer, required
      - `delivered` integer, required
      - `bounced` integer, required
      - `complained` integer, required
      - `opened` unknown, required
      - `bounce_rate` number, nullable, required: bounced / sent, 0 to 1; null without emails.
      - `complaint_rate` number, nullable, required: complained / sent, 0 to 1; null without emails.
    - `health` 'good' | 'warning' | 'problem' | 'no_data', required
    - `advice` string[], required: What to do, in plain words.
  - `dedicated_ip` object, nullable, required
    - `status` 'none' | 'requested' | 'active' | 'declined', required
    - `requested_at` string, nullable, required
    - `emails_last_30_days` integer, required
    - `price` object, required: Per IP per month, excluding VAT; free for founder projects.
      - `month_eur_per_ip` number, required
      - `free` boolean, required
      - `text` string, required
    - `advice` string, required
    - `available` boolean, required: Whether this project can request one (Business and Enterprise).
    - `reason` string, nullable, required

## Other responses

- `401`: Unauthorized: unauthorized, missing_api_key, invalid_api_key, api_key_revoked, project_deleted.
- `403`: Forbidden: project_not_enabled, key_mode_mismatch, missing_scope, verification_required.
- `429`: Too Many Requests: rate_limited.
- `500`: Internal Server Error: internal_error.
- `503`: Service Unavailable: service_unavailable.

---

[API](https://skmtc.dev/hypamoon/apis/hypamoon-api.md) · [All operations](https://skmtc.dev/hypamoon/apis/hypamoon-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hypamoon/apis/hypamoon-api/revisions/9f0b90004c06?raw)
