Skip to main content
POST
/
enrich
/
profile
Comprehensive profile dossier for a person
curl --request POST \
  --url https://api.lava.so/v1/enrich/profile \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "email": "<string>",
  "linkedin_url": "<string>",
  "name": "<string>",
  "company": "<string>",
  "phone": "<string>",
  "twitter_url": "<string>",
  "github_url": "<string>",
  "instagram_handle": "<string>",
  "include_connected_crms": true
}
'
{
  "profile": {
    "name": "<string>",
    "first_name": "<string>",
    "last_name": "<string>",
    "title": "<string>",
    "company": "<string>",
    "company_domain": "<string>",
    "email": "<string>",
    "linkedin_url": "<string>",
    "phone": "<string>",
    "location": "<string>",
    "twitter_url": "<string>",
    "github_url": "<string>",
    "bio": "<string>",
    "twitter": {
      "handle": "<string>",
      "recent_posts": [
        "<string>"
      ],
      "bio": "<string>",
      "followers": 123
    },
    "github": {
      "handle": "<string>",
      "recent_posts": [
        "<string>"
      ],
      "bio": "<string>",
      "followers": 123
    },
    "instagram": {
      "handle": "<string>",
      "recent_posts": [
        "<string>"
      ],
      "bio": "<string>",
      "followers": 123
    },
    "provenance": {},
    "confidence": 123
  },
  "narrative": "<string>",
  "citations": [
    {
      "section": "<string>",
      "source_id": "<string>",
      "url": "<string>"
    }
  ],
  "sources_failed": [
    {
      "provider": "<string>",
      "reason": "<string>"
    }
  ],
  "available_connections": [
    "<string>"
  ],
  "cost": {
    "total": "<string>",
    "markup": "<string>",
    "breakdown": {}
  }
}

Documentation Index

Fetch the complete documentation index at: https://lava.so/docs/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

Bearer token authentication used for standard API calls. Format: 'Bearer YOUR_API_KEY'

Body

application/json

Person identifiers for /v1/enrich/contact and /v1/enrich/profile. At least one strong identifier (email, linkedin_url, phone, twitter_url, github_url, instagram_handle) OR name+company is required. Domain-only or company-only input returns 400.

email
string | null
linkedin_url
string | null
name
string | null
company
string | null
phone
string | null
twitter_url
string | null

Twitter/X profile URL. When supplied, /profile additionally fans out to Apify Twitter scraper.

github_url
string | null

GitHub profile URL. When supplied, /profile additionally fans out to Apify GitHub scraper.

instagram_handle
string | null

Instagram handle (with or without @ prefix). When supplied, /profile additionally fans out to Apify Instagram scraper.

include_connected_crms
boolean | null

Opt-in flag for adding the caller's connected CRMs (HubSpot/Folk/Affinity) to the fanout. Only adapters for services the caller has actually connected are added; opt-in does not fan out to the universe of CRMs.

Response

Synthesized profile with structured fields, narrative, citations, and per-field provenance. profile is null when the synthesizer's confidence is below threshold — markup is still charged.

profile
object
required

Comprehensive profile record. Subsumes the MergedContact shape plus a public bio and per-platform social profile blocks.

narrative
string | null
required
citations
object[]
required
sources_failed
object[]
required
available_connections
string[]
required
cost
object
required

Cost breakdown returned on every successful or no-match response. markup is the flat lava-enrich fee; breakdown lists each upstream provider's cost as reported by its adapter; total is markup + sum(breakdown).