Skip to main content

Rust SDK

The Rust SDK ships today for server-side Conduit integrations.

Status

The Rust crate is available now with a stable onboarding surface for reports, matching, webhooks, and advanced primitives. This page keeps the scope honest: use the crate for async server-side Rust services and workers, and use the REST API directly when you need an endpoint or runtime path the shipped crate does not cover yet.

Stable surface today​

  • crate name: conduit-rs
  • docs.rs crate path: conduit_rs
  • runtime: server-side Rust
  • conduit.reports().create(...)
  • conduit.reports().get(...)
  • conduit.matching().create(...)
  • conduit.matching().get(...)
  • conduit.webhooks().verify_signature(...)
  • conduit.webhooks().parse_event(...)
  • advanced stable primitives under conduit.primitives() for media, jobs, and entities

Install​

cargo add conduit-rs
  1. Build a server-side client with Conduit::builder("sk_...").
  2. Call conduit.reports().create(...) or conduit.matching().create(...).
  3. Attach a webhook endpoint for production completion.
  4. Verify the raw webhook body before parsing the event.
  5. Keep receipt.handle.wait() and receipt.handle.stream() for scripts, local development, and controlled tooling.

Quick example​

use conduit_rs::{Conduit, ReportCreate, ReportTemplate, Source, Target, WebhookEndpoint};

#[tokio::main]
async fn main() -> Result<(), conduit_rs::Error> {
let conduit = Conduit::builder("sk_...").build()?;

let receipt = conduit
.reports()
.create(
ReportCreate::new(
Source::url("https://storage.example.com/call.wav"),
ReportTemplate::GeneralReport,
Target::dominant(),
)
.webhook(WebhookEndpoint::new("https://your-app.com/webhooks/conduit")),
)
.await?;

println!("queued report job: {}", receipt.job_id);
Ok(())
}

Runtime and completion notes​

  • Source::file(...), Source::url(...), and Source::path(...) are supported in server-side Rust runtimes.
  • reports().create(...) and matching().create(...) return after upload when needed and job acceptance, not after analysis completion.
  • Source::url(...) fetches the remote file in the SDK runtime and then uploads it to Conduit.
  • Current upload-capable source helpers materialize data in memory before submission.
  • Production flows should finish on verified webhooks because report and matching jobs are asynchronous and commonly take around 150 seconds.

When to use direct API instead​

Use the REST API directly when you need:

  • an endpoint that is not exposed on the shipped Rust surface yet
  • a non-server runtime path
  • full control over raw HTTP requests or a custom integration shape

More resources​