Curviate for GTM engineers

Every LinkedIn action behind one API, with an SDK, a CLI and an MCP server on top. Build the workflow you need and run it across every account you manage.

No card required

The LinkedIn actions nobody else gives you

Messages and invitations are the start. Curviate also covers company pages, groups, LinkedIn notifications, the home feed, Recruiter and Sales Navigator, in groups of actions with one consistent shape.

See all actions
Groups of actions/v1/{account_id}/…
Company pagesList page followersInvite to follow the pageReply as the page
GroupsGet group detailsList group membersList my groups
NotificationsList notificationsDelete a notificationShow less like this
Feed and followingGet the home feedList a user’s followersFollow a user
RecruiterSave to a pipelineSearch RecruiterStart a Recruiter chat
Sales NavigatorSave a leadBrowse an account listStart a chat

One call, from anywhere

Every action works the same way from the TypeScript SDK, plain REST, the command line or your AI agent through our MCP server. Prototype in the terminal, ship it in code, hand it to an agent later.

import { Curviate } from "@curviate/sdk";

const acc = new Curviate({ apiKey }).account(accountId);

// people who follow your company page
const { items } = await acc.companies.followers("curviate");
Company followers need admin rights on the page.
Connect your agent
https://app.curviate.com/mcp
Hosted, signs in with OAuth. No server to run.

Limits your code can read

When an account reaches a limit you set, the call is refused before anything reaches LinkedIn. The response says which limit, why and when it resets, and every response carries your remaining request budget, so your workflow can wait instead of guessing.

How we keep accounts safe
429Refused, nothing sentLimit reached
{ "code": "BUDGET_EXHAUSTED", "row": "profile_views", "reason": "ceiling", "reset_at": "2026-10-17T00:00:00.000Z", "hint": { "parameter": "profile_views.ceiling" }, "blocked": true }
Every response200
RateLimit-Policy: "tenant";q=2500;w=60 RateLimit: "tenant";r=2310;t=37

Many accounts, clear roles

Each teammate connects their own account and decides whether the team can use it. Owners and Managers run Motions across shared accounts, Members work their own, and every API key belongs to one team, so a script never reaches into the wrong one. Belong to more than one team and switch in a click.

Accounts3Team access
Lena WeberOwner of this account · Manager
Ethan ColeMember
Mia HoffmannMember, keeps her chats private
Switch team
GGrowth team
RRecruiting
API key for Growth teamcvt_live_••••3f9a

Questions from GTM engineers

Which interfaces are there?

A REST API with an OpenAPI description, a TypeScript SDK, a command-line tool and a hosted MCP server that signs in with OAuth. They all reach the same actions, and signed webhooks tell your systems when something happens.

What happens when an account reaches a limit?

The call is refused before anything is sent to LinkedIn. The response names the limit, the reason and when it resets, and points to the setting you can change if the limit is too tight.

Are there API rate limits?

Yes, per team, and they grow with the accounts you connect. Every response carries RateLimit headers with your remaining requests and the seconds until the window resets.

Make your first call today.Free for 7 days.

Create an API key, connect an account and build the workflow you have been meaning to build.

No card required