# doLookup

## Summary

**required** `function doLookup(entities, options, callback)`

| **Parameters** | Description                                                                                       |
| -------------- | ------------------------------------------------------------------------------------------------- |
| entities       | An array of entity objects seen on the requesting user's screen                                   |
| options        | An options object with key value pairs representing the requesting user's options and their value |
| callback       | A Node.js style callback which should return an array of `resultObjects`                          |

{% hint style="info" %}
For a quick overview of the `doLookup` method please see the [Quick Start Guide](/integrations/quick-start/quick-start-guide.md).
{% endhint %}

The `doLookup` method is main entry point into your main module. This method is currently the only function that must be exported from your main module (`integration.js`). The method receives a list of entities that appeared on the user's screen and the returns contextual data related to those entities.

## Parameters

The following is an explanation of the `doLookup` parameters

### entities

The `entities` parameter is an array of [Entity Objects](/integrations/build-an-integration/main/dolookup/entity-objects.md). Each entity object contains a range of boolean flags that can be used to determine the type of the entity. In addition, every entity object contains a `value`, `type`, and `types` property.

For additional information please see the section on [Entity Objects](/integrations/build-an-integration/main/dolookup/entity-objects.md)

Sample entities array

```javascript
  [{
     // entity object
     type: 'IPv4',
     types: ['IP', IPv4'],
     isIP: true,
     isIPv4: true,
     isIPv6: false,
     isPrivateIP: true,
     IPType: 'IPv4',
     isDomain: false,
     isHash: false,
     isMD5: false,
     isSHA1: false,
     isSHA256: false,
     hashType: '',
     isEmail: false,
     isURL: false,
     value: '192.168.0.1',
     IPLong: 939655937,
     channels: []
 }]
```

### options

The second parameter to the `doLookup` method is the `options` object which contains the values for the integration options as set in the integration `config.js`. Note that for per-user settings the value in the `options` object will reflect the value of the user requesting the lookup.

The key in the `options` object is the same value of the `key` property set in the integration `config.js` file.

{% code title="Sample Options Object" %}

```javascript
{
    "apiKey": "lkasjdioajsdoij12lk3j1lk23j12",
    "lookupHashes": true,
    "throttleLookups": false
}
```

{% endcode %}

### callback(error, results)

```
@param callback
@type Function
@param {String | Object} error
@param {Array} results
```

The callback must be called before execution of the `doLookup` method completes. The callback accepts two parameters.

The first parameter is an error which can either be a string literal or a JSON API error object. In the case of a string literal the returned string is displayed as an error in the notification window as well as tracked as an error in the integration

```javascript
//callback parameters
callback(error, results);
```

{% hint style="info" %}
If you have no error to return you should return `null` for the `error` parameter.
{% endhint %}

Please see below for additional information on error objects and result objects.

##


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.polarity.io/integrations/build-an-integration/main/dolookup.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
