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

# Start an actions run

> Creates an actions run to execute one or more workflow actions on contacts, companies, or lists. Supports optional webhook notifications when actions complete. See the "Actions Completed Webhook" in the Webhooks section for the webhook payload structure and implementation details.

Action reference:
- `VERIFY_LEAD_EMAIL`: Verify the deliverability and validity of an email address Targets: Contacts only. Pricing: call `GET /v1/credits/pricing` and look up action `VERIFY_EMAIL` for the current workspace credit cost.
- `VERIFY_LEAD_PHONE`: Verify the validity and type of a phone number Targets: Contacts only. Pricing: call `GET /v1/credits/pricing` and look up action `VERIFY_PHONE` for the current workspace credit cost.
- `SCRAPE_LEAD_FROM_LINKEDIN`: Extract contact information from their LinkedIn profile Targets: Contacts only. Pricing: call `GET /v1/credits/pricing` and look up action `SCRAPE_LEAD_LINKEDIN` for the current workspace credit cost.
- `LINKEDIN_FROM_NAME_LASTNAME_COMPANY`: Find LinkedIn profile URL using first name, last name and company name Targets: Contacts only. Pricing: call `GET /v1/credits/pricing` and look up action `SCRAPE_LEAD_LINKEDIN` for the current workspace credit cost.
- `SCRAPE_COMPANY_FROM_LINKEDIN`: Extract company information from their LinkedIn profile Targets: Companies only. Pricing: call `GET /v1/credits/pricing` and look up action `SCRAPE_COMPANY_LINKEDIN` for the current workspace credit cost.
- `COMPANY_LINKEDIN_FROM_NAME`: Find company LinkedIn profile URL by name or domain, with optional exact-domain, exact-name, or similar-name match modes Targets: Companies only. Pricing: call `GET /v1/credits/pricing` and look up action `SCRAPE_COMPANY_LINKEDIN` for the current workspace credit cost.
- `SCRAPE_COMPANY_ACCOUNTIQ_FROM_LINKEDIN`: Extract AI-powered insights about a company from LinkedIn Targets: Companies only. Pricing: call `GET /v1/credits/pricing` and look up action `SCRAPE_COMPANY_ACCOUNTIQ_FROM_LINKEDIN` for the current workspace credit cost.
- `ENRICH_COMPANY_WITH_STORELEADS`: Get ecommerce platform, technology stack, and store metrics from StoreLeads Targets: Companies only. Pricing: call `GET /v1/credits/pricing` and look up action `ENRICH_COMPANY_WITH_STORELEADS` for the current workspace credit cost.
- `ENRICH_WITH_EMAIL`: Find and enrich contact with professional email addresses Targets: Contacts only. Pricing: call `GET /v1/credits/pricing` and look up action `ENRICH_LEAD_EMAIL` for the current workspace credit cost.
- `ENRICH_WITH_PHONE`: Find and enrich contact with phone numbers Targets: Contacts only. Pricing: call `GET /v1/credits/pricing` and look up action `ENRICH_LEAD_PHONE` for the current workspace credit cost.
- `FILL_LEAD_WITH_SMART_FIELDS`: Generate AI variable values for selected contact fields Targets: Contacts only. Pricing: call `GET /v1/credits/pricing` and look up action `FILL_LEAD_WITH_SMART_FIELDS_AVERAGE` for the current workspace credit cost.
- `FILL_COMPANY_WITH_SMART_FIELDS`: Generate AI variable values for selected company fields Targets: Companies only. Pricing: call `GET /v1/credits/pricing` and look up action `FILL_COMPANY_WITH_SMART_FIELDS_AVERAGE` for the current workspace credit cost.
- `SEARCH_LEADS_FROM_LINKEDIN_COMPANY`: Search and import contacts working at a specific company from LinkedIn. RECOMMENDED for agents/MCP: pass `text` (natural-language description like "Heads of Sales who changed jobs in the past 90 days") — AI Finder produces the LinkedIn filters automatically. `savedFilterId`, `filters`, and `keyword` are also supported for callers that already have Sales Nav filter JSON. Targets: Companies only. Pricing: call `GET /v1/credits/pricing` and look up action `SCRAPE_LEAD_LINKEDIN` for the current workspace credit cost.
- `EXPORT_TO_CRM`: Export contacts or companies to your connected CRM system Targets: Contacts or companies, depending on the IDs you provide. Pricing: this action does not expose a credit-mapped entry in `GET /v1/credits/pricing`.
- `SYNC_LEAD_WITH_CRM`: Re-sync contacts with your connected CRM, pulling the latest CRM field values back into Enginy. Enable `fullResync` to reset the stored CRM identifiers and re-match each contact from scratch Targets: Contacts only. Pricing: this action does not expose a credit-mapped entry in `GET /v1/credits/pricing`.
- `SYNC_COMPANY_WITH_CRM`: Re-sync companies with your connected CRM, pulling the latest CRM field values back into Enginy. Enable `fullResync` to reset the stored CRM identifiers and re-match each company from scratch Targets: Companies only. Pricing: this action does not expose a credit-mapped entry in `GET /v1/credits/pricing`.

Notes:
- Provide exactly one target selector: `contactIds`, `companyIds`, `contactGroupIds`, or `companyGroupIds`.
- Per-action option fields are documented on each item in the `actions` array.
- Credit costs are workspace-specific; call `GET /v1/credits/pricing` before starting a run if you need the current cost table.

    > **Required scope:** `ACTIONS_WRITE`
    >
    > **Rate limit:** 10 requests per minute



## OpenAPI

````yaml https://openapi.enginy.ai/definitions.json post /v1/actions
openapi: 3.1.0
info:
  title: Enginy API
  version: 1.0.0
  description: Public API for Enginy platform
servers:
  - url: https://openapi.enginy.ai
    description: Configured server
security: []
tags:
  - name: AI Variables
    description: >-
      Manage AI variables and discover the entity fields you can reference in
      prompts and entity requests.
  - name: Inbox
    description: >-
      Inbox endpoints for listing contact threads, reading thread messages,
      managing tags, and sending manual replies.
  - name: Workflows
    description: >-
      Build, validate, publish, run, and inspect advanced (graph) workflows,
      plus the block/condition catalog needed to author a workflow plan.
paths:
  /v1/actions:
    post:
      tags:
        - Actions
      summary: Start an actions run
      description: >-
        Creates an actions run to execute one or more workflow actions on
        contacts, companies, or lists. Supports optional webhook notifications
        when actions complete. See the "Actions Completed Webhook" in the
        Webhooks section for the webhook payload structure and implementation
        details.


        Action reference:

        - `VERIFY_LEAD_EMAIL`: Verify the deliverability and validity of an
        email address Targets: Contacts only. Pricing: call `GET
        /v1/credits/pricing` and look up action `VERIFY_EMAIL` for the current
        workspace credit cost.

        - `VERIFY_LEAD_PHONE`: Verify the validity and type of a phone number
        Targets: Contacts only. Pricing: call `GET /v1/credits/pricing` and look
        up action `VERIFY_PHONE` for the current workspace credit cost.

        - `SCRAPE_LEAD_FROM_LINKEDIN`: Extract contact information from their
        LinkedIn profile Targets: Contacts only. Pricing: call `GET
        /v1/credits/pricing` and look up action `SCRAPE_LEAD_LINKEDIN` for the
        current workspace credit cost.

        - `LINKEDIN_FROM_NAME_LASTNAME_COMPANY`: Find LinkedIn profile URL using
        first name, last name and company name Targets: Contacts only. Pricing:
        call `GET /v1/credits/pricing` and look up action `SCRAPE_LEAD_LINKEDIN`
        for the current workspace credit cost.

        - `SCRAPE_COMPANY_FROM_LINKEDIN`: Extract company information from their
        LinkedIn profile Targets: Companies only. Pricing: call `GET
        /v1/credits/pricing` and look up action `SCRAPE_COMPANY_LINKEDIN` for
        the current workspace credit cost.

        - `COMPANY_LINKEDIN_FROM_NAME`: Find company LinkedIn profile URL by
        name or domain, with optional exact-domain, exact-name, or similar-name
        match modes Targets: Companies only. Pricing: call `GET
        /v1/credits/pricing` and look up action `SCRAPE_COMPANY_LINKEDIN` for
        the current workspace credit cost.

        - `SCRAPE_COMPANY_ACCOUNTIQ_FROM_LINKEDIN`: Extract AI-powered insights
        about a company from LinkedIn Targets: Companies only. Pricing: call
        `GET /v1/credits/pricing` and look up action
        `SCRAPE_COMPANY_ACCOUNTIQ_FROM_LINKEDIN` for the current workspace
        credit cost.

        - `ENRICH_COMPANY_WITH_STORELEADS`: Get ecommerce platform, technology
        stack, and store metrics from StoreLeads Targets: Companies only.
        Pricing: call `GET /v1/credits/pricing` and look up action
        `ENRICH_COMPANY_WITH_STORELEADS` for the current workspace credit cost.

        - `ENRICH_WITH_EMAIL`: Find and enrich contact with professional email
        addresses Targets: Contacts only. Pricing: call `GET
        /v1/credits/pricing` and look up action `ENRICH_LEAD_EMAIL` for the
        current workspace credit cost.

        - `ENRICH_WITH_PHONE`: Find and enrich contact with phone numbers
        Targets: Contacts only. Pricing: call `GET /v1/credits/pricing` and look
        up action `ENRICH_LEAD_PHONE` for the current workspace credit cost.

        - `FILL_LEAD_WITH_SMART_FIELDS`: Generate AI variable values for
        selected contact fields Targets: Contacts only. Pricing: call `GET
        /v1/credits/pricing` and look up action
        `FILL_LEAD_WITH_SMART_FIELDS_AVERAGE` for the current workspace credit
        cost.

        - `FILL_COMPANY_WITH_SMART_FIELDS`: Generate AI variable values for
        selected company fields Targets: Companies only. Pricing: call `GET
        /v1/credits/pricing` and look up action
        `FILL_COMPANY_WITH_SMART_FIELDS_AVERAGE` for the current workspace
        credit cost.

        - `SEARCH_LEADS_FROM_LINKEDIN_COMPANY`: Search and import contacts
        working at a specific company from LinkedIn. RECOMMENDED for agents/MCP:
        pass `text` (natural-language description like "Heads of Sales who
        changed jobs in the past 90 days") — AI Finder produces the LinkedIn
        filters automatically. `savedFilterId`, `filters`, and `keyword` are
        also supported for callers that already have Sales Nav filter JSON.
        Targets: Companies only. Pricing: call `GET /v1/credits/pricing` and
        look up action `SCRAPE_LEAD_LINKEDIN` for the current workspace credit
        cost.

        - `EXPORT_TO_CRM`: Export contacts or companies to your connected CRM
        system Targets: Contacts or companies, depending on the IDs you provide.
        Pricing: this action does not expose a credit-mapped entry in `GET
        /v1/credits/pricing`.

        - `SYNC_LEAD_WITH_CRM`: Re-sync contacts with your connected CRM,
        pulling the latest CRM field values back into Enginy. Enable
        `fullResync` to reset the stored CRM identifiers and re-match each
        contact from scratch Targets: Contacts only. Pricing: this action does
        not expose a credit-mapped entry in `GET /v1/credits/pricing`.

        - `SYNC_COMPANY_WITH_CRM`: Re-sync companies with your connected CRM,
        pulling the latest CRM field values back into Enginy. Enable
        `fullResync` to reset the stored CRM identifiers and re-match each
        company from scratch Targets: Companies only. Pricing: this action does
        not expose a credit-mapped entry in `GET /v1/credits/pricing`.


        Notes:

        - Provide exactly one target selector: `contactIds`, `companyIds`,
        `contactGroupIds`, or `companyGroupIds`.

        - Per-action option fields are documented on each item in the `actions`
        array.

        - Credit costs are workspace-specific; call `GET /v1/credits/pricing`
        before starting a run if you need the current cost table.

            > **Required scope:** `ACTIONS_WRITE`
            >
            > **Rate limit:** 10 requests per minute
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                actions:
                  type: array
                  items:
                    oneOf:
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - VERIFY_LEAD_EMAIL
                            description: >-
                              Verify email. Verify the deliverability and
                              validity of an email address


                              Targets:

                              - Contacts only.


                              Required data:

                              - A contact with at least one email already stored
                              in Enginy.


                              Behavior:

                              - Verifies the stored email address and writes the
                              verification result back to the contact.


                              Pricing: call `GET /v1/credits/pricing` and look
                              up action `VERIFY_EMAIL` for the current workspace
                              credit cost.
                          options:
                            type: object
                            properties: {}
                            description: No options are required for Verify email.
                        required:
                          - type
                        title: Verify email
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - VERIFY_LEAD_PHONE
                            description: >-
                              Verify phone. Verify the validity and type of a
                              phone number


                              Targets:

                              - Contacts only.


                              Required data:

                              - A contact with at least one phone number already
                              stored in Enginy.


                              Behavior:

                              - Verifies the stored phone number and writes the
                              verification result back to the contact.


                              Pricing: call `GET /v1/credits/pricing` and look
                              up action `VERIFY_PHONE` for the current workspace
                              credit cost.
                          options:
                            type: object
                            properties: {}
                            description: No options are required for Verify phone.
                        required:
                          - type
                        title: Verify phone
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - SCRAPE_LEAD_FROM_LINKEDIN
                            description: >-
                              Scrape contact from LinkedIn. Extract contact
                              information from their LinkedIn profile


                              Targets:

                              - Contacts only.


                              Required data:

                              - A contact with a LinkedIn profile URL in Enginy.


                              Behavior:

                              - Scrapes the LinkedIn profile, refreshes contact
                              fields, and can optionally skip the follow-up
                              company scrape.


                              Pricing: call `GET /v1/credits/pricing` and look
                              up action `SCRAPE_LEAD_LINKEDIN` for the current
                              workspace credit cost.
                          options:
                            type: object
                            properties:
                              skipContactMerge:
                                type: boolean
                                default: true
                                description: >-
                                  Whether to skip contact merge if a duplicate
                                  is found in Enginy
                              skipCompanyScrape:
                                type: boolean
                                description: Whether to skip company scrape
                            description: >-
                              Options for Scrape contact from LinkedIn — each
                              option is documented on its field.
                        required:
                          - type
                        title: Scrape contact from LinkedIn
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - LINKEDIN_FROM_NAME_LASTNAME_COMPANY
                            description: >-
                              Find LinkedIn URL by name. Find LinkedIn profile
                              URL using first name, last name and company name


                              Targets:

                              - Contacts only.


                              Required data:

                              - A contact with first name, last name, and
                              company name.


                              Behavior:

                              - Searches for the contact LinkedIn profile URL
                              and stores it on the contact record.


                              Pricing: call `GET /v1/credits/pricing` and look
                              up action `SCRAPE_LEAD_LINKEDIN` for the current
                              workspace credit cost.
                          options:
                            type: object
                            properties:
                              skipCompanyScrape:
                                type: boolean
                                description: Whether to skip company scrape
                            description: >-
                              Options for Find LinkedIn URL by name — each
                              option is documented on its field.
                        required:
                          - type
                        title: Find LinkedIn URL by name
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - SCRAPE_COMPANY_FROM_LINKEDIN
                            description: >-
                              Scrape company from LinkedIn. Extract company
                              information from their LinkedIn profile


                              Targets:

                              - Companies only.


                              Required data:

                              - A company with a LinkedIn company URL in Enginy.


                              Behavior:

                              - Scrapes the LinkedIn company page and refreshes
                              company fields in Enginy.


                              Pricing: call `GET /v1/credits/pricing` and look
                              up action `SCRAPE_COMPANY_LINKEDIN` for the
                              current workspace credit cost.
                          options:
                            type: object
                            properties:
                              skipCompanyMerge:
                                type: boolean
                                default: true
                                description: >-
                                  Whether to skip company merge if a duplicate
                                  is found in Enginy
                            description: >-
                              Options for Scrape company from LinkedIn — each
                              option is documented on its field.
                        required:
                          - type
                        title: Scrape company from LinkedIn
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - COMPANY_LINKEDIN_FROM_NAME
                            description: >-
                              Find company LinkedIn URL. Find company LinkedIn
                              profile URL by name or domain, with optional
                              exact-domain, exact-name, or similar-name match
                              modes


                              Targets:

                              - Companies only.


                              Required data:

                              - A company with a company name (or a
                              domain/website; `matchOnlyExactDomain` requires a
                              stored domain or website).


                              Behavior:

                              - Searches LinkedIn for the company and stores the
                              matched LinkedIn URL on the company record. With
                              no match flags the best search result is accepted.
                              Each `matchOnly*` flag adds a constraint on which
                              result is accepted; a run that matches nothing
                              stores nothing. To maximize coverage, run the
                              discovery cascade as successive runs over the
                              still-unmatched companies: `matchOnlyExactDomain`
                              → `matchOnlyExactName` → `matchOnlySimilarName`.


                              Pricing: call `GET /v1/credits/pricing` and look
                              up action `SCRAPE_COMPANY_LINKEDIN` for the
                              current workspace credit cost.
                          options:
                            type: object
                            properties:
                              matchOnlyExactDomain:
                                type: boolean
                                description: >-
                                  Only accept a LinkedIn result whose website
                                  domain equals the domain (or website domain)
                                  stored on the company in Enginy. Companies
                                  without a stored domain or website find no
                                  match. Strictest mode — run it first in a
                                  discovery cascade.
                              matchOnlyExactName:
                                type: boolean
                                description: >-
                                  Only accept a LinkedIn result whose company
                                  name equals the stored company name, ignoring
                                  case and accents.
                              matchOnlySimilarName:
                                type: boolean
                                description: >-
                                  Only accept a LinkedIn result whose company
                                  name is similar to the stored company name
                                  (normalized fuzzy match). Ignored when
                                  `matchOnlyExactName` is also set. Loosest
                                  constrained mode — run it last in a discovery
                                  cascade.
                            description: >-
                              Options for Find company LinkedIn URL — each
                              option is documented on its field.
                        required:
                          - type
                        title: Find company LinkedIn URL
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - SCRAPE_COMPANY_ACCOUNTIQ_FROM_LINKEDIN
                            description: >-
                              Scrape company Account IQ from LinkedIn. Extract
                              AI-powered insights about a company from LinkedIn


                              Targets:

                              - Companies only.


                              Required data:

                              - A company with a LinkedIn company URL in Enginy.


                              Behavior:

                              - Runs the Account IQ LinkedIn workflow to extract
                              AI-generated company insights from LinkedIn.


                              Pricing: call `GET /v1/credits/pricing` and look
                              up action `SCRAPE_COMPANY_ACCOUNTIQ_FROM_LINKEDIN`
                              for the current workspace credit cost.
                          options:
                            type: object
                            properties: {}
                            description: >-
                              No options are required for Scrape company Account
                              IQ from LinkedIn.
                        required:
                          - type
                        title: Scrape company Account IQ from LinkedIn
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - ENRICH_COMPANY_WITH_STORELEADS
                            description: >-
                              Get ecommerce data from StoreLeads. Get ecommerce
                              platform, technology stack, and store metrics from
                              StoreLeads


                              Targets:

                              - Companies only.


                              Required data:

                              - A company with a domain or website in Enginy.


                              Behavior:

                              - Looks the company domain up in StoreLeads and
                              writes ecommerce platform, technology stack, and
                              store metrics back to the company. Requires a plan
                              with Store Leads access (not available on BASIC).


                              Pricing: call `GET /v1/credits/pricing` and look
                              up action `ENRICH_COMPANY_WITH_STORELEADS` for the
                              current workspace credit cost.
                          options:
                            type: object
                            properties: {}
                            description: >-
                              No options are required for Get ecommerce data
                              from StoreLeads.
                        required:
                          - type
                        title: Get ecommerce data from StoreLeads
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - ENRICH_WITH_EMAIL
                            description: >-
                              Enrich with email. Find and enrich contact with
                              professional email addresses


                              Targets:

                              - Contacts only.


                              Required data:

                              - A contact with enough identifying data for
                              enrichment, such as name and company or a LinkedIn
                              URL.


                              Behavior:

                              - Runs the configured enrichment providers until
                              an email is found or the selected stop condition
                              is reached.


                              Pricing: call `GET /v1/credits/pricing` and look
                              up action `ENRICH_LEAD_EMAIL` for the current
                              workspace credit cost.
                          options:
                            type: object
                            properties:
                              sortedApis:
                                type: array
                                items:
                                  type: string
                                description: >-
                                  Ordered list of enrichment APIs to use (e.g.,
                                  ["CREDITS", "APOLLO", "DROPCONTACT"]). Will
                                  try each API in order until an email is found.
                                  If not provided, default APIs will be used.
                              stopType:
                                type: string
                                enum:
                                  - NONE
                                  - VERIFIED_EMAIL
                                  - PHONE
                                description: >-
                                  When to stop enrichment: NONE (try all APIs),
                                  VERIFIED_EMAIL (stop when verified email
                                  found), PHONE (stop when phone found)
                              speed:
                                type: string
                                enum:
                                  - SLOW
                                  - FAST
                                description: >-
                                  Enrichment speed: SLOW for more thorough
                                  results, FAST for quicker processing
                              maxTimeToWait:
                                type: number
                                description: >-
                                  Maximum time to wait for enrichment in
                                  milliseconds
                            description: >-
                              Options for Enrich with email — each option is
                              documented on its field.
                        required:
                          - type
                        title: Enrich with email
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - ENRICH_WITH_PHONE
                            description: >-
                              Enrich with phone. Find and enrich contact with
                              phone numbers


                              Targets:

                              - Contacts only.


                              Required data:

                              - A contact with enough identifying data for
                              enrichment, such as name and company or a LinkedIn
                              URL.


                              Behavior:

                              - Runs the configured enrichment providers until a
                              phone number is found or the selected stop
                              condition is reached.


                              Pricing: call `GET /v1/credits/pricing` and look
                              up action `ENRICH_LEAD_PHONE` for the current
                              workspace credit cost.
                          options:
                            type: object
                            properties:
                              sortedApis:
                                type: array
                                items:
                                  type: string
                                description: >-
                                  Ordered list of enrichment APIs to use (e.g.,
                                  ["CREDITS", "APOLLO", "DROPCONTACT"]). Will
                                  try each API in order until a phone is found.
                                  If not provided, default APIs will be used.
                              stopType:
                                type: string
                                enum:
                                  - NONE
                                  - VERIFIED_EMAIL
                                  - PHONE
                                description: >-
                                  When to stop enrichment: NONE (try all APIs),
                                  VERIFIED_EMAIL (stop when verified email
                                  found), PHONE (stop when phone found)
                              speed:
                                type: string
                                enum:
                                  - SLOW
                                  - FAST
                                description: >-
                                  Enrichment speed: SLOW for more thorough
                                  results, FAST for quicker processing
                              maxTimeToWait:
                                type: number
                                description: >-
                                  Maximum time to wait for enrichment in
                                  milliseconds
                            description: >-
                              Options for Enrich with phone — each option is
                              documented on its field.
                        required:
                          - type
                        title: Enrich with phone
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - FILL_LEAD_WITH_SMART_FIELDS
                            description: >-
                              Run contact AI variables. Generate AI variable
                              values for selected contact fields


                              Targets:

                              - Contacts only.


                              Required data:

                              - A contact plus one or more existing contact AI
                              variable names.


                              Behavior:

                              - Runs the selected contact AI variables and
                              writes the generated values back to the contact.


                              Pricing: call `GET /v1/credits/pricing` and look
                              up action `FILL_LEAD_WITH_SMART_FIELDS_AVERAGE`
                              for the current workspace credit cost.
                          options:
                            type: object
                            properties:
                              fields:
                                type: array
                                items:
                                  type: string
                                  minLength: 1
                                minItems: 1
                                description: Array of contact AI variable names to run
                            required:
                              - fields
                            description: >-
                              Options for Run contact AI variables — each option
                              is documented on its field.
                        required:
                          - type
                          - options
                        title: Run contact AI variables
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - FILL_COMPANY_WITH_SMART_FIELDS
                            description: >-
                              Run company AI variables. Generate AI variable
                              values for selected company fields


                              Targets:

                              - Companies only.


                              Required data:

                              - A company plus one or more existing company AI
                              variable names.


                              Behavior:

                              - Runs the selected company AI variables and
                              writes the generated values back to the company.


                              Pricing: call `GET /v1/credits/pricing` and look
                              up action `FILL_COMPANY_WITH_SMART_FIELDS_AVERAGE`
                              for the current workspace credit cost.
                          options:
                            type: object
                            properties:
                              fields:
                                type: array
                                items:
                                  type: string
                                  minLength: 1
                                minItems: 1
                                description: Array of company AI variable names to run
                            required:
                              - fields
                            description: >-
                              Options for Run company AI variables — each option
                              is documented on its field.
                        required:
                          - type
                          - options
                        title: Run company AI variables
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - SEARCH_LEADS_FROM_LINKEDIN_COMPANY
                            description: >-
                              Search contacts from company. Search and import
                              contacts working at a specific company from
                              LinkedIn. RECOMMENDED for agents/MCP: pass `text`
                              (natural-language description like "Heads of Sales
                              who changed jobs in the past 90 days") — AI Finder
                              produces the LinkedIn filters automatically.
                              `savedFilterId`, `filters`, and `keyword` are also
                              supported for callers that already have Sales Nav
                              filter JSON.


                              Targets:

                              - Companies only.


                              Required data:

                              - A company with a LinkedIn URL or resolvable
                              identity.


                              Behavior:

                              - Provide exactly one of `text` (natural-language
                              → AI Finder produces filters, ~10s),
                              `savedFilterId` (replay a stored Sales Nav filter
                              set from `GET /v1/saved-filters`, sub-second,
                              deterministic), or `filters` (raw Sales Nav filter
                              JSON for advanced callers). All paths scope to the
                              target company.


                              Pricing: call `GET /v1/credits/pricing` and look
                              up action `SCRAPE_LEAD_LINKEDIN` for the current
                              workspace credit cost.
                          options:
                            type: object
                            properties:
                              text:
                                type: string
                                minLength: 1
                                maxLength: 500
                                description: >-
                                  RECOMMENDED for agents and MCP.
                                  Natural-language description of the contacts
                                  to find — AI Finder resolves it into Sales Nav
                                  filters automatically. Example: "Heads of
                                  Sales who changed jobs in the past 90 days".
                                  Prefer this over manually-constructed
                                  `filters` / `keyword` payloads. Mutually
                                  exclusive with `savedFilterId`, `filters`, and
                                  `keyword`.
                              savedFilterId:
                                type: integer
                                exclusiveMinimum: 0
                                description: >-
                                  Saved Sales Nav filter (type=LEAD) from `GET
                                  /v1/saved-filters`. Sub-second, deterministic
                                  — no LLM call. Mutually exclusive with `text`
                                  and `filters`.
                              filters:
                                type: object
                                additionalProperties:
                                  anyOf:
                                    - type: array
                                      items:
                                        type: object
                                        properties:
                                          id:
                                            anyOf:
                                              - type: string
                                              - type: number
                                              - type: 'null'
                                          displayValue:
                                            type: string
                                          type:
                                            type: string
                                            enum:
                                              - INCLUDED
                                              - EXCLUDED
                                          parent:
                                            anyOf:
                                              - type: string
                                              - type: number
                                        additionalProperties: {}
                                    - type: object
                                      properties:
                                        rangeValue:
                                          type: object
                                          properties:
                                            min:
                                              type: number
                                            max:
                                              type: number
                                          required:
                                            - min
                                            - max
                                        selectedSubFilter:
                                          anyOf:
                                            - type: string
                                            - type: number
                                      required:
                                        - rangeValue
                                      additionalProperties: {}
                                description: >-
                                  Raw Sales Nav `Filters` payload (record keyed
                                  by filter type, same shape `GET
                                  /v1/saved-filters` returns under `filters`).
                                  Must shape-check as a record of `FilterItem[]`
                                  or `RangeFilterValue` — scalars (e.g.
                                  `{spotlight: "string"}`) are rejected to
                                  prevent the ENG-1134 silent-strip hazard.
                                  Agents and MCP clients should generally prefer
                                  `text` and let AI Finder build the payload.
                                  Mutually exclusive with `text` and
                                  `savedFilterId`.
                              keyword:
                                anyOf:
                                  - type: string
                                  - type: array
                                    items:
                                      type: string
                                description: >-
                                  Extra Sales Nav keyword(s) merged into the
                                  LinkedIn search. Agents and MCP clients should
                                  generally prefer `text` (which can include
                                  keyword-like phrasing).
                              maxLeadsToImport:
                                type: number
                                exclusiveMinimum: 0
                                maximum: 10
                                default: 5
                                description: >-
                                  Maximum number of contacts to import from the
                                  company (default: 5, max: 10)
                              destinationContactGroupId:
                                type: integer
                                exclusiveMinimum: 0
                                description: >-
                                  ID of the contact list to add newly discovered
                                  contacts to
                              onlyIncludeIfCompanyUrnMatch:
                                type: boolean
                                description: >-
                                  Only include contacts if their company URN
                                  exactly matches the target company
                              importOnlyNewContacts:
                                type: boolean
                                description: >-
                                  Only import contacts that are not already in
                                  your database
                            additionalProperties: false
                            description: >-
                              Options for Search contacts from company — each
                              option is documented on its field.
                        required:
                          - type
                          - options
                        title: Search contacts from company
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - EXPORT_TO_CRM
                            description: >-
                              Export to CRM. Export contacts or companies to
                              your connected CRM system


                              Targets:

                              - Contacts or companies, depending on the IDs you
                              provide.


                              Required data:

                              - Records that can be exported through an already
                              connected CRM integration for the workspace.


                              Behavior:

                              - Exports Enginy records into the connected CRM,
                              optionally mapping and overriding fields.


                              Pricing: this action does not expose a
                              credit-mapped entry in `GET /v1/credits/pricing`.
                          options:
                            type: object
                            properties:
                              CRMOwnerId:
                                type: object
                                properties:
                                  value:
                                    type: string
                                    description: CRM owner/user ID
                                  override:
                                    type: boolean
                                    description: Whether to override existing owner
                                required:
                                  - value
                                  - override
                                description: CRM owner configuration
                              promptLeadFieldsCRMMapping:
                                type: object
                                additionalProperties:
                                  type: object
                                  properties:
                                    value:
                                      type: string
                                      description: Field value
                                    override:
                                      type: boolean
                                      description: Whether to override existing value
                                  required:
                                    - value
                                    - override
                                description: Custom field mappings for contact/lead fields
                              promptCompanyFieldsCRMMapping:
                                type: object
                                additionalProperties:
                                  type: object
                                  properties:
                                    value:
                                      type: string
                                      description: Field value
                                    override:
                                      type: boolean
                                      description: Whether to override existing value
                                  required:
                                    - value
                                    - override
                                description: >-
                                  Custom field mappings for company/organization
                                  fields
                              overwriteFields:
                                type: object
                                additionalProperties:
                                  type: boolean
                                description: >-
                                  Fields to overwrite in CRM (field name as key,
                                  boolean as value)
                              associationType:
                                type: string
                                description: Type of association to create in CRM
                              exportAssociatedObject:
                                type: boolean
                                description: >-
                                  Whether to also export associated objects
                                  (e.g., company when exporting contact)
                            description: >-
                              Options for Export to CRM — each option is
                              documented on its field.
                        required:
                          - type
                        title: Export to CRM
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - SYNC_LEAD_WITH_CRM
                            description: >-
                              Sync contacts with CRM. Re-sync contacts with your
                              connected CRM, pulling the latest CRM field values
                              back into Enginy. Enable `fullResync` to reset the
                              stored CRM identifiers and re-match each contact
                              from scratch


                              Targets:

                              - Contacts only.


                              Required data:

                              - Contacts in a workspace with a connected CRM
                              integration. Each contact is matched against the
                              CRM and its fields are refreshed in Enginy.


                              Behavior:

                              - Pulls the latest CRM field values back into
                              Enginy for each contact. By default it uses the
                              stored CRM identifiers for a fast incremental
                              sync. With `fullResync: true` it first clears
                              those identifiers and re-matches each contact in
                              the CRM from scratch — use this when records have
                              drifted or were re-keyed in the CRM.


                              Pricing: this action does not expose a
                              credit-mapped entry in `GET /v1/credits/pricing`.
                          options:
                            type: object
                            properties:
                              fullResync:
                                type: boolean
                                default: false
                                description: >-
                                  Reset the stored CRM identifiers and re-match
                                  each contact in the CRM from scratch instead
                                  of an incremental sync. Defaults to false
                                  (fast incremental sync).
                            description: >-
                              Options for Sync contacts with CRM — each option
                              is documented on its field.
                        required:
                          - type
                        title: Sync contacts with CRM
                      - type: object
                        properties:
                          type:
                            type: string
                            enum:
                              - SYNC_COMPANY_WITH_CRM
                            description: >-
                              Sync companies with CRM. Re-sync companies with
                              your connected CRM, pulling the latest CRM field
                              values back into Enginy. Enable `fullResync` to
                              reset the stored CRM identifiers and re-match each
                              company from scratch


                              Targets:

                              - Companies only.


                              Required data:

                              - Companies in a workspace with a connected CRM
                              integration. Each company is matched against the
                              CRM and its fields are refreshed in Enginy.


                              Behavior:

                              - Pulls the latest CRM field values back into
                              Enginy for each company. By default it uses the
                              stored CRM identifiers for a fast incremental
                              sync. With `fullResync: true` it first clears
                              those identifiers and re-matches each company in
                              the CRM from scratch — use this when records have
                              drifted or were re-keyed in the CRM.


                              Pricing: this action does not expose a
                              credit-mapped entry in `GET /v1/credits/pricing`.
                          options:
                            type: object
                            properties:
                              fullResync:
                                type: boolean
                                default: false
                                description: >-
                                  Reset the stored CRM identifiers and re-match
                                  each company in the CRM from scratch instead
                                  of an incremental sync. Defaults to false
                                  (fast incremental sync).
                            description: >-
                              Options for Sync companies with CRM — each option
                              is documented on its field.
                        required:
                          - type
                        title: Sync companies with CRM
                  minItems: 1
                  description: >-
                    Array of actions to execute. Each action type documents its
                    required data, behavior, accepted options, and how to look
                    up credit pricing.
                contactIds:
                  type: array
                  items:
                    type: number
                  minItems: 1
                  description: Array of contact IDs to run actions on
                companyIds:
                  type: array
                  items:
                    type: number
                  minItems: 1
                  description: Array of company IDs to run actions on
                contactGroupIds:
                  type: array
                  items:
                    type: number
                  minItems: 1
                  description: Array of contact list IDs to run actions on
                companyGroupIds:
                  type: array
                  items:
                    type: number
                  minItems: 1
                  description: Array of company list IDs to run actions on
                webhookUrl:
                  type: string
                  format: uri
                  description: >-
                    Optional webhook URL to receive notification when actions
                    complete. Must be HTTPS in production.
              required:
                - actions
              additionalProperties: false
              description: >-
                Provide exactly one of contactIds, companyIds, contactGroupIds,
                or companyGroupIds to choose the target set. Use GET
                /v1/credits/pricing to inspect the current workspace credit
                costs before running billable actions.
            examples:
              withWebhook:
                summary: With webhook notification
                value:
                  actions:
                    - type: VERIFY_LEAD_EMAIL
                  contactIds:
                    - 123
                    - 456
                  webhookUrl: https://your-domain.com/webhooks/enginy
              withoutWebhook:
                summary: Without webhook (polling required)
                value:
                  actions:
                    - type: VERIFY_LEAD_EMAIL
                  contactIds:
                    - 123
                    - 456
      responses:
        '201':
          description: Actions run started successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                      - success
                  message:
                    type: string
                  data:
                    type: object
                    properties:
                      actionsId:
                        type: number
                        description: Unique identifier for the actions group
                      createdAt:
                        type: string
                        format: date-time
                        description: Date and time when the actions group was created
                      nextStep:
                        type: string
                        description: >-
                          What to do next: poll `GET
                          /v1/actions/{actionsId}/status` (MCP tool:
                          get_actions_run_status) using this `actionsId` to
                          track progress until the run reaches a terminal
                          overallStatus.
                    required:
                      - actionsId
                      - createdAt
                      - nextStep
                required:
                  - status
                  - message
                  - data
        '400':
          description: Bad request - validation error or no entities to process
        '500':
          description: Internal server error
      security:
        - apiKey: []
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key

````