Rust SDK
Install and use the async MisarReach Rust SDK — lead finder, SSE job streaming, deals/pipeline CRM, channels, autopilot, and the sales agent.
Official async Rust client for the MisarReach developer API (https://api.misar.io/reach/api). Full coverage of Lead Finder, deals & pipeline, multi-channel outreach, autopilot, sales agent, campaigns, contacts, conversations, workspaces, settings, and ads — plus the SSE lead-job stream.
Install
[dependencies]
misarreach = "1"
tokio = { version = "1", features = ["full"] }
serde_json = "1"Configure
Authenticate with an mrk_ bearer key. Every method takes and returns serde_json::Value; optional typed models live in the types module.
let client = misarreach::MisarReachClient::new("mrk_...")
.with_base_url("https://api.misar.io/reach/api")
.with_max_retries(5);Lead search + SSE stream
use serde_json::json;
#[tokio::main]
async fn main() -> Result<(), misarreach::ReachError> {
let client = misarreach::MisarReachClient::new("mrk_...");
let job = client.leads.search(json!({ "query": "SaaS founders in Berlin" })).await?;
let job_id = job["jobId"].as_str().unwrap().to_string();
// Stream job progress over Server-Sent Events
client.leads.stream(&job_id, |event| {
println!("progress: {}", event["progress"]);
}).await?;
// CRM
client.deals.create(json!({ "leadEmail": "cto@acme.com", "value": 5000 })).await?;
let status = client.channels.status().await?;
println!("{status}");
Ok(())
}Resources
leads · deals · pipeline · channels · autopilot · sales_agent · campaigns · contacts · conversations · workspaces · settings · ads.
Requests retry idempotently on 429/500/502/503/504 with exponential backoff.
Errors
All failures surface as ReachError — Api { status, message } (message extracted from the standard { "error": { "message" } } envelope), Network, or Json.
See the API Reference and SSE stream.