Skip to main content

Python SDK for the Lighthouse REST API (CRM, Discovery, Reports, Documents).

Project description

Lighthouse Python SDK

Official Python client for the Lighthouse REST API. Wraps the CRM, Discovery, Reports, and Documents endpoints behind a single typed Lighthouse class.

Installation

pip install lighthouse-private-markets-sdk

Quick Start

Generate an API key at Settings → API Keys in your Lighthouse workspace.

from lighthouse import Lighthouse

client = Lighthouse("lgt_live_...")

# Who am I?
me = client.users.me()
print(me.data)

# Search your CRM
res = client.records.search(
    "company",
    filters={
        "operator": "AND",
        "conditions": [
            {"field": "domain", "operator": "contains_any", "value": ["acme.com"]}
        ],
    },
    limit=10,
)
print(res.data, res.meta)

Every method returns an APIResponse:

class APIResponse:
    data:   Any                    # response payload
    error:  Any | None             # error message if the call failed
    meta:   dict | None            # pagination/meta info (when present)
    status: int                    # HTTP status code

res.raise_for_error()              # raises LighthouseError if error is set

Authentication

The client sends Authorization: Bearer <api_key> on every request. Keep API keys secret — never ship them in client-side code.

Resources

Namespace Endpoints
client.records search / get / create / update / delete records (company, person, deal, custom objects)
client.lists list / get / create / update / delete, get_records, add_record, remove_record, share/revoke teams, update_sharing
client.notes list / get / create / delete, link_record, unlink_record
client.tasks list / get / create / update / delete
client.attributes list / get / create / update / delete, colors
client.options list / create / delete select-field options
client.views list / get / update / delete, share/revoke teams, update_sharing
client.users me, list, get
client.teams list, get
client.dashboards list / get / create / update / delete, list_widgets, create_widget, update_widget, delete_widget, widget_data, share/revoke teams
client.discovery get_attributes, search_companies, search_people, lookup_companies_by_domain, lookup_companies_by_linkedin, lookup_people_by_linkedin, get_saved_searches, get_search_results, get_locations, get_industries, get_tags, search_investors, search_organizations, search_schools
client.documents folders + files (v2): list_folders, create_folder, update_folder, delete_folder, link/unlink_folder, upload_url, finalize_file, get_file, update_file, delete_file, link/unlink_file, list_record_documents, upload() one-shot helper

Examples

Records

# Create
created = client.records.create("company", data={
    "name": "Acme",
    "domain": ["acme.com"],
})
record_id = created.data["id"]

# Update — relation fields are replaced entirely; pass the full desired array
client.records.update("company", record_id, data={"domain": ["acme.com", "acme.io"]})

# Get
client.records.get("company", record_id)

# Delete
client.records.delete("company", record_id)

Filtering with attributes

attrs = client.attributes.list(record_type="company").data
# pick a field permalink from attrs, then:
client.records.search(
    "company",
    filters={
        "operator": "AND",
        "conditions": [{"field": "headcount", "operator": "gte", "value": 50}],
    },
    sort=[{"field": "name", "direction": "asc"}],
    limit=25,
)

Lists

new_list = client.lists.create(name="Hot leads", record_type="company")
list_id = new_list.data["id"]

client.lists.add_record(list_id, record_id="…uuid…")
client.lists.get_records(list_id, limit=50)

Notes

client.notes.create(
    title="Intro call",
    content="<p>Met the founder, looking strong.</p>",
    records={"company": ["…uuid…"], "person": ["…uuid…"]},
)

Tasks

client.tasks.create(
    title="Send follow-up",
    due_date="2026-06-01",
    assigned_to=["…user_uuid…"],
    records={"company": ["…uuid…"]},
)

Discovery

# Always inspect attributes first to discover valid field keys
client.discovery.get_attributes(type="company")

# Search Lighthouse's global database
res = client.discovery.search_companies(
    filters={
        "operator": "AND",
        "conditions": [
            {"field": "company_hq_country", "operator": "contains_any", "value": ["US"]},
            {"field": "company_headcount", "operator": "between", "value": {"min": 10, "max": 200}},
        ],
    },
    limit=25,
)

# Enrich by domain / LinkedIn
client.discovery.lookup_companies_by_domain(["stripe.com", "openai.com"])

Documents

# One-shot helper handles upload-url + PUT + finalize
with open("pitch.pdf", "rb") as f:
    file = client.documents.upload(
        name="pitch.pdf",
        content=f.read(),
        content_type="application/pdf",
        sharing_status="WORKSPACE",
    )
file_id = file.data["id"]

# Attach to a record
client.documents.link_file_to_record(file_id, "company", "…uuid…")

Error handling

from lighthouse import Lighthouse, LighthouseError

client = Lighthouse("lgt_live_…")
try:
    res = client.records.search("company")
    res.raise_for_error()
    print(res.data)
except LighthouseError as e:
    print(f"API error ({e.status_code}):", e)

Low-level escape hatch

For endpoints not yet wrapped by a namespace:

res = client.request("GET", "/v1/some/new/endpoint", params={"foo": "bar"})
res = client.request("POST", "/v1/some/other", json={"hello": "world"})

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lighthouse_private_markets_sdk-0.3.1.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file lighthouse_private_markets_sdk-0.3.1.tar.gz.

File metadata

File hashes

Hashes for lighthouse_private_markets_sdk-0.3.1.tar.gz
Algorithm Hash digest
SHA256 51246007e731b9c3db1b71d4c81e8d07478f7b9057a9a241f0e110eea72211c3
MD5 0554c37bff97a450cd885ab24192391b
BLAKE2b-256 04441e311af8f6c93efb255f68590aef8ae1db43c0360a9da408bceae8441753

See more details on using hashes here.

File details

Details for the file lighthouse_private_markets_sdk-0.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for lighthouse_private_markets_sdk-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c49dad185b36144ceb467716b28ff1acd12e12dbd616d45545f6ff5666533fd0
MD5 b2751f3cd8795c323108bfc142e0a636
BLAKE2b-256 7b97d3c1b7e04eb63f9c70e88b930c3442355ba1654d5529b4d027055907095c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page