Skip to main content
POST
/
v1
/
contacts
/
search
curl --request POST \
  --url https://openapi.enginy.ai/v1/contacts/search \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "page": 1,
  "pageSize": 25,
  "search": "growth",
  "fields": [
    "firstName",
    "lastName",
    "jobTitle",
    "companyName",
    "professionalEmail"
  ],
  "include": {
    "leadsGroup": [
      123
    ],
    "isInCRM": [
      true
    ]
  }
}
'
{
  "data": [
    {
      "id": 123,
      "firstName": "<string>",
      "lastName": "<string>",
      "jobTitle": "<string>",
      "linkedInProfileUrl": "<string>",
      "professionalEmail": "<string>",
      "personalEmails": "<string>",
      "mobilePhone": "<string>",
      "phones": "<string>",
      "imageUrl": "<string>",
      "companyId": 123,
      "company": {
        "id": 123,
        "name": "<string>",
        "domain": "<string>",
        "companyLinkedInUrl": "<string>"
      },
      "emailVerificationStatus": "<string>",
      "contactCountry": "<string>",
      "linkedInHeadline": "<string>",
      "numberOfConnections": 123,
      "contactCRMId": "<string>",
      "leadCRMId": "<string>",
      "isInCRM": true,
      "createdAt": "2023-11-07T05:31:56Z",
      "updatedAt": "2023-11-07T05:31:56Z",
      "smartFieldExplanations": {}
    }
  ],
  "meta": {
    "page": 123,
    "pageSize": 123,
    "total": 123
  }
}

Authorizations

x-api-key
string
header
required

Body

application/json
page
integer
default:1

Page number for pagination. Minimum value is 1.

Required range: x >= 1
pageSize
integer
default:25

Number of items per page. Minimum is 1, maximum is 100.

Required range: 1 <= x <= 100

Search term for full-text search across contact fields.

include
object

Filter conditions to include. Supports special filters like id, campaigns, leadsGroup, companyGroup, isInCRM, enrichments, and any contact/company field ID returned by the fields endpoints. Filter values should match the field data type returned by GET /v1/contacts/fields: text/select fields use arrays of exact values, numeric fields use two-item range arrays like ["10","100"], boolean fields use one-item arrays like [true], and timestamp fields use { "startDate": "...", "endDate": "..." }. Start with id, leadsGroup (contact list IDs), companyGroup (company list IDs), campaigns, isInCRM, and any workspace scoring fields such as icpScore or scoreBand when those field IDs appear in the fields response. Use GET /v1/contacts/fields to discover valid contact field names for fields, include, exclude, and update payloads. Company-backed filters can use use get /v1/companies/fields to discover valid company field names.

exclude
object

Filter conditions to exclude. Same structure as include. Filter values should match the field data type returned by GET /v1/contacts/fields: text/select fields use arrays of exact values, numeric fields use two-item range arrays like ["10","100"], boolean fields use one-item arrays like [true], and timestamp fields use { "startDate": "...", "endDate": "..." }. Start with id, leadsGroup (contact list IDs), companyGroup (company list IDs), campaigns, isInCRM, and any workspace scoring fields such as icpScore or scoreBand when those field IDs appear in the fields response. Use GET /v1/contacts/fields to discover valid contact field names for fields, include, exclude, and update payloads.

actionsId
integer

Filter contacts by a specific actions run ID. Returns only contacts that were created or processed as part of this actions run (e.g., from "Search contacts from company" action).

fields
string[]

Specific contact fields to include in the response. Use GET /v1/contacts/fields to discover valid contact field names.

Response

Successful response with paginated contacts

data
object[]
required
meta
object
required