---
title: "openemail.senders"
description: "Every method in this namespace: its signature, its parameters, what it returns and an example."
url: "https://openemail.uk/docs/sdk/reference/senders"
area: "SDK"
category: "Reference"
---

# openemail.senders

Every method in this namespace: its signature, its parameters, what it returns and an example.

## Methods

What is known about the organisation behind a sender, the line the reading pane shows under an unfamiliar one, and looking a sender up.

### `senders.get()`

Read what is known about a sender

```ts
get(email: string, options?: RequestScope): Promise<SenderProfileResource>
```

Resolves a sentence or two about the organisation behind the domain of an address, the line the reading pane shows under an unfamiliar sender. Only the domain is read, so any address on it gives the same answer, and what is known is kept for the whole workspace.

A domain nobody has looked up yet is a 404. `research` looks it up.

Scopes: `threads:read`.

**Parameters**

- `email` (`string`, required): An address of the sender, such as `billing@stripe.com`.
- `options.signal` (`AbortSignal`): Cancels the request.
- `options.apiKey` (`string`): Overrides the client's API key for this call only.

**Returns**

`SenderProfileResource`, `{ object: 'sender_profile', domain, about, updatedAt }`.

**Example**

```ts
const sender = await openemail.senders.get('billing@stripe.com')

console.log(sender.domain, sender.about)
```

**Notes**

- An address with no domain is a 422 `invalid_parameter` on `email`.

Also available in: API [`GET /senders/{email}`](https://openemail.uk/docs/api/reference/senders#get-senders-email); CLI [`openemail senders get`](https://openemail.uk/docs/cli/reference/senders#senders-get).

### `senders.research()`

Look a sender up

```ts
research(email: string, options?: RequestScope): Promise<SenderProfileResource>
```

Searches the web for the organisation behind the domain of an 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: anything else is a 422 `capability_unsupported` or a 403 `owner_only`. A workspace looks up at most 200 senders a day, and the next one is a 429 `research_limit_reached`. A domain nothing could be found about is a 404.

Scopes: `threads:read`.

**Parameters**

- `email` (`string`, required): An address of the sender. Only its domain is looked up.
- `options.signal` (`AbortSignal`): Cancels the request.
- `options.apiKey` (`string`): Overrides the client's API key for this call only.

**Returns**

`SenderProfileResource`, what was found or what was already known.

**Example**

```ts
const sender = await openemail.senders.research('hello@acme-robotics.io')

console.log(sender.about)
```

**Notes**

- The SDK retries it after a network failure, which is safe because a domain that was found is answered from what was kept.

Also available in: API [`POST /senders/{email}/research`](https://openemail.uk/docs/api/reference/senders#post-senders-email-research); CLI [`openemail senders research`](https://openemail.uk/docs/cli/reference/senders#senders-research).
