## Retrieve a sender

`sender.retrieve(strid)  -> SenderRetrieveResponse`

**get** `/v1/senders/{id}`

Retrieves a sender by its ID, archived ones included.

**[Required scope](/using-the-api/scopes/):** `senders:read`

**[Rate limit category](/using-the-api/rate-limits/):** Read

### Parameters

- `id: str`

  Unique identifier of the sender to retrieve.

### Returns

- `class SenderRetrieveResponse: …`

  - `id: str`

    Unique identifier of the sender.

  - `archived_at: Optional[str]`

    When the sender was archived, or null if it is active. Archived senders never send.

  - `channel: Literal["EMAIL", "LINKEDIN"]`

    Whether this sender sends email or LinkedIn messages.

    - `"EMAIL"`

    - `"LINKEDIN"`

  - `created_at: str`

    When the sender was created.

  - `email_address: Optional[str]`

    The address email from this sender is sent from. Null for LinkedIn senders, or when the connected account has no address.

  - `health: Literal["UNVERIFIED", "HEALTHY", "UNHEALTHY"]`

    `HEALTHY` can send. `UNHEALTHY` cannot send until `healthReason` is resolved. `UNVERIFIED` means no health verdict yet: an email sender in this state cannot send until it passes a health check, while a LinkedIn sender is never health-checked, so a working LinkedIn sender is usually `UNVERIFIED` and can send.

    - `"UNVERIFIED"`

    - `"HEALTHY"`

    - `"UNHEALTHY"`

  - `health_reason: Optional[str]`

    Why the sender is `UNHEALTHY` or `UNVERIFIED`, for example `ACCOUNT_DISCONNECTED`, `BOUNCE_THRESHOLD` or `INVITE_LIMIT`; null when healthy.

  - `object_type: Literal["sender"]`

    Always `sender`.

    - `"sender"`

  - `owner: Optional[str]`

    Member ID of the person who owns this sender, or null when no workspace membership can be resolved.

  - `pacing: Pacing`

    How this sender paces each step type it sends, keyed by sequence step type: `EMAIL` for an email sender; `LINKEDIN_INVITE` and `LINKEDIN_MESSAGE` for a LinkedIn sender.

    - `email: Optional[PacingEmail]`

      Email steps. Present only on an email sender.

      - `daily_limit: int`

        Most sends of this step type in any rolling 24 hours.

      - `max_gap_seconds: Optional[int]`

        Upper bound of the minimum spacing, in seconds. Before each send, a minimum spacing is drawn at random between `minGapSeconds` and this value, and the send waits until that long after the previous one. Sends can be further apart, for example outside the send window or once `dailyLimit` is reached. Null means the minimum spacing is always `minGapSeconds`.

      - `min_gap_seconds: int`

        Lower bound of the minimum spacing between two of its sends, in seconds.

    - `linkedin_invite: Optional[PacingLinkedinInvite]`

      LinkedIn connection requests. Present only on a LinkedIn sender.

      - `daily_limit: int`

        Most sends of this step type in any rolling 24 hours.

      - `max_gap_seconds: Optional[int]`

        Upper bound of the minimum spacing, in seconds. Before each send, a minimum spacing is drawn at random between `minGapSeconds` and this value, and the send waits until that long after the previous one. Sends can be further apart, for example outside the send window or once `dailyLimit` is reached. Null means the minimum spacing is always `minGapSeconds`.

      - `min_gap_seconds: int`

        Lower bound of the minimum spacing between two of its sends, in seconds.

    - `linkedin_message: Optional[PacingLinkedinMessage]`

      LinkedIn messages. Present only on a LinkedIn sender.

      - `daily_limit: int`

        Most sends of this step type in any rolling 24 hours.

      - `max_gap_seconds: Optional[int]`

        Upper bound of the minimum spacing, in seconds. Before each send, a minimum spacing is drawn at random between `minGapSeconds` and this value, and the send waits until that long after the previous one. Sends can be further apart, for example outside the send window or once `dailyLimit` is reached. Null means the minimum spacing is always `minGapSeconds`.

      - `min_gap_seconds: int`

        Lower bound of the minimum spacing between two of its sends, in seconds.

  - `reply_to_address: Optional[str]`

    SMTP senders only: the connected mailbox replies are sent to and read from. Null for other senders.

  - `transport: Optional[Literal["SMTP", "OAUTH"]]`

    How an email sender sends: `SMTP` through its own mail server, `OAUTH` through its connected Google or Microsoft account. Null for LinkedIn senders.

    - `"SMTP"`

    - `"OAUTH"`

### Example

```python
from lightfield import Lightfield

client = Lightfield(
    api_key="My API Key",
)
sender_retrieve_response = client.sender.retrieve(
    "id",
)
print(sender_retrieve_response.id)
```

#### Response

```json
{
  "id": "id",
  "archivedAt": "archivedAt",
  "channel": "EMAIL",
  "createdAt": "createdAt",
  "emailAddress": "emailAddress",
  "health": "UNVERIFIED",
  "healthReason": "healthReason",
  "objectType": "sender",
  "owner": "owner",
  "pacing": {
    "EMAIL": {
      "dailyLimit": -9007199254740991,
      "maxGapSeconds": -9007199254740991,
      "minGapSeconds": -9007199254740991
    },
    "LINKEDIN_INVITE": {
      "dailyLimit": -9007199254740991,
      "maxGapSeconds": -9007199254740991,
      "minGapSeconds": -9007199254740991
    },
    "LINKEDIN_MESSAGE": {
      "dailyLimit": -9007199254740991,
      "maxGapSeconds": -9007199254740991,
      "minGapSeconds": -9007199254740991
    }
  },
  "replyToAddress": "replyToAddress",
  "transport": "SMTP"
}
```
