Alignment
Links one CRM record to a Kernel entity, runs the full cleaning pass against the rest of your dataset, and returns entity resolution, firmographics, parentage and the alignment outcome. A record that already has a Kernel ID keeps it unless settings.rematch_entity is set. Returns immediately with an id; poll GET /v1/alignment/{job_id} until status is completed. Tracked-usage customers only; costs no credits.
settings.rematch_entity, so duplicate groups and recommended actions stay stable across refreshes.
GET /v1/alignment/{job_id} until status is completed, or provide a webhook_url to receive a callback.external_id consumes tracked-account capacity. Accounts without an active contract fail with error_type: "not_enabled".Examples
Align a CRM record for the first time
Re-align a known record, keeping its Kernel ID
Rematch the entity because the source data changed
Request body
external_id is required. The first time Kernel sees an external_id it also needs legal_name, trading_name or website; otherwise the job fails with error_type: "identity_inputs_missing". Later calls may send external_id alone.
Sending the same record again
Fields you send are merged into the stored record: present fields overwrite, absent fields are kept.- Different input, default settings. The Kernel ID is kept. The record is re-cleaned on the merged data, so its duplicate group or recommended action can change.
alignment.drifted_identity_inputslists the identity fields that have moved since the Kernel ID was resolved. - Identical payload. Nothing is written. The record is still re-cleaned against your current dataset, reusing cached research unless
force_refreshis set. - Two jobs for the same
external_idat once. The second fails witherror_type: "alignment_in_progress".
Related endpoints
GET /v1/alignment/{job_id}— Poll for resultsPOST /v1/combined— Resolve an entity and enrich firmographics or parentage, without cleaning
Authorizations
Include your API key in the x-api-key header.
Body
Record to align. external_id identifies it in your CRM and is required.
The record to align. external_id is required; the first time Kernel sees it, at least one of legal_name, trading_name or website is required too. Identity options live under settings.
Your CRM identifier for the record to align. Echoed back on record.external_id.
1"stripe-001"
Registered legal name of the company (e.g. "Stripe, Inc.")
1"Stripe, Inc."
Primary brand or trading name (e.g. "Stripe")
1"Stripe"
Company website URL.
1"https://stripe.com"
Country name or ISO 3166-1 alpha-2 code.
1"US"
City.
1"South San Francisco"
State or province.
1"CA"
ZIP or postal code.
1"94070"
Street address.
1"354 Oyster Point Blvd"
Email address. Only the domain portion is used for matching.
1"info@stripe.com"
Phone number. Used as an additional signal for entity resolution.
1"+1 555-555-5555"
Primary incorporation/registration number. The same number can exist in more than one country — pair it with company_registration_country when known. Used to resolve the entity; the response returns the stored registration, not this value.
1"01234567"
Registry jurisdiction for company_registration_number (ISO 3166-1 alpha-2 preferred). England, Scotland, Wales, and Northern Ireland map to GB. Falls back to country when omitted.
1"GB"
LinkedIn URL for the company (e.g. "https://linkedin.com/company/stripe"). Used as an additional signal for entity resolution.
1"https://linkedin.com/company/stripe"
HTTPS URL to receive webhook callbacks when the job completes or fails. Kernel will POST the job result to this URL with an X-Kernel-Signature header for verification.
^https://"https://example.com/webhooks/kernel"

