LeadIQ Public API Reference

Welcome to the developer documentation for the LeadIQ Public API.

There are two ways to build on LeadIQ:

  1. GraphQL API: call the API directly from your code. Best for custom integrations, syncs, and data pipelines. The full reference of operations and types is in the sidebar.
  2. MCP Connector: connect an AI assistant such as Claude, ChatGPT, or Microsoft Copilot to LeadIQ through the Model Context Protocol. No code required. The assistant runs searches, enrichment, and exports on your behalf, with your account's permissions and credits.

The two share the same data and permissions, and most MCP tools wrap operations documented on this page.

Contact

api@leadiq.com

API Endpoints
# GraphQL Endpoint:
https://api.leadiq.com/graphql

GraphQL API

Quickstart Guide

For a guide covering authentication, error handling and code samples to get started quickly, see the LeadIQ Public API Guide.

Main Features

The API consists of these main queries and mutations:

  1. Contact Search: find a single person based on identifying information:
    • Person name and current (or past) companies.
    • LinkedIn profile.
    • Work email or personal email.
    • And more, see full list here.
  2. Company Search: find a single company based on name, domain, country, linkedinUrl.
  3. Advanced Search: find a list of people based on some broad search criterias e.g: job title, seniority, role, company size, location, etc. See ContactFilter and CompanyFilter.
  4. Account: view your account details.
  5. Submit Data Feedback: submit data correction patch.

Paginating Advanced Search

Both groupedAdvancedSearch and flatAdvancedSearch support two ways to page through results. They behave identically; only the cursor's contents differ, and you never need to look inside it.

Offset pagination (skip + limit) lets you jump directly to any page, but it gets slower the deeper you go, because every result before your page still has to be computed. For this reason skip + limit may not exceed 10,000; beyond that the request is rejected. Use it for browsing the first pages of a result set.

Cursor pagination (after) returns each next page in roughly constant time no matter how deep you are, and is the only way to read a result set larger than 10,000. Use it for exports, syncs, and any complete read of a search. It is also the only method that guarantees you see every record exactly once.

To use cursor pagination:

  1. Request the first page with limit only (no skip, no after) and select the after field alongside your results.
  2. Pass that after value back unchanged as the after input of the next request, keeping every filter and sort option identical. Do not set skip.
  3. Repeat until the response returns no results, or after comes back null.

Examples

Grouped: first page
query {
  groupedAdvancedSearch(input: {
    companyFilter: {
      locations: [
        { country: "United States", areaLevel1: "California" }
      ]
    }
    limit: 100
  }) {
    totalCompanies
    companies { company { id name } }
    after { key value }
  }
}

Grouped: next page
query {
  groupedAdvancedSearch(input: {
    companyFilter: {
      locations: [
        { country: "United States", areaLevel1: "California" }
      ]
    }
    limit: 100
    after: [
      { key: "companySize", value: "841" }
      { key: "companyName", value: "Example Company" }
      { key: "companyId",   value: "MergedCompany-64651924e83811e4ee15fe6e" }
    ]
  }) {
    companies { company { id name } }
    after { key value }
  }
}

flatAdvancedSearch works exactly the same way. The only difference is that the cursor describes a person instead of a company.

Notes:

  • Treat after as an opaque value. Its keys depend on the sort you requested, and its values come from indexed fields that may differ from what is displayed.
  • Request the total (totalCompanies / totalPeople) on the first page only. It is expensive to compute, and for large result sets it is an approximation.
  • Cursors do not expire and hold no server-side state, so a paging job can be paused and resumed later. They are not snapshots: if the underlying data changes while you page, results can shift slightly.

Prefer not to write code? The MCP Connector gives an AI assistant access to these same operations.

Examples

Flat: first page
query {
  flatAdvancedSearch(input: {
    companyFilter: {
      locations: [
        { country: "United States", areaLevel1: "California" }
      ]
    }
    limit: 50
  }) {
    totalPeople
    people { id name title }
    after { key value }
  }
}

Flat: next page
query {
  flatAdvancedSearch(input: {
    companyFilter: {
      locations: [
        { country: "United States", areaLevel1: "California" }
      ]
    }
    limit: 50
    after: [
      { key: "personSeniority",   value: "5" }
      { key: "personConnections", value: "4352" }
      { key: "personName",        value: "example person" }
      { key: "personId",          value: "PersonID-4d3e379c-3f40-4f90-b436-af9bf628f32f" }
      { key: "companyId",         value: "MergedCompany-5a1d839824000024005e2b09" }
    ]
  }) {
    people { id name title }
    after { key value }
  }
}

MCP Connector

The LeadIQ MCP connector lets AI assistants and agents work with LeadIQ through the Model Context Protocol, an open standard for connecting AI tools to external services. You sign in with your LeadIQ account, and the assistant runs searches, enrichment, list management, and Salesforce exports for you. No API code needed.

Most MCP tools wrap operations documented on this page, so the GraphQL API material on filters, types, and pagination also describes what the assistant can do.

Server details

  • Server URL: https://mcp.leadiq.com/mcp
  • Transport: Streamable HTTP
  • Authentication: OAuth 2.0. Sign in with your LeadIQ account; email/password and Google login are both supported.
  • Client registration: dynamic. No client ID or secret to configure.
  • Requirements: an active LeadIQ account and an MCP client that supports remote servers with OAuth.

What you can do over MCP

  • Enrich contacts you already know by LinkedIn URL, work email, or name + company: verified work emails, phone numbers, title, seniority, and employer. Up to 10 per request.
  • Enrich companies by domain, name, or LinkedIn: firmographics, technology categories, revenue, funding, NAICS/SIC, and parent company. Up to 10 per request.
  • Prospect for new people with ICP filters (title, seniority, role, industry, company size, revenue, funding, location, technologies), sorted and paginated.
  • Build account lists: companies matching firmographic and technographic criteria, each with full firmographics and a count of matching contacts.
  • Track job changes and promotions, including filters on the previous title and previous company.
  • Manage prospect lists: create and browse lists, save prospects into them, and search everything you have saved. Free.
  • Verify email deliverability for any address, or re-verify a saved prospect's email (0.1 UC per check).
  • Export saved prospects to Salesforce as Leads or Contacts, through the same pipeline as the LeadIQ web app, with duplicate detection and confirmation before anything is written.
  • Check your credit balance, live unlock costs, and the signed-in account at any time. Free.

The connector also ships a guided icp prompt. It walks you through defining an ideal customer profile, running the search, and saving the top matches into a prospect list, with the credit cost disclosed and approved up front.

Connect from Claude

  1. Open Claude and go to Settings → Connectors → Add custom connector.
  2. Name it LeadIQ and enter the server URL https://mcp.leadiq.com/mcp.
  3. Save, click Connect, and log in with your LeadIQ email/password or Google login.

Once connected, make sure LeadIQ is toggled ON in the chat's connector menu.

Enterprise SSO note: if your organization enforces enterprise SSO (for example, your company's Google domain is linked to LeadIQ), clicking "Sign in with Google" may show an error. Enter your email address directly instead; the password field will appear and you can log in with your credentials.

Connect from ChatGPT

Requires a paid ChatGPT plan (Plus, Team, or Enterprise).

  1. Go to Settings → Apps & Connectors and enable Developer Mode. This is required for third-party MCP connectors.
  2. Back in Apps & Connectors, click Create App. Name it LeadIQ, enter the server URL https://mcp.leadiq.com/mcp, and pick OAuth authentication.
  3. Save the app. If LeadIQ does not appear right away, log out and back into ChatGPT, or refresh the page.
  4. Start a new chat and add LeadIQ as a capability from the connector menu.

Connect from Microsoft Copilot

LeadIQ MCP is a certified connector across Copilot Studio, Power Automate, Power Apps, and Logic Apps.

  1. Open the connector gallery and search for "LeadIQ".
  2. Select the LeadIQ MCP connector and choose Create connection.
  3. Sign in with your LeadIQ account when prompted. No client ID or secret is required; authentication uses OAuth 2.0.
  4. Add the LeadIQ MCP action to your flow or agent. Any of the seventeen tools can be called from this single action.

Copilot Studio, Power Apps, and Power Automate list it as a Premium connector; Logic Apps lists it as Standard. Government cloud regions (GCC, GCC High, DoD) and Azure China are not currently supported.

Examples

MCP Endpoint
# Streamable HTTP, OAuth 2.0
https://mcp.leadiq.com/mcp

MCP tools

The connector exposes seventeen tools. Where a tool wraps an operation documented on this page, the description links to it; request and response shapes differ slightly, since tool schemas are tailored for AI assistants.

Tool What it does Credits
EnrichPeople Look up known people by LinkedIn URL, work email, or name + company. Returns verified work emails, phone numbers, title, seniority, and employer per person. Batch up to 10. Wraps searchPeople. 0.1 to 11 UC per person, plus 3 UC per company
EnrichCompanies Look up known companies by domain, name, or LinkedIn. Returns firmographics, technology categories, revenue, funding, NAICS/SIC, parent company, and social profiles. Batch up to 10. Wraps searchCompany. 3 UC per company
FindPeople ICP prospecting. Returns a paginated list of people matching contact and company filters. Wraps flatAdvancedSearch. 0.1 UC per result, or 3 UC with company data
FindCompanies ICP account discovery. Returns companies with full firmographics and a count of matching contacts. Wraps groupedAdvancedSearch. 3 UC per company, or 0.1 UC for names only
FindJobChanges People who recently changed jobs or were promoted, with the previous and current position. Wraps flatAdvancedSearch with job-change filters. 0.1 UC per result, or 3 UC with company data
BrowseProspectLists List your saved prospect lists. Equivalent of lists. Free
CreateProspectList Create a new prospect list. Equivalent of createList. Free
GetProspectList View a list and the prospects saved in it. Equivalent of list. Free
AddProspectToList Save a new prospect into a list. Equivalent of addProspectToList. Free
AttachProspectToList Add an already-saved prospect to another list. MCP only. Free
GetProspect View a saved prospect's full record. Equivalent of prospect. Free
CreateProspect Save a prospect without attaching it to a list. MCP only. Free
SearchProspects Search your saved prospects by name or email. MCP only. Free
VerifyEmail Verify any email address's deliverability. MCP only. 0.1 UC per address
VerifyProspectEmail Re-verify the email on a saved prospect and store the result. MCP only. 0.1 UC per re-verification
ExportProspectToSalesforce Export a saved prospect to Salesforce as a Lead or Contact, with duplicate detection and confirmation before writing. MCP only. Free, unless it has to unlock company data for the Salesforce Account (3 UC)
CheckCredits Credit balance, live per-field unlock costs, and the signed-in account. Wraps account. Free

How credits work over MCP

Paid tools bill for data that is actually returned, drawing from the same Universal Credits (UC) as the rest of your plan. Billing is per data point:

Data point Cost
Profile: name, title, seniority, LinkedIn URL, and the employer's name 0.1 UC per record
Verified work email 1 UC per person
Direct phone 10 UC per person
Company firmographics: domain, industry, size, and more 3 UC per company
Email verification, and re-verification of a saved prospect 0.1 UC per check

The larger unlocks replace the profile fee rather than stacking on top of it, so a person returned with both email and phone costs 11 UC, not 11.1. Company firmographics are charged per company, so a person holding two current positions costs 6 UC of company data, not 3.

  • The assistant states the estimated cost before a paid call, and asks for your consent before large ones.
  • If you unlocked a data point in the past year, looking it up again is free.
  • List management and saved-prospect access never consume credits. Email verification is not free, but at 0.1 UC per check it is the cheapest thing here.
  • Exact rates vary by plan. Ask "What's my LeadIQ credit balance and what do unlocks cost?" to see the live rates, which are the ones that apply.

Example prompts

  • "What can LeadIQ do?"
  • "Enrich jane@acme.com and save her to my Q3 Outbound list"
  • "Find VPs of Sales at US software companies with 100-500 employees that use Salesforce"
  • "Build me an account list: fintechs with 200+ employees that have a Head of Payments"
  • "Who became a VP of Marketing at a healthcare company in the last 90 days?"
  • "Verify these three emails before I send my sequence"
  • "Export John Smith from my Q3 Outbound list to Salesforce"
  • "What's my LeadIQ credit balance?"

Notes and support

  • Results depend on available data and verification status.
  • Enrichment is batched at up to 10 contacts or companies per request.
  • Salesforce export requires a connected Salesforce account and export enabled for your team in LeadIQ.
  • Questions? Contact api@leadiq.com.

Examples

What a call costs
FindPeople, 25 results, profile only
  25 x 0.1 UC  =  2.5 UC
FindCompanies, 25 accounts with firmographics
  25 x 3 UC    =   75 UC
EnrichPeople, 10 people, verified email
  10 x 1 UC    =   10 UC
EnrichPeople, 10 people, email and phone
  10 x 11 UC   =  110 UC
EnrichCompanies, 10 companies
  10 x 3 UC    =   30 UC

Queries

account

Description

The current user's account

Response

Returns an Account

Example

Query
query Account {
  account {
    plans {
      name
      product
      status
      nextBillingPeriod
    }
    dataHubPlan {
      name
      product
      status
      nextBillingPeriod
      available
      used
      visibility {
        sku
        dataPoints
      }
      costs {
        sku
        costs {
          dataPoint
          cost
          costInDecimals
        }
      }
    }
    universalPlan {
      name
      product
      status
      nextBillingPeriod
      available
      used
      visibility {
        sku
        dataPoints
      }
      costs {
        sku
        costs {
          dataPoint
          cost
          costInDecimals
        }
      }
    }
  }
}
Response
{
  "data": {
    "account": {
      "plans": [Plan],
      "dataHubPlan": DataHubPlan,
      "universalPlan": UniversalPlan
    }
  }
}

flatAdvancedSearch

Description

Advanced search for flat response

Response

Returns a PersonSearchResponse!

Arguments
Name Description
input - FlatSearchInput!

Example

Query
query FlatAdvancedSearch($input: FlatSearchInput!) {
  flatAdvancedSearch(input: $input) {
    totalPeople
    people {
      id
      companyId
      name
      linkedinId
      linkedinUrl
      title
      role
      city
      state
      country
      countryCode2
      countryCode3
      seniority
      firstName
      middleName
      lastName
      updatedAt
      currentPositionStartDate
      company {
        id
        name
        industry
        description
        linkedinId
        domain
        employeeCount
        city
        country
        countryCode2
        countryCode3
        state
        postalCode
        score
        companyTechnologies
        companyTechnologyCategories
        revenueRange {
          start
          end
          description
        }
        fundingInfo {
          fundingRounds
          fundingTotalUsd
          lastFundingOn
          lastFundingType
          lastFundingUsd
        }
        naicsCode {
          code
          description
        }
        sicCode {
          code
          description
        }
      }
      picture
      personJobChange {
        jobChangeType
        startedAt
        previousPosition {
          companyId
          company {
            ...CompanyFragment
          }
          title
          role
          seniority
        }
        currentPosition {
          companyId
          company {
            ...CompanyFragment
          }
          title
          role
          seniority
        }
      }
    }
    after {
      key
      value
    }
  }
}
Variables
{"input": FlatSearchInput}
Response
{
  "data": {
    "flatAdvancedSearch": {
      "totalPeople": 100,
      "people": [Person],
      "after": [SortKeyValue]
    }
  }
}

groupedAdvancedSearch

Description

Advanced search for grouped response

Response

Returns a CompanySearchResponse!

Arguments
Name Description
input - GroupedSearchInput!

Example

Query
query GroupedAdvancedSearch($input: GroupedSearchInput!) {
  groupedAdvancedSearch(input: $input) {
    totalCompanies
    companies {
      company {
        id
        name
        industry
        description
        linkedinId
        domain
        employeeCount
        city
        country
        countryCode2
        countryCode3
        state
        postalCode
        score
        companyTechnologies
        companyTechnologyCategories
        revenueRange {
          start
          end
          description
        }
        fundingInfo {
          fundingRounds
          fundingTotalUsd
          lastFundingOn
          lastFundingType
          lastFundingUsd
        }
        naicsCode {
          code
          description
        }
        sicCode {
          code
          description
        }
      }
      people {
        id
        companyId
        name
        linkedinId
        linkedinUrl
        title
        role
        city
        state
        country
        countryCode2
        countryCode3
        seniority
        firstName
        middleName
        lastName
        updatedAt
        currentPositionStartDate
        company {
          id
          name
          industry
          description
          linkedinId
          domain
          employeeCount
          city
          country
          countryCode2
          countryCode3
          state
          postalCode
          score
          companyTechnologies
          companyTechnologyCategories
          revenueRange {
            ...RevenueRangeFragment
          }
          fundingInfo {
            ...FundingInfoFragment
          }
          naicsCode {
            ...NAICSCodeFragment
          }
          sicCode {
            ...SICCodeFragment
          }
        }
        picture
        personJobChange {
          jobChangeType
          startedAt
          previousPosition {
            ...PersonPreviousPositionFragment
          }
          currentPosition {
            ...PersonCurrentPositionFragment
          }
        }
      }
      totalContactsInCompany
    }
    after {
      key
      value
    }
  }
}
Variables
{"input": GroupedSearchInput}
Response
{
  "data": {
    "groupedAdvancedSearch": {
      "totalCompanies": 100,
      "companies": [CompanyWithPeople],
      "after": [SortKeyValue]
    }
  }
}

list

Response

Returns a List

Arguments
Name Description
id - ID!

Example

Query
query List($id: ID!) {
  list(id: $id) {
    id
    name
    description
    status
    visibility
    startDate
    endDate
    createdAt
    updatedAt
    prospects {
      items {
        id
        personId
        linkedinId
        linkedinUrl
        firstName
        lastName
        name
        picture
        title
        seniority
        function
        workEmail
        emailStatus
        personalEmails
        mobilePhones {
          value
          status
        }
        location {
          streetLine1
          streetLine2
          city
          state
          zip
          country
          formatted
        }
        company {
          id
          name
          domain
          industry
          employees
          phone
          location {
            ...ProspectorLocationFragment
          }
        }
        listIds
        notes
        createdAt
        updatedAt
      }
      nextCursor
    }
  }
}
Variables
{"id": 4}
Response
{
  "data": {
    "list": {
      "id": 4,
      "name": "xyz789",
      "description": "xyz789",
      "status": "xyz789",
      "visibility": "abc123",
      "startDate": "abc123",
      "endDate": "xyz789",
      "createdAt": "xyz789",
      "updatedAt": "abc123",
      "prospects": ProspectConnection
    }
  }
}

lists

Response

Returns a ListConnection

Arguments
Name Description
limit - Int Default = 25
cursor - ID

Example

Query
query Lists(
  $limit: Int,
  $cursor: ID
) {
  lists(
    limit: $limit,
    cursor: $cursor
  ) {
    items {
      id
      name
      description
      status
      visibility
      startDate
      endDate
      createdAt
      updatedAt
      prospects {
        items {
          id
          personId
          linkedinId
          linkedinUrl
          firstName
          lastName
          name
          picture
          title
          seniority
          function
          workEmail
          emailStatus
          personalEmails
          mobilePhones {
            ...MobilePhoneRecordFragment
          }
          location {
            ...ProspectorLocationFragment
          }
          company {
            ...ProspectorCompanyFragment
          }
          listIds
          notes
          createdAt
          updatedAt
        }
        nextCursor
      }
    }
    nextCursor
  }
}
Variables
{"limit": 25, "cursor": 4}
Response
{
  "data": {
    "lists": {
      "items": [List],
      "nextCursor": "4"
    }
  }
}

prospect

Response

Returns a Prospect

Arguments
Name Description
id - ID!

Example

Query
query Prospect($id: ID!) {
  prospect(id: $id) {
    id
    personId
    linkedinId
    linkedinUrl
    firstName
    lastName
    name
    picture
    title
    seniority
    function
    workEmail
    emailStatus
    personalEmails
    mobilePhones {
      value
      status
    }
    location {
      streetLine1
      streetLine2
      city
      state
      zip
      country
      formatted
    }
    company {
      id
      name
      domain
      industry
      employees
      phone
      location {
        streetLine1
        streetLine2
        city
        state
        zip
        country
        formatted
      }
    }
    listIds
    notes
    createdAt
    updatedAt
  }
}
Variables
{"id": "4"}
Response
{
  "data": {
    "prospect": {
      "id": "4",
      "personId": "xyz789",
      "linkedinId": "xyz789",
      "linkedinUrl": "xyz789",
      "firstName": "abc123",
      "lastName": "abc123",
      "name": "abc123",
      "picture": "xyz789",
      "title": "xyz789",
      "seniority": "abc123",
      "function": "xyz789",
      "workEmail": "xyz789",
      "emailStatus": "xyz789",
      "personalEmails": ["xyz789"],
      "mobilePhones": [MobilePhoneRecord],
      "location": ProspectorLocation,
      "company": ProspectorCompany,
      "listIds": [4],
      "notes": "xyz789",
      "createdAt": "xyz789",
      "updatedAt": "xyz789"
    }
  }
}

searchCompany

Description

Search for companies based on identifying information: name, domain, country, etc

Response

Returns a CompanySearchResult!

Arguments
Name Description
input - SearchCompanyInput!

Example

Query
query SearchCompany($input: SearchCompanyInput!) {
  searchCompany(input: $input) {
    totalResults
    hasMore
    results {
      id
      name
      alternativeNames
      domain
      description
      emailDomains
      type
      phones
      address
      locationInfo {
        formattedAddress
        street1
        street2
        city
        areaLevel1
        country
        countryCode2
        countryCode3
        postalCode
        isPrimary
      }
      logoUrl
      linkedinId
      linkedinUrl
      numberOfEmployees
      industry
      specialities
      fundingInfo {
        fundingRounds
        fundingTotalUsd
        lastFundingOn
        lastFundingType
        lastFundingUsd
      }
      technologies {
        name
        category
        parentCategory
        attributes
        categories
      }
      revenueRange {
        start
        end
        description
      }
      sicCode {
        code
        description
      }
      secondarySicCodes {
        code
        description
      }
      naicsCode {
        code
        description
      }
      employeeRange
      crunchbaseUrl
      facebookUrl
      twitterUrl
      foundedYear
      companyHierarchy {
        isUltimate
        parent {
          id
          name
        }
        ultimateParent {
          id
          name
        }
      }
      updatedDate
      functionTrends {
        time
        buckets {
          bucket
          count
        }
      }
      isExcluded
      locations {
        formattedAddress
        street1
        street2
        city
        areaLevel1
        country
        countryCode2
        countryCode3
        postalCode
        isPrimary
      }
    }
  }
}
Variables
{"input": SearchCompanyInput}
Response
{
  "data": {
    "searchCompany": {
      "totalResults": 987,
      "hasMore": true,
      "results": [CompanyInfo]
    }
  }
}

searchPeople

Description

Search for people based on identifying information: name, company (past & present), social profiles, email, etc

Response

Returns a SearchResult!

Arguments
Name Description
input - SearchPeopleInput!

Example

Query
query SearchPeople($input: SearchPeopleInput!) {
  searchPeople(input: $input) {
    totalResults
    hasMore
    results {
      id
      name {
        first
        fullName
        last
        middle
      }
      currentPositions {
        companyId
        title
        dateRange {
          start
          end
        }
        updatedAt
        emails {
          type
          status
          updatedAt
          value
        }
        phones {
          type
          status
          verificationStatus
          updatedAt
          value
        }
        companyInfo {
          id
          name
          alternativeNames
          domain
          description
          emailDomains
          type
          phones
          address
          locationInfo {
            ...LocationInfoFragment
          }
          logoUrl
          linkedinId
          linkedinUrl
          numberOfEmployees
          industry
          specialities
          fundingInfo {
            ...FundingInfoFragment
          }
          technologies {
            ...TechnologyInfoFragment
          }
          revenueRange {
            ...RevenueRangeFragment
          }
          sicCode {
            ...SICCodeFragment
          }
          secondarySicCodes {
            ...SICCodeFragment
          }
          naicsCode {
            ...NAICSCodeFragment
          }
          employeeRange
          crunchbaseUrl
          facebookUrl
          twitterUrl
          foundedYear
          companyHierarchy {
            ...CompanyHierarchyFragment
          }
          updatedDate
          functionTrends {
            ...FunctionTrendsFragment
          }
          isExcluded
          locations {
            ...LocationInfoFragment
          }
        }
        seniority
        function
        workEmail {
          type
          status
          updatedAt
          value
        }
        matchedQuery
      }
      pastPositions {
        companyId
        title
        dateRange {
          start
          end
        }
        updatedAt
        emails {
          type
          status
          updatedAt
          value
        }
        phones {
          type
          status
          verificationStatus
          updatedAt
          value
        }
        companyInfo {
          id
          name
          alternativeNames
          domain
          description
          emailDomains
          type
          phones
          address
          locationInfo {
            ...LocationInfoFragment
          }
          logoUrl
          linkedinId
          linkedinUrl
          numberOfEmployees
          industry
          specialities
          fundingInfo {
            ...FundingInfoFragment
          }
          technologies {
            ...TechnologyInfoFragment
          }
          revenueRange {
            ...RevenueRangeFragment
          }
          sicCode {
            ...SICCodeFragment
          }
          secondarySicCodes {
            ...SICCodeFragment
          }
          naicsCode {
            ...NAICSCodeFragment
          }
          employeeRange
          crunchbaseUrl
          facebookUrl
          twitterUrl
          foundedYear
          companyHierarchy {
            ...CompanyHierarchyFragment
          }
          updatedDate
          functionTrends {
            ...FunctionTrendsFragment
          }
          isExcluded
          locations {
            ...LocationInfoFragment
          }
        }
        seniority
        function
        workEmail {
          type
          status
          updatedAt
          value
        }
        matchedQuery
      }
      linkedin {
        linkedinId
        linkedinUrl
        salesUrls
        type
        status
        updatedAt
        guid
      }
      profiles {
        network
        id
        username
        url
        status
        updatedAt
      }
      location {
        fullAddress
        areaLevel1
        city
        country
        countryCode2
        countryCode3
        type
        status
        updatedAt
      }
      education {
        name
        type
        linkedinUrl
        facebookUrl
        twitterUrl
        linkedinId
        website
        domain
        degrees
        majors
        grades
        dateRange {
          start
          end
        }
        activities
        description
      }
      updatedAt
      personalEmails {
        type
        status
        updatedAt
        value
      }
      personalPhones {
        type
        status
        verificationStatus
        updatedAt
        value
      }
      confidence
    }
  }
}
Variables
{"input": SearchPeopleInput}
Response
{
  "data": {
    "searchPeople": {
      "totalResults": 987,
      "hasMore": false,
      "results": [PersonRecord]
    }
  }
}

workatoToken

Response

Returns a WorkatoTokenResponse!

Arguments
Name Description
orgDomainUrl - String!

Example

Query
query WorkatoToken($orgDomainUrl: String!) {
  workatoToken(orgDomainUrl: $orgDomainUrl) {
    ... on WorkatoTokenResponseFailure {
      message
    }
    ... on WorkatoTokenResponseSuccess {
      token
      customerAccountId
      apiKey
    }
  }
}
Variables
{"orgDomainUrl": "abc123"}
Response
{"data": {"workatoToken": WorkatoTokenResponseFailure}}

Mutations

addProspectToList

Response

Returns a Prospect

Arguments
Name Description
listId - ID!
input - CreateProspectInput!

Example

Query
mutation AddProspectToList(
  $listId: ID!,
  $input: CreateProspectInput!
) {
  addProspectToList(
    listId: $listId,
    input: $input
  ) {
    id
    personId
    linkedinId
    linkedinUrl
    firstName
    lastName
    name
    picture
    title
    seniority
    function
    workEmail
    emailStatus
    personalEmails
    mobilePhones {
      value
      status
    }
    location {
      streetLine1
      streetLine2
      city
      state
      zip
      country
      formatted
    }
    company {
      id
      name
      domain
      industry
      employees
      phone
      location {
        streetLine1
        streetLine2
        city
        state
        zip
        country
        formatted
      }
    }
    listIds
    notes
    createdAt
    updatedAt
  }
}
Variables
{
  "listId": "4",
  "input": CreateProspectInput
}
Response
{
  "data": {
    "addProspectToList": {
      "id": 4,
      "personId": "abc123",
      "linkedinId": "xyz789",
      "linkedinUrl": "abc123",
      "firstName": "abc123",
      "lastName": "abc123",
      "name": "abc123",
      "picture": "abc123",
      "title": "abc123",
      "seniority": "abc123",
      "function": "abc123",
      "workEmail": "xyz789",
      "emailStatus": "xyz789",
      "personalEmails": ["abc123"],
      "mobilePhones": [MobilePhoneRecord],
      "location": ProspectorLocation,
      "company": ProspectorCompany,
      "listIds": [4],
      "notes": "abc123",
      "createdAt": "xyz789",
      "updatedAt": "xyz789"
    }
  }
}

createList

Response

Returns a List

Arguments
Name Description
input - CreateListInput!

Example

Query
mutation CreateList($input: CreateListInput!) {
  createList(input: $input) {
    id
    name
    description
    status
    visibility
    startDate
    endDate
    createdAt
    updatedAt
    prospects {
      items {
        id
        personId
        linkedinId
        linkedinUrl
        firstName
        lastName
        name
        picture
        title
        seniority
        function
        workEmail
        emailStatus
        personalEmails
        mobilePhones {
          value
          status
        }
        location {
          streetLine1
          streetLine2
          city
          state
          zip
          country
          formatted
        }
        company {
          id
          name
          domain
          industry
          employees
          phone
          location {
            ...ProspectorLocationFragment
          }
        }
        listIds
        notes
        createdAt
        updatedAt
      }
      nextCursor
    }
  }
}
Variables
{"input": CreateListInput}
Response
{
  "data": {
    "createList": {
      "id": 4,
      "name": "abc123",
      "description": "abc123",
      "status": "abc123",
      "visibility": "abc123",
      "startDate": "xyz789",
      "endDate": "xyz789",
      "createdAt": "xyz789",
      "updatedAt": "abc123",
      "prospects": ProspectConnection
    }
  }
}

submitPersonFeedback

Description

Submit feedback about a person contact

Response

Returns an ID!

Arguments
Name Description
input - ApiPersonFeedback!

Example

Query
mutation SubmitPersonFeedback($input: ApiPersonFeedback!) {
  submitPersonFeedback(input: $input)
}
Variables
{"input": ApiPersonFeedback}
Response
{"data": {"submitPersonFeedback": 4}}

Types

Account

Fields
Field Name Description
plans - [Plan!]! Returns the set of subscribed plans, this will include all plans, including trial plans
dataHubPlan - DataHubPlan Returns the datahub plan if it is present
universalPlan - UniversalPlan Returns the universal plan if it is present
Example
{
  "plans": [Plan],
  "dataHubPlan": DataHubPlan,
  "universalPlan": UniversalPlan
}

AdvancedSearchEmailVerificationStatusType

Values
Enum Value Description

Verified

VerifiedLikely

Example
"Verified"

ApiPersonFeedback

Fields
Input Field Description
personId - String
linkedinUrl - String
linkedinId - String
name - String
companyId - String
companyName - String
companyDomain - String
title - String
value - String!
status - ContactInfoStatus
invalidReason - InvalidReason
type - ContactInfoType
lastSeen - ZonedDateTime
Example
{
  "personId": "abc123",
  "linkedinUrl": "abc123",
  "linkedinId": "xyz789",
  "name": "xyz789",
  "companyId": "xyz789",
  "companyName": "abc123",
  "companyDomain": "xyz789",
  "title": "abc123",
  "value": "xyz789",
  "status": "Correct",
  "invalidReason": "EmailBounceCode513",
  "type": "PersonalMobile",
  "lastSeen": "2021-10-02T00:00:00.000Z"
}

BigDecimal

Description

BigDecimal type

Example
BigDecimal

Boolean

Description

The Boolean scalar type represents true or false.

Company

Fields
Field Name Description
id - String!
name - String
industry - String
description - String
linkedinId - String
domain - String
employeeCount - Int
city - String
country - String
countryCode2 - String
countryCode3 - String
state - String
postalCode - String
score - Float Not supported anymore
companyTechnologies - [String!]
companyTechnologyCategories - [String!]
revenueRange - RevenueRange
fundingInfo - FundingInfo
naicsCode - NAICSCode
sicCode - SICCode
Example
{
  "id": "abc123",
  "name": "abc123",
  "industry": "abc123",
  "description": "abc123",
  "linkedinId": "xyz789",
  "domain": "xyz789",
  "employeeCount": 987,
  "city": "abc123",
  "country": "abc123",
  "countryCode2": "xyz789",
  "countryCode3": "xyz789",
  "state": "abc123",
  "postalCode": "xyz789",
  "score": 123.45,
  "companyTechnologies": ["abc123"],
  "companyTechnologyCategories": ["xyz789"],
  "revenueRange": RevenueRange,
  "fundingInfo": FundingInfo,
  "naicsCode": NAICSCode,
  "sicCode": SICCode
}

CompanyDetails

Fields
Input Field Description
companyId - String
name - String
domain - String
emailDomain - String
linkedinId - String
country - String
searchInPastCompanies - Boolean If set to true, match company against both current and past positions. Defaults to false.
strict - Boolean If set to true, all input company details must match some existing companies. If the company doesn't exists, maybe due to bad data, the search result will be empty. Defaults to false.
Example
{
  "companyId": "abc123",
  "name": "xyz789",
  "domain": "xyz789",
  "emailDomain": "xyz789",
  "linkedinId": "xyz789",
  "country": "abc123",
  "searchInPastCompanies": true,
  "strict": false
}

CompanyFilter

Fields
Input Field Description
ids - [String!]
names - [String!]
domains - [String!]
linkedinIds - [String!]
industries - [String!]
sizes - [CompanySizeFilter!]
locations - [LocationFilterInput!]
technologies - [String!]
technologyCategories - [String!]
revenueRanges - [RangeFilter!]
fundingInfoFilters - [FundingInfoFilter!]
naicsCodeFilters - [NAICSCodeFilter!]
sicCodeFilters - [SICCodeFilter!]
Example
{
  "ids": ["abc123"],
  "names": ["abc123"],
  "domains": ["abc123"],
  "linkedinIds": ["abc123"],
  "industries": ["abc123"],
  "sizes": [CompanySizeFilter],
  "locations": [LocationFilterInput],
  "technologies": ["xyz789"],
  "technologyCategories": ["xyz789"],
  "revenueRanges": [RangeFilter],
  "fundingInfoFilters": [FundingInfoFilter],
  "naicsCodeFilters": [NAICSCodeFilter],
  "sicCodeFilters": [SICCodeFilter]
}

CompanyHierarchy

Fields
Field Name Description
isUltimate - Boolean!
parent - CompanyHierarchyNode
ultimateParent - CompanyHierarchyNode
Example
{
  "isUltimate": true,
  "parent": CompanyHierarchyNode,
  "ultimateParent": CompanyHierarchyNode
}

CompanyHierarchyNode

Fields
Field Name Description
id - String
name - String
Example
{
  "id": "xyz789",
  "name": "xyz789"
}

CompanyInfo

Fields
Field Name Description
id - String!
name - String!
alternativeNames - [String!]
domain - String
description - String
emailDomains - [String!]
type - String
phones - [String!]
address - String
locationInfo - LocationInfo
logoUrl - String
linkedinId - String
linkedinUrl - String
numberOfEmployees - Int
industry - String
specialities - [String!]
fundingInfo - FundingInfo
technologies - [TechnologyInfo!]
revenueRange - RevenueRange
sicCode - SICCode
secondarySicCodes - [SICCode!]
naicsCode - NAICSCode
employeeRange - String
crunchbaseUrl - String
facebookUrl - String
twitterUrl - String
foundedYear - Int
companyHierarchy - CompanyHierarchy
updatedDate - ZonedDateTime
functionTrends - [FunctionTrends!]
Arguments
isExcluded - Boolean
locations - [LocationInfo!]
Example
{
  "id": "xyz789",
  "name": "abc123",
  "alternativeNames": ["xyz789"],
  "domain": "xyz789",
  "description": "abc123",
  "emailDomains": ["xyz789"],
  "type": "xyz789",
  "phones": ["abc123"],
  "address": "xyz789",
  "locationInfo": LocationInfo,
  "logoUrl": "xyz789",
  "linkedinId": "xyz789",
  "linkedinUrl": "abc123",
  "numberOfEmployees": 987,
  "industry": "abc123",
  "specialities": ["abc123"],
  "fundingInfo": FundingInfo,
  "technologies": [TechnologyInfo],
  "revenueRange": RevenueRange,
  "sicCode": SICCode,
  "secondarySicCodes": [SICCode],
  "naicsCode": NAICSCode,
  "employeeRange": "xyz789",
  "crunchbaseUrl": "abc123",
  "facebookUrl": "xyz789",
  "twitterUrl": "abc123",
  "foundedYear": 987,
  "companyHierarchy": CompanyHierarchy,
  "updatedDate": "2021-10-02T00:00:00.000Z",
  "functionTrends": [FunctionTrends],
  "isExcluded": false,
  "locations": [LocationInfo]
}

CompanySearchResponse

Fields
Field Name Description
totalCompanies - Long!
companies - [CompanyWithPeople!]!
after - [SortKeyValue!] Cursor for the next page: pass it back as after in the next request with the same filters and sorting. Treat it as opaque. An empty companies list means there are no further pages.
Example
{
  "totalCompanies": 100,
  "companies": [CompanyWithPeople],
  "after": [SortKeyValue]
}

CompanySearchResult

Fields
Field Name Description
totalResults - Int!
hasMore - Boolean!
results - [CompanyInfo!]!
Example
{
  "totalResults": 987,
  "hasMore": true,
  "results": [CompanyInfo]
}

CompanySizeFilter

Fields
Input Field Description
min - Int
max - Int
Example
{"min": 123, "max": 123}

CompanySortingOption

Values
Enum Value Description

IdDesc

IdAsc

SizeDesc

NameAsc

SizeAsc

IndustryAsc

NameDesc

IndustryDesc

Example
"IdDesc"

CompanyWithPeople

Fields
Field Name Description
company - Company!
people - [Person!]!
totalContactsInCompany - Long!
Example
{
  "company": Company,
  "people": [Person],
  "totalContactsInCompany": 100
}

ConfigurableDataPoint

Values
Enum Value Description

Company

Represents all datapoints of a company.

EmailReverification

Person

Represents a unified Person datapoint. Will only be present if PersonEmail and PersonPhone are not.

PersonEmail

Represents an email datapoint of a person. Will only be present if Person is not.

PersonPhone

Represents a phone datapoint of a person. Will only be present if Person is not.

Message

Opener

ValueProp

Profile

LLMToken

Example
"Company"

ContactFilter

Fields
Input Field Description
ids - [String!]
names - [String!]
titles - [String!]
linkedinIds - [String!]
linkedinUrls - [String!]
seniorities - [Seniority!]
roles - [String!]
locations - [LocationFilterInput!]
containsWorkEmails - [AdvancedSearchEmailVerificationStatusType!]
updatedAt - DateRangeFilter
newHireFrom - Long
newPromotionFrom - Long
Example
{
  "ids": ["abc123"],
  "names": ["xyz789"],
  "titles": ["xyz789"],
  "linkedinIds": ["abc123"],
  "linkedinUrls": ["xyz789"],
  "seniorities": ["VP"],
  "roles": ["xyz789"],
  "locations": [LocationFilterInput],
  "containsWorkEmails": ["Verified"],
  "updatedAt": DateRangeFilter,
  "newHireFrom": 100,
  "newPromotionFrom": 100
}

ContactInfoStatus

Values
Enum Value Description

Correct

Invalid

Example
"Correct"

ContactInfoType

Values
Enum Value Description

PersonalMobile

PersonalLandline

WorkHQ

WorkPhone

WorkEmail

PersonalPhone

WorkBranch

PersonalEmail

WorkMobile

Fax

Example
"PersonalMobile"

ContactSortingOption

Values
Enum Value Description

RoleAsc

NameDesc

SeniorityAsc

IdAsc

NameAsc

TitleAsc

SeniorityDesc

RoleDesc

TitleDesc

IdDesc

MobilePhoneAsc

MobilePhoneDesc

UpdatedAtAsc

UpdatedAtDesc

JobChangeStartedAtAsc

JobChangeStartedAtDesc

Example
"RoleAsc"

CreateListInput

Fields
Input Field Description
name - String!
description - String
Example
{
  "name": "xyz789",
  "description": "xyz789"
}

CreateProspectInput

Fields
Input Field Description
firstName - String!
lastName - String!
workEmail - String Work email. Must be a valid email address (RFC 5322); malformed values are rejected with 400.
emailStatus - String Verification status of workEmail. Set this when the email has already been vetted upstream (e.g., the prospect came from tool_SearchPeople with a verified email). Allowed values: Verified, VerifiedLikely, Unverified. Omit if unknown — do not default to Unverified. Other values (including Invalid) are rejected with 400 on create; Invalid may still appear on reads when set by the verify-email endpoints.
phone - String Mobile phone number. Plain string; format isn't validated. When personId is also supplied, prospector-api will attempt to verify this number against dataiq's records and emit status: Verified on the resulting prospect's mobilePhones if the confidence score crosses the threshold.
personId - String dataiq stable person identifier. Optional. Required only to opt into the phone-verification flow described under phone — when both phone and personId are supplied, prospector-api gates a tyrion RUM check + dataiq score lookup. Without personId, the phone is still saved but no badge is emitted on read.
title - String
seniority - String Job seniority bucket. Allowed values: VP, Manager, Director, Executive, SeniorIndividualContributor, Other. Other values are rejected with 400 — when the source title doesn't map cleanly, use Other rather than guessing.
function - String
company - String
companyDomain - String
companyIndustry - String
linkedinUrl - String Prospect's LinkedIn profile URL. Must be a valid URL; malformed values are rejected with 400.
location - LocationInput Prospect's address. All fields are optional; provide whatever you have. formatted is the human-readable single-line form; the structured fields (streetLine1/streetLine2/city/state/zip/country) populate the parsed columns independently.
notes - String Free-form notes attached to the prospect. Max 5000 characters; longer values are rejected with 400.
Example
{
  "firstName": "xyz789",
  "lastName": "xyz789",
  "workEmail": "xyz789",
  "emailStatus": "xyz789",
  "phone": "abc123",
  "personId": "abc123",
  "title": "xyz789",
  "seniority": "xyz789",
  "function": "xyz789",
  "company": "abc123",
  "companyDomain": "xyz789",
  "companyIndustry": "xyz789",
  "linkedinUrl": "abc123",
  "location": LocationInput,
  "notes": "abc123"
}

DataHubCost

Fields
Field Name Description
sku - SKU! The subproduct that this cost is associated with
costs - [DataPointCost!]! A list of dataPoint to cost mappings
Example
{"sku": "AccountTracking", "costs": [DataPointCost]}

DataHubPlan

Fields
Field Name Description
name - String! A human readable name for the plan. e.g. Enterprise Annual
product - ProductName! The product that this plan is for
status - PlanStatus! The current status of the plan
nextBillingPeriod - ZonedDateTime
available - Int! The number of credits available for use
used - Int! The number of credits used during the current billing period
visibility - [DataHubVisibility!]! The visibility of datapoints for this plan
costs - [DataHubCost!]! The costs per datapoint associated with this plan
Example
{
  "name": "xyz789",
  "product": "DataHub",
  "status": "Active",
  "nextBillingPeriod": "2021-10-02T00:00:00.000Z",
  "available": 123,
  "used": 987,
  "visibility": [DataHubVisibility],
  "costs": [DataHubCost]
}

DataHubVisibility

Fields
Field Name Description
sku - SKU! The subproduct that this visibility is associated with
dataPoints - [UnlockableDataPoint!]! A list of dataPoints that are visible
Example
{"sku": "AccountTracking", "dataPoints": ["Company"]}

DataPointCost

Fields
Field Name Description
dataPoint - ConfigurableDataPoint! The datapoint that this cost is associated with
cost - Int! The cost of the datapoint
costInDecimals - BigDecimal! The cost of the datapoint in decimals
Example
{
  "dataPoint": "Company",
  "cost": 987,
  "costInDecimals": BigDecimal
}

DateRange

Fields
Field Name Description
start - ZonedDateTime
end - ZonedDateTime
Example
{
  "start": "2021-10-02T00:00:00.000Z",
  "end": "2021-10-02T00:00:00.000Z"
}

DateRangeFilter

Fields
Input Field Description
start - Long
end - Long
Example
{"start": 100, "end": 100}

EducationRecord

Fields
Field Name Description
name - String!
type - String
linkedinUrl - String
facebookUrl - String
twitterUrl - String
linkedinId - String
website - String
domain - String
degrees - [String!]!
majors - [String!]!
grades - String
dateRange - DateRange
activities - String
description - String
Example
{
  "name": "abc123",
  "type": "xyz789",
  "linkedinUrl": "abc123",
  "facebookUrl": "abc123",
  "twitterUrl": "abc123",
  "linkedinId": "abc123",
  "website": "xyz789",
  "domain": "xyz789",
  "degrees": ["xyz789"],
  "majors": ["abc123"],
  "grades": "abc123",
  "dateRange": DateRange,
  "activities": "xyz789",
  "description": "xyz789"
}

EmailType

Description

Type of email

Values
Enum Value Description

WorkEmail

PersonalEmail

Example
"WorkEmail"

EmailVerificationStatusType

Description

Status of an email

Values
Enum Value Description

Verified

VerifiedLikely

Unverified

Invalid

Suppressed

Example
"Verified"

EmailVerificationStatusTypeInput

Values
Enum Value Description

Verified

Unverified

VerifiedLikely

Invalid

Example
"Verified"

FlatSearchInput

Fields
Input Field Description
companyFilter - CompanyFilter
companyExcludedFilter - CompanyFilter
contactFilter - ContactFilter
contactExcludedFilter - ContactFilter
previousCompanyFilter - PreviousCompanyFilter
previousPositionFilter - PreviousPositionFilter
jobChangeFilter - JobChangeFilter
skip - Int
limit - Int
after - [SortKeyValueInput!] Pagination cursor: pass the after value from the previous response verbatim to fetch the next page. Filters and sortContactsBy must stay identical across pages. Do not combine with a non-zero skip.
sortContactsBy - [ContactSortingOption!]
Example
{
  "companyFilter": CompanyFilter,
  "companyExcludedFilter": CompanyFilter,
  "contactFilter": ContactFilter,
  "contactExcludedFilter": ContactFilter,
  "previousCompanyFilter": PreviousCompanyFilter,
  "previousPositionFilter": PreviousPositionFilter,
  "jobChangeFilter": JobChangeFilter,
  "skip": 987,
  "limit": 123,
  "after": [SortKeyValueInput],
  "sortContactsBy": ["RoleAsc"]
}

Float

Description

The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.

Example
987.65

FunctionTrends

Fields
Field Name Description
time - ZonedDateTime!
buckets - [TrendBucketCount!]!
Example
{
  "time": "2021-10-02T00:00:00.000Z",
  "buckets": [TrendBucketCount]
}

FundingInfo

Fields
Field Name Description
fundingRounds - String
fundingTotalUsd - Long
lastFundingOn - ZonedDateTime
lastFundingType - String
lastFundingUsd - Long
Example
{
  "fundingRounds": "2",
  "fundingTotalUsd": 40000000,
  "lastFundingOn": "2021-10-02T00:00:00.000Z",
  "lastFundingType": "Series B",
  "lastFundingUsd": 30000000
}

FundingInfoFilter

Fields
Input Field Description
lastFundingDateRange - DateRangeFilter
lastFundingRange - RangeFilter
Example
{
  "lastFundingDateRange": DateRangeFilter,
  "lastFundingRange": RangeFilter
}

GenericFieldStatus

Description

A generic field status

Values
Enum Value Description

Valid

Invalid

Example
"Valid"

GenericFieldType

Description

A generic field type

Values
Enum Value Description

NotApplicable

Example
"NotApplicable"

GroupedSearchInput

Description

Input for Advanced Search for grouped response

Fields
Input Field Description
companyFilter - CompanyFilter
companyExcludedFilter - CompanyFilter
contactFilter - ContactFilter
contactExcludedFilter - ContactFilter
skip - Int
limit - Int
after - [SortKeyValueInput!] Pagination cursor: pass the after value from the previous response verbatim to fetch the next page. Filters and sortCompaniesBy must stay identical across pages. Do not combine with a non-zero skip.
limitPerCompany - Int
sortCompaniesBy - [CompanySortingOption!]
sortContactsBy - [ContactSortingOption!]
Example
{
  "companyFilter": CompanyFilter,
  "companyExcludedFilter": CompanyFilter,
  "contactFilter": ContactFilter,
  "contactExcludedFilter": ContactFilter,
  "skip": 123,
  "limit": 123,
  "after": [SortKeyValueInput],
  "limitPerCompany": 123,
  "sortCompaniesBy": ["IdDesc"],
  "sortContactsBy": ["RoleAsc"]
}

ID

Description

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

Example
"4"

Int

Description

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

Example
987

InvalidReason

Values
Enum Value Description

EmailBounceCode513

5.1.3 Bad destination mailbox address syntax

EmailBounceCode554

5.5.4 Invalid command arguments

EmailBounceCode500

5.0.0 Other undefined Status

EmailBounceCode547

5.4.7 Delivery time expired

EmailBounceCode532

5.3.2 System not accepting network messages

EmailBounceCode564

5.6.4 Conversion with loss performed

EmailBounceCode524

5.2.4 Mailing list expansion problem

EmailBounceCode563

5.6.3 Conversion required but not supported

EmailBounceCode522

5.2.2 Mailbox full

EmailBounceCode555

5.5.5 Wrong protocol version

EmailBounceCode552

5.5.2 Syntax error

EmailBounceCode570

5.7.0 Other or undefined security status

EmailBounceCode515

5.1.5 Destination mailbox address valid

WrongPerson

Email or Phone belongs to someone else

EmailBounceCode565

5.6.5 Conversion failed

EmailBounceCode544

5.4.4 Unable to route

EmailBounceCode512

5.1.2 Bad destination system address

EmailBounceCode516

5.1.6 Mailbox has moved

EmailBounceCode575

5.7.5 Cryptographic failure

Other

EmailBounceCode561

5.6.1 Media not supported

EmailBounceCode573

5.7.3 Security conversion required but not possible

EmailBounceCode510

5.1.0 Another address status

EmailBounceCode577

5.7.7 Message integrity failure

EmailBounceCode551

5.5.1 Invalid command

EmailBounceCode543

5.4.3 Routing server failure

EmailBounceCode530

5.3.0 Other or undefined mail system status

EmailBounceCode523

5.2.3 Message length exceeds administrative limit

EmailBounceCode541

5.4.1 No answer from host

EmailBounceCode533

5.3.3 System not capable of selected features

EmailBounceCode545

5.4.5 Network congestion

EmailBounceCode562

5.6.2 Conversion required and prohibited

EmailBounceCode571

5.7.1 Delivery not authorized, message refused

EmailBounceCode514

5.1.4 Destination mailbox address ambiguous

EmailBounceCode572

5.7.2 Mailing list expansion prohibited

EmailBounceCode542

5.4.2 Bad connection

EmailBounceCode517

5.1.7 Bad sender’s mailbox address syntax

EmailBounceCode574

5.7.4 Security features not supported

EmailBounceCode521

5.2.1 Mailbox disabled, not accepting messages

EmailBounceCode534

5.3.4 Message too big for system

EmailBounceCode531

5.3.1 Mail system full

EmailBounceCode553

5.5.3 Too many recipients

EmailBounceCode518

5.1.8 Bad sender’s system address

EmailBounceCode520

5.2.0 Other or undefined mailbox status

EmailBounceCode511

5.1.1 Bad destination mailbox address

EmailBounceCode576

5.7.6 Cryptographic algorithm not supported

EmailBounceCode550

5.5.0 Other or undefined protocol status

EmailBounceCode540

5.4.0 Other or undefined network or routing status

EmailBounceCode546

5.4.6 Routing loop detected

EmailBounceCode560

5.6.0 Other or undefined media error
Example
"EmailBounceCode513"

JobChangeFilter

Fields
Input Field Description
jobChangeTypes - [PersonJobChangeTypeFilter!]!
startedAfter - Long
Example
{"jobChangeTypes": ["JobChange"], "startedAfter": 100}

LinkedinRecord

Fields
Field Name Description
linkedinId - String
linkedinUrl - String
salesUrls - [String!]
type - GenericFieldType!
status - GenericFieldStatus!
updatedAt - ZonedDateTime!
guid - String
Example
{
  "linkedinId": "abc123",
  "linkedinUrl": "abc123",
  "salesUrls": ["xyz789"],
  "type": "NotApplicable",
  "status": "Valid",
  "updatedAt": "2021-10-02T00:00:00.000Z",
  "guid": "abc123"
}

List

Fields
Field Name Description
id - ID!
name - String!
description - String
status - String
visibility - String
startDate - String
endDate - String
createdAt - String!
updatedAt - String!
prospects - ProspectConnection
Arguments
limit - Int
cursor - ID
Example
{
  "id": 4,
  "name": "xyz789",
  "description": "xyz789",
  "status": "xyz789",
  "visibility": "abc123",
  "startDate": "xyz789",
  "endDate": "abc123",
  "createdAt": "xyz789",
  "updatedAt": "xyz789",
  "prospects": ProspectConnection
}

ListConnection

Fields
Field Name Description
items - [List!]!
nextCursor - ID
Example
{
  "items": [List],
  "nextCursor": "4"
}

LocationFilterInput

Fields
Input Field Description
city - String
areaLevel1 - String
country - String
postalCode - String
Example
{
  "city": "abc123",
  "areaLevel1": "xyz789",
  "country": "abc123",
  "postalCode": "abc123"
}

LocationInfo

Fields
Field Name Description
formattedAddress - String
street1 - String
street2 - String
city - String
areaLevel1 - String
country - String
countryCode2 - String
countryCode3 - String
postalCode - String
isPrimary - Boolean Set on CompanyInfo.locations elements, where it marks the HQ. Always null on CompanyInfo.locationInfo.
Example
{
  "formattedAddress": "abc123",
  "street1": "abc123",
  "street2": "xyz789",
  "city": "xyz789",
  "areaLevel1": "abc123",
  "country": "abc123",
  "countryCode2": "abc123",
  "countryCode3": "xyz789",
  "postalCode": "abc123",
  "isPrimary": false
}

LocationInput

Fields
Input Field Description
streetLine1 - String
streetLine2 - String
city - String
state - String
zip - String
country - String
formatted - String
Example
{
  "streetLine1": "xyz789",
  "streetLine2": "abc123",
  "city": "xyz789",
  "state": "abc123",
  "zip": "xyz789",
  "country": "xyz789",
  "formatted": "xyz789"
}

LocationRecord

Fields
Field Name Description
fullAddress - String
areaLevel1 - String
city - String
country - String
countryCode2 - String
countryCode3 - String
type - GenericFieldType!
status - GenericFieldStatus!
updatedAt - ZonedDateTime!
Example
{
  "fullAddress": "xyz789",
  "areaLevel1": "xyz789",
  "city": "abc123",
  "country": "xyz789",
  "countryCode2": "xyz789",
  "countryCode3": "abc123",
  "type": "NotApplicable",
  "status": "Valid",
  "updatedAt": "2021-10-02T00:00:00.000Z"
}

Long

Description

The Long scalar type represents non-fractional signed whole numeric values. Long can represent values between -(2^63) and 2^63 - 1.

Example
100

MobilePhoneRecord

Fields
Field Name Description
value - String!
status - MobilePhoneStatus
Example
{"value": "xyz789", "status": "Verified"}

MobilePhoneStatus

Description

Wire-level phone verification status. Single positive value (Verified) is emitted when prospector-api's score-based check confirms the number; absent otherwise. Future positive values may be added; consumers should treat any unrecognized value as "absent / unknown" rather than failing.

Values
Enum Value Description

Verified

Example
"Verified"

NAICSCode

Fields
Field Name Description
code - String!
description - String!
Example
{
  "code": "xyz789",
  "description": "xyz789"
}

NAICSCodeFilter

Fields
Input Field Description
code - String
description - String
Example
{
  "code": "abc123",
  "description": "xyz789"
}

NameInfo

Fields
Field Name Description
first - String!
fullName - String!
last - String
middle - String
Example
{
  "first": "xyz789",
  "fullName": "xyz789",
  "last": "abc123",
  "middle": "abc123"
}

Person

Fields
Field Name Description
id - String!
companyId - String!
name - String
linkedinId - String
linkedinUrl - String
title - String
role - String
city - String
state - String
country - String
countryCode2 - String
countryCode3 - String
seniority - String
firstName - String
middleName - String
lastName - String
updatedAt - ZonedDateTime
currentPositionStartDate - ZonedDateTime
company - Company
picture - String
personJobChange - PersonJobChange
Example
{
  "id": "xyz789",
  "companyId": "xyz789",
  "name": "xyz789",
  "linkedinId": "xyz789",
  "linkedinUrl": "xyz789",
  "title": "abc123",
  "role": "abc123",
  "city": "abc123",
  "state": "xyz789",
  "country": "abc123",
  "countryCode2": "xyz789",
  "countryCode3": "abc123",
  "seniority": "xyz789",
  "firstName": "xyz789",
  "middleName": "xyz789",
  "lastName": "xyz789",
  "updatedAt": "2021-10-02T00:00:00.000Z",
  "currentPositionStartDate": "2021-10-02T00:00:00.000Z",
  "company": Company,
  "picture": "xyz789",
  "personJobChange": PersonJobChange
}

PersonCurrentPosition

Fields
Field Name Description
companyId - String!
company - Company
title - String
role - String
seniority - String
Example
{
  "companyId": "xyz789",
  "company": Company,
  "title": "xyz789",
  "role": "xyz789",
  "seniority": "xyz789"
}

PersonJobChange

Fields
Field Name Description
jobChangeType - PersonJobChangeType!
startedAt - ZonedDateTime
previousPosition - PersonPreviousPosition!
currentPosition - PersonCurrentPosition!
Example
{
  "jobChangeType": "JobChange",
  "startedAt": "2021-10-02T00:00:00.000Z",
  "previousPosition": PersonPreviousPosition,
  "currentPosition": PersonCurrentPosition
}

PersonJobChangeType

Values
Enum Value Description

JobChange

TitleChange

Example
"JobChange"

PersonJobChangeTypeFilter

Values
Enum Value Description

JobChange

TitleChange

Example
"JobChange"

PersonPreviousPosition

Fields
Field Name Description
companyId - String
company - Company
title - String
role - String
seniority - String
Example
{
  "companyId": "xyz789",
  "company": Company,
  "title": "abc123",
  "role": "xyz789",
  "seniority": "abc123"
}

PersonRecord

Fields
Field Name Description
id - String!
name - NameInfo!
currentPositions - [PositionRecord!]!
pastPositions - [PositionRecord!]!
linkedin - LinkedinRecord
profiles - [SocialProfile!]!
location - LocationRecord
education - [EducationRecord!]!
updatedAt - ZonedDateTime
personalEmails - [PersonalEmailRecordType!]!
personalPhones - [PersonalPhoneRecordType!]!
confidence - Int
Example
{
  "id": "abc123",
  "name": NameInfo,
  "currentPositions": [PositionRecord],
  "pastPositions": [PositionRecord],
  "linkedin": LinkedinRecord,
  "profiles": [SocialProfile],
  "location": LocationRecord,
  "education": [EducationRecord],
  "updatedAt": "2021-10-02T00:00:00.000Z",
  "personalEmails": [PersonalEmailRecordType],
  "personalPhones": [PersonalPhoneRecordType],
  "confidence": 987
}

PersonSearchResponse

Fields
Field Name Description
totalPeople - Long!
people - [Person!]!
after - [SortKeyValue!] Cursor for the next page: pass it back as after in the next request with the same filters and sorting. Treat it as opaque. A null value means there are no further pages.
Example
{
  "totalPeople": 100,
  "people": [Person],
  "after": [SortKeyValue]
}

PersonalEmailRecordType

Fields
Field Name Description
type - EmailType!
status - EmailVerificationStatusType!
updatedAt - ZonedDateTime!
value - String!
Example
{
  "type": "WorkEmail",
  "status": "Verified",
  "updatedAt": "2021-10-02T00:00:00.000Z",
  "value": "abc123"
}

PersonalPhoneRecordType

Fields
Field Name Description
type - PhoneType!
status - PhoneVerificationStatusType!
verificationStatus - VerificationStatusType!
updatedAt - ZonedDateTime!
value - String!
Example
{
  "type": "WorkPhone",
  "status": "Suppressed",
  "verificationStatus": "LikelyAccurate",
  "updatedAt": "2021-10-02T00:00:00.000Z",
  "value": "xyz789"
}

PhoneQualityFilter

Values
Enum Value Description

HigherQualityPhones

HighestQualityPhones

AllPhones

Example
"HigherQualityPhones"

PhoneType

Description

Type of phone

Values
Enum Value Description

WorkPhone

WorkMobile

WorkHQ

WorkBranch

PersonalPhone

PersonalLandline

PersonalMobile

Fax

Example
"WorkPhone"

PhoneVerificationStatusType

Description

Status of a phone number

Values
Enum Value Description

Suppressed

LikelyAccurate

Example
"Suppressed"

Plan

Fields
Field Name Description
name - String! A human readable name for the plan. e.g. Enterprise Annual
product - ProductName! The product that this plan is for
status - PlanStatus! The current status of the plan
nextBillingPeriod - ZonedDateTime The next billing period for this plan, null if the plan is inactive or will not reactivate
Example
{
  "name": "xyz789",
  "product": "DataHub",
  "status": "Active",
  "nextBillingPeriod": "2021-10-02T00:00:00.000Z"
}

PlanStatus

Description

An enum representing the status of a plan.

Values
Enum Value Description

Active

Inactive

Trialing

Example
"Active"

PositionRecord

Fields
Field Name Description
companyId - String!
title - String
dateRange - DateRange
updatedAt - ZonedDateTime!
emails - [WorkEmailRecordType!]!
phones - [WorkPhoneRecordType!]!
companyInfo - CompanyInfo
seniority - String
function - String
workEmail - WorkEmailRecordType
matchedQuery - Boolean!
Example
{
  "companyId": "xyz789",
  "title": "abc123",
  "dateRange": DateRange,
  "updatedAt": "2021-10-02T00:00:00.000Z",
  "emails": [WorkEmailRecordType],
  "phones": [WorkPhoneRecordType],
  "companyInfo": CompanyInfo,
  "seniority": "xyz789",
  "function": "xyz789",
  "workEmail": WorkEmailRecordType,
  "matchedQuery": false
}

PreviousCompanyFilter

Fields
Input Field Description
ids - [String!]
names - [String!]
domains - [String!]
linkedinIds - [String!]
industries - [String!]
employeeCount - [CompanySizeFilter!]
locations - [LocationFilterInput!]
Example
{
  "ids": ["xyz789"],
  "names": ["abc123"],
  "domains": ["abc123"],
  "linkedinIds": ["abc123"],
  "industries": ["xyz789"],
  "employeeCount": [CompanySizeFilter],
  "locations": [LocationFilterInput]
}

PreviousPositionFilter

Fields
Input Field Description
titles - [String!]
Example
{"titles": ["abc123"]}

ProductName

Description

A high level product name. This is used to delineate between subscriptions to different products.

Values
Enum Value Description

DataHub

ContactTracking

Api

Universal

Example
"DataHub"

ProfileFilterType

Values
Enum Value Description

HasVerifiedWorkPhone

HasPersonalPhone

HasWorkPhone

Not supported anymore

HasVerifiedWorkEmail

HasWorkEmail

Example
"HasVerifiedWorkPhone"

Prospect

Fields
Field Name Description
id - ID!
personId - String
linkedinId - String
linkedinUrl - String
firstName - String
lastName - String
name - String
picture - String
title - String
seniority - String
function - String
workEmail - String
emailStatus - String Verification status of workEmail. One of: Verified, VerifiedLikely, Unverified, or Invalid (the latter is set by the verify-email endpoints when an address fails verification — it can be present on saved prospects whose email was checked after creation). May be null when the prospect was saved without an email or without a verification verdict.
personalEmails - [String!]
mobilePhones - [MobilePhoneRecord!] Mobile phone numbers attached to the prospect. Each entry carries the number plus an optional status flag — Verified when prospector-api was able to confirm the number against dataiq's records (score-driven, threshold-gated), absent otherwise. Internal LikelyAccurate / VerifiedByUser / Edited storage values collapse to a single wire enum (Verified) or are omitted; do not surface other values.
location - ProspectorLocation
company - ProspectorCompany
listIds - [ID!]!
notes - String
createdAt - String!
updatedAt - String!
Example
{
  "id": 4,
  "personId": "xyz789",
  "linkedinId": "xyz789",
  "linkedinUrl": "abc123",
  "firstName": "xyz789",
  "lastName": "xyz789",
  "name": "abc123",
  "picture": "abc123",
  "title": "xyz789",
  "seniority": "xyz789",
  "function": "xyz789",
  "workEmail": "abc123",
  "emailStatus": "abc123",
  "personalEmails": ["abc123"],
  "mobilePhones": [MobilePhoneRecord],
  "location": ProspectorLocation,
  "company": ProspectorCompany,
  "listIds": [4],
  "notes": "xyz789",
  "createdAt": "abc123",
  "updatedAt": "abc123"
}

ProspectConnection

Fields
Field Name Description
items - [Prospect!]!
nextCursor - ID
Example
{
  "items": [Prospect],
  "nextCursor": "4"
}

ProspectorCompany

Fields
Field Name Description
id - String
name - String
domain - String
industry - String
employees - Int
phone - String
location - ProspectorLocation
Example
{
  "id": "abc123",
  "name": "abc123",
  "domain": "abc123",
  "industry": "abc123",
  "employees": 987,
  "phone": "abc123",
  "location": ProspectorLocation
}

ProspectorLocation

Fields
Field Name Description
streetLine1 - String
streetLine2 - String
city - String
state - String
zip - String
country - String
formatted - String
Example
{
  "streetLine1": "abc123",
  "streetLine2": "abc123",
  "city": "abc123",
  "state": "xyz789",
  "zip": "abc123",
  "country": "abc123",
  "formatted": "xyz789"
}

QualityFilter

Fields
Input Field Description
phone - PhoneQualityFilter
Example
{"phone": "HigherQualityPhones"}

RangeFilter

Fields
Input Field Description
start - Long
end - Long
Example
{"start": 100, "end": 100}

RevenueRange

Fields
Field Name Description
start - Long
end - Long
description - String
Example
{
  "start": 100,
  "end": 100,
  "description": "abc123"
}

SICCode

Fields
Field Name Description
code - String!
description - String!
Example
{
  "code": "xyz789",
  "description": "abc123"
}

SICCodeFilter

Fields
Input Field Description
code - String
description - String
Example
{
  "code": "abc123",
  "description": "abc123"
}

SKU

Description

Represents a specific product category. SKUs may have different costs or datapoints associated with them

Values
Enum Value Description

AccountTracking

AIChat

Api

BulkCapture

ContactTracking

MCP

Raven

Refresh

Prospector

Scribe

Example
"AccountTracking"

SearchCompanyInput

Description

Input for searching company

Fields
Input Field Description
id - String
name - String
domain - String
linkedinId - String
linkedinUrl - String
strict - Boolean If set to true, all input company details must match some existing companies. Defaults to false.
Example
{
  "id": "abc123",
  "name": "abc123",
  "domain": "abc123",
  "linkedinId": "xyz789",
  "linkedinUrl": "xyz789",
  "strict": true
}

SearchPeopleInput

Description

Input for searching people

Fields
Input Field Description
skip - Int
limit - Int
id - String
firstName - String
lastName - String
middleName - String
fullName - String
company - CompanyDetails
linkedinId - String
linkedinUrl - String
email - String
hashedEmail - String Search by SHA256 hashed email
phone - String
workEmailStatusIn - [EmailVerificationStatusTypeInput!] If set, only return result with email statuses from this list. Default to all statuses.
containsWorkContactInfo - Boolean If set to true, only return results with work contacts. Default to false.
profileFilter - [ProfileFilterType!] If set, only return results that satisfy these filters. Default to empty.
includeInvalid - Boolean If set to true, include Invalid emails in result. Default to false.
qualityFilter - QualityFilter Apply Quality Filter
minConfidence - Int Min confidence property (if applicable) for a person (0 - 100)
Example
{
  "skip": 987,
  "limit": 987,
  "id": "abc123",
  "firstName": "abc123",
  "lastName": "xyz789",
  "middleName": "xyz789",
  "fullName": "abc123",
  "company": CompanyDetails,
  "linkedinId": "abc123",
  "linkedinUrl": "abc123",
  "email": "xyz789",
  "hashedEmail": "xyz789",
  "phone": "xyz789",
  "workEmailStatusIn": ["Verified"],
  "containsWorkContactInfo": false,
  "profileFilter": ["HasVerifiedWorkPhone"],
  "includeInvalid": false,
  "qualityFilter": QualityFilter,
  "minConfidence": 123
}

SearchResult

Fields
Field Name Description
totalResults - Int!
hasMore - Boolean!
results - [PersonRecord!]!
Example
{
  "totalResults": 987,
  "hasMore": true,
  "results": [PersonRecord]
}

Seniority

Values
Enum Value Description

VP

Manager

Director

Executive

SeniorIndividualContributor

Other

Example
"VP"

SocialNetworkType

Description

Network name of the social profile.

Values
Enum Value Description

Twitter

Foursquare

Gravatar

Pinterest

Angellist

Facebook

Klout

Example
"Twitter"

SocialProfile

Fields
Field Name Description
network - SocialNetworkType!
id - String
username - String
url - String
status - GenericFieldStatus!
updatedAt - ZonedDateTime!
Example
{
  "network": "Twitter",
  "id": "xyz789",
  "username": "abc123",
  "url": "xyz789",
  "status": "Valid",
  "updatedAt": "2021-10-02T00:00:00.000Z"
}

SortKeyValue

Fields
Field Name Description
key - String!
value - String!
Example
{
  "key": "abc123",
  "value": "abc123"
}

SortKeyValueInput

Fields
Input Field Description
key - String!
value - String!
Example
{
  "key": "abc123",
  "value": "xyz789"
}

String

Description

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.

Example
"xyz789"

TechnologyInfo

Fields
Field Name Description
name - String!
category - String
parentCategory - String
attributes - [String!]!
categories - [String!]!
Example
{
  "name": "Amazon Web Services (AWS)",
  "category": "Infrastructure as a Service (IaaS)",
  "parentCategory": "Cloud Services",
  "attributes": ["Software as a Service (SaaS)"],
  "categories": ["abc123"]
}

TrendBucketCount

Fields
Field Name Description
bucket - String!
count - Int!
Example
{"bucket": "xyz789", "count": 987}

UniversalCost

Fields
Field Name Description
sku - SKU! The subproduct that this cost is associated with
costs - [DataPointCost!]! A list of dataPoint to cost mappings
Example
{"sku": "AccountTracking", "costs": [DataPointCost]}

UniversalPlan

Fields
Field Name Description
name - String! A human readable name for the plan. e.g. Enterprise Annual
product - ProductName! The product that this plan is for
status - PlanStatus! The current status of the plan
nextBillingPeriod - ZonedDateTime When the next billing period starts, null if the plan is inactive or will not reactivate
available - Int! The number of credits available for use
used - Int! The number of credits used during the current billing period
visibility - [UniversalVisibility!]! The visibility of datapoints for this plan
costs - [UniversalCost!]! The costs per datapoint associated with this plan
Example
{
  "name": "abc123",
  "product": "DataHub",
  "status": "Active",
  "nextBillingPeriod": "2021-10-02T00:00:00.000Z",
  "available": 987,
  "used": 987,
  "visibility": [UniversalVisibility],
  "costs": [UniversalCost]
}

UniversalVisibility

Fields
Field Name Description
sku - SKU! The subproduct that this visibility is associated with
dataPoints - [UnlockableDataPoint!]! A list of dataPoints that are visible
Example
{"sku": "AccountTracking", "dataPoints": ["Company"]}

UnlockableDataPoint

Values
Enum Value Description

Company

EmailReverification

PersonEmail

PersonPhone

Message

Opener

ValueProp

Profile

LLMToken

Example
"Company"

VerificationStatusType

Description

Verification status

Values
Enum Value Description

LikelyAccurate

None

Example
"LikelyAccurate"

WorkEmailRecordType

Fields
Field Name Description
type - EmailType!
status - EmailVerificationStatusType!
updatedAt - ZonedDateTime!
value - String!
Example
{
  "type": "WorkEmail",
  "status": "Verified",
  "updatedAt": "2021-10-02T00:00:00.000Z",
  "value": "abc123"
}

WorkPhoneRecordType

Fields
Field Name Description
type - PhoneType!
status - PhoneVerificationStatusType!
verificationStatus - VerificationStatusType!
updatedAt - ZonedDateTime!
value - String!
Example
{
  "type": "WorkPhone",
  "status": "Suppressed",
  "verificationStatus": "LikelyAccurate",
  "updatedAt": "2021-10-02T00:00:00.000Z",
  "value": "abc123"
}

WorkatoTokenResponse

Example
WorkatoTokenResponseFailure

WorkatoTokenResponseFailure

Fields
Field Name Description
message - String!
Example
{"message": "abc123"}

WorkatoTokenResponseSuccess

Fields
Field Name Description
token - String!
customerAccountId - String
apiKey - String
Example
{
  "token": "xyz789",
  "customerAccountId": "xyz789",
  "apiKey": "abc123"
}

ZonedDateTime

Description

Zoned date time type

Example
"2021-10-02T00:00:00.000Z"