120+ LinkedIn actions.
One REST API.
Curviate is a documented, API-first HTTPS interface for LinkedIn: Classic plus 30+ dedicated Sales Navigator and Recruiter actions, all behind one Bearer token. A headless, agent-native app: OpenAPI 3.1 described, structured errors on every call, webhooks for what happens in between. Per-seat pricing, no partner program, no procurement.
How do I authenticate?
One API key authenticates everything. Sign up, connect a LinkedIn account in the dashboard (credentials or cookie; both encrypted at rest and never logged), and copy the key from the dashboard topbar. Send it as a Bearer token. Account-scoped calls carry the acc_... account ID in the path, so one key can act across every account you connect.
# A member profile, by public slug (the part after linkedin.com/in/) curl "https://api.curviate.com/v1/acc_YOUR_ACCOUNT_ID/users/a-public-slug" \ -H "Authorization: Bearer cvt_live_YOUR_KEY"
# Send a message into an existing chat thread curl -X POST "https://api.curviate.com/v1/acc_YOUR_ACCOUNT_ID/chats/chat_YOUR_CHAT_ID/messages" \ -H "Authorization: Bearer cvt_live_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"text": "Following up on your message."}'
Full walkthrough in the docs: authentication and accounts.
No key yet? An account is the one prerequisite for authentication: creating it takes about a minute and hands you a live key straight away.
What can you do with it?
The API exposes 120+ LinkedIn actions as intent-named REST operations. Search people, companies, posts and jobs. Read and send messages, voice notes and InMail. Send, accept and withdraw connection requests. Publish posts, comment, react. Read profiles, company pages and notifications. Operate Sales Navigator lead lists and Recruiter hiring projects, with 30+ actions dedicated to those two premium surfaces; Recruiter alone is the deepest group in the surface at 23 actions.
This surface backs real work: lead generation and outreach in Sales Navigator, candidate sourcing and pipeline automation in Recruiter, inbox and CRM sync, content publishing and agent-driven prospecting. See the patterns on the use cases page.
Every action, on one page, honestly labelled: the LinkedIn actions catalogue. Every parameter and response shape is documented in the interactive API reference.
What makes this API agent-native?
We design for agent experience (AX) the way good products design for UX. Picture an AI operating a LinkedIn account with no human in the loop: it cannot squint at a screenshot or guess what a bare 400 meant. So every response is built to be parsed, not read. Errors carry a stable machine code plus fields that tell the caller whether retrying makes sense. Rate-limit state rides on standard RateLimit headers with every response (the quota, what remains, when it resets), and a 429 adds retry_after_ms plus a machine-readable retry hint, so the agent backs off precisely instead of hammering. Operations are intent-named, so a tool-calling model picks the right one from the name alone, without a human mapping RPC verbs to intentions.
| On every call | You get |
|---|---|
| Structured errors | stable code, human message, retry guidance a program can branch on |
| Rate-limit feedback | standard RateLimit headers (limit, remaining, reset) on every response; 429s add retry_after_ms and a retry hint |
| Intent-named operations | one operation per user intention, no RPC soup |
| Event webhooks | 20+ HMAC-signed event types pushed to your endpoint, instead of polling. Every event type |
And for the agents reading this page: the full surface is machine-described. The OpenAPI 3.1 document lives at a stable well-known URL, and we publish AGENTS.md and llms.txt so an agent can load the operating contract in plain text before it makes a single call. AX is not an afterthought here. It is the design brief.
Where the API fits
There are two honest ways to drive LinkedIn programmatically: a documented, versioned contract, or a bot clicking through a UI that changes underneath it. This is the difference.
| Curviate API | Browser automation tools | |
|---|---|---|
| Getting access | Sign up, pay per seat, call in minutes | Install an extension |
| Sales Navigator and Recruiter | Available: 30+ dedicated actions | Fragile screen-driving |
| Contract | OpenAPI 3.1, structured errors, versioned surface | None; DOM changes break flows |
| Webhooks | 20+ event types, HMAC-signed | None |
| Company & Page accounts | 13 actions: page inbox, followers, employees, follow invites | Fragile per-page scripting |
The surface is available as the typed TypeScript client, the command line, and the MCP server, all on one API key.
Questions, answered
Yes. Curviate gives you a documented REST API over a LinkedIn account you own, on per-seat pricing, with no partner application and no procurement. You sign up, connect the account, and authenticate with one Bearer token. The official LinkedIn API remains the sanctioned enterprise path; Curviate is the accessible one.
Send your tenant API key as a Bearer token on every request. The key is created at sign-up, shown in the dashboard topbar, and can be rotated or revoked at any time. Account-scoped operations take the acc_... account ID in the path, so one key operates all your connected accounts.
Yes. 30+ of the 120+ actions are dedicated to Sales Navigator and Recruiter: lead lists, saved searches, hiring projects, candidate pipelines, InMail and more. Recruiter is the single deepest group in the surface at 23 actions. A seat carries one premium; running both surfaces takes two seats.
Register an endpoint in the dashboard and choose from 20+ event types across messaging, connections and account lifecycle. Deliveries are HMAC-SHA256 signed, retried on failure, and logged with per-webhook delivery status you can inspect. Point them at your backend, an n8n flow, or a serverless function. Every webhook event type.