LeadIQ Public API Reference
Welcome to the developer documentation for the LeadIQ Public API.
There are two ways to build on LeadIQ:
- 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.
- 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
Terms of Service
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:
- 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.
- Company Search: find a single company based on name, domain, country, linkedinUrl.
- 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.
- groupedAdvancedSearch: resulting list of people are grouped into companies and returned.
- flatAdvancedSearch: resulting list of people is returned as is.
- Account: view your account details.
- 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:
- Request the first page with
limitonly (noskip, noafter) and select theafterfield alongside your results. - Pass that
aftervalue back unchanged as theafterinput of the next request, keeping every filter and sort option identical. Do not setskip. - Repeat until the response returns no results, or
aftercomes backnull.
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
afteras 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
- Open Claude and go to Settings → Connectors → Add custom connector.
- Name it
LeadIQand enter the server URLhttps://mcp.leadiq.com/mcp. - 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).
- Go to Settings → Apps & Connectors and enable Developer Mode. This is required for third-party MCP connectors.
- Back in Apps & Connectors, click Create App. Name it
LeadIQ, enter the server URLhttps://mcp.leadiq.com/mcp, and pick OAuth authentication. - Save the app. If LeadIQ does not appear right away, log out and back into ChatGPT, or refresh the page.
- 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.
- Open the connector gallery and search for "LeadIQ".
- Select the LeadIQ MCP connector and choose Create connection.
- Sign in with your LeadIQ account when prompted. No client ID or secret is required; authentication uses OAuth 2.0.
- 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
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
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
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 |
|---|---|
|
|
|
|
|
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
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
CompanySortingOption
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|---|---|
|
|
Represents all datapoints of a company. |
|
|
|
|
|
Represents a unified Person datapoint. Will only be present if PersonEmail and PersonPhone are not. |
|
|
Represents an email datapoint of a person. Will only be present if Person is not. |
|
|
Represents a phone datapoint of a person. Will only be present if Person is not. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|---|---|
|
|
|
|
|
Example
"Correct"
ContactInfoType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"PersonalMobile"
ContactSortingOption
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"RoleAsc"
CreateListInput
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
EducationRecord
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 |
|---|---|
|
|
|
|
|
Example
"WorkEmail"
EmailVerificationStatusType
Description
Status of an email
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"Verified"
EmailVerificationStatusTypeInput
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
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 |
|---|---|
|
|
|
|
|
Example
"Valid"
GenericFieldType
Description
A generic field type
Values
| Enum Value | Description |
|---|---|
|
|
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 |
|---|---|
|
|
5.1.3 Bad destination mailbox address syntax |
|
|
5.5.4 Invalid command arguments |
|
|
5.0.0 Other undefined Status |
|
|
5.4.7 Delivery time expired |
|
|
5.3.2 System not accepting network messages |
|
|
5.6.4 Conversion with loss performed |
|
|
5.2.4 Mailing list expansion problem |
|
|
5.6.3 Conversion required but not supported |
|
|
5.2.2 Mailbox full |
|
|
5.5.5 Wrong protocol version |
|
|
5.5.2 Syntax error |
|
|
5.7.0 Other or undefined security status |
|
|
5.1.5 Destination mailbox address valid |
|
|
Email or Phone belongs to someone else |
|
|
5.6.5 Conversion failed |
|
|
5.4.4 Unable to route |
|
|
5.1.2 Bad destination system address |
|
|
5.1.6 Mailbox has moved |
|
|
5.7.5 Cryptographic failure |
|
|
|
|
|
5.6.1 Media not supported |
|
|
5.7.3 Security conversion required but not possible |
|
|
5.1.0 Another address status |
|
|
5.7.7 Message integrity failure |
|
|
5.5.1 Invalid command |
|
|
5.4.3 Routing server failure |
|
|
5.3.0 Other or undefined mail system status |
|
|
5.2.3 Message length exceeds administrative limit |
|
|
5.4.1 No answer from host |
|
|
5.3.3 System not capable of selected features |
|
|
5.4.5 Network congestion |
|
|
5.6.2 Conversion required and prohibited |
|
|
5.7.1 Delivery not authorized, message refused |
|
|
5.1.4 Destination mailbox address ambiguous |
|
|
5.7.2 Mailing list expansion prohibited |
|
|
5.4.2 Bad connection |
|
|
5.1.7 Bad sender’s mailbox address syntax |
|
|
5.7.4 Security features not supported |
|
|
5.2.1 Mailbox disabled, not accepting messages |
|
|
5.3.4 Message too big for system |
|
|
5.3.1 Mail system full |
|
|
5.5.3 Too many recipients |
|
|
5.1.8 Bad sender’s system address |
|
|
5.2.0 Other or undefined mailbox status |
|
|
5.1.1 Bad destination mailbox address |
|
|
5.7.6 Cryptographic algorithm not supported |
|
|
5.5.0 Other or undefined protocol status |
|
|
5.4.0 Other or undefined network or routing status |
|
|
5.4.6 Routing loop detected |
|
|
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
Example
{
"id": 4,
"name": "xyz789",
"description": "xyz789",
"status": "xyz789",
"visibility": "abc123",
"startDate": "xyz789",
"endDate": "abc123",
"createdAt": "xyz789",
"updatedAt": "xyz789",
"prospects": ProspectConnection
}
ListConnection
LocationFilterInput
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
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 |
|---|---|
|
|
Example
"Verified"
NAICSCode
NAICSCodeFilter
NameInfo
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
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 |
|---|---|
|
|
|
|
|
Example
"JobChange"
PersonJobChangeTypeFilter
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
"JobChange"
PersonPreviousPosition
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 |
|---|---|
|
|
|
|
|
|
|
|
Example
"HigherQualityPhones"
PhoneType
Description
Type of phone
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"WorkPhone"
PhoneVerificationStatusType
Description
Status of a phone number
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
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 |
|---|---|
|
|
|
|
|
|
|
|
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 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
"DataHub"
ProfileFilterType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
Not supported anymore |
|
|
|
|
|
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
Example
{
"id": "abc123",
"name": "abc123",
"domain": "abc123",
"industry": "abc123",
"employees": 987,
"phone": "abc123",
"location": ProspectorLocation
}
ProspectorLocation
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
RevenueRange
SICCode
SICCodeFilter
SKU
Description
Represents a specific product category. SKUs may have different costs or datapoints associated with them
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"AccountTracking"
SearchCompanyInput
Description
Input for searching company
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 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"VP"
SocialNetworkType
Description
Network name of the social profile.
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
SortKeyValueInput
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
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 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
"Company"
VerificationStatusType
Description
Verification status
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
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
Types
| Union Types |
|---|
Example
WorkatoTokenResponseFailure
WorkatoTokenResponseFailure
Fields
| Field Name | Description |
|---|---|
message - String!
|
Example
{"message": "abc123"}
WorkatoTokenResponseSuccess
ZonedDateTime
Description
Zoned date time type
Example
"2021-10-02T00:00:00.000Z"