For the complete documentation index, see llms.txt. This page is also available as Markdown.

Inbound

Scheduled inbound from Salesforce

For scheduled Salesforce processing, follow Scheduled inbound flows. New flows use a saved Account or Kernel Account pull mapping, a SOQL WHERE clause, and a saved output mapping. Kernel queries matching records on the selected schedule, links them, and runs built-in processing with the selected output mapping.

API-triggered inbound and existing integrations use their configured workflows and object mappings. The Account and Kernel Account choices above apply to the new scheduled-flow setup.

API-triggered inbound

Use the Inbound API when your own system needs to trigger just-in-time enrichment for a specific record and then poll for results.

Kernel collects and classifies data in real time, so API-triggered inbound is asynchronous. You initiate an enrichment task, then poll until the payload is complete or the workflow reaches an error state.

Understanding data availability

  • Asynchronous population: The output JSON payload populates gradually. When you poll, fields that have not been found or processed yet will usually be null.

  • Fast data points: Some firmographic fields are often available within minutes, such as country, state or region, industry, headcount, and headcount growth.

  • Slower data points: Other data points can require more extensive analysis or different data sources and may take longer.

  • Polling strategy: Continue polling until status is complete or error. The exact fast and slow fields depend on your configured workflow.

Error handling strategy

When interacting with the API, use this default retry strategy:

  1. HTTP 502/503/504 server errors

    • Meaning: These indicate a temporary server-side issue.

    • Default action: Retry the request after some time.

  2. GET response "status": "error"

    • Meaning: The enrichment workflow identified by the executionId encountered an error during processing.

    • Default action: Retry the request after some time. If the error persists, contact Kernel support.

Rate limits

The API enforces rate limiting to ensure fair usage:

  • Rate limit: 5 requests per second per API key

  • Concurrency limit: Maximum of 50 accounts can be processing simultaneously. This can be increased upon request.

  • 429 response: When rate limit is exceeded, you will receive a 429 status code. Please wait before retrying.

Base path

Initiate asynchronous enrichment for an account

post

Input Data Requirements:

  • salesforceId (string): 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).

  • force (boolean, optional): When true, bypasses the previously enriched check and starts a fresh enrichment.

  • 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

API key for authentication

Body

Request body for initiating inbound enrichment

or
Responses
200

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

application/json

Successful response from POST enrichment endpoint

statusany ofRequired
const: startingOptional

New enrichment workflow has been initiated

Example: starting
or
const: cachedOptional

Account was recently enriched (within 14 days)

Example: cached
or
const: in_progressOptional

Enrichment is in progress

Example: in_progress
executionIdstringRequired

Unique identifier for this enrichment job. Use this to poll for results.

Example: f47ac10b-58cc-4372-a567-0e02b2c3d479
messagestringOptional

Optional message providing additional context

Example: Account has been enriched in the last 14 days
post/api/v1/inbound/enrichment
POST /api/v1/inbound/enrichment HTTP/1.1
x-api-key: text
Content-Type: application/json
Accept: */*
Content-Length: 273

{
  "name": "Kernel",
  "website": "https://kernel.ai/",
  "linkedinUrl": "https://www.linkedin.com/company/kernelai/",
  "street": "128 City Road",
  "city": "London",
  "state": "England",
  "country": "United Kingdom",
  "legalName": "Momentum AI Ltd.",
  "force": true,
  "salesforceId": "001j000000HWb16AAD"
}
{
  "status": "starting",
  "executionId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
  "message": "Account has been enriched in the last 14 days"
}

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 returned from the POST /enrichment request

Example: f47ac10b-58cc-4372-a567-0e02b2c3d479
Header parameters
x-api-keystringRequired

API key for authentication

Responses
200

Enrichment status and results. The response includes dynamic fields based on your client configuration. Salesforce ID can be included as an output field when configured.

application/json
or
get/api/v1/inbound/enrichment
GET /api/v1/inbound/enrichment?executionId=f47ac10b-58cc-4372-a567-0e02b2c3d479 HTTP/1.1
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