get_profile 4 credits

Fetch one person's LinkedIn profile. identifier accepts a profile URL, the slug after /in/ (e.g. 'williamhgates'), or a urn:li:fsd_profile URN; URLs are cleaned automatically. Always returns the overview (name, headline, location, current position, follower counts) plus up to 2 requested sections from about|experience|education|skills at no extra cost; each section beyond 2 adds 2 credits (max 4 sections). Costs 4 credits base. If you only have a name, use search_people first; this tool does not search. Results from search_people with is_anonymous=true cannot be fetched here; treat them as 'someone matching this exists' and stop. Companies belong to get_company.

Parameters

ParamRequiredTypeDescription
identifieryesstringProfile URL, slug (after /in/), or urn:li:fsd_profile URN.
sectionsnoarrayExtra profile sections. First 2 are included in the base price.
freshnessnostringrecent (default) serves cached data from the last few hours when available; realtime forces a live fetch for +2 credits (refunded if we fall back to cached data).
max_creditsnointegerSpend ceiling for this one call. The call is rejected (nothing charged) if its quote exceeds this. Only the quote is ever reserved, never this ceiling.

REST

GET /v1/profiles · auth: required · metered: true

curl "https://api.veezee.io/v1/profiles?identifier=williamhgates" \
  -H "Authorization: Bearer $VEEZEE_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)"

MCP

{
  "method": "tools/call",
  "params": {
    "name": "get_profile",
    "arguments": {
      "identifier": "williamhgates"
    }
  }
}

Input examples

By slug, overview only

{
  "identifier": "williamhgates"
}

By URL with work history and education

{
  "identifier": "https://www.linkedin.com/in/williamhgates",
  "sections": [
    "experience",
    "education"
  ]
}

Live fetch by URN

{
  "identifier": "urn:li:fsd_profile:ACoAAA8BYqEBCGLg_vT_ca6mMEqkpp9nVffJ3hc",
  "freshness": "realtime"
}

Output

Returns a person envelope. Full field list: /docs/fields#person.

Errors

REST returns application/problem+json; MCP returns the same content as an error result. message is written as the next-turn instruction.

CodeHTTP statusRetriableMeaning
INVALID_INPUT400noA parameter failed validation. Check param and message for what to fix.
NOT_FOUND404noNothing matches the given identifier or URL.
UNAUTHORIZED401noMissing, invalid, or revoked API key.
PROVISION_REQUIRED401noNo key was sent and none is on file. Call provision first.
INSUFFICIENT_CREDITS402noYour balance can't cover this call's quote. Check get_usage or add credits.
QUOTE_EXCEEDS_MAX_CREDITS402noThe call's quote is higher than the max_credits you set. Nothing was charged.
IDEMPOTENCY_KEY_REQUIRED400noThis is a metered call; send an Idempotency-Key header.
IDEMPOTENCY_KEY_REUSED409noThat Idempotency-Key was already used with different arguments. Use a new key for a new call.
CONCURRENCY_LIMIT429yesToo many calls in flight for this key's plan. Wait for one to finish.
RATE_LIMITED429yesToo many calls per minute for this key's plan. Back off and retry.
TRIAL_CAP_EXCEEDED403noA trial-only limit was hit (concurrency, rate, search size, or realtime fetches).
BUDGET_EXHAUSTED503noA configured spend budget has been used up.
UPSTREAM_UNAVAILABLE502yesLinkedIn data wasn't reachable. Safe to retry.
PAYLOAD_TOO_LARGE413noThe request or response exceeded the size limit.
ORIGIN_FORBIDDEN403noThis request's origin isn't allowed to call the API.
INTERNAL500yesSomething failed on our side. Safe to retry.