---
title: "Check an email address"
description: "Whether an address is worth sending to, before the first message."
url: "https://openemail.uk/docs/api/tools/address"
area: "API"
category: "Mailbox"
---

# Check an email address

Whether an address is worth sending to, before the first message.

`GET /tools/address`

**Also documents:** `POST /tools/addresses`

## GET /tools/address

Whether an address is worth sending to, before the first message.

## Example

Needs no scope. `result` is `valid`, `risky`, `invalid` or `unknown`, and `reasons` says why: wrong syntax, a domain that takes no mail, a throwaway or shared mailbox, or a likely typo, with the correction in `suggestion`. With `emails:read`, `workspace` adds what this workspace knows about the address.

**curl**

```
curl "$OE/tools/address?email=ada@gmial.com" -H "$AUTH"
```

**Response**

```
{
  "object": "address_check",
  "email": "ada@gmial.com",
  "normalized": "ada@gmial.com",
  "result": "risky",
  "reasons": ["typo_suspected"],
  "suggestion": "ada@gmail.com",
  "checks": {
    "syntax": true,
    "mx": { "status": "found", "hosts": ["mx.gmial.com"] },
    "nullMx": false,
    "disposable": false,
    "role": false,
    "freeProvider": false,
    "mailbox": null
  },
  "workspace": { "suppressed": false, "lastBouncedAt": null, "lastDeliveredAt": null },
  "checkedAt": "2026-10-11T09:41:00.000Z"
}
```

> An address whose syntax is wrong is not an error. It answers 200 with `result` set to `invalid`.

> `deep=true` also asks whether the mailbox exists, in `checks.mailbox`. It needs `emails:send` and is billed per address through pay as you go. With pay as you go off it is a 409 `deep_check_unavailable`, and nothing is billed.

## Check a list

`POST /tools/addresses` takes up to 100 addresses in `emails` and answers with one check for each, in the order they were sent. `deep` applies to all of them.

**curl**

```
curl -X POST "$OE/tools/addresses" -H "$AUTH" -H "Content-Type: application/json" \
  -d '{ "emails": ["ada@acme.com", "info@example.org"] }'
```

**Response**

```
{
  "object": "list",
  "data": [
    { "object": "address_check", "email": "ada@acme.com", "result": "valid", "reasons": [] },
    { "object": "address_check", "email": "info@example.org", "result": "risky", "reasons": ["role_address"] }
  ]
}
```

> More than 100 addresses, or none, is a 422 `invalid_parameter` on `emails`.

## Reference

- [`GET /tools/address`](https://openemail.uk/docs/api/reference/tools#get-tools-address): full reference
- [`POST /tools/addresses`](https://openemail.uk/docs/api/reference/tools#post-tools-addresses): full reference
