Skip to main content

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: Each action object in the array must have:

Available Actions

Find contact data by LinkedIn URL

Enriches the contact’s LinkedIn profile data from their LinkedIn URL. Type: SCRAPE_LEAD_FROM_LINKEDIN Options:
Use When: You have LinkedIn URLs and want complete profile data

Enrich email address

Finds professional email addresses for contacts. Type: ENRICH_WITH_EMAIL Options:
Use When: You need to find email addresses for contacts Tip: Combine with VERIFY_LEAD_EMAIL for best results

Enrich phone number

Finds phone numbers for contacts. Type: ENRICH_WITH_PHONE Options:
Use When: You need phone numbers for outreach
Leave speed unset unless you really need the latency. It controls how deep the CREDITS provider goes. Omitted (the default) runs the full provider waterfall — this is what the Enginy web app does. FAST stops after the per-contact providers and never reaches the rest of the waterfall: it returns roughly a third as many results, and in production it returns nothing at all for a contact that has no LinkedIn URL. If you are wiring an interactive “enrich this contact” button in a CRM, use the default — the extra wait buys most of the results.

Verify email address

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 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:
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):
Use When: You have target companies (companyIds or companyGroupIds) and want LinkedIn contacts matching a role/seniority/persona description imported into Enginy. Destination list: the discovered contacts always land in a contacts list, as in the app’s “Get contacts” flow. Pass destinationContactGroupId (a CONTACTS list ID from GET /v1/lists?type=CONTACTS, never a company list ID) to choose it. Without it, the run creates one new contacts list, shared by every search action in the run, named <company list name> — contacts when the run targets exactly one company list and Contacts from companies — <date time> UTC otherwise. The response lists every destination in destinationLists (listId, listAppUrl, and autoCreated: true for a created list). To add more contacts to the same list later, pass that listId as destinationContactGroupId. If the API key may not create lists (no LISTS_WRITE scope, or its creator may not edit), the contacts are added to no list and the response carries a warnings entry.

Find company data by name or domain

Finds the LinkedIn page of a company from its name or domain and stores its URL on the company record. Targets companies (companyIds / companyGroupIds). Type: COMPANY_LINKEDIN_FROM_NAME Options:
With no options the best LinkedIn search result is accepted. Each flag adds a constraint on which result is accepted; a run that matches nothing stores nothing, so the company can be retried with a looser mode. Discovery cascade (recommended for maximum coverage): run the action up to three times over the still-unmatched companies, strictest mode first:
  1. { "matchOnlyExactDomain": true } — exact website-domain match
  2. { "matchOnlyExactName": true } — exact name match
  3. { "matchOnlySimilarName": true } — similar-name match
Use When: Companies are missing their LinkedIn URL and you want to find it before scraping (SCRAPE_COMPANY_FROM_LINKEDIN) or searching contacts (SEARCH_LEADS_FROM_LINKEDIN_COMPANY).

Export to CRM

Exports enriched contact or company data to your connected CRM. Type: EXPORT_TO_CRM Options:
Use When: You want to sync enriched data to your CRM Tip: Use this as the last step in your enrichment pipeline

Sync contacts with your CRM

Pulls the latest CRM field values back into Enginy for contacts. By default it uses each contact’s stored CRM identifiers for a fast incremental sync. Set fullResync: true to clear those identifiers and re-match every contact in the CRM from scratch — use this when records have drifted or were re-keyed in the CRM. Targets contacts (contactIds / contactGroupIds). Type: SYNC_LEAD_WITH_CRM Options:
Example (full resync of a contact list):
Use When: A connected CRM is the source of truth and you want Enginy contacts refreshed with the latest CRM data.

Sync companies with your CRM

Pulls the latest CRM field values back into Enginy for companies. By default it uses each company’s stored CRM identifiers for a fast incremental sync. Set fullResync: true to clear those identifiers and re-match every company in the CRM from scratch. Targets companies (companyIds / companyGroupIds). Type: SYNC_COMPANY_WITH_CRM Options:
Example (full resync of a company list):
Use When: A connected CRM is the source of truth and you want Enginy companies refreshed with the latest CRM data.

Common Use Cases

New Lead Qualification Pipeline

Goal: Quickly qualify and enrich new leads from an event
Result: Fully enriched, verified leads in your CRM ready for outreach

List Cleaning & Verification

Goal: Clean and verify an existing contact list
Result: Verified contact list with verification status updated in CRM

Multi-Channel Outreach Preparation

Goal: Prepare contacts for both email and phone outreach
Result: Contacts with verified emails and phone numbers ready for SDR team