# List email domains

> Email domains of this project.

`GET https://api.zavu.dev/v2/email-domains`

Email domains of this project.

## Responses

### 200

Email domains.

- `items` (object[], required)
  - `id` (string, required)
  - `domain` (string, required)
  - `status` (string, required): Overall verification status.
  - `dkimStatus` (string, required)
  - `dnsRecords` (object[]): DNS records to publish. Present when fetching a single domain or after adding one.
    - `type` (string, required): DNS record type.
    - `name` (string, required): Record host/name to create.
    - `value` (string, required): Record value.
    - `priority` (integer): Priority (MX records only).
    - `purpose` (string, required): What the record is for. One of: `dkim`, `spf`, `dmarc`, `mail_from`.
    - `required` (boolean, required): Whether the record is required to verify + send (DKIM) or recommended for deliverability.
  - `verifiable` (boolean): Present with `dnsRecords`. False when the DKIM records could not be generated: such a domain cannot verify whatever DNS you publish, and `setupError` says what to do.
  - `setupError` (object): Present when `verifiable` is false. `recommendation` is the same everywhere this domain is refused (`POST .../verify`, `POST /v2/channels`): remove the domain and add it again, which sets it up from scratch; contact support if the new one has no `dkim` record either. It never says to retry verify or to publish the other records.
    - `code` (string) One of: `dkim_records_unavailable`.
    - `message` (string)
    - `recommendation` (string)

### 401

Unauthorized.

- `code` (string, required)
- `message` (string, required)
- `details` (object): Machine-readable context. Keys that mean the same thing everywhere: - `errors`: present on every `400 invalid_request` for an invalid body or query parameter, `[{path, message, ...}]`, `path` naming the field (`["to"]`, `["contacts", 2, "recipient"]`, `["limit"]`). - `recommendation`: one sentence saying what to do next. - `dashboardUrl`: the dashboard screen that fixes it. - `connect`: on `409 no_channel`, the channels this project can connect to reach the recipient, each `{type, request, note, available, dashboardUrl?}`; `request` is the exact call (`POST /v2/channels` with its body, or `POST /v2/numbers`), or null for a channel connected from the dashboard (WhatsApp, Instagram, Messenger). `available: false` says why in `note` (one-way SMS closed until business verification is approved). - `address` / `from`: the address the error is about, under the name the request used for it.
  - `errors` (object[])
    - `path` (object[], required)
    - `message` (string, required)
    - `code` (string)

## Example

```bash
curl -X GET "https://api.zavu.dev/v2/email-domains" \
  -H "Authorization: Bearer $ZAVUDEV_API_KEY"
```

```typescript
import Zavudev from "@zavudev/sdk";

const zavu = new Zavudev({ apiKey: process.env.ZAVUDEV_API_KEY });

const result = await zavu.v2.emailDomains.list();

console.log(result);
```
