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

# Lemlist: Get Contacts Idoremail

> Get Contact. Lemlist Get Contacts Idoremail reference includes SDK V2 and CLI requests, input constraints, response fields, and Deepline cost.

Get Contact.

<Info>
  Tool ID: `lemlist_get_contacts_idoremail`
</Info>

## Run this action

Use the TypeScript SDK for a single call. Put `ctx.tools.execute(...)` inside a Play when the call should be durable, scheduled, or run across a CSV.

```ts theme={null}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'lemlist_get_contacts_idoremail',
  {
    "idOrEmail": "jane.doe@example.com"
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={null}
deepline tools execute lemlist_get_contacts_idoremail --input '{
  "idOrEmail": "jane.doe@example.com"
}' --json
```

## Example response

The SDK exposes this shape at `result.toolResponse.raw`. Values below are representative.

```json theme={null}
{
  "data": {
    "_id": "_123",
    "teamId": "team_123",
    "fullName": "Example"
  }
}
```

Use `deepline tools get lemlist_get_contacts_idoremail --json` for the latest machine-readable contract.

## Input reference

Retrieves a contact by its lemlist id (`ctc_xxx`) or email address. The path does not take a CRM record id: use `GET /contacts?crmIds=` for that.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.idOrEmail` | `string` | Yes | — | The unique identifier or email of the contact |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={null}
  {
    "type": "object",
    "description": "Retrieves a contact by its lemlist id (`ctc_xxx`) or email address. The path does not take a CRM record id: use `GET /contacts?crmIds=` for that.",
    "properties": {
      "idOrEmail": {
        "type": "string",
        "description": "The unique identifier or email of the contact"
      }
    },
    "required": [
      "idOrEmail"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `object` | Yes | — | A contact record in your CRM, as the lookups (`GET /contacts?idsOrEmails=`, `GET /contacts?crmIds=`, `GET /contacts/&#123;idOrEmail&#125;`) return it. Not to be confused with a lead which is a contact specifically added to a campaign. |
| `result.data._id` | `string` | No | — | Unique contact identifier |
| `result.data.teamId` | `string` | No | — | Team identifier the contact belongs to |
| `result.data.fullName` | `string` | No | — | Contact's calculated full name |
| `result.data.email` | `string` | No | — | Contact's primary email address Format: `email`. |
| `result.data.fields` | `record` | No | — | Contact fields, standard (`firstName`, `lastName`, `phone`, `jobTitle`...) and custom |
| `result.data.campaigns` | `array` | No | — | List of campaigns the contact is associated with |
| `result.data.campaigns[].campaignId` | `string` | No | — | — |
| `result.data.campaigns[].campaignState` | `string` | No | — | — |
| `result.data.campaigns[].leadState` | `string` | No | — | — |
| `result.data.campaigns[].leadId` | `string` | No | — | — |
| `result.data.linkedinUrl` | `string` | No | — | Contact's LinkedIn profile URL |
| `result.data.linkedinUrlSalesNav` | `string` | No | — | Contact's LinkedIn Sales Navigator URL |
| `result.data.ownerId` | `string` | No | — | ID of the user who owns this contact |
| `result.data.createdAt` | `string` | No | — | Contact creation timestamp Format: `date-time`. |
| `result.data.createdBy` | `string` | No | — | ID of the user who created the contact |
| `result.data.unsubscribed` | `boolean` | No | — | Whether the contact is globally unsubscribed. When true, no outreach will be sent to this contact. |
| `result.data.phonesStatuses` | `array` | No | — | Verification status of each verified phone number. |
| `result.data.phonesStatuses[].phone` | `string` | No | — | The phone number, as stored in `fields` |
| `result.data.phonesStatuses[].status` | `"valid" \| "invalid"` | No | — | Allowed: `valid`, `invalid`. |
| `result.data.crmSync` | `object` | No | — | CRM sync status for the contact, resolved against the team's active CRM provider (Hubspot, Salesforce, or Pipedrive). Only present when a CRM is connected and the contact has a record in it. `crmRecordId` maps a `crmIds` lookup back to the ids sent. |
| `result.data.crmSync.provider` | `"hubspot" \| "salesforce" \| "pipedrive"` | No | — | Active CRM provider for the team. Allowed: `hubspot`, `salesforce`, `pipedrive`. |
| `result.data.crmSync.crmRecordId` | `string \| null` | No | — | Identifier of the contact record on the CRM side. `null` when the lemlist contact has not been synced yet. |
| `result.data.crmSync.syncDisabled` | `boolean` | No | — | When `true`, automatic sync is paused for this contact. |
| `result.data.crmSync.errors` | `array` | No | — | List of recent sync errors. Empty when the contact is synced cleanly. |
| `result.data.crmSync.errors[].type` | `string` | No | — | Coarse error category (e.g. `CONNECT_FAILED`, `CREATE_FAILED`, `UPDATE_FAILED`). |
| `result.data.crmSync.errors[].reason` | `string` | No | — | Specific error reason (e.g. `UNIQUE_INDEX_ERROR_CONTACT`, `INVALID_EMAIL`, `PROPERTY_DOESNT_EXIST`). |
| `result.data.crmSync.errors[].raisedAt` | `string` | No | — | Timestamp when the error was last raised. Format: `date-time`. |
| `result.data.crmSync.errors[].metadata` | `record` | No | — | Extra context. For `UNIQUE_INDEX_ERROR_COMPANY`, contains `alreadyExistingCompanyId` — the lemlist company that already occupies the conflicting CRM record. Use it to remap contacts onto the right lemlist company before deleting the duplicate. |
| `result.data.fieldRejections` | `array` | No | — | Values lemlist refused to write on this contact, each with its reason. Empty when none. Filter the list endpoint to only flagged contacts via `GET /contacts?fieldRejectionReason=...`. |
| `result.data.fieldRejections[].field` | `string` | No | — | The record field the rejected value targeted (e.g. `emails`, `linkedinUrl`, `domain`). |
| `result.data.fieldRejections[].reason` | `string` | No | — | Why the value was rejected, prefixed by its origin — `enrichment_*` (raised while enriching) or `crm_sync_*` (raised during CRM sync). Same values accepted by the `fieldRejectionReason` query param. |
| `result.data.fieldRejections[].source` | `string` | No | — | Where the rejection came from — an enrichment source (`lemrich`) or a CRM provider (`hubspot`, `salesforce`, `pipedrive`). |
| `result.data.fieldRejections[].conflictingRecordId` | `string` | No | — | The lemlist record that already holds the value, when the rejection identifies one — use it to merge or remap before resolving the duplicate. Always a lemlist id (`ctc_…` for a contact, `cpn_…` for a company), never a CRM record id. Omitted otherwise. |
| `result.data.fieldRejections[].rejectedValue` | `string` | No | — | The value that was refused. |
| `result.data.fieldRejections[].rejectedAt` | `string` | No | — | When the rejection was recorded. Format: `date-time`. |
| `result.meta` | `object` | No | — | Additional response metadata (status, paging). |

<details>
  <summary>Show raw output schema</summary>

  ### Output JSON Schema

  ```json theme={null}
  {
    "type": "object",
    "description": "Standard tool result payload.",
    "properties": {
      "data": {
        "type": "object",
        "description": "A contact record in your CRM, as the lookups (`GET /contacts?idsOrEmails=`, `GET /contacts?crmIds=`, `GET /contacts/{idOrEmail}`) return it. Not to be confused with a lead which is a contact specifically added to a campaign.",
        "properties": {
          "_id": {
            "type": "string",
            "description": "Unique contact identifier"
          },
          "teamId": {
            "type": "string",
            "description": "Team identifier the contact belongs to"
          },
          "fullName": {
            "type": "string",
            "description": "Contact's calculated full name"
          },
          "email": {
            "type": "string",
            "description": "Contact's primary email address",
            "format": "email"
          },
          "fields": {
            "type": "object",
            "description": "Contact fields, standard (`firstName`, `lastName`, `phone`, `jobTitle`...) and custom",
            "additionalProperties": true
          },
          "campaigns": {
            "type": "array",
            "description": "List of campaigns the contact is associated with",
            "items": {
              "type": "object",
              "properties": {
                "campaignId": {
                  "type": "string"
                },
                "campaignState": {
                  "type": "string"
                },
                "leadState": {
                  "type": "string"
                },
                "leadId": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            }
          },
          "linkedinUrl": {
            "type": "string",
            "description": "Contact's LinkedIn profile URL"
          },
          "linkedinUrlSalesNav": {
            "type": "string",
            "description": "Contact's LinkedIn Sales Navigator URL"
          },
          "ownerId": {
            "type": "string",
            "description": "ID of the user who owns this contact"
          },
          "createdAt": {
            "type": "string",
            "description": "Contact creation timestamp",
            "format": "date-time"
          },
          "createdBy": {
            "type": "string",
            "description": "ID of the user who created the contact"
          },
          "unsubscribed": {
            "type": "boolean",
            "description": "Whether the contact is globally unsubscribed. When true, no outreach will be sent to this contact."
          },
          "phonesStatuses": {
            "type": "array",
            "description": "Verification status of each verified phone number.",
            "items": {
              "type": "object",
              "properties": {
                "phone": {
                  "type": "string",
                  "description": "The phone number, as stored in `fields`"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "valid",
                    "invalid"
                  ]
                }
              },
              "additionalProperties": false
            }
          },
          "crmSync": {
            "type": "object",
            "description": "CRM sync status for the contact, resolved against the team's active CRM provider (Hubspot, Salesforce, or Pipedrive). Only present when a CRM is connected and the contact has a record in it. `crmRecordId` maps a `crmIds` lookup back to the ids sent.",
            "properties": {
              "provider": {
                "type": "string",
                "description": "Active CRM provider for the team.",
                "enum": [
                  "hubspot",
                  "salesforce",
                  "pipedrive"
                ]
              },
              "crmRecordId": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "Identifier of the contact record on the CRM side. `null` when the lemlist contact has not been synced yet."
              },
              "syncDisabled": {
                "type": "boolean",
                "description": "When `true`, automatic sync is paused for this contact."
              },
              "errors": {
                "type": "array",
                "description": "List of recent sync errors. Empty when the contact is synced cleanly.",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "description": "Coarse error category (e.g. `CONNECT_FAILED`, `CREATE_FAILED`, `UPDATE_FAILED`)."
                    },
                    "reason": {
                      "type": "string",
                      "description": "Specific error reason (e.g. `UNIQUE_INDEX_ERROR_CONTACT`, `INVALID_EMAIL`, `PROPERTY_DOESNT_EXIST`)."
                    },
                    "raisedAt": {
                      "type": "string",
                      "description": "Timestamp when the error was last raised.",
                      "format": "date-time"
                    },
                    "metadata": {
                      "type": "object",
                      "description": "Extra context. For `UNIQUE_INDEX_ERROR_COMPANY`, contains `alreadyExistingCompanyId` — the lemlist company that already occupies the conflicting CRM record. Use it to remap contacts onto the right lemlist company before deleting the duplicate.",
                      "additionalProperties": true
                    }
                  },
                  "additionalProperties": false
                }
              }
            },
            "additionalProperties": false
          },
          "fieldRejections": {
            "type": "array",
            "description": "Values lemlist refused to write on this contact, each with its reason. Empty when none. Filter the list endpoint to only flagged contacts via `GET /contacts?fieldRejectionReason=...`.",
            "items": {
              "type": "object",
              "description": "A value lemlist refused to write on a Contact or Company, with the reason why. Surfaced under `fieldRejections[]` on those objects; filter a list endpoint to only flagged records via the `fieldRejectionReason` query param.",
              "properties": {
                "field": {
                  "type": "string",
                  "description": "The record field the rejected value targeted (e.g. `emails`, `linkedinUrl`, `domain`)."
                },
                "reason": {
                  "type": "string",
                  "description": "Why the value was rejected, prefixed by its origin — `enrichment_*` (raised while enriching) or `crm_sync_*` (raised during CRM sync). Same values accepted by the `fieldRejectionReason` query param."
                },
                "source": {
                  "type": "string",
                  "description": "Where the rejection came from — an enrichment source (`lemrich`) or a CRM provider (`hubspot`, `salesforce`, `pipedrive`)."
                },
                "conflictingRecordId": {
                  "type": "string",
                  "description": "The lemlist record that already holds the value, when the rejection identifies one — use it to merge or remap before resolving the duplicate. Always a lemlist id (`ctc_…` for a contact, `cpn_…` for a company), never a CRM record id. Omitted otherwise."
                },
                "rejectedValue": {
                  "type": "string",
                  "description": "The value that was refused."
                },
                "rejectedAt": {
                  "type": "string",
                  "description": "When the rejection was recorded.",
                  "format": "date-time"
                }
              },
              "additionalProperties": false
            }
          }
        },
        "additionalProperties": false
      },
      "meta": {
        "type": "object",
        "description": "Additional response metadata (status, paging).",
        "additionalProperties": true
      }
    },
    "required": [
      "data"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Deepline cost

* Pricing model: `fixed` (per call).
* Estimated Deepline credits: `0` per pricing unit.
* Provider-native pricing may still exist outside Deepline credit billing.

## Related documentation

* [Lemlist provider guide](/docs/providers/lemlist/guide)
* [SDK V2 quickstart](/docs/sdk-v2/quickstart)
* [SDK reference](/docs/sdk-v2/sdk-reference)
* [Run tools across a CSV](/docs/sdk-v2/batch-csv)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.