> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mailbreeze.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Contact

> Retrieve a specific contact

Get detailed information about a specific contact by its ID.

## Path Parameters

<ParamField path="listId" type="string" required>
  The unique list ID (e.g., `lst_abc123`).
</ParamField>

<ParamField path="id" type="string" required>
  The unique contact ID (e.g., `cnt_abc123`).
</ParamField>

## Examples

<CodeGroup>
  ```typescript JavaScript theme={null}
  import { MailBreeze } from "mailbreeze";

  const mailbreeze = new MailBreeze({ apiKey: "sk_live_xxx" });
  const contacts = mailbreeze.contacts("lst_abc123");

  const contact = await contacts.get("cnt_abc123");

  console.log(contact.email);        // "john@example.com"
  console.log(contact.status);       // "active"
  console.log(contact.customFields); // { plan: "pro", company: "Acme" }
  ```

  ```python Python theme={null}
  from mailbreeze import MailBreeze

  client = MailBreeze(api_key="sk_live_xxx")
  contacts = client.contacts("lst_abc123")

  contact = await contacts.get("cnt_abc123")

  print(contact.email)         # "john@example.com"
  print(contact.status)        # "active"
  print(contact.custom_fields) # {"plan": "pro", "company": "Acme"}
  ```

  ```go Go theme={null}
  client := mailbreeze.NewClient("sk_live_xxx")
  contacts := client.Contacts("lst_abc123")

  contact, err := contacts.Get(ctx, "cnt_abc123")
  if err != nil {
      log.Fatal(err)
  }

  fmt.Println(contact.Email)        // "john@example.com"
  fmt.Println(contact.Status)       // "active"
  fmt.Println(contact.CustomFields) // map[plan:pro company:Acme]
  ```

  ```php PHP theme={null}
  $mailbreeze = new MailBreeze('sk_live_xxx');

  $response = $mailbreeze->contacts->get('lst_abc123', 'cnt_abc123');
  $contact = $response['data'];

  echo $contact['email'];        // "john@example.com"
  echo $contact['status'];       // "active"
  print_r($contact['customFields']); // ["plan" => "pro", "company" => "Acme"]
  ```

  ```rust Rust theme={null}
  let client = Client::new("sk_live_xxx");
  let contacts = client.contacts("lst_abc123");

  let contact = contacts.get("cnt_abc123").await?;

  println!("{}", contact.email);  // "john@example.com"
  println!("{}", contact.status); // "active"
  ```

  ```bash cURL theme={null}
  curl "https://api.mailbreeze.com/api/v1/contact-lists/694fc1669e63563857ae8d72/contacts/8f1701be-0d2a-4519-999c-0574a3d68668" \
    -H "Authorization: Bearer sk_live_xxx"
  ```
</CodeGroup>

## Response

<ResponseField name="id" type="string">
  Unique contact ID.
</ResponseField>

<ResponseField name="email" type="string">
  Contact's email address.
</ResponseField>

<ResponseField name="firstName" type="string">
  Contact's first name.
</ResponseField>

<ResponseField name="lastName" type="string">
  Contact's last name.
</ResponseField>

<ResponseField name="phoneNumber" type="string">
  Contact's phone number.
</ResponseField>

<ResponseField name="customFields" type="object">
  Custom field values.
</ResponseField>

<ResponseField name="status" type="string">
  Contact status: `active`, `unsubscribed`, `bounced`, `complained`, or `suppressed`.
</ResponseField>

<ResponseField name="source" type="string">
  Acquisition source.
</ResponseField>

<ResponseField name="createdAt" type="string">
  ISO 8601 timestamp when created.
</ResponseField>

<ResponseField name="updatedAt" type="string">
  ISO 8601 timestamp when last updated.
</ResponseField>

<ResponseField name="subscribedAt" type="string">
  ISO 8601 timestamp when subscribed.
</ResponseField>

<ResponseField name="unsubscribedAt" type="string">
  ISO 8601 timestamp when unsubscribed (if applicable).
</ResponseField>

<ResponseField name="consentType" type="string">
  Type of consent: `explicit`, `implicit`, or `legitimate_interest`.
</ResponseField>

<ResponseField name="consentSource" type="string">
  Where consent was collected.
</ResponseField>

<ResponseField name="consentTimestamp" type="string">
  ISO 8601 timestamp when consent was given.
</ResponseField>

<ResponseField name="consentIpAddress" type="string">
  IP address from which consent was given.
</ResponseField>

```json Example Response theme={null}
{
  "success": true,
  "data": {
    "id": "8f1701be-0d2a-4519-999c-0574a3d68668",
    "domainId": "6911cf4253eb3ff3b4de6215",
    "contactListId": "694fc1669e63563857ae8d72",
    "email": "user@example.com",
    "firstName": "John",
    "lastName": "Doe",
    "customFields": {},
    "status": "active",
    "source": "console",
    "subscriptionToken": "b839501cb01ca878a01bd2d8d947ad3350b53afbf5370d3b3e1999c958ce309a",
    "createdAt": "2025-12-27T12:36:25.458Z",
    "updatedAt": "2025-12-27T12:36:26.851Z"
  },
  "meta": {
    "timestamp": "2025-12-27T13:45:00.000Z",
    "requestId": "abc123-def456",
    "path": "/api/v1/contact-lists/694fc1669e63563857ae8d72/contacts/8f1701be-0d2a-4519-999c-0574a3d68668"
  }
}
```

## Errors

| Code                | HTTP Status | Description                        |
| ------------------- | ----------- | ---------------------------------- |
| `CONTACT_NOT_FOUND` | 404         | Contact with this ID doesn't exist |
| `LIST_NOT_FOUND`    | 404         | List with this ID doesn't exist    |
