Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.enginy.ai/llms.txt

Use this file to discover all available pages before exploring further.

Overview

The Actions API allows you to programmatically execute enrichments and other actions on your contacts and companies. This endpoint enables you to automate complex data enrichment pipelines by chaining multiple actions together in a single request. An “actions run” is a concatenated series of actions that executes one or more enrichments on a set of contacts or companies. Each action runs sequentially on each entity.

Request Body

The request must include a actions array and one of the following target specifiers:
FieldTypeDescription
contactIdsnumber[]Array of contact IDs to process
companyIdsnumber[]Array of company IDs to process
contactGroupIdsnumber[]Array of contact list IDs to process
companyGroupIdsnumber[]Array of company list IDs to process
Each action object in the array must have:
FieldTypeDescription
typeActionTypeThe type of action to execute (see Available actions below)
optionscustom objectConfiguration options specific to the action type (optional)

Available Actions

Get contact from LinkedIn

Scrapes complete profile information from LinkedIn. Type: SCRAPE_LEAD_FROM_LINKEDIN Options:
{
  skipCompanyScrape?: boolean  // Skip scraping associated company data
  skipContactMerge?: boolean // Skip contact merge if a duplicate is found in Enginy
}
Use When: You have LinkedIn URLs and want complete profile data

Enrich with email

Finds professional email addresses for contacts. Type: ENRICH_WITH_EMAIL Options:
{
  sortedApis?: string[]           // e.g., ["CREDITS", "APOLLO", "DROPCONTACT"]
  stopType?: "NONE" | "VERIFIED_EMAIL" | "PHONE"
  speed?: "SLOW" | "FAST"         // SLOW = more thorough, FAST = quicker
  maxTimeToWait?: number          // Milliseconds
}
Use When: You need to find email addresses for contacts Tip: Combine with VERIFY_LEAD_EMAIL for best results

Enrich with phone

Finds phone numbers for contacts. Type: ENRICH_WITH_PHONE Options:
{
  sortedApis?: string[]           // e.g., ["CREDITS", "APOLLO", "DROPCONTACT"]
  stopType?: "NONE" | "VERIFIED_EMAIL" | "PHONE"
  speed?: "SLOW" | "FAST"
  maxTimeToWait?: number          // Milliseconds
}
Use When: You need phone numbers for outreach

Verify contact email addresses

Verifies email addresses for deliverability. Type: VERIFY_LEAD_EMAIL Options: None required Use When: You have email addresses and want to verify they’re valid before sending Best Practice: Always verify emails before running email campaigns

Verify contact phone number

Verifies phone numbers for validity. Type: VERIFY_LEAD_PHONE Options: None required Use When: You have phone numbers and want to verify they’re valid

Search contacts from company

Finds and imports LinkedIn contacts working at a target company. Targets companies (companyIds / companyGroupIds). Type: SEARCH_LEADS_FROM_LINKEDIN_COMPANY Options:
{
  // Filter source — provide exactly one of `text`, `savedFilterId`, or `filters`.
  // `keyword` may be supplied on its own or alongside `savedFilterId` / `filters`.
  //
  // Agents and MCP clients should generally prefer `text`: AI Finder turns a
  // natural-language description into the Sales Nav filter payload, which
  // produces better results than manually-constructed `filters` / `keyword`.

  text?: string                       // RECOMMENDED for agents/MCP. Natural-language
                                      // description (≤500 chars). Example:
                                      // "Heads of Sales who changed jobs in the past 90 days".

  savedFilterId?: number              // Reuse a stored Sales Nav filter (type=LEAD) from
                                      // GET /v1/saved-filters. Sub-second, deterministic.

  filters?: Record<string, unknown>   // Raw Sales Nav filter payload (same shape
                                      // GET /v1/saved-filters returns under `filters`).
                                      // Shape-validated server-side.

  keyword?: string | string[]         // Extra Sales Nav keyword(s) merged into the search.

  maxLeadsToImport?: number           // Default 5, max 10.
  destinationContactGroupId?: number  // Optional contact list to import discovered contacts into.
  onlyIncludeIfCompanyUrnMatch?: boolean // Only keep results LinkedIn maps to the exact target URN.
  importOnlyNewContacts?: boolean     // Skip contacts already in your Enginy workspace.
}
Mutex rules:
  • text is exclusive with savedFilterId, filters, and keyword.
  • savedFilterId is exclusive with filters (but can be combined with keyword).
  • At least one of text, savedFilterId, filters, or keyword must be provided.
Recommended payload (agents / MCP / new integrations):
{
  "actions": [
    {
      "type": "SEARCH_LEADS_FROM_LINKEDIN_COMPANY",
      "options": {
        "text": "Heads of Sales who changed jobs in the past 90 days",
        "maxLeadsToImport": 10,
        "destinationContactGroupId": 12345
      }
    }
  ],
  "companyIds": [98765]
}
Use When: You have target companies (companyIds or companyGroupIds) and want LinkedIn contacts matching a role/seniority/persona description imported into Enginy.

Export to CRM

Exports enriched contact or company data to your connected CRM. Type: EXPORT_TO_CRM Options:
{
  CRMOwnerId?: {
    value: string      // CRM owner/user ID
    override: boolean  // Whether to override existing owner
  }
  promptLeadFieldsCRMMapping?: {
    [fieldName: string]: {
      value: string
      override: boolean
    }
  }
  promptCompanyFieldsCRMMapping?: {
    [fieldName: string]: {
      value: string
      override: boolean
    }
  }
  overwriteFields?: {
    [fieldName: string]: boolean
  }
  associationType?: string
  exportAssociatedObject?: boolean  // Also export company when exporting contact
}
Use When: You want to sync enriched data to your CRM Tip: Use this as the last step in your enrichment pipeline

Common Use Cases

New Lead Qualification Pipeline

Goal: Quickly qualify and enrich new leads from an event
{
  "actions": [
    {"type": "SCRAPE_LEAD_FROM_LINKEDIN"},
    {"type": "ENRICH_WITH_EMAIL"},
    {"type": "VERIFY_LEAD_EMAIL"},
    {
      "type": "EXPORT_TO_CRM",
      "options": {
        "CRMOwnerId": {"value": "sales_rep_123", "override": false}
      }
    }
  ],
  "contactGroupIds": [...]
}
Result: Fully enriched, verified leads in your CRM ready for outreach

List Cleaning & Verification

Goal: Clean and verify an existing contact list
{
  "actions": [
    {"type": "VERIFY_LEAD_EMAIL"},
    {
      "type": "EXPORT_TO_CRM",
      "options": {
        "promptLeadFieldsCRMMapping": {
          "Email_Verified__c": {
            "value": "true",
            "override": true
          }
        }
      }
    }
  ],
  "contactGroupIds": [...]
}
Result: Verified contact list with verification status updated in CRM

Multi-Channel Outreach Preparation

Goal: Prepare contacts for both email and phone outreach
{
  "actions": [
    {
      "type": "ENRICH_WITH_EMAIL",
      "options": {"stopType": "VERIFIED_EMAIL"}
    },
    {"type": "ENRICH_WITH_PHONE"},
    {"type": "VERIFY_LEAD_EMAIL"},
    {"type": "EXPORT_TO_CRM"}
  ],
  "contactIds": [...]
}
Result: Contacts with verified emails and phone numbers ready for SDR team