Media & Limits
Media requirements, what you can't do, and common LinkedIn errors
Media Requirements
| Type | Format | Max Size | Notes |
|---|---|---|---|
| Single Image | JPEG, PNG, GIF | 5 MB | 1200x627 (1.91:1) recommended |
| Video | MP4 H.264/AAC | 500 MB | 3s-30min, 75 MB recommended |
| Carousel | JPEG, PNG | 10 MB/card | 2-10 cards, 1080x1080 |
| Document | PDF, PPT, DOC | 100 MB | rendered as a swipeable document |
| Text ad logo | JPEG, PNG | 2 MB | 100x100 |
Media URLs must be publicly accessible; LinkedIn (via Zernio) fetches and re-hosts them under the Company Page or ad account.
What You Can't Do
- Run from-scratch ads without a Company Page the member can post DSC for (Administrator or Direct Sponsored Content Poster role required, or
403) - Get profile-prefilled Lead Gen Form fields (EMAIL, FIRST_NAME, ...) via the API — Campaign Manager UI only; API forms take
textandmultipleChoicequestions - Receive lead webhooks: LinkedIn has no lead push, poll
GET /v1/ads/leads(90-day retention) - Hard-delete a Lead Gen Form (archive only) or a conversion rule (soft-disable only)
- Append to a contact-list audience: every upload is a full replace
- Get daily time series on firmographic pivots (LinkedIn aggregates over the whole range,
timeGranularity: ALL) - Budget below $10/day, or $100 lifetime on inactive campaigns
- Use dynamic UTM params on Conversation, Message, or Lead Gen Form ads
- Send conversion events older than 90 days
- Sponsor a member post by URL alone:
activityURNs are rejected, you need the-share-/-ugcPost-id from "Copy link to post"
Common Errors
LinkedIn's REST errors surface verbatim inside Zernio's platform_error envelope. The recurring ones:
| Error | Where | Meaning + fix |
|---|---|---|
403 on create | From-scratch ads | The member lacks the DSC Poster / Administrator role on the Page, or the Page isn't associated with the ad account. |
403 linkedin_reconnect_required | Conversions API | The connection predates the rw_conversions scope. Reconnect the account. |
403 mentioning partnerApiLeadGenFormResponse | Lead responses | The connection lacks r_marketing_leadgen_automation. Reconnect the account. |
422 on reshare/sponsor | Thought-leader, boost | The post URN is an activity URN. Use the share / ugcPost id from "Copy link to post". |
SINMAIL_SENDER_NOT_APPROVED | Conversation ads | The sender isn't approved for the ad account in Campaign Manager ("Manage message ad senders"), org senders included. |
422 "The objective type is not supported" | Supply forecast | objectiveType is required in practice despite being documented optional. Pass any valid objective. |
404 on dynamic-format creative | Follower, jobs, event ads | LinkedIn couldn't resolve the Page-side state (follow target, active job postings, real Event). Fix the Page, not the payload. |
Campaign quality score rejections / stuck in review | Any | LinkedIn reviews every ad; a DRAFT/review state is normal for the first minutes-to-hours. |
Two consistency notes that look like bugs but aren't:
- Segment reads right after an upload can come back empty: LinkedIn's audience builds are eventually consistent. Re-read after a minute.
- LinkedIn-Version deprecates monthly on LinkedIn's side. Zernio pins and rolls the version for you; you never send it, and version-related churn is absorbed server-side.