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

# Particle: Lookup Entities

> Resolve external identifiers (LinkedIn slugs, domains, tickers, CIKs) to Particle people and companies. Includes SDK V2 examples, schemas, and cost.

Resolve external identifiers (LinkedIn slugs, domains, tickers, CIKs) to Particle people and companies.

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

## 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(
  'particle_lookup_entities',
  {
    "identifier": [
      "example_123"
    ]
  },
);

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

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute particle_lookup_entities --input '{
  "identifier": [
    "example_123"
  ]
}' --json
```

## Example response

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

## Input reference

Resolves external identifiers — LinkedIn slugs, social handles, company domains, stock tickers, SEC CIKs, Wikidata QIDs — to the people and companies that carry them. It is the reverse of GET /v1/people/\{slug}/external-links and GET /v1/companies/\{id}/external-links. Pass a comma-separated `identifier` list (up to 100 per call). `platform` is optional, so a handle with no known source still resolves. A full profile URL works in place of a bare identifier and the platform is inferred from it, and the stored form is matched for you — pass `satyanadella` or the profile URL, not `in/satyanadella`. Each result echoes the input identifier and carries a `matches` array, because an identifier is not unique to an entity: a LinkedIn profile claimed by two duplicate person records resolves to both, and `match_count` reports the total. Unresolved identifiers come back with an empty `matches`, so a See the live schema below for the complete notes.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.identifier` | `array` | Yes | — | One or more external identifiers to resolve. Pass a comma-separated list to look up many at once (max 100 per call). A full profile URL works in place of a bare identifier and the platform is inferred from it. The identifier is echoed back exactly as supplied, not normalized. Minimum items: 1. Maximum items: 100. |
| `payload.platform` | `string` | No | — | Restrict the lookup to one platform. Optional — omit it to match the identifier on any platform, which is what you want when you hold a handle but not its source. Accepts any platform reported on the external-links endpoints plus the company identifier namespaces 'domain', 'ticker', 'sec' (CIK) and 'wikidata' (QID). |
| `payload.type` | `"person" \| "company"` | No | — | Restrict results to one kind of entity. Omit to search people and companies together. Allowed: `person`, `company`. |

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

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Resolves external identifiers — LinkedIn slugs, social handles, company domains, stock tickers, SEC CIKs, Wikidata QIDs — to the people and companies that carry them. It is the reverse of GET /v1/people/{slug}/external-links and GET /v1/companies/{id}/external-links. Pass a comma-separated `identifier` list (up to 100 per call); `platform` is optional, so a handle with no known source still resolves. A full profile URL works in place of a bare identifier and the platform is inferred from it, and the stored form is matched for you — pass `satyanadella` or the profile URL, not `in/satyanadella`. Each result echoes the input identifier and carries a `matches` array, because an identifier is not unique to an entity: a LinkedIn profile claimed by two duplicate person records resolves to both, and `match_count` reports the total. Unresolved identifiers come back with an empty `matches`, so a bulk caller never has to reconcile a shorter response against a longer request. Correlate by the echoed `identifier` rather than by position, since duplicate identifiers collapse to one result. Use GET /v1/entities/search instead when you have a name rather than an identifier, and GET /v1/podcasts/lookup or GET /v1/podcasts/episodes/lookup for podcast and episode identifiers.",
    "properties": {
      "identifier": {
        "type": [
          "array",
          "null"
        ],
        "description": "One or more external identifiers to resolve. Pass a comma-separated list to look up many at once (max 100 per call). A full profile URL works in place of a bare identifier and the platform is inferred from it. The identifier is echoed back exactly as supplied, not normalized.",
        "minItems": 1,
        "maxItems": 100,
        "items": {
          "type": "string"
        }
      },
      "platform": {
        "type": "string",
        "description": "Restrict the lookup to one platform. Optional — omit it to match the identifier on any platform, which is what you want when you hold a handle but not its source. Accepts any platform reported on the external-links endpoints plus the company identifier namespaces 'domain', 'ticker', 'sec' (CIK) and 'wikidata' (QID)."
      },
      "type": {
        "type": "string",
        "description": "Restrict results to one kind of entity. Omit to search people and companies together.",
        "enum": [
          "person",
          "company"
        ]
      }
    },
    "required": [
      "identifier"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `object` | Yes | — | Provider response payload. |
| `result.data.results` | `array \| null` | Yes | — | One result per unique input identifier, in request order. Duplicate identifiers in the request collapse to a single result. |
| `result.data.results[].identifier` | `string` | Yes | — | The identifier exactly as supplied in the request, not normalized. |
| `result.data.results[].match_count` | `integer` | Yes | — | How many distinct entities carry this identifier. Larger than the length of 'matches' when more than 10 do. A count above 1 means the identifier is shared, usually by duplicate records for the same real person — 8.7% of LinkedIn identifiers are. Format: `int64`. |
| `result.data.results[].matches` | `array \| null` | Yes | — | The entities carrying this identifier, best first: records linked to a knowledge graph entity come before those without, then oldest first. Empty when the identifier does not resolve. |
| `result.data.results[].matches[].company` | `object` | No | — | — |
| `result.data.results[].matches[].company.description` | `string` | No | — | Short company description, when known. |
| `result.data.results[].matches[].company.domain` | `string` | No | — | Primary website domain (e.g. 'nvidia.com'), when known. |
| `result.data.results[].matches[].company.id` | `string` | Yes | — | Company identifier (domain, slug, or encoded ID) |
| `result.data.results[].matches[].company.image_url` | `string` | No | — | Company logo or image URL |
| `result.data.results[].matches[].company.name` | `string` | Yes | — | Company name |
| `result.data.results[].matches[].company.slug` | `string` | No | — | Stable human-readable handle (the linked knowledge-graph slug, e.g. 'nvidia'), when known. Companies have no slug of their own. prefer this for display and pass it (or id) to /v1/companies. |
| `result.data.results[].matches[].company.ticker` | `string` | No | — | Primary stock ticker symbol, when listed. |
| `result.data.results[].matches[].person` | `object` | No | — | — |
| `result.data.results[].matches[].person.description` | `string` | No | — | Short description (e.g. current role), when known. |
| `result.data.results[].matches[].person.id` | `string` | Yes | — | Encoded Person identifier |
| `result.data.results[].matches[].person.image_url` | `string` | No | — | Canonical headshot URL when one is known for the Person |
| `result.data.results[].matches[].person.name` | `string` | Yes | — | Display name |
| `result.data.results[].matches[].person.slug` | `string` | No | — | Stable human-readable handle (e.g. 'satya-nadella'). Recommended canonical identifier on every Particle Pro person surface. |
| `result.data.results[].matches[].type` | `"person" \| "company"` | Yes | — | Which kind of entity matched. The corresponding field below is the one that is set. Allowed: `person`, `company`. |
| `result.data.results[].platforms` | `array \| null` | No | — | The platforms this identifier matched on, alphabetically. Usually one. Several when a handle is the same across platforms and no 'platform' filter was given. Omitted when nothing matched. |
| `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": {
          "results": {
            "type": [
              "array",
              "null"
            ],
            "description": "One result per unique input identifier, in request order. Duplicate identifiers in the request collapse to a single result.",
            "items": {
              "type": "object",
              "properties": {
                "identifier": {
                  "type": "string",
                  "description": "The identifier exactly as supplied in the request, not normalized."
                },
                "match_count": {
                  "type": "integer",
                  "description": "How many distinct entities carry this identifier. Larger than the length of 'matches' when more than 10 do. A count above 1 means the identifier is shared, usually by duplicate records for the same real person — 8.7% of LinkedIn identifiers are.",
                  "format": "int64"
                },
                "matches": {
                  "type": [
                    "array",
                    "null"
                  ],
                  "description": "The entities carrying this identifier, best first: records linked to a knowledge graph entity come before those without, then oldest first. Empty when the identifier does not resolve.",
                  "items": {
                    "type": "object",
                    "properties": {
                      "company": {
                        "type": "object",
                        "properties": {
                          "description": {
                            "type": "string",
                            "description": "Short company description, when known."
                          },
                          "domain": {
                            "type": "string",
                            "description": "Primary website domain (e.g. 'nvidia.com'), when known."
                          },
                          "id": {
                            "type": "string",
                            "description": "Company identifier (domain, slug, or encoded ID)"
                          },
                          "image_url": {
                            "type": "string",
                            "description": "Company logo or image URL"
                          },
                          "name": {
                            "type": "string",
                            "description": "Company name"
                          },
                          "slug": {
                            "type": "string",
                            "description": "Stable human-readable handle (the linked knowledge-graph slug, e.g. 'nvidia'), when known. Companies have no slug of their own; prefer this for display and pass it (or id) to /v1/companies."
                          },
                          "ticker": {
                            "type": "string",
                            "description": "Primary stock ticker symbol, when listed."
                          }
                        },
                        "required": [
                          "id",
                          "name"
                        ],
                        "additionalProperties": false
                      },
                      "person": {
                        "type": "object",
                        "properties": {
                          "description": {
                            "type": "string",
                            "description": "Short description (e.g. current role), when known."
                          },
                          "id": {
                            "type": "string",
                            "description": "Encoded Person identifier"
                          },
                          "image_url": {
                            "type": "string",
                            "description": "Canonical headshot URL when one is known for the Person"
                          },
                          "name": {
                            "type": "string",
                            "description": "Display name"
                          },
                          "slug": {
                            "type": "string",
                            "description": "Stable human-readable handle (e.g. 'satya-nadella'). Recommended canonical identifier on every Particle Pro person surface."
                          }
                        },
                        "required": [
                          "id",
                          "name"
                        ],
                        "additionalProperties": false
                      },
                      "type": {
                        "type": "string",
                        "description": "Which kind of entity matched. The corresponding field below is the one that is set.",
                        "enum": [
                          "person",
                          "company"
                        ]
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "additionalProperties": false
                  }
                },
                "platforms": {
                  "type": [
                    "array",
                    "null"
                  ],
                  "description": "The platforms this identifier matched on, alphabetically. Usually one. Several when a handle is the same across platforms and no 'platform' filter was given. Omitted when nothing matched.",
                  "items": {
                    "type": "string"
                  }
                }
              },
              "required": [
                "identifier",
                "matches",
                "match_count"
              ],
              "additionalProperties": false
            }
          }
        },
        "required": [
          "results"
        ],
        "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

* [Particle provider guide](https://deepline.com/docs/providers/particle/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.