TYPESCRIPT SDK

120+ LinkedIn actions.
One typed client.

@curviate/sdk is the open-source TypeScript client for Curviate. Every LinkedIn action on the platform is a typed method: request bodies, responses and error codes all carry their own types, pagination is an async iterable, and webhook signatures verify in one call.

Curviate/curviate-sdk· open source on GitHub
120+ LinkedIn actionsTyped end to end20+ webhook event typesOpen source on GitHub
agent.ts
import { Curviate } from "@curviate/sdk";

const curviate = new Curviate({ apiKey: process.env.CURVIATE_API_KEY! });

// List the LinkedIn accounts connected to your workspace
const page = await curviate.accounts.list();
for (const account of page.items ?? []) {
  console.log(account.account_id);
}
01QUICK START

How do I install the SDK?

Install from npm, construct the client with your API key, and make a call. The SDK ships its own TypeScript types; there is no separate types package.

shell
$ npm install @curviate/sdk

Works with pnpm, yarn and bun too.

Your API key comes from the Curviate dashboard topbar after sign-up; run the hero snippet above for your first call. Full setup, including connecting a LinkedIn account: quickstart in the docs.

No account yet? Sign up in about a minute and your free trial key is waiting in the dashboard.

02ACCOUNTS

How do I work with several LinkedIn accounts?

Bind an account once with curviate.account(id) and every resource on the returned scope acts as that account. One client, one API key, any number of connected accounts; this is how an agency runs each client's outreach from its own LinkedIn identity, cleanly separated.

multi-account.ts
const alice = curviate.account("acc_ALICE_ACCOUNT_ID");
const bob = curviate.account("acc_BOB_ACCOUNT_ID");

// Same code path, different LinkedIn identities
const aliceChats = await alice.messaging.listChats();
const bobChats = await bob.messaging.listChats();

Root-scoped resources need no account: curviate.accounts.* manages the accounts themselves and curviate.webhooks.* manages tenant-wide webhooks.

03THE SURFACE

What can you do with it?

All 120+ LinkedIn actions on the platform are typed methods, grouped into resource namespaces that read the way you think; the premium surfaces are first-class, with 30+ actions dedicated to Sales Navigator and Recruiter alone.

Everyday surface
messagingcompaniespostsusersjobscommentssearchinvitesfollowinggroupsnotificationsfeed
Premium surfaces · 30+ actions
recruitersalesNavigator

The full inventory, one row per action: the LinkedIn actions catalogue.

04TYPED ALL THE WAY DOWN

What does the SDK handle for you?

ConcernWhat the SDK does
TypesRequest bodies, query params and responses fully typed from the OpenAPI document; no @types/ package
Paginationcurviate.paginate() wraps any cursor method as an async iterable that fetches pages on demand
ErrorsCurviateError carries a stable code you can branch on exhaustively
Rate limitsrate-limit errors carry retryAfterMs and a structured retryHint your program backs off on
WebhooksSignature verification for HMAC-signed events in one call
paginate.ts
for await (const account of curviate.paginate(curviate.accounts.list, {})) {
  console.log(account.account_id);
}
05WHERE IT FITS

Where the SDK fits

@curviate/sdkRaw HTTP against Curviate
Getting accessnpm install + per-seat Curviate accountSame Curviate account
TypesFull TypeScript, generated from OpenAPIBring your own from the OpenAPI document
Sales Navigator and RecruiterAvailable: 30+ dedicated actionsSame surface, untyped
Pagination and errorsAsync iterables, stable error codesHand-rolled
Editor experienceAutocomplete, inline docs, compile-time safetyNone; mistakes surface at runtime

The SDK talks to the REST API underneath; the same surface drives the CLI built on this SDK and the MCP server.

06FAQ

Questions, answered

Is there a TypeScript SDK for LinkedIn?

Yes. @curviate/sdk is an open-source, typed TypeScript client covering 120+ LinkedIn actions across Classic, Sales Navigator and Recruiter, published on npm and developed on GitHub at github.com/curviate/curviate-sdk. It talks to Curviate's REST API with one API key.

Do I need my own LinkedIn app or partner approval?

No. The SDK works over your Curviate workspace: sign up, connect a LinkedIn account you own, copy the API key. There is no LinkedIn partner application, no OAuth app review, and no enterprise contract in the path.

How does the SDK handle LinkedIn rate limits?

Rate-limited calls fail with a typed CurviateError carrying a stable code, retryAfterMs and a structured retryHint. Your code (or your agent) branches on those fields and backs off precisely, instead of parsing error strings or guessing.

Can I use it from JavaScript without TypeScript?

Yes. It is a standard npm package; plain Node.js works. You lose the compile-time types but keep everything else: pagination, stable error codes and webhook verification.