Skip to main content

MisarReach Python SDK

Official Python SDK for the MisarReach Developer API — lead finder (23 sources), multi-channel outreach, deals/pipeline CRM, autopilot, and the AI sales agent.

Full reference: docs.misar.io/reach · OpenAPI: openapi/reach.openapi.json.

Install

pip install misar-reach

Auth

Use a reach developer key (mrk_…). It is validated only against the reach-owned key table, so a key from any other Misar product is rejected. Sent as Authorization: Bearer mrk_….

Quick start

from misar_reach import MisarReachClient

client = MisarReachClient("mrk_your_key")

# Start an async lead search, then poll or stream the job
job = client.leads.search({"query": "SaaS founders in Berlin", "useAI": True})
for evt in client.leads.stream_job(job["jobId"]):
    print(evt.event, evt.data)          # progress … then complete / error

leads = client.leads.list(page=1, limit=50)

# CRM
deal = client.deals.create({"leadEmail": "cto@acme.com", "value": 5000})
board = client.pipeline.get()
client.pipeline.move({"dealId": deal["id"], "newStage": "interested"})

# Channels
client.channels.status()
client.channels.connect("whatsapp", {"phoneNumberId": "…", "accessToken": "…"})

Async

Every method has an a-prefixed async twin:

import asyncio
from misar_reach import MisarReachClient

async def main():
    client = MisarReachClient("mrk_your_key")
    res = await client.leads.asearch({"query": "fintech CFOs"})
    async for evt in client.leads.astream_job(res["jobId"]):
        print(evt.event, evt.data)

asyncio.run(main())

Resources

Accessor Coverage
client.leads search · discover · enrich · verify · score · list · export · job status + SSE stream · feedback · recommendations · preview_message · send_to_campaign · add_to_segment · companies · lists · saved_searches · scoring_rules · account · config
client.deals list · create · update · delete · activity · suggestions
client.pipeline get board · move deal stage
client.channels status · update_status · opt_in_links · connect(whatsapp/sms/telegram/twitter/instagram/facebook/discord) · push_subscribe / push_unsubscribe
client.autopilot start · runs · get · status · set_status
client.sales_agent config · update_config · actions · conversations · process
client.campaigns list · create · get · update · delete · enqueue
client.contacts list · create · get · update · delete · bulk · import · segments · stats
client.conversations list · get(email)
client.settings sender_address · set_sender_address
client.workspaces list · create · members · add_member · remove_member
client.ads linkedin_company_audience

Errors

All non-2xx responses raise a subclass of ReachError:

  • ReachAuthError (401/403)
  • ReachNotFoundError (404)
  • ReachRateLimitError (429) — carries retry_after
  • ReachUpgradeRequiredError (429 with upgrade: true)
  • ReachAPIError (any other non-2xx) — carries status, code, error
  • ReachNetworkError (transport failure)

Retries with exponential backoff are automatic for 429/5xx (configurable via max_retries).

License

MIT

Metadata

Release files for misar-reach 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for misar-reach 1.0.0
File Size Uploaded
misar_reach-1.0.0.tar.gz 14.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for misar-reach 1.0.0
File Interpreter ABI Platform
misar_reach-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 27.8 kB

Release files / misar_reach-1.0.0.tar.gz

Download URL misar_reach-1.0.0.tar.gz
Size 14.6 kB
Tags Source
SHA-256 checksum
How to use checksums
789a1c7374c945ef6c13e2a6c2f4a94ade08d956a0481887dfc8768169b0a4a8
BLAKE2b-256 checksum
How to use checksums
fe5a4d35febcf86e8a9540adc98a1ac0e083e0d5b5ddedb2936e1bd547498c7a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 18, 2026.

Transparency log

Release files / misar_reach-1.0.0-py3-none-any.whl

Download URL misar_reach-1.0.0-py3-none-any.whl
Size 13.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
71b75ba8b9e87ceafaa52ea6aee56bd4bee94b5791fd6f4d13a0dc7edbed691d
BLAKE2b-256 checksum
How to use checksums
c2a7a033db9b8e22e2db79244a4b9edfd4594ebd3ed74967b827bef7df626fe4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 18, 2026.

Transparency log

Release history Release notifications | RSS feed

5.0.3

2 release files

5.0.0

2 release files

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page