Enrich Webhooks API

The Webhooks API from Enrich — 0 operation(s) for webhooks.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/enrich-so-webhooks-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

enrich-so-webhooks-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Enrich Webhooks API
  version: '3.0'
  description: Enrich (enrich.so) data enrichment API v3. Assembled verbatim from the per-endpoint OpenAPI fragments Enrich publishes on every page of https://doc.enrich.so (each documentation page embeds its own OpenAPI fragment; this document is the union of them).
  contact:
    name: Enrich
    url: https://www.enrich.so
  termsOfService: https://www.enrich.so/terms-of-service
servers:
- url: https://dev.enrich.so/api/v3
  description: Enrich API v3 (base URL published at https://doc.enrich.so/api-reference-1951025m0)
security:
- ApiKeyHeader: []
tags:
- name: Webhooks
paths: {}
webhooks:
  companyFollowerCompletion:
    post:
      summary: 'Company Followers: completion callback'
      deprecated: false
      description: 'Fires exactly once when the entire scraping job finishes (success or failure).

        '
      operationId: webhookCompanyFollowerCompletion
      tags:
      - Webhooks
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookCompanyFollowerCompletion'
            example:
              event: webhook:company_follower_completion.completed
              batchId: 665a1f4e2c3b7800129dce01
              timestamp: '2025-06-03T14:40:00.000Z'
              data:
                companyUrl: https://linkedin.com/company/stripe
                followerCount: 342
                processingTimeMs: 45230
      responses:
        '200':
          description: Return any 2xx to acknowledge receipt
          headers: {}
          x-apidog-name: OK
      security:
      - ApiKeyHeader: []
        x-apidog:
          schemeGroups:
          - id: ITulbGf-iaBy1jastxLFZ
            schemeIds:
            - ApiKeyHeader
          - id: MRl9ot_U0Hi0CGtsoDsHI
            schemeIds:
            - BearerToken
          required: true
          use:
            id: ITulbGf-iaBy1jastxLFZ
          scopes:
            MRl9ot_U0Hi0CGtsoDsHI: {}
      x-apidog-folder: Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1189032/apis/api-27730400-run
  companyFollowerResult:
    post:
      summary: 'Company Followers: per-result callback'
      deprecated: false
      description: 'Fires once per follower profile as results are scraped. For 100 followers, expect 100 webhooks. Process results in real-time without waiting for the full job to finish.

        '
      operationId: webhookCompanyFollowerResult
      tags:
      - Webhooks
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookCompanyFollowerResult'
            example:
              event: webhook:company_follower_result.completed
              batchId: abc123
              timestamp: '2026-02-08T12:00:00.000Z'
              data:
                companyUrl: https://linkedin.com/company/stripe
                follower:
                  objectURN: urn:li:member:123456
                  name: Jane Smith
                  firstName: Jane
                  lastName: Smith
                  profileUrl: https://www.linkedin.com/in/janesmith
                  title: Senior Engineer
                  companyName: Acme Corp
                  industry: Technology
                  connectionDegree: 2
                  isPremium: false
                  isOpenProfile: true
      responses:
        '200':
          description: Return any 2xx to acknowledge receipt
          headers: {}
          x-apidog-name: OK
      security:
      - ApiKeyHeader: []
        x-apidog:
          schemeGroups:
          - id: ITulbGf-iaBy1jastxLFZ
            schemeIds:
            - ApiKeyHeader
          - id: MRl9ot_U0Hi0CGtsoDsHI
            schemeIds:
            - BearerToken
          required: true
          use:
            id: ITulbGf-iaBy1jastxLFZ
          scopes:
            MRl9ot_U0Hi0CGtsoDsHI: {}
      x-apidog-folder: Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1189032/apis/api-27730399-run
  emailFinderCompletion:
    post:
      summary: 'Email Finder: batch completion callback'
      deprecated: false
      description: 'Your server receives this POST **exactly once** when every lead in the batch

        has been processed.

        '
      operationId: webhookEmailFinderCompletion
      tags:
      - Webhooks
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookEmailFinderCompletion'
            example:
              event: finder.completed
              timestamp: '2025-06-03T14:40:00.000Z'
              data:
                job_id: 665b12cf3e4c9200138eaf10
                status: completed
                total_items: 3
                successful: 2
                failed: 1
                completed_at: '2025-06-03T14:40:00.000Z'
                found: 2
                not_found: 1
      responses:
        '200':
          description: Return any 2xx to acknowledge receipt
          headers: {}
          x-apidog-name: OK
      security:
      - ApiKeyHeader: []
        x-apidog:
          schemeGroups:
          - id: ITulbGf-iaBy1jastxLFZ
            schemeIds:
            - ApiKeyHeader
          - id: MRl9ot_U0Hi0CGtsoDsHI
            schemeIds:
            - BearerToken
          required: true
          use:
            id: ITulbGf-iaBy1jastxLFZ
          scopes:
            MRl9ot_U0Hi0CGtsoDsHI: {}
      x-apidog-folder: Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1189032/apis/api-27483216-run
  emailFinderResult:
    post:
      summary: 'Email Finder: per-result callback'
      deprecated: false
      description: 'Your server receives this POST **once for every lead** in a batch finder job.

        It fires as each lead is processed, letting you act on found emails immediately.

        '
      operationId: webhookEmailFinderResult
      tags:
      - Webhooks
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookEmailFinderResult'
            example:
              event: webhook:finder_lookup.completed
              timestamp: '2025-06-03T14:35:00.000Z'
              data:
                job_id: 665b12cf3e4c9200138eaf10
                result_id: emily.zhang@figma.com
                result:
                  email: emily.zhang@figma.com
                  result: found
                  confidence: high
                  is_catch_all: false
                  domain: figma.com
                  provider: GOOGLE
                  message: Email found with high confidence
      responses:
        '200':
          description: Return any 2xx to acknowledge receipt
          headers: {}
          x-apidog-name: OK
      security:
      - ApiKeyHeader: []
        x-apidog:
          schemeGroups:
          - id: ITulbGf-iaBy1jastxLFZ
            schemeIds:
            - ApiKeyHeader
          - id: MRl9ot_U0Hi0CGtsoDsHI
            schemeIds:
            - BearerToken
          required: true
          use:
            id: ITulbGf-iaBy1jastxLFZ
          scopes:
            MRl9ot_U0Hi0CGtsoDsHI: {}
      x-apidog-folder: Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1189032/apis/api-27483215-run
  emailValidationCompletion:
    post:
      summary: 'Email Validation: batch completion callback'
      deprecated: false
      description: 'Your server receives this POST **exactly once** when every email in the

        batch has been processed. Use it to trigger downstream workflows like

        exporting results or notifying your users.

        '
      operationId: webhookEmailValidationCompletion
      tags:
      - Webhooks
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookEmailValidationCompletion'
            example:
              event: validation.completed
              timestamp: '2025-06-03T14:40:00.000Z'
              data:
                job_id: 665a1f4e2c3b7800129dce01
                status: completed
                total_items: 4
                successful: 3
                failed: 1
                completed_at: '2025-06-03T14:40:00.000Z'
                valid: 2
                invalid: 1
                risky: 1
      responses:
        '200':
          description: Return any 2xx to acknowledge receipt
          headers: {}
          x-apidog-name: OK
      security:
      - ApiKeyHeader: []
        x-apidog:
          schemeGroups:
          - id: ITulbGf-iaBy1jastxLFZ
            schemeIds:
            - ApiKeyHeader
          - id: MRl9ot_U0Hi0CGtsoDsHI
            schemeIds:
            - BearerToken
          required: true
          use:
            id: ITulbGf-iaBy1jastxLFZ
          scopes:
            MRl9ot_U0Hi0CGtsoDsHI: {}
      x-apidog-folder: Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1189032/apis/api-27483214-run
  emailValidationResult:
    post:
      summary: 'Email Validation: per-result callback'
      deprecated: false
      description: 'Your server receives this POST **once for every email** in a batch validation

        job. It fires as soon as each individual email finishes validation, so you can

        process results in real time without waiting for the full batch.

        '
      operationId: webhookEmailValidationResult
      tags:
      - Webhooks
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookEmailValidationResult'
            example:
              event: webhook:email_lookup.completed
              timestamp: '2025-06-03T14:35:00.000Z'
              data:
                job_id: 665a1f4e2c3b7800129dce01
                result_id: sarah.chen@stripe.com
                result:
                  email: sarah.chen@stripe.com
                  result: valid
                  message: The mailbox exists and is accepting mail
                  provider: GOOGLE
                  confidence: high
                  is_catch_all: false
                  domain: stripe.com
      responses:
        '200':
          description: Return any 2xx to acknowledge receipt
          headers: {}
          x-apidog-name: OK
      security:
      - ApiKeyHeader: []
        x-apidog:
          schemeGroups:
          - id: ITulbGf-iaBy1jastxLFZ
            schemeIds:
            - ApiKeyHeader
          - id: MRl9ot_U0Hi0CGtsoDsHI
            schemeIds:
            - BearerToken
          required: true
          use:
            id: ITulbGf-iaBy1jastxLFZ
          scopes:
            MRl9ot_U0Hi0CGtsoDsHI: {}
      x-apidog-folder: Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1189032/apis/api-27483213-run
  phoneCompletion:
    post:
      summary: 'Phone Finder: batch completion callback'
      deprecated: false
      description: 'Your server receives this POST **exactly once** when every item in the bulk

        phone lookup has been processed.

        '
      operationId: webhookPhoneCompletion
      tags:
      - Webhooks
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookPhoneCompletion'
            example:
              event: webhook:phone_completion.completed
              timestamp: '2025-06-03T14:40:00.000Z'
              data:
                job_id: 665c52bf7b8e3f00149f0a10
                status: completed
                total_items: 3
                found: 2
                not_found: 1
                completed_at: '2025-06-03T14:40:00.000Z'
      responses:
        '200':
          description: Return any 2xx to acknowledge receipt
          headers: {}
          x-apidog-name: OK
      security:
      - ApiKeyHeader: []
        x-apidog:
          schemeGroups:
          - id: ITulbGf-iaBy1jastxLFZ
            schemeIds:
            - ApiKeyHeader
          - id: MRl9ot_U0Hi0CGtsoDsHI
            schemeIds:
            - BearerToken
          required: true
          use:
            id: ITulbGf-iaBy1jastxLFZ
          scopes:
            MRl9ot_U0Hi0CGtsoDsHI: {}
      x-apidog-folder: Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1189032/apis/api-27483218-run
  phoneResult:
    post:
      summary: 'Phone Finder: per-result callback'
      deprecated: false
      description: 'Your server receives this POST **once for every item** (email or profile URL)

        in a bulk phone lookup job. The `phones` array contains the numbers found, or

        `error` will have a message if the lookup failed.

        '
      operationId: webhookPhoneResult
      tags:
      - Webhooks
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookPhoneResult'
            example:
              event: webhook:phone_result.completed
              timestamp: '2025-06-03T14:35:00.000Z'
              data:
                job_id: 665c52bf7b8e3f00149f0a10
                result_id: sarah.chen@stripe.com
                type: success
                phones:
                - '+14158009370'
                message: Phone numbers found
      responses:
        '200':
          description: Return any 2xx to acknowledge receipt
          headers: {}
          x-apidog-name: OK
      security:
      - ApiKeyHeader: []
        x-apidog:
          schemeGroups:
          - id: ITulbGf-iaBy1jastxLFZ
            schemeIds:
            - ApiKeyHeader
          - id: MRl9ot_U0Hi0CGtsoDsHI
            schemeIds:
            - BearerToken
          required: true
          use:
            id: ITulbGf-iaBy1jastxLFZ
          scopes:
            MRl9ot_U0Hi0CGtsoDsHI: {}
      x-apidog-folder: Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1189032/apis/api-27483217-run
  reverseLookupCompletion:
    post:
      summary: 'Reverse Lookup: batch completion callback'
      deprecated: false
      description: 'Your server receives this POST **exactly once** when every email in the bulk

        lookup has been processed.

        '
      operationId: webhookReverseLookupCompletion
      tags:
      - Webhooks
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookReverseLookupCompletion'
            example:
              event: webhook:email_completion.completed
              timestamp: '2025-06-03T14:40:00.000Z'
              data:
                job_id: 665d2f8b9c5b2a0015d0bc10
                status: completed
                total_items: 3
                found: 2
                not_found: 1
                completed_at: '2025-06-03T14:40:00.000Z'
      responses:
        '200':
          description: Return any 2xx to acknowledge receipt
          headers: {}
          x-apidog-name: OK
      security:
      - ApiKeyHeader: []
        x-apidog:
          schemeGroups:
          - id: ITulbGf-iaBy1jastxLFZ
            schemeIds:
            - ApiKeyHeader
          - id: MRl9ot_U0Hi0CGtsoDsHI
            schemeIds:
            - BearerToken
          required: true
          use:
            id: ITulbGf-iaBy1jastxLFZ
          scopes:
            MRl9ot_U0Hi0CGtsoDsHI: {}
      x-apidog-folder: Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1189032/apis/api-27483220-run
  reverseLookupResult:
    post:
      summary: 'Reverse Lookup: per-result callback'
      deprecated: false
      description: 'Your server receives this POST **once for every email** in a bulk reverse

        lookup job. The `data.result` object contains professional profile fields when

        a profile was found, or `data.error` has a message when it wasn''t.

        '
      operationId: webhookReverseLookupResult
      tags:
      - Webhooks
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookReverseLookupResult'
            example:
              event: webhook:email_result.completed
              timestamp: '2025-06-03T14:35:00.000Z'
              data:
                job_id: 665d2f8b9c5b2a0015d0bc10
                result_id: emily.zhang@figma.com
                type: success
                result:
                  displayName: Emily Zhang
                  firstName: Emily
                  lastName: Zhang
                  headline: Staff Product Designer at Figma
                  companyName: Figma
                  location: San Francisco, California
                  profileUrl: https://www.example.com/in/emilyzhang
                message: Person found
      responses:
        '200':
          description: Return any 2xx to acknowledge receipt
          headers: {}
          x-apidog-name: OK
      security:
      - ApiKeyHeader: []
        x-apidog:
          schemeGroups:
          - id: ITulbGf-iaBy1jastxLFZ
            schemeIds:
            - ApiKeyHeader
          - id: MRl9ot_U0Hi0CGtsoDsHI
            schemeIds:
            - BearerToken
          required: true
          use:
            id: ITulbGf-iaBy1jastxLFZ
          scopes:
            MRl9ot_U0Hi0CGtsoDsHI: {}
      x-apidog-folder: Webhooks
      x-apidog-status: released
      x-run-in-apidog: https://app.apidog.com/web/project/1189032/apis/api-27483219-run
components:
  schemas:
    PositionHistoryItem:
      type: object
      description: One entry in a person's work history
      properties:
        title:
          type: string
          description: Job title
          examples:
          - Senior Software Engineer
        startEndDate:
          $ref: '#/components/schemas/StartEndDate'
        description:
          type: string
          description: What the person did in this role
          examples:
          - Led the migration to a microservices architecture.
        companyName:
          type: string
          description: Company name
          examples:
          - Stripe
        companyLocation:
          type: string
          description: Where the company is located
          examples:
          - San Francisco, CA
        companyLogo:
          type: string
          format: uri
          description: URL of the company's logo
      x-apidog-orders:
      - title
      - startEndDate
      - description
      - companyName
      - companyLocation
      - companyLogo
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    WebhookEmailFinderCompletion:
      type: object
      description: Completion callback for email finder batches.
      required:
      - event
      - timestamp
      - data
      properties:
        event:
          type: string
          const: finder.completed
        timestamp:
          type: string
          format: date-time
        data:
          type: object
          required:
          - job_id
          - status
          - total_items
          - successful
          - failed
          - completed_at
          properties:
            job_id:
              type: string
            status:
              type: string
              const: completed
            total_items:
              type: integer
            successful:
              type: integer
            failed:
              type: integer
            completed_at:
              type: string
              format: date-time
            found:
              type: integer
              description: Number of emails successfully found
            not_found:
              type: integer
              description: Number of lookups where no email was found
          x-apidog-orders:
          - job_id
          - status
          - total_items
          - successful
          - failed
          - completed_at
          - found
          - not_found
          x-apidog-ignore-properties: []
      x-apidog-orders:
      - event
      - timestamp
      - data
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    WebhookReverseLookupCompletion:
      type: object
      description: Completion callback for reverse email lookup batches.
      required:
      - event
      - timestamp
      - data
      properties:
        event:
          type: string
          const: webhook:email_completion.completed
        timestamp:
          type: string
          format: date-time
        data:
          type: object
          required:
          - job_id
          - status
          - total_items
          - found
          - not_found
          - completed_at
          properties:
            job_id:
              type: string
            status:
              type: string
            total_items:
              type: integer
            found:
              type: integer
            not_found:
              type: integer
            completed_at:
              type: string
              format: date-time
          x-apidog-orders:
          - job_id
          - status
          - total_items
          - found
          - not_found
          - completed_at
          x-apidog-ignore-properties: []
      x-apidog-orders:
      - event
      - timestamp
      - data
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    WebhookEmailFinderResult:
      type: object
      description: Per-result callback for email finder batches.
      required:
      - event
      - timestamp
      - data
      properties:
        event:
          type: string
          const: webhook:finder_lookup.completed
        timestamp:
          type: string
          format: date-time
        data:
          type: object
          required:
          - job_id
          - result_id
          - result
          properties:
            job_id:
              type: string
            result_id:
              type: string
              description: The email address that was looked up
            result:
              type: object
              required:
              - email
              - result
              - is_catch_all
              properties:
                email:
                  type: string
                result:
                  type: string
                  enum:
                  - found
                  - not_found
                message:
                  type: string
                confidence:
                  type: string
                  enum:
                  - high
                  - medium
                  - low
                is_catch_all:
                  type: boolean
                domain:
                  type: string
                provider:
                  type: string
                  description: Email provider (GOOGLE, MICROSOFT, ZOHO, etc.)
              x-apidog-orders:
              - email
              - result
              - message
              - confidence
              - is_catch_all
              - domain
              - provider
              x-apidog-ignore-properties: []
          x-apidog-orders:
          - job_id
          - result_id
          - result
          x-apidog-ignore-properties: []
      x-apidog-orders:
      - event
      - timestamp
      - data
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    WebhookCompanyFollowerResult:
      type: object
      required:
      - event
      - batchId
      - timestamp
      - data
      properties:
        event:
          type: string
          description: Event type identifier
          examples:
          - webhook:company_follower_result.completed
        batchId:
          type: string
          description: The batch ID for this scrape job
        timestamp:
          type: string
          format: date-time
          description: UTC timestamp when the event was produced
        data:
          type: object
          required:
          - companyUrl
          - follower
          properties:
            companyUrl:
              type: string
              format: uri
              description: The LinkedIn company URL being scraped
            follower:
              type: object
              description: A single follower profile with all available fields
              properties:
                objectURN:
                  type: string
                  description: LinkedIn profile URN identifier
                name:
                  type:
                  - string
                  - 'null'
                  description: Full name
                firstName:
                  type:
                  - string
                  - 'null'
                  description: First name
                lastName:
                  type:
                  - string
                  - 'null'
                  description: Last name
                profileUrl:
                  type: string
                  description: LinkedIn profile URL
                profilePictureUrl:
                  type:
                  - string
                  - 'null'
                  description: Profile picture URL
                title:
                  type:
                  - string
                  - 'null'
                  description: Job title
                companyName:
                  type:
                  - string
                  - 'null'
                  description: Current company name
                companyProfileUrl:
                  type:
                  - string
                  - 'null'
                  description: Company LinkedIn URL
                companyWebsite:
                  type:
                  - string
                  - 'null'
                  description: Company website URL
                companyDomain:
                  type:
                  - string
                  - 'null'
                  description: Company domain
                companyLogoUrl:
                  type:
                  - string
                  - 'null'
                  description: Company logo URL
                companyLocation:
                  type:
                  - string
                  - 'null'
                  description: Company location
                location:
                  type:
                  - string
                  - 'null'
                  description: Profile location
                summary:
                  type:
                  - string
                  - 'null'
                  description: Profile summary
                connectionDegree:
                  type:
                  - number
                  - 'null'
                  description: Connection degree (1, 2, or 3)
                tenureAtCompany:
                  type:
                  - string
                  - 'null'
                  description: Time at current company
                industry:
                  type:
                  - string
                  - 'null'
                  description: Industry
                isPremium:
                  type:
                  - boolean
                  - 'null'
                  description: Whether profile is Premium
                isSaved:
                  type:
                  - boolean
                  - 'null'
                  description: Whether profile is saved in Sales Navigator
                isOpenProfile:
                  type:
                  - boolean
                  - 'null'
                  description: Whether profile is Open Profile
                spotlights:
                  type: array
                  items:
                    type: string
                  description: Profile badges and highlights
                createdAt:
                  type: string
                  format: date-time
                  description: When the profile was scraped
              x-apidog-orders:
              - objectURN
              - name
              - firstName
              - lastName
              - profileUrl
              - profilePictureUrl
              - title
              - companyName
              - companyProfileUrl
              - companyWebsite
              - companyDomain
              - companyLogoUrl
              - companyLocation
              - location
              - summary
              - connectionDegree
              - tenureAtCompany
              - industry
              - isPremium
              - isSaved
              - isOpenProfile
              - spotlights
              - createdAt
              x-apidog-ignore-properties: []
          x-apidog-orders:
          - companyUrl
          - follower
          x-apidog-ignore-properties: []
      x-apidog-orders:
      - event
      - batchId
      - timestamp
      - data
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    WebhookEmailValidationCompletion:
      type: object
      description: Completion callback for email validation batches.
      required:
      - event
      - timestamp
      - data
      properties:
        event:
          type: string
          const: validation.completed
        timestamp:
          type: string
          format: date-time
        data:
          type: object
          required:
          - job_id
          - status
          - total_items
          - successful
          - failed
          - completed_at
          properties:
            job_id:
              type: string
            status:
              type: string
              const: completed
            total_items:
              type: integer
            successful:
              type: integer
            failed:
              type: integer
            completed_at:
              type: string
              format: date-time
            valid:
              type: integer
              description: Number of emails that validated as valid
            invalid:
              type: integer
              description: Number of emails that validated as invalid
            risky:
              type: integer
              description: Number of emails that validated as risky
          x-apidog-orders:
          - job_id
          - status
          - total_items
          - successful
          - failed
          - completed_at
          - valid
          - invalid
          - risky
          x-apidog-ignore-properties: []
      x-apidog-orders:
      - event
      - timestamp
      - data
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    WebhookPhoneResult:
      type: object
      description: Per-result callback for phone finder batches.
      required:
      - event
      - timestamp
      - data
      properties:
        event:
          type: string
          const: webhook:phone_result.completed
        timestamp:
          type: string
          format: date-time
        data:
          type: object
          required:
          - job_id
          - result_id
          - type
          properties:
            job_id:
              type: string
            result_id:
              type: string
              description: The email or profile URL used for the lookup
            type:
              type: string
              enum:
              - success
              - no_match
              - error
            phones:
              type: array
              items:
                type: string
              description: Phone numbers found (present when type is "success")
            error:
              type: string
              description: Error message (present when type is "error")
            message:
              type: string
              description: Human-readable summary
          x-apidog-orders:
          - job_id
          - result_id
          - type
          - phones
          - error
          - message
          x-apidog-ignore-properties: []
      x-apidog-orders:
      - event
      - timestamp
      - data
      x-apidog-ignore-properties: []
      x-apidog-folder: ''
    WebhookReverseLookupResult:
      type: object
      description: Per-result callback for reverse email lookup batches.
      required:
      - event
      - timestamp
      - data
      properties:
        event:
          type: string
          const: webhook:email_result.completed
        timestamp:
   

# --- truncated at 32 KB (44 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/enrich-so/refs/heads/main/openapi/enrich-so-webhooks-api-openapi.yml