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

# Check InMail

> Find out, for up to 100 profiles at once, who can be InMailed for free (Open Profile).

## Overview

An **Open Profile** member can be InMailed without spending an InMail credit, whatever the connection degree. This action checks a batch of profiles in one call and returns, for each one, whether the InMail is free, plus the `recipient_urn` needed to [send it](/api-reference/v2/messages/send).

Uses the account's Sales Nav seat — see [Connect Account](/api-reference/v2/accounts/login) to activate it (it also auto-connects on first use).

<Note>This endpoint consumes **1 credit per 10 profiles** checked. Requires a Sales Nav seat on the account. Ignore this if you're on per-seat pricing: usage is unlimited.</Note>

<Warning>
  LinkedIn hides the Open Profile badge from some seats (typically a seat on its monthly InMail limit): every member then looks "not open" from that seat. The API detects this by checking known Open Profiles on the same seat. When the seat is blind, `open_profile_badge_visible` is `false` and a `warning` is included: `open_profile` and `inmail_free` keep LinkedIn's raw value (`false`) but must not be trusted for that call. Check these profiles again from another seat, or use [Check InMail Seat](/api-reference/v2/profiles/check-inmail-seat) to know the seat's state before batching.
</Warning>

## Request

<ParamField header="x-api-key" type="string" required>
  Your API key for authentication.
</ParamField>

<ParamField body="account_id" type="string" required>
  The unique identifier of the account to use. Must have a Sales Nav seat.
</ParamField>

<ParamField body="action" type="string" required>
  Must be `"check_inmail"`.
</ParamField>

<ParamField body="params" type="object" required>
  <Expandable title="params properties">
    <ParamField body="profiles" type="string[]" required>
      Up to 100 profile references, in any mix of shapes: profile URL, vanity slug, member id (`ACoAA…`), `urn:li:fsd_profile:…`, Sales Nav lead URL, Sales Nav id (`ACwAA…`) or `urn:li:fs_salesProfile:(…)`. Each result echoes the reference you sent so you can match them back.
    </ParamField>
  </Expandable>
</ParamField>

## Response

<ResponseField name="success" type="boolean">
  Indicates whether the request was successful.
</ResponseField>

<ResponseField name="data" type="object">
  <Expandable title="data properties">
    <ResponseField name="total_results" type="integer">Number of profiles in `results`.</ResponseField>
    <ResponseField name="inmail_free_count" type="integer">How many of them can be InMailed for free.</ResponseField>

    <ResponseField name="open_profile_badge_visible" type="boolean | null">
      Whether the seat that answered can see the Open Profile badge. `false` means the `open_profile` / `inmail_free` values below are not reliable (see the warning above). `null` when it could not be determined; results are then LinkedIn's raw values.
    </ResponseField>

    <ResponseField name="warning" type="string">Present only when `open_profile_badge_visible` is `false`.</ResponseField>

    <ResponseField name="results" type="array">
      One entry per requested profile, in the same order.

      <Expandable title="result properties">
        <ResponseField name="profile" type="string">The reference you sent.</ResponseField>
        <ResponseField name="status" type="string">`success`, or `error` with a `message` (profile not found, could not be resolved).</ResponseField>
        <ResponseField name="inmail_free" type="boolean">`true` when an InMail to this member costs no credit (Open Profile with no restriction).</ResponseField>
        <ResponseField name="open_profile" type="boolean">Whether the member is an Open Profile.</ResponseField>
        <ResponseField name="inmail_restriction" type="string">`NO_RESTRICTION`, or the restriction LinkedIn reports.</ResponseField>
        <ResponseField name="premium" type="boolean">Whether the member has a Premium account.</ResponseField>
        <ResponseField name="degree" type="integer">Connection degree from the account.</ResponseField>
        <ResponseField name="full_name" type="string">Full name.</ResponseField>
        <ResponseField name="profile_url" type="string">Standard profile URL.</ResponseField>
        <ResponseField name="recipient_urn" type="string">`urn:li:fs_salesProfile:(...)` — pass it to [Send Message](/api-reference/v2/messages/send) to InMail this member.</ResponseField>
        <ResponseField name="member_urn" type="string">`urn:li:member:…`.</ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "data": {
      "total_results": 2,
      "inmail_free_count": 1,
      "open_profile_badge_visible": true,
      "results": [
        {
          "profile": "https://www.linkedin.com/in/jane-doe",
          "status": "success",
          "inmail_free": true,
          "open_profile": true,
          "inmail_restriction": "NO_RESTRICTION",
          "premium": true,
          "degree": 2,
          "full_name": "Jane Doe",
          "profile_url": "https://www.linkedin.com/in/jane-doe",
          "recipient_urn": "urn:li:fs_salesProfile:(ACwAAA...,name, )",
          "member_urn": "urn:li:member:123456"
        },
        {
          "profile": "john-smith",
          "status": "success",
          "inmail_free": false,
          "open_profile": false,
          "inmail_restriction": "NO_RESTRICTION",
          "premium": false,
          "degree": 3,
          "full_name": "John Smith",
          "profile_url": "https://www.linkedin.com/in/john-smith",
          "recipient_urn": "urn:li:fs_salesProfile:(ACwAAB...,name, )",
          "member_urn": "urn:li:member:654321"
        }
      ]
    },
    "metadata": {
      "action": "check_inmail",
      "account_id": "your-account-id",
      "credits_consumed": 1,
      "timestamp": "2026-09-23T09:33:51Z"
    }
  }
  ```

  ```json 200 (seat cannot see the badge) theme={null}
  {
    "success": true,
    "data": {
      "total_results": 1,
      "inmail_free_count": 0,
      "open_profile_badge_visible": false,
      "warning": "This Sales Navigator seat currently cannot see the Open Profile badge: LinkedIn reports every member as not open from it, so open_profile and inmail_free are not reliable in this response. Check these profiles from another seat, or probe the seat with profiles/check_inmail_seat.",
      "results": [
        {
          "profile": "https://www.linkedin.com/in/jane-doe",
          "status": "success",
          "inmail_free": false,
          "open_profile": false,
          "inmail_restriction": "NO_RESTRICTION",
          "premium": true,
          "degree": 2,
          "full_name": "Jane Doe",
          "profile_url": "https://www.linkedin.com/in/jane-doe",
          "recipient_urn": "urn:li:fs_salesProfile:(ACwAAA...,name, )",
          "member_urn": "urn:li:member:123456"
        }
      ]
    },
    "metadata": {
      "action": "check_inmail",
      "account_id": "your-account-id",
      "credits_consumed": 1,
      "timestamp": "2026-09-23T09:33:51Z"
    }
  }
  ```

  ```json 422 (no Sales Nav seat) theme={null}
  {
    "success": false,
    "error": {
      "code": "CHANNEL_ERROR",
      "message": "No Sales Nav license found for this account"
    },
    "metadata": {
      "action": "check_inmail",
      "account_id": "your-account-id",
      "credits_consumed": 1,
      "timestamp": "2026-09-23T09:33:51Z"
    }
  }
  ```
</ResponseExample>

## Example

```json theme={null}
{
  "account_id": "your-account-id",
  "action": "check_inmail",
  "params": {
    "profiles": [
      "https://www.linkedin.com/in/jane-doe",
      "john-smith",
      "urn:li:fs_salesProfile:(ACwAAB...,name, )"
    ]
  }
}
```
