Person language
POST https://api.kingminos.com/v1/person/language
Can we engage this person in English — and if not, in what language? Outbound sequences, ad targeting and localized campaigns read the answer.
Send a person: email, linkedin_url, or both (top level or under person). You get back:
- english: whether English works (
yes,likely,unconfirmedorunknown); - recommended_language: the ISO 639-1 code to engage in;
- local_language: the strongest non-English language, for localized sequences and ads;
- languages: every candidate, ranked, with the evidence behind it.
first_name and last_name are match-only. They only reject a profile that belongs to someone else (person_mismatch). A name never infers, scores or steers a language.
person.language answers for API tenant keys (osr_…). It does not stamp Salesforce Contacts or Leads.
curl 'https://api.kingminos.com/v1/person/language' \ -H 'Authorization: Bearer <your-key>' \ -H 'Content-Type: application/json' \ -d '{ "linkedin_url": "https://www.linkedin.com/in/example", "first_name": "Anna", "last_name": "Schmidt", "routing": { "path": "balance" } }'Paths and price
Section titled “Paths and price”You pay for what the vendors return. Misses, vendor errors and unconfigured sources cost 0. Only routing.path is read.
routing.path |
What it does | Max credits |
|---|---|---|
speed |
One profile read, then one quick language judge (0 credits). No fallback. | 1 |
balance (default) |
LeadMagic, AI Ark and Findymail in order. Stops once listed languages land. | 3 |
accuracy |
Every structured source with no early stop, then the language judge. | 3 |
Typical spend on balance: 1 credit for LinkedIn input, 2 for email input. Any other routing.path (including coverage and legacy aliases such as auto and value) returns 400 invalid_routing.
Every path is capped at 10 seconds from the start of the request. A call that was sent to a vendor and then timed out still bills.
Your own keys: vendor keys you store in Vendor keys take precedence and bill the same credits.
What comes back
Section titled “What comes back”| Field | Meaning |
|---|---|
result.detected |
false when no language evidence was found at all. |
result.english |
yes: English evidence at medium or high. likely: only low English evidence. unconfirmed: other languages found, no English. unknown: nothing detected. It is never “no”. |
result.recommended_language |
ISO 639-1 code. English whenever english is yes, otherwise the strongest other language. Medium or high only. |
result.local_language |
Strongest non-English language. Medium or high only. |
result.languages |
Every candidate, ranked: code, name, confidence, level, evidence[]. Low guesses appear only here. |
result.flags |
See below. |
result.person |
The matched profile, or null. |
Confidence is a heuristic score, not a calibrated probability. Levels: high is 0.75 or more, medium is 0.5 or more, low is under 0.5.
answer.summary reads as the answer, for example English: yes (high). Local language: German (high).
Outcomes:
| Result | answer.outcome / reason |
es_decision |
Credits |
|---|---|---|---|
| A medium or high recommendation | hit / exact_one |
hit |
what ran |
| Only low evidence | no_decision / ambiguous |
ambiguous |
what ran |
| Nothing found | no_decision / zero_hits |
miss |
0 |
| Profile belongs to someone else | no_decision / person_mismatch |
miss |
0 |
| Every vendor errored or timed out | no_decision / provider_error |
error |
0 |
| No vendor could run | no_decision / compliance_blocked, status_down, max_credits_reached or not_configured |
noop |
0 |
Stamp rule: write recommended_language only on a billed hit when answer.confidence meets your acceptance floor (balance paths expect medium+) and neither conflicting_signals nor unconfirmed_identity is flagged. See GET /v1/recipes/guidance.
Signals
Section titled “Signals”Strongest first:
- Language use: prose the person wrote on their profile. Headlines and job titles count only for non-English.
- Listed languages: the languages listed on the profile.
- LinkedIn locale settings.
- Location country: location alone never reaches
high. Minority and regional languages are never candidates. - Support-only: company languages and the work-email country domain. They add weight to a language that already has evidence and never create one.
Agreement between independent sources adds weight. English prose may make english yes; it never erases local_language. Profile text is used in-process and never returned.
| Flag | Meaning |
|---|---|
weak_signals |
Every candidate is low. |
multilingual_country |
The location has several official languages (CH, BE, CA, IN, LU, SG, ZA…). |
conflicting_signals |
Two equally strong languages from disjoint evidence. Do not stamp. |
unconfirmed_identity |
You sent a name but the profile carries none. Do not stamp. |
Answers are cached for 30 days, per path. A repeat call replays with usage.cached: true at 0 credits and no vendor call. An answer is not cached when a source errored, timed out or was skipped, when compliance is set, or when your own vendor key answered.
To force a fresh run, send one of:
skip_cache: true;X-Router-Cache: bypass;Cache-Control: no-cache.
DELETE /v1/subjects/email:<address> or li:<slug> erases cached answers.
Errors
Section titled “Errors”400 validation_failed with one of these reasons:
email_or_linkedin_requiredinvalid_linkedin_url
Also 400 invalid_routing. Business misses stay HTTP 200.