curl --fail-with-body --max-time 30 "https://api.freshtalent.ai/v1/companies/anduril" \
-H "Authorization: Bearer $FRESHTALENT_API_KEY"
const key = "anduril";
const response = await fetch(
`https://api.freshtalent.ai/v1/companies/${encodeURIComponent(key)}`,
{ signal: AbortSignal.timeout(30_000), headers: { Authorization: `Bearer ${process.env.FRESHTALENT_API_KEY}` } },
);
if (!response.ok) throw new Error(`${response.status}: ${await response.text()}`);
const body = await response.json();
console.log(body.data.company.name, body.data.current.length, body.data.leavers.length);
import json
import os
from urllib.parse import quote
from urllib.request import Request, urlopen
key = "anduril"
url = "https://api.freshtalent.ai/v1/companies/" + quote(key, safe="")
request = Request(
url,
headers={"Authorization": f"Bearer {os.environ['FRESHTALENT_API_KEY']}"},
)
with urlopen(request, timeout=30) as response:
body = json.load(response)
print(body["data"]["company"]["name"])
{
"data": {
"company": {
"key": "anduril",
"name": "Anduril Industries",
"linkedin_url": "https://www.linkedin.com/company/anduril-industries",
"current_count": 1,
"alum_count": 0,
"role_mix": {
"forward-deployed-engineer": 1
}
},
"current": [
{
"slug": "derek-morrow",
"full_name": "Derek Morrow",
"headline": "FDE, Anduril",
"linkedin_url": "https://www.linkedin.com/in/derek-morrow",
"profile_picture_url": null,
"location": {
"city": "New York",
"region": "New York",
"country": "United States"
},
"is_open_to_work": false,
"is_between_roles": false,
"between_roles_since": null,
"is_exploring": false,
"exploring_since": null,
"exploring_reasons": [],
"exploring_interpretation": null,
"connections_count": 500,
"followers_count": null,
"last_enriched_at": "2026-09-07T10:00:00.000Z",
"dq_flags": [],
"github": null,
"x": null,
"positions": [
{
"company": "Anduril",
"company_url": "https://www.linkedin.com/company/anduril-industries",
"title": "FDE",
"started_at": "2025-01",
"ended_at": null,
"tenure_months": 14,
"is_current": true,
"role_family": "forward-deployed-engineer"
}
],
"education": [],
"skills": [],
"languages": [],
"match": {}
}
],
"leavers": []
}
}
Get company orbit
Get company metadata, role mix, current people, and recent leavers.
GET
/
companies
/
{key}
curl --fail-with-body --max-time 30 "https://api.freshtalent.ai/v1/companies/anduril" \
-H "Authorization: Bearer $FRESHTALENT_API_KEY"
const key = "anduril";
const response = await fetch(
`https://api.freshtalent.ai/v1/companies/${encodeURIComponent(key)}`,
{ signal: AbortSignal.timeout(30_000), headers: { Authorization: `Bearer ${process.env.FRESHTALENT_API_KEY}` } },
);
if (!response.ok) throw new Error(`${response.status}: ${await response.text()}`);
const body = await response.json();
console.log(body.data.company.name, body.data.current.length, body.data.leavers.length);
import json
import os
from urllib.parse import quote
from urllib.request import Request, urlopen
key = "anduril"
url = "https://api.freshtalent.ai/v1/companies/" + quote(key, safe="")
request = Request(
url,
headers={"Authorization": f"Bearer {os.environ['FRESHTALENT_API_KEY']}"},
)
with urlopen(request, timeout=30) as response:
body = json.load(response)
print(body["data"]["company"]["name"])
{
"data": {
"company": {
"key": "anduril",
"name": "Anduril Industries",
"linkedin_url": "https://www.linkedin.com/company/anduril-industries",
"current_count": 1,
"alum_count": 0,
"role_mix": {
"forward-deployed-engineer": 1
}
},
"current": [
{
"slug": "derek-morrow",
"full_name": "Derek Morrow",
"headline": "FDE, Anduril",
"linkedin_url": "https://www.linkedin.com/in/derek-morrow",
"profile_picture_url": null,
"location": {
"city": "New York",
"region": "New York",
"country": "United States"
},
"is_open_to_work": false,
"is_between_roles": false,
"between_roles_since": null,
"is_exploring": false,
"exploring_since": null,
"exploring_reasons": [],
"exploring_interpretation": null,
"connections_count": 500,
"followers_count": null,
"last_enriched_at": "2026-09-07T10:00:00.000Z",
"dq_flags": [],
"github": null,
"x": null,
"positions": [
{
"company": "Anduril",
"company_url": "https://www.linkedin.com/company/anduril-industries",
"title": "FDE",
"started_at": "2025-01",
"ended_at": null,
"tenure_months": 14,
"is_current": true,
"role_family": "forward-deployed-engineer"
}
],
"education": [],
"skills": [],
"languages": [],
"match": {}
}
],
"leavers": []
}
}
Get a company’s metadata and a bounded orbit of people. The path value can be a FreshTalent company key, an exact company name, or a LinkedIn company URL containing the value. URL-encode names or URLs before placing them in the path.
The response contains up to 40
current people and up to 40 leavers. These arrays are not paginated and are not guaranteed to contain every person at the company. Each person row has the full Person field shape but only the two most recent/current positions are hydrated. See Person response shapes.
string
required
Company key, exact company name, or a LinkedIn company URL. The Gateway decodes the path value before lookup.
curl --fail-with-body --max-time 30 "https://api.freshtalent.ai/v1/companies/anduril" \
-H "Authorization: Bearer $FRESHTALENT_API_KEY"
const key = "anduril";
const response = await fetch(
`https://api.freshtalent.ai/v1/companies/${encodeURIComponent(key)}`,
{ signal: AbortSignal.timeout(30_000), headers: { Authorization: `Bearer ${process.env.FRESHTALENT_API_KEY}` } },
);
if (!response.ok) throw new Error(`${response.status}: ${await response.text()}`);
const body = await response.json();
console.log(body.data.company.name, body.data.current.length, body.data.leavers.length);
import json
import os
from urllib.parse import quote
from urllib.request import Request, urlopen
key = "anduril"
url = "https://api.freshtalent.ai/v1/companies/" + quote(key, safe="")
request = Request(
url,
headers={"Authorization": f"Bearer {os.environ['FRESHTALENT_API_KEY']}"},
)
with urlopen(request, timeout=30) as response:
body = json.load(response)
print(body["data"]["company"]["name"])
{
"data": {
"company": {
"key": "anduril",
"name": "Anduril Industries",
"linkedin_url": "https://www.linkedin.com/company/anduril-industries",
"current_count": 1,
"alum_count": 0,
"role_mix": {
"forward-deployed-engineer": 1
}
},
"current": [
{
"slug": "derek-morrow",
"full_name": "Derek Morrow",
"headline": "FDE, Anduril",
"linkedin_url": "https://www.linkedin.com/in/derek-morrow",
"profile_picture_url": null,
"location": {
"city": "New York",
"region": "New York",
"country": "United States"
},
"is_open_to_work": false,
"is_between_roles": false,
"between_roles_since": null,
"is_exploring": false,
"exploring_since": null,
"exploring_reasons": [],
"exploring_interpretation": null,
"connections_count": 500,
"followers_count": null,
"last_enriched_at": "2026-09-07T10:00:00.000Z",
"dq_flags": [],
"github": null,
"x": null,
"positions": [
{
"company": "Anduril",
"company_url": "https://www.linkedin.com/company/anduril-industries",
"title": "FDE",
"started_at": "2025-01",
"ended_at": null,
"tenure_months": 14,
"is_current": true,
"role_family": "forward-deployed-engineer"
}
],
"education": [],
"skills": [],
"languages": [],
"match": {}
}
],
"leavers": []
}
}
company.name and company.linkedin_url can be null. current_count and alum_count are graph counts and can be larger than the returned arrays. role_mix maps each non-null recorded role family to its relationship count. current includes current positions; leavers includes people with an ended, non-current position. Counts and returned arrays use different predicates: alum_count includes an explicitly non-current position or any recorded end date, while leavers requires both a normalized end date and is_current: false. A person with multiple stints can qualify for both current and alumni groups.
Response schema
| Field | Type | Meaning |
|---|---|---|
data.company | object | Company summary |
data.company.key | string | Company key |
data.company.name, data.company.linkedin_url | string or null | Display identity |
data.company.current_count, data.company.alum_count | integer | Visible graph counts, not array lengths |
data.company.role_mix | object | Role-family keys mapped to integer position counts |
data.current, data.leavers | Person[] | Bounded previews, up to 40 per array; see Person response shapes |
Errors and recovery
404 not_found: no visible company matched the decoded key, exact name, or LinkedIn URL fragment. Search first with Search companies, then retry with the returnedkey.401 unauthorized: provide a valid API key inAuthorization: Bearer ....402 payment_required: restore active organization access.5xxor a transient network failure: retry this read with bounded backoff, jitter, and a timeout.429: retry this idempotentGETwith exponential backoff and jitter after slowing down. The shared Gateway limit is 300 requests per minute per client IP as the Gateway sees it. HonorRetry-After; see Rate limits.
Next steps
Create a company Target with POST /targets and{ "input": "Anduril", "kind": "company" } to monitor the company network.