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) — carriesretry_afterReachUpgradeRequiredError(429 withupgrade: true)ReachAPIError(any other non-2xx) — carriesstatus,code,errorReachNetworkError(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)
| File | Size | Uploaded | |
|---|---|---|---|
| misar_reach-1.0.0.tar.gz | 14.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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