Person and company APIs in public beta
One request.
The whole record.
Send a LinkedIn profile or company URL to the person API or company API and get structured JSON back, with the source and age of the data on every response. Read the reference.
$ curl api.triguna.ai/v1/people/profile
- Surface
- Two authenticated
GETendpoints. No SDK required, no dashboard step. - Auth
- One custom
ApiKeyheader. No OAuth flow, no session. - Response
- JSON on success, plain text on error, documented status codes.
- Provenance
X-Data-SourceandX-Fetched-Aton every response.
One call, one complete record
Send a LinkedIn profile or company URL and receive a normalized record, with the retrieval time and origin returned alongside it in headers.
{
"entity_urn": "ACoAAAWEHIQB...",
"public_identifier": "williamhgates",
"first_name": "Bill",
"last_name": "Gates",
"headline": "Chair, Gates Foundation",
"location": { "city": "Seattle", "country_code": "US" },
"skills": ["Philanthropy", "Global Health"],
"experience": [ /* grouped by company */ ]
}
{
"company_id": "1035",
"public_identifier": "microsoft",
"company_name": "Microsoft",
"company_url": "https://www.microsoft.com",
"industries": [{ "id": "4", "name": "Software Development" }],
"staff_info": { "staff_count": 221000 },
"locations": { "headquarter": { "country": "us", "city": "Redmond" } },
"founded_on": { "year": 1975 }
}
▸ agent resolve the person behind this profile URL, then their company $ curl -sD- -H "ApiKey: $TRIGUNA_API_KEY" \ "…/v1/people/profile?profile_id=williamhgates" ↳ ACoAAAWEHIQB... Bill Gates · Chair, Gates Foundation X-Data-Source: live · X-Fetched-At: 2026-07-31T14:02:11Z · X-Credits-Charged: 1 $ curl -sD- -H "ApiKey: $TRIGUNA_API_KEY" \ "…/v1/companies/details?company_id=microsoft" ↳ 1035 Microsoft · 221,000 staff · Redmond, US X-Data-Source: store · X-Data-Age-Seconds: 3600 · X-Credits-Charged: 1 ▸ 2 credits spent. Source and age on every response.
Learn Person object reference Company object reference Identifier resolution
Built for engineers
Two authenticated GET endpoints, plain JSON responses, and predictable error semantics. No dashboard, no SDK to adopt.
GET https://api.triguna.ai/v1/people/profile
ApiKey: tg_live_••••••••
Accept: application/json
profile_id=williamhgates
include_contact_details=true
Auth
ApiKey: tg_live_••••••••
One header. No OAuth flow, no session, no dashboard step.
Surface
GET /v1/people/profile
GET /v1/companies/details
JSON on success, plain text on error, documented status codes.
▸ agent resolve this profile, then its company $ curl -H "ApiKey: $TRIGUNA_API_KEY" \ "https://api.triguna.ai/v1/people/profile?profile_id=rokafor" ↳ Rina Okafor · Staff Platform Engineer · northwind $ curl -H "ApiKey: $TRIGUNA_API_KEY" \ "https://api.triguna.ai/v1/companies/details?company_id=northwind" ↳ Northwind Systems · 184 staff · Series B ▸ source and fetched_at attached to every record
Learn Authentication Retries and Retry-After Identifiers and slugs
AI-native
Built to be called by agents, not just by people
Three GET endpoints and a plain-text contract, so a coding agent can hold the whole thing at once. No SDK to adopt and nothing to install.
The contract as one paste
Endpoints, auth, error semantics, full example responses, and the parsing rules models get wrong from priors. Paste it into Claude, Cursor or Copilot.
curl -s api.triguna.ai/llms.txtRead llms.txt →
OpenAPI 3.1 spec
Generate a typed client, or drive a tool-calling loop straight from the schema. YAML and JSON.
api.triguna.ai/v1/openapi.yamlRead the spec →
Rules worth writing down
Titles nest inside positions[], every field is nullable, and a retried
404 bills every time. Four rules keep an agent honest.
AGENTS.mdAgent workflows →
Usage-based, per record
One credit per answered lookup. Malformed identifiers, auth failures and rate limits are free.
Free
$0
Evaluation volume
Five credits on signup. No card required.
Starter
Usage-based
Per record retrieved
Both endpoints, one destination, email support.
Growth
Usage-based
Per record retrieved
Higher rate limit, priority support, invoiced billing.
Scale
Usage-based
Per record retrieved
Higher concurrency, priority resolution queue.
Enterprise
Committed volume, private deployment options, custom source ordering, and a contractual SLA.
Common questions
What does the Triguna enrichment API return?
Two GET endpoints plus a free balance check. /v1/people/profile returns a person record: identity, location, work history, education and skills. /v1/companies/details returns firmographics: identity, headquarters, size, industries, specialities and funding. Every field is nullable, and response headers tell you where the data came from and how old it is.
How is a record assembled?
The URL or slug you send is resolved to a stable identifier, retrieved live, and mapped into a consistent response shape. Every successful lookup is stored, which is what use_cache serves from and what lets us return a stored copy marked stale_fallback when a live retrieval is briefly unavailable.
What does provenance mean on a field?
Every response carries X-Data-Source (live, store, or stale_fallback), X-Fetched-At, X-Data-Age-Seconds and X-Credits-Charged as headers, so the JSON body stays purely the record. Note that X-Data-Age-Seconds is how long ago we fetched, not how old the underlying data is. Log these alongside any decision the record drove.
Is there a bulk or search endpoint?
No. Enriching N entities costs N calls. There is no search or list path: you resolve a LinkedIn URL you already have, you do not discover new ones. Alongside the two enrichment endpoints there is a free /v1/credits call for your balance.
Can an agent call Triguna directly?
Yes, it is a plain HTTP API with no SDK to adopt. Paste api.triguna.ai/llms.txt into your assistant and it has the whole contract: endpoints, auth, error semantics and the parsing rules models get wrong. There is also an OpenAPI 3.1 spec if you would rather generate a client.
Start with one request
Free credits on signup, no card required. Usage-based pricing after that.