Guide
Diagnosing LinkedIn Marketing API Rate Limits: 429 and 403 Errors
A step‑by‑step diagnostic guide for LinkedIn Marketing/Share API rate limits (HTTP 429/403), covering symptoms, cause table, ordered checks, targeted fixes, and escalation rules.
Published by Tasadduq Burney
23 May 2026, 06:44 UTC
3 min115.2K views0

Recognizable condition
Your integration receives HTTP 429 Too Many Requests with a Retry-After header (seconds or an HTTP‑date) or X-RateLimit-Reset. In some cases you see HTTP 403 Forbidden with an error code of QUOTA_EXCEEDED or THROTTLED. Both indicate that a rate‑limit tier has been hit.
Cause / diagnostic table
| Limit tier | Typical threshold | Scope | Common symptom |
|---|---|---|---|
| Application‑level daily quota | ~100 000 calls / day (default) | Per app (all tokens) | 429 with X-RateLimit-Remaining: 0 early in the day |
| User‑level daily quota | Stricter, per LinkedIn member | Per authorized member | 429 for a specific user while other users succeed |
| Endpoint‑specific write limit | ~25 POST /shares per user / day | Per member, per endpoint | 403 QUOTA_EXCEEDED on share creation |
| Minute‑level burst limit | Varies (e.g., 10‑30 req/min) | Per endpoint, per token | Rapid 429 bursts, Retry-After in seconds |
| Token scope mismatch | Missing rw_organization_admin or r_liteprofile | Per token | 403 THROTTLED even when quota remains |
Ordered diagnostic checks
- Inspect response headers – Run a verbose request and capture
Retry-After,X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset.
Run from any host with network access to api.linkedin.com. Requires a valid access token with at leastcurl -v -H "Authorization: Bearer $TOKEN" \ "https://api.linkedin.com/v2/shares?q=owners&owners=urn:li:person:123"r_liteprofilescope. - Check the Developer Portal quota dashboard – Open My Apps → Analytics → Quota Usage. The view shows daily calls, remaining, and limit per endpoint. Note the ~15 minute reporting latency.
- Verify token scopes – Call the introspection endpoint (or decode the JWT) to confirm the token includes
rw_organization_adminfor organization posting orr_liteprofilefor member reads. - Log request timestamps and endpoints – Correlate bursts with minute‑level limits. A simple rotating log (e.g., JSON lines with
ts,endpoint,status) is sufficient. - Confirm app status – In the Developer Portal ensure the app is not marked Restricted due to policy violation; a restricted app receives 403 on all calls.
Fixes tied to findings
- Retry‑After present – Implement exponential backoff with jitter (base 2 s, max 60 s) that honors the header value. Parse both integer seconds and HTTP‑date formats.
- Daily quota exhausted – Batch write operations, cache read responses, and request a quota increase through the LinkedIn Partner Program if the limit is a business blocker.
- User‑level limit hit – Stagger posts across multiple authorized members or switch to organization‑level posting (requires
rw_organization_adminand the member to be an admin). - Burst limit exceeded – Add a client‑side token bucket (e.g., 10 requests/minute per write endpoint) before sending.
- Scope mismatch – Re‑authenticate the user with the required scopes; update the OAuth consent screen accordingly.
Escalation criteria
Escalate to LinkedIn support or your Partner Manager when any of the following occur:
- 429 persists after three retries with proper backoff.
- Quota‑increase request is denied twice.
- A business‑critical campaign is blocked for more than four hours.
- The app shows Restricted status without a clear policy notice.
Practical verification steps
- After applying a fix, repeat the verbose
curlcall and confirmX-RateLimit-Remaining> 0 and noRetry-Afterheader. - Monitor the quota dashboard for the next 30 minutes; the remaining count should rise as expected.
- Run a controlled load test (e.g., 5 requests/minute) against a write endpoint and verify the token‑bucket logic prevents 429s.
Limitations & notes
- Rate‑limit values and header names differ between API versions (v1 vs v2) and products (Marketing, Sales Navigator, Recruiter). Test each endpoint you use.
- User‑level limits are per LinkedIn member, not per application; multiple users sharing one app each have independent quotas.
- The Developer Portal quota view updates with ~15 minute latency; real‑time decisions must rely on response headers.
- Organization‑level posting only works when the authenticated member holds an admin role on the organization and the token includes
rw_organization_admin.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.