Programmatic access to your LinkedIn knowledge
A JSON REST API at https://api.linkedmash.com/v1 to search the saved posts you import, pull up posts from your favorite authors, and create and schedule drafts from what you save.
Authentication
Authenticate with a Bearer API key. Send it in either header:
- Authorization: Bearer lm_...
- linkedmash-api-key: lm_...
You can also use an OAuth 2.0 client-credentials token exchange. Generate and revoke keys in Settings, API at /integrations/api.
Grant only the scopes you need:
Responses include RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset. The Free plan returns a 20-result sample and allows 100 calls per UTC day. Premium unlocks full library access.
Quickstart
curl "https://api.linkedmash.com/v1/bookmarks?limit=20" \
-H "Authorization: Bearer lm_live_..."Endpoints
Saved posts
List, read, and count the LinkedIn posts you import. Filter by author, label, content type, or date, and page through with a cursor.
- GET
/v1/bookmarksList saved posts with filters and cursor pagination.
- GET
/v1/bookmarks/{id}Read one saved post.
- GET
/v1/bookmarks/countCount saved posts that match a filter.
- POST
/v1/posts/bulkArchive, unarchive, or delete every saved post that matches a filter.
Favorite authors
Find the authors you save from and pull up everything you saved from them.
- GET
/v1/authors?q=...Look up authors in your library by name.
- GET
/v1/bookmarks?author=...List saved posts from one author.
Folders, collections, and labels
Read your labels and add or remove them across every post that matches a filter.
- GET
/v1/labelsList labels and collections.
- POST
/v1/labels/add-by-filterAdd a label to all posts that match a filter.
- POST
/v1/labels/remove-by-filterRemove a label from all posts that match a filter.
Full-text and semantic search
Search across saved posts with the same endpoint. Use q for keywords or vector_search_term for meaning, and combine either with author and tag filters.
- GET
/v1/bookmarks?q=...&author=...&tag=...Full-text search with author and tag filters.
- GET
/v1/bookmarks?vector_search_term=...Semantic search by meaning or topic.
Drafts and scheduling
Create LinkedIn drafts from what you save, then schedule them into your queue.
- POST
/v1/postsCreate a draft.
- GET
/v1/postsList drafts, scheduled, and published posts. Filter with ?status=.
- PATCH
/v1/posts/{id}Update a draft.
- POST
/v1/posts/{id}/scheduleSchedule a draft.
- GET
/v1/queueRead your scheduled post queue.
Exports and analytics
Export your library and read your LinkedIn analytics.
- POST
/v1/exports/pdfStart a PDF export job.
- GET
/v1/exports/pdf/jobs/{job_id}Check the status of a PDF export job.
- POST
/v1/exports/csvExport saved posts as CSV.
- POST
/v1/exports/jsonExport saved posts as JSON.
- GET
/v1/analyticsRead account analytics for a date range.
{
"data": [
{
"id": "bk_01HZX3K9",
"url": "https://www.linkedin.com/feed/update/urn:li:activity:7200000000000000000",
"author": {
"name": "Jane Doe",
"headline": "Founder at Example"
},
"content": "Three lessons from our first 100 outbound calls...",
"content_type": "text",
"labels": [
"Sales Playbook"
],
"saved_at": "2026-10-01T09:30:00Z"
}
],
"has_more": true,
"next_cursor": "eyJvIjoyMH0"
}API FAQ
How do I authenticate?
Send your key in the Authorization header as Bearer lm_..., or in the linkedmash-api-key header. You can also exchange client credentials for an OAuth 2.0 token. Create and revoke keys in Settings, API.
What are the rate limits and plan limits?
Every response carries RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset headers. The Free plan returns a 20-result sample and allows 100 calls per UTC day. Premium and Lifetime unlock the full library and cursor pagination.
How does pagination work?
List endpoints return a has_more flag and a next_cursor value. Pass it back as the cursor parameter to fetch the next page until has_more is false.
Are there webhooks or real-time sync?
Yes. LinkedMash can notify your systems when your library changes. See the webhooks guide at /api-docs/webhooks for events, payloads, and signature checks.
How do I keep my key secure and revoke it?
Use the narrowest scopes you need and keep keys on the server. You can rotate or revoke a key at any time in Settings, API, and it stops working immediately. Your LinkedIn password is never needed.
Webhook details live in the webhooks guide.