Company resolve
POST https://api.kingminos.com/v1/company/resolve
Send what you have. Typical caller input is an email. You can also send domain or website. Name-only input (no email, domain, or website) is no_decision / no_domain and does not search.
curl 'https://api.kingminos.com/v1/company/resolve' \ -H 'Authorization: Bearer <your-key>' \ -H 'Content-Type: application/json' \ -d '{ "email": "contact@outboundsync.com", "external_ref": "account-demo-1" }'What comes back
Section titled “What comes back”The envelope is schema version 2. Automations that write to a CRM should branch on these layers:
| Layer | Fields | Use |
|---|---|---|
| Control | answer.outcome, es_decision, answer.confidence |
Whether to stamp (see confidence floors). |
| Explain | answer.summary, sources |
Humans and logs. Not control flow. |
| Audit | trace when X-Router-Explain: full |
Debug only. |
answer.outcome on this capability is resolved, resolved_without_primary_id, or no_decision.
es_decision is the SFDC / stamp-safe branch: hit, miss, ambiguous, error, noop, or reject.
resolved→hitonly when a safe primary ZoomInfo company id is present (result.zoominfo_company_id).resolved_without_primary_id→miss. Do not stamp an id. A LeadMagic-only or websearch-only hit lands here.- Name-only input →
no_decision. Do not stamp a primary id from a vendor name match.
A websearch name may arrive on miss. Fill Account Name from result.company_name when it is present and answer.confidence meets your acceptance floor. result.company_domain is optional hygiene — never clobber a good domain.
Stamp rule: compare answer.confidence (low, medium, or high) to the path default floor (speed / coverage: low; balance: medium+; accuracy: high). min_confidence on the request overrides the default. Below-floor answers return blank result fields; candidates stay in evidence. Even low is usable and close to production-grade — less independent corroboration, not junk. See GET /v1/recipes/guidance.
Business misses stay HTTP 200.
Operator
Section titled “Operator”Some domains are a product, not the company behind it. fizzy.do, basecamp.com, and hey.com are all run by 37signals. answer.operator and result.operator name that company without changing result.company_name:
"operator": { "operator_name": "37signals", "operator_domain": "37signals.com", "operator_source": "copyright_footer", "operator_confidence": "high", "operator_zoominfo_company_id": "24434238"}nullwhen the site’s operator is the brand itself, or no ownership claim lines up with a domain linked on the page.- Found from the homepage: a
© 2025 X LLCcopyright line, “from X” in the title, “X, makers of …”, footer links. Website-builder, hosting, and agency credits (“Powered by Shopify”, “Website by …”) don’t count. operator_zoominfo_company_idcomes from a free ZoomInfo search onoperator_domain. It isnullwhen ZoomInfo isn’t part of the call.- Costs 0 credits. It never changes
company_name,es_decision, oranswer.confidence. Use it to match the parent account, not as the Account Name.
Routing
Section titled “Routing”Omit routing.path to use balance. OutboundSync callers set path explicitly.
path |
What it does |
|---|---|
speed |
Cheap names. Default reservation 2. No miss-only paid name hops. |
balance |
Default. Websearch first, then ZoomInfo, then LeadMagic. Reservation 6. |
accuracy |
Gated corroboration. |
coverage |
Fill more empties. |
Legacy request aliases (auto, value, name_only, fast) expand to the paths above; responses echo canonical path names. routing.preset is a back-compat alias (name_only → speed). { "preset": "zi_stamp" } is optional ZoomInfo-first. Prefer path on new callers. confidence is not a path.
Default linear order on balance is [websearch, zoominfo, leadmagic] with allow_fallbacks and free_first: false. A websearch name is not terminal while ZoomInfo remains in the effective order.
House key vs vendor keys
Section titled “House key vs vendor keys”LeadMagic, Wiza, and Findymail are house-key vendors. KingMinos can run their company-search hops without you storing those keys.
ZoomInfo is not a house key on this site. To stamp a ZoomInfo company id you store vendor keys — see Vendor keys. Without those keys, a good LeadMagic or websearch name is resolved_without_primary_id.
Websearch is house-only. You cannot PUT a websearch key.
Prospeo, Apollo, People Data Labs, HG Insights, Enrich-CRM, and Lemlist are Your Keys (BYOK) and off every default path. They never run on speed, balance, accuracy, or coverage; force them with routing.only: ["prospeo"] / ["apollo"] / ["peopledatalabs"] / ["hginsights"] / ["enrichcrm"] / ["lemlist"] (or an explicit routing.order). Without a stored key those calls fail 400 prospeo_credentials_required / 400 apollo_credentials_required / 400 peopledatalabs_credentials_required / 400 hginsights_credentials_required / 400 enrichcrm_credentials_required / 400 lemlist_credentials_required. Apollo is firmographic only (GET /organizations/enrich); People Data Labs enriches by website (GET /company/enrich, min_likelihood 6); HG Insights enriches by domain (POST /companies/enrich, firmographics); Enrich-CRM enriches by domain (GET /api/ingress/v4/firmographic, apiId query auth); Lemlist is an opt-in company.resolve hop (POST /api/database/companies by domain). The website filter id is unverified until a live key exists.
The body accepts nullable email, domain, website, and name, plus:
external_ref— client correlation key, echoed on the run.routing—path, optionalorder,only,max_provider_credits,allow_fallbacks.schema_version— pin"2"or omit.dry_run— accepted; writers stay skipped.
Email-shaped domain values are normalized (the part after @).
Explain and cache
Section titled “Explain and cache”Prefer X-Router-Explain: minimal on CRM callouts — it is an alias of the clean envelope. Use full when you need trace.attempts.
Idempotency-Key replays a completed run. Rotating that header is what forces a new decision; explain flags do not.