> ## 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.

# ContactOut: Get Hashed Email Identifiers

> Resolve 5–100 LinkedIn profile URLs into hashed email identifiers for privacy-safe audience matching. Includes SDK V2 examples, schemas, and cost.

Resolve 5–100 LinkedIn profile URLs into hashed email identifiers for privacy-safe audience matching.

> [!NOTE]
>
> Tool ID: `contactout_get_hashed_email_identifiers`

## Run this action

Use the TypeScript SDK for one call. Use `ctx.tools.execute(...)` inside a Play for durable calls, scheduled calls, or CSV processing.

```ts theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'contactout_get_hashed_email_identifiers',
  {
    "profiles": [
      "https://example.com/resource",
      "https://example.com/resource",
      "https://example.com/resource",
      "https://example.com/resource",
      "https://example.com/resource"
    ]
  },
);

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

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute contactout_get_hashed_email_identifiers --input '{
  "profiles": [
    "https://example.com/resource",
    "https://example.com/resource",
    "https://example.com/resource",
    "https://example.com/resource",
    "https://example.com/resource"
  ]
}' --json
```

## Example response

The static output schema lacks the details for a reliable example. Use `deepline describe contactout_get_hashed_email_identifiers --json` for the complete live contract.

## Input reference

Return hashed email identifiers for 5 to 100 LinkedIn profile URLs. The response also lists which input URLs did not match, so callers can route those profiles to another provider instead of treating the whole batch as an unattributed pool.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.profiles` | `array` | Yes | — | LinkedIn profile URLs to resolve into hashed email identifiers. Minimum items: 5. Maximum items: 100. |

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

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Return hashed email identifiers for 5 to 100 LinkedIn profile URLs. The response also lists which input URLs did not match, so callers can route those profiles to another provider instead of treating the whole batch as an unattributed pool.",
    "properties": {
      "profiles": {
        "type": "array",
        "description": "LinkedIn profile URLs to resolve into hashed email identifiers.",
        "minItems": 5,
        "maxItems": 100,
        "items": {
          "type": "string",
          "format": "uri"
        }
      }
    },
    "required": [
      "profiles"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `object` | Yes | — | Provider response payload. |
| `result.data.status_code` | `integer` | Yes | — | — |
| `result.data.matches` | `object` | Yes | — | — |
| `result.data.matches.emails` | `array` | Yes | — | Hashed email identifiers returned for matched profiles. One matched profile may return multiple hashes, so this array length is NOT the matched-profile count. Hashes are not mapped to a specific input profile. |
| `result.data.matches_found` | `integer` | Yes | — | Exact count of matched profiles for this request. This is the billing signal: ContactOut consumes one email credit per matched profile regardless of how many hashes that profile returns. Minimum: 0. |
| `result.data.unmatched` | `array` | No | — | Input LinkedIn profile URLs that returned no hashed personal email. The complement of this list (input profiles minus unmatched) identifies which profiles matched, even though individual hashes still cannot be attributed to a specific profile. |
| `result.data.unmatched_count` | `integer` | No | — | Number of entries in unmatched. Minimum: 0. |
| `result.meta` | `object` | No | — | Additional response metadata (status, paging). |

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

  ### Output JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Standard tool result payload.",
    "properties": {
      "data": {
        "type": "object",
        "description": "Provider response payload.",
        "properties": {
          "status_code": {
            "type": "integer"
          },
          "matches": {
            "type": "object",
            "properties": {
              "emails": {
                "type": "array",
                "description": "Hashed email identifiers returned for matched profiles. One matched profile may return multiple hashes, so this array length is NOT the matched-profile count. Hashes are not mapped to a specific input profile.",
                "items": {
                  "type": "string",
                  "pattern": "^[a-f0-9]{64}$"
                }
              }
            },
            "required": [
              "emails"
            ],
            "additionalProperties": false
          },
          "matches_found": {
            "type": "integer",
            "description": "Exact count of matched profiles for this request. This is the billing signal: ContactOut consumes one email credit per matched profile regardless of how many hashes that profile returns.",
            "minimum": 0
          },
          "unmatched": {
            "type": "array",
            "description": "Input LinkedIn profile URLs that returned no hashed personal email. The complement of this list (input profiles minus unmatched) identifies which profiles matched, even though individual hashes still cannot be attributed to a specific profile.",
            "items": {
              "type": "string",
              "format": "uri"
            }
          },
          "unmatched_count": {
            "type": "integer",
            "description": "Number of entries in unmatched.",
            "minimum": 0
          }
        },
        "required": [
          "status_code",
          "matches",
          "matches_found"
        ],
        "additionalProperties": false
      },
      "meta": {
        "type": "object",
        "description": "Additional response metadata (status, paging).",
        "additionalProperties": true
      }
    },
    "required": [
      "data"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Deepline cost

* Pricing model: `per_result` (per result).
* Estimated Deepline credits: `0.56` per pricing unit.

## Related documentation

* [ContactOut provider guide](https://deepline.com/docs/providers/contactout/guide.md)
* [SDK V2 quickstart](https://deepline.com/docs/sdk-v2/quickstart.md)
* [SDK reference](https://deepline.com/docs/sdk-v2/sdk-reference.md)
* [Run tools across a CSV](https://deepline.com/docs/sdk-v2/batch-csv.md)


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