Inbound API

How it works

Kernel operates differently from static database providers, like ZoomInfo and Dun & Bradstreet. Kernel collects and classifies data in real-time, which means the process is asynchronous. You initiate an enrichment task and periodically poll for results as data becomes available.

Understanding Data Availability (Fast vs. Slow)

  • Asynchronous Population: The output JSON payload populates gradually. When you poll, fields for which data hasn't been found or processed yet will typically have a value of null.

  • Fast Data Points: For example, certain firmographic data points are usually available relatively quickly (potentially within minutes). These include:

    • Country

    • State/Region

    • Industry

    • Headcount

    • Headcount Growth

  • Slower Data Points: Other data points may require more extensive analysis or different data sources and can take longer (potentially hours) to populate.

  • Polling Strategy: Your polling logic should handle partially populated payloads and continue polling until the status is success or error. The specifics regarding the fast/slow data points depend on your custom setup.

Initiate asynchronous enrichment for an account

post

Input Data Requirements:

  • salesforceId (string): Required. This is the Salesforce record ID (e.g., Lead IDs often start with 00Q, Account IDs with 001).

  • You must provide either:

    • linkedinUrl (string): The LinkedIn profile URL (e.g., https://www.linkedin.com/company/example).

    • OR both name (string) and website (string).

  • Contextual Data (Optional but helpful): While the core requirement is above, providing additional context like emailDomain (e.g., kernel.ai from [email protected]) will be beneficial depending on the specific workflow configuration, even if it is not strictly required by the current endpoint setup. Check with your Kernel contact to see if these are utilized.

  • Data Privacy: Do not send Personally Identifiable Information (PII) such as first name or last name, unless explicitly part of the agreed schema. You should send email_domain if available and relevant to the configuration.

Header parameters
x-api-keystringRequired
Body
salesforceIdstringRequired
linkedinUrlstringOptional
namestringOptional
websitestringOptional
Responses
200

Note the executionId. You will need this unique identifier to poll for results.

application/json
post
POST /api/v1/inbound/enrichment HTTP/1.1
Host: 
x-api-key: text
Content-Type: application/json
Accept: */*
Content-Length: 143

{
  "salesforceId": "001j000000HWb16AAD",
  "linkedinUrl": "https://www.linkedin.com/company/kernelai/",
  "name": "Kernel",
  "website": "https://kernel.ai/"
}
{
  "status": "starting",
  "executionId": 12345
}

Polling for Enrichment Status and Results

get

Because enrichment happens asynchronously, you need to periodically check the status of your request using the executionId.

Query parameters
executionIdstringRequired

The executionId from the POST request

Example: 12345
Header parameters
x-api-keystringRequired
Responses
200

Note the executionId. You will need this unique identifier to poll for results.

application/json
Responseall of
and
get
GET /api/v1/inbound/enrichment?executionId=12345 HTTP/1.1
Host: 
x-api-key: text
Accept: */*
{
  "status": "fast-success",
  "message": "Fast enrichment successful",
  "Kernel_Duplicate_CRM_ID__c": null,
  "Kernel_Duplicate_account__c": null,
  "Kernel_Parent_Child_type__c": null,
  "Kernel_Parent_Child_reasoning__c": null,
  "Kernel_Is_website_working__c": null,
  "Kernel_Out_of_Business_Reasoning__c": null,
  "Kernel_EME_Operations_Reasoning__c": null,
  "Kernel_Cleaned_website__c": null,
  "Kernel_Who_does_the_customer_sell_to__c": null,
  "Kernel_Company_Name__c": "Kernel",
  "Kernel_Parent_company__c": null,
  "Kernel_Website_status__c": "Working",
  "Kernel_Headcount": 29
}

Last updated