Skip to main content
GET
/
v1
/
contacts
/
:id
Get Contact
curl --request GET \
  --url https://api.example.com/v1/contacts/:id
{
  "data": {
    "id": "<string>",
    "first_name": "<string>",
    "last_name": "<string>",
    "full_name": "<string>",
    "email": "<string>",
    "phone": "<string>",
    "job_title": "<string>",
    "company": "<string>",
    "related_company_id": "<string>",
    "linkedin_url": "<string>",
    "priority": 123,
    "tags": [
      {}
    ],
    "custom_fields": {},
    "created_date": "<string>",
    "updated_date": "<string>",
    "recent_notes": [
      {}
    ],
    "open_tasks": [
      {}
    ],
    "open_deals": [
      {}
    ]
  }
}

Request

Path Parameters

id
string
required
Contact UUID

Query Parameters

include
string
Optional comma-separated list of related resources to embed in the response. Accepts any of notes, tasks, deals, or * for all. When omitted, only the contact row is returned. One round-trip, no N+1.
  • include=notes → top 3 most recent notes in recent_notes[]
  • include=tasks → top 3 open tasks in open_tasks[]
  • include=deals → top 3 most recently-updated deals where this contact is the primary in open_deals[]
  • include=* → all three

Headers

Authorization: Bearer wbk_your_api_key_here

Response

Self-healing names: first_name / last_name / full_name are always populated in the response, even for legacy rows where the DB has only full_name. The server derives the missing pieces on read via the same rules documented on Data Integrity.
data
object
The contact object (plus optional embedded resources when include= is set).
# Basic — contact only
curl https://data.leadlex.com/functions/v1/api-gateway/v1/contacts/123e4567-e89b-12d3-a456-426614174000 \
  -H "Authorization: Bearer wbk_your_api_key_here"

# One-call agent context — contact + recent notes + open tasks + open deals
curl "https://data.leadlex.com/functions/v1/api-gateway/v1/contacts/123e4567-e89b-12d3-a456-426614174000?include=notes,tasks,deals" \
  -H "Authorization: Bearer wbk_your_api_key_here"

Example Response (with ?include=notes,tasks,deals)

{
  "data": {
    "id": "123e4567-e89b-12d3-a456-426614174000",
    "first_name": "Jane",
    "last_name": "Doe",
    "full_name": "Jane Doe",
    "email": "jane@example.com",
    "phone": "+1234567890",
    "job_title": "General Counsel",
    "company": "Acme Legal",
    "related_company_id": "abc…",
    "priority": 1,
    "tags": ["VIP", "Q2-target"],
    "created_date": "2026-01-15T10:00:00Z",
    "updated_date": "2026-02-24T14:30:00Z",
    "recent_notes": [
      { "id": "n1", "title": "Intro call", "note_type": "call", "created_date": "2026-02-20T14:00:00Z" }
    ],
    "open_tasks": [
      { "id": "t1", "title": "Send proposal", "status": "pending", "priority": "high", "due_date": "2026-03-01" }
    ],
    "open_deals": [
      { "id": "d1", "name": "Acme Legal — Q2 retainer", "stage": "proposal", "estimated_value": 85000 }
    ]
  }
}

Errors

StatusCodeDescription
401invalid_keyInvalid API key
403insufficient_permissionsMissing read permission
404not_foundContact not found or not in your workspace
429rate_limitedRate limit exceeded

Example 404 Response

{
  "error": {
    "code": "not_found",
    "message": "Contact not found"
  }
}
You can only access contacts within your own workspace. Attempting to retrieve a contact from another workspace will return a 404 error.