MisarMisar Docs
MisarMailMisarBlogMisarReachMisarPostMisarDevMisarCoderMisarSEOMisar PlatformMisar SSO
SDKs

Swift SDK

Install and use the MisarReach Swift SDK — lead finder, SSE job streaming, deals/pipeline CRM, and multi-channel outreach.

Official Swift SDK for MisarReach — lead finder (23 sources), multi-channel outreach, and CRM (deals, pipeline, sales agents). Authenticates with an mrk_ API key against https://api.misar.io/reach/api.

Install

Swift Package Manager:

.package(url: "https://github.com/misarai/misarreach-swift", from: "1.0.0")

Then add "MisarReach" to your target dependencies.

Configure

import MisarReach

let client = MisarReachClient(apiKey: "mrk_...")

Lead search + SSE stream

// Start an async lead search
let job = try await client.leads.search(["query": "saas founders", "limit": 25])
let jobId = job["jobId"] as! String

// Stream job progress over Server-Sent Events
try await client.leads.streamJob(jobId: jobId) { event in
    switch event.event {
    case "progress": print("found:", event.data["total_found"] ?? 0)
    case "complete": print("done")
    case "error":    print("error:", event.data["error"] ?? "")
    default:         break
    }
}

Deals & channels

_ = try await client.deals.create(["leadEmail": "cto@acme.com", "value": 5000])
let pipeline = try await client.pipeline.get()

let channels = try await client.channels.status()
_ = try await client.channels.connectSms(["number": "+1..."])

Resources

leads · ads · autopilot · campaigns · channels · contacts · conversations · deals · pipeline · salesAgent · settings · workspaces.

Errors

Throws MisarReachError:

  • .apiError(status:message:code:) — non-2xx (401, 403, 404, 4xx, 5xx)
  • .rateLimit(message:balance:freeRemaining:upgrade:) — HTTP 429
  • .networkError(message:) — transport failure / retries exhausted

Retryable statuses (429, 500, 502, 503, 504) are retried with exponential backoff (maxRetries, default 3).

See the API Reference and SSE stream.