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 GET endpoints. No SDK required, no dashboard step.
Auth
One custom ApiKey header. No OAuth flow, no session.
Response
JSON on success, plain text on error, documented status codes.
Provenance
X-Data-Source and X-Fetched-At on 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.

GET /v1/people/profile 200 OK
{
  "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 */ ]
}
GET /v1/companies/details 200 OK
{
  "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 /v1/people/profile
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.txt
Read 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.yaml
Read 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.md
Agent workflows →

Usage-based, per record

One credit per answered lookup. Malformed identifiers, auth failures and rate limits are free.

See full pricing →

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.

Talk to us

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.