Profiles and pages
Post to personal profiles and company pages.
LinkedIn's Marketing API requires partner program approval, complex URN-based auth, and separate endpoints for each content type. Zernio handles all of that with one POST for text, images, videos, and documents.

We doubled the team this year. Here is what we learned about hiring slowly.


Profile
defaultSign up for free, get your API key and connect LinkedIn accounts through our OAuth flow.

POST /v1/posts
const { data } = await zernio.posts.createPost({ body: { content: 'We just shipped v2', mediaItems: [{ url: 'https://cdn.acme.com/launch.jpg' }], platforms: [ { platform: 'linkedin', accountId: 'acc_8f2a' }, ], scheduledFor: '2027-01-15T14:30:00', timezone: 'Europe/Madrid', }, });
Send content to LinkedIn from one REST endpoint, right away or scheduled.

post.failed
Webhook sent to your app
Mon, 18 Jan
09:00, Europe/Madrid
We just shipped v2
Fri, 15 Jan at 14:30
Follow each post from scheduled to published, with a webhook when one fails.
| Endpoint | What it does |
|---|---|
POST/v1/posts | Create or schedule a LinkedIn post (text, image, video, or document) |
GET/v1/posts/{id} | Get status and details of a LinkedIn post |
DELETE/v1/posts/{id} | Cancel a scheduled LinkedIn post |
GET/v1/profiles | List all connected LinkedIn profiles and pages |
Zernio transcodes and optimizes media for LinkedIn's requirements automatically.
| Type | Format | Max size | Notes |
|---|---|---|---|
| Image | PNG, JPEG, GIF | 8 MB | 1200x627 recommended |
| Video | MP4 | 5 GB | 3 sec - 10 min duration |
| Document | 100 MB | Up to 300 pages | |
| Link Preview | URL + metadata | Title: 200 chars | Auto-generated rich preview card |
LinkedIn's API has daily limits based on your app tier. Zernio manages rate limits automatically, queuing posts when limits are approached.
Post to personal profiles and company pages.
Share images, videos, and documents.
Schedule posts for your best engagement times.
Get notified the moment a post publishes or fails.
Links render as rich metadata cards.
Choose public or connections-only per post.
Manage several LinkedIn accounts from one API key.
Plain JSON back from every LinkedIn call, with the IDs and statuses your app needs to follow up.
cURL
$
{
"post": {
"_id": "65f1c0a9e2b5af0012ab34cd",
"status": "published",
"content": "Excited to announce our new API! 🚀\n\nWe just launched...",
"platforms": [{
"platform": "linkedin",
"accountId": { "_id": "acc_abc123", "username": "acme-corp" },
"status": "published",
"platformPostId": "urn:li:share:7012345678901234567",
"platformPostUrl": "https://linkedin.com/feed/update/urn:li:share:7012345678901234567"
}],
"publishedAt": "2025-01-10T10:30:00Z",
"createdAt": "2025-01-10T10:29:55Z"
},
"message": "Post published successfully"
}Free tier available. No credit card required.