1. API-Only Data Access
PostEngine accesses LinkedIn data exclusively through LinkedIn's official REST API. We do not engage in:
- Web scraping or screen scraping of LinkedIn pages
- Automated browsing or headless browser interactions with LinkedIn
- Reverse engineering of LinkedIn's private APIs or protocols
- Circumventing LinkedIn's authentication or rate-limiting mechanisms
2. OAuth Scopes & Data Minimization
We request only the minimum OAuth scopes necessary to provide the service:
- openid — Identity verification via OpenID Connect (required by LinkedIn)
- profile — Read public name, profile picture, and headline for display
- email — Read email address for account linking and notifications
- w_member_social — Publish posts to the member's own LinkedIn feed. A post goes out either after the user approves it in the app, or — if the user has set their workspace's Publishing Mode to Auto Publish — on that standing instruction.
We never request scopes beyond what is needed. If LinkedIn grants additional scopes, we do not access data beyond our declared purpose.
3. Rate Limit Compliance
PostEngine implements comprehensive rate-limit compliance:
- We honor LinkedIn's Retry-After header: on a 429 or 503 the retry happens at the exact time LinkedIn asks for, on every queue that calls the API — publishing, analytics sync, comment sync and auto-replies. We also read the X-RateLimit-* headers on every response, store them per account, and act on them before the next call for that account: below ten percent remaining we stop the analytics and comment syncs for that account until LinkedIn's own reset time, and space publishing and replies by up to ten seconds each rather than deferring them; with nothing remaining, every call for that account waits for the reset. The same threshold raises an alert.
- Per-connection publish limits: a minimum of 30 seconds between two posts on the same LinkedIn connection, and at most 100 posts per connection per day, both enforced before the request is made. Workspace-level API budgets additionally cap publishing and commenting, so no single customer can exhaust a shared limit.
- Exponential backoff with randomised jitter on transient failures (429, 503) for every queue that talks to LinkedIn, so many workspaces hitting one limit do not all retry on the same tick. Where LinkedIn names a retry time, that time wins over the computed backoff.
- Cooldown periods between analytics reads: one hour per post, four hours per connected account, and longer backoffs — six hours, or twenty-four for a permanent refusal — after LinkedIn declines a read.
4. User Privacy Respect
We respect LinkedIn member privacy settings:
- We only access data that the connected user has explicitly authorized via OAuth consent
- We do not access or store data about third-party LinkedIn members beyond publicly visible engagement metrics (like/comment counts) on the user's own posts
- Users can disconnect their LinkedIn account at any time. We call LinkedIn's token revocation endpoint immediately, mark the connection revoked, and detach it from every pending post. If LinkedIn refuses the revocation we tell the user the token was not revoked rather than reporting success, and record the failure on the connection; the encrypted token is kept only so the revocation can be retried, and is never used to call LinkedIn again.
- Upon account deletion, all LinkedIn-derived data is permanently deleted within 30 days
5. Content & Publishing Standards
PostEngine ensures responsible content publishing:
- Nothing is published to LinkedIn unless it is approved by the user in the app, or the user has set their workspace's Publishing Mode to Auto Publish. Auto Publish is off by default, is chosen by the account owner in Settings, can be switched off at any time, and every change to it is written to our audit log with the user and the timestamp. While it is on, drafts that pass the workspace's own quality threshold are published on that standing instruction without a per-post click. The user is notified before each of those posts goes out, and that post is held for 15 minutes from the moment it is scheduled; the notice names the exact time the post will reach LinkedIn, and until that time they can stop that individual post from the notification itself. If we cannot deliver that notice, we do not publish the post: it is returned to the user's drafts for review, and the withholding is written to our audit log. If the publish has already started when they press it, we say so rather than claim it was stopped, and every cancellation and every refusal is written to our audit log with the user and the timestamp.
- AI-generated content is always written to a draft first and is never posted straight from the model. In Draft Approval and Batch Approval — Draft Approval being the default — it cannot reach LinkedIn without human review. In Auto Publish it is published only after passing the workspace's own quality threshold; a draft that does not pass is never auto-published and is kept for review.
- We prohibit and actively prevent spam, fake engagement, or any content that violates LinkedIn's Professional Community Policies
- Separately, the product can draft AI replies to comments on the member's own posts. Auto-sending them is disabled platform-wide and no reply has ever been sent this way. Were it enabled, a reply would still be auto-sent only after the account owner turns on Auto-Reply, which is off by default, and only within a quality threshold, a daily cap and a per-commenter cap; everything else is held for the member to send by hand. A reply that clears those limits is held for 15 minutes from the moment it is scheduled. The member is shown its exact wording in the app before it goes out and can stop that individual reply from the notice itself. If the send has already started when they press it, we say so rather than claim it was stopped. Every auto-send, every cancellation and every refusal is written to our audit log with the user and the timestamp.
6. Data Security
We protect LinkedIn data with industry-standard security measures:
- LinkedIn OAuth access tokens and refresh tokens are encrypted at rest using AES-256-GCM
- All API communication uses TLS encryption
- Token refresh follows LinkedIn's standard OAuth 2.0 flow with secure storage
- Access to LinkedIn data is restricted to authenticated users viewing only their own data
7. Contact
For questions about our API usage practices, contact us at [email protected].