---
title: outbound-sdk
description: One small, typed, read-only TypeScript API over outbound sending tools. Read campaigns, sequences, leads, replies, senders and results from Instantly, Smartlead and HeyReach with the same code.
---

What the three vendors share is normalized: campaigns, sequences, senders, leads, messages, replies and stats mean the same thing on each. Everything else a vendor can report is still there through a typed catalog of its own reads. No method writes to a vendor tool, it stores nothing, and it runs no AI model.

> **Preview: not published yet**
>
> `outbound-sdk` is not on npm, and its GitHub repository is private, so there
> is no install command that works today. Instantly and HeyReach are `beta`:
> their reads were run, read-only, against one live workspace each. Smartlead is
> `unverified`: written from its public documentation and tested offline only.
> See [what is verified](/docs/status).

```ts title="first-read.ts"
import { createOutbound } from "outbound-sdk";
import { demoData, memory } from "outbound-sdk/memory";

// The in-memory adapter with a small demo data set: no key, no network.
const outbound = createOutbound({ adapter: memory({ data: demoData() }) });

for await (const campaign of outbound.campaigns.listAll({ status: "active" })) {
  console.log(campaign.name, campaign.ref);
}
```

**[Docs](/docs)**

The API, the adapters and what each can do, insights, plugins, tools, the
CLI and webhooks.

**[Guides](/guides)**

Complete tasks end to end: a weekly client report, replies nobody answered,
a deliverability check, an MCP server for your agent.

**[What is verified](/docs/status)**

Which adapters were run against a live account, what was measured and what
was not.

**[How the samples are run](/docs/samples)**

Every code sample on this site is a file the test suite loads and runs. The
output shown is what it printed.
