---
title: "Senders"
description: "Every operation in this group: what it accepts, what it returns and the errors it can answer with."
url: "https://openemail.uk/docs/api/reference/senders"
area: "API"
category: "Reference"
---

# Senders

Every operation in this group: what it accepts, what it returns and the errors it can answer with.

## Operations

What is known about the organisation behind a sender: the line the reading pane shows under an unfamiliar sender, kept per domain for the whole workspace.

### `GET /senders/{email}`

Read what is known about a sender

A sentence or two about the organisation behind the domain of the address, once it has been looked up. A domain nobody has looked up yet is a 404: `POST /senders/{email}/research` looks it up.

Requires the `threads:read` scope.

- Scopes: `threads:read`.

**Path parameters**

- `email` (`string`, required): An address of the sender, such as `billing@stripe.com`. Only its domain is read.

**Returns**

- `200` `SenderProfile`: What is known about the sender.

**Errors**

- The errors every operation can return: `400`, `401`, `403`, `404`, `422`, `500`, described in the [error catalog](https://openemail.uk/docs/api/errors).

Also available in: SDK [`senders.get()`](https://openemail.uk/docs/sdk/reference/senders#get); CLI [`openemail senders get`](https://openemail.uk/docs/cli/reference/senders#senders-get); MCP [`getSenderProfile`](https://openemail.uk/docs/mcp/tools/reading#getSenderProfile).

### `POST /senders/{email}/research`

Look a sender up

Searches the web for the organisation behind the domain of the address and keeps what it found for the whole workspace, as the reading pane does the first time it shows a sender. A domain that was looked up before is answered from what was kept, and nothing is searched again. Only the owner of the workspace may look senders up, with a key or an app that is not limited to particular addresses or domains, and a workspace looks up at most 200 a day.

Requires the `threads:read` scope.

- Scopes: `threads:read`.

**Path parameters**

- `email` (`string`, required): An address of the sender, such as `billing@stripe.com`. Only its domain is read.

**Returns**

- `200` `SenderProfile`: What was found.

**Errors**

- `404`: Nothing could be found about the domain.
- `409`: `ai_not_configured`: looking senders up is not available on this server.
- `429`: `research_limit_reached`: the workspace has looked up 200 senders today.
- The errors every operation can return: `400`, `401`, `403`, `422`, `500`, described in the [error catalog](https://openemail.uk/docs/api/errors).

Also available in: SDK [`senders.research()`](https://openemail.uk/docs/sdk/reference/senders#research); CLI [`openemail senders research`](https://openemail.uk/docs/cli/reference/senders#senders-research); MCP [`getSenderProfile`](https://openemail.uk/docs/mcp/tools/reading#getSenderProfile).

### Objects

#### `SenderProfile`

`object`

- `object` (`string`, required, one of `"sender_profile"`)
- `domain` (`string`, required): The domain that was looked up.
- `about` (`string`, required, up to 400 characters): A sentence or two in plain prose about the organisation behind it.
- `updatedAt` (`string`, required, format `date-time`)
