The short answer
Reuse first. Before uploading a new LinkedIn ad image, list the recent active assets in the correct ad account and check whether an approved version already exists. If it does, keep its image URN and reuse it. If it does not, upload the final file once, register it in the Media Library, wait for processing to reach AVAILABLE, and only then attach it to a draft creative.
The important distinction is that an image asset is not an ad. Uploading a file creates a reusable platform asset. A separate creative references that asset, and the campaign hierarchy controls delivery. Treating these as different objects prevents duplicate uploads, accidental launches, and false confidence after a successful file transfer.

What you are actually managing
LinkedIn’s Media Library is the shelf. The image URN is the catalogue number. A creative is the ad that takes one item from that shelf and combines it with copy, a destination, a call to action, Page identity, and status.
That separation matters because the same uploaded image can be reused instead of being uploaded for every new ad. LinkedIn’s Images API supports reuse across image and image-ad formats. HireOtto’s current first-class creation path is narrower: it uses an AVAILABLE image URN for a normal single-image Direct Sponsored Content creative.
Check the file and workflow boundary first
Check | Working rule | Why it matters |
File type | JPG, PNG, or GIF | Supported by the current HireOtto image workflow and LinkedIn single-image ads. |
File size | 5 MB or less for a single-image ad | LinkedIn’s public ad specification is stricter than HireOtto’s 8 MiB decoded byte-upload transport limit. |
Landscape | 1200 × 628 pixels at 1.91:1 | LinkedIn’s recommended landscape dimensions. |
Square | 1200 × 1200 pixels at 1:1 | A standard square option for feed creative. |
Vertical | 720 × 900 pixels at 4:5 | LinkedIn’s recommended vertical ratio; paid vertical assets serve on mobile. |
For a normal single-image ad, use LinkedIn’s current public ad specification as the stricter rule. HireOtto’s programmatic byte-upload route has an 8 MiB decoded transport limit, but that does not override LinkedIn’s 5 MB single-image ad specification. In practice, keep the final file at or below 5 MB.
A safer image workflow
1. Confirm the ad account and write capability
Start from the numeric ad account ID returned by account discovery. Confirm the account name, currency, your role, and whether the connection can write. Viewer access supports inspection, not upload or campaign changes. Page or advertiser access can also matter when the image is later used in Sponsored Content.
2. List recent active images before uploading
Ask for the most recent active Media Library images in the intended account. Review the asset name, image URN, processing status, creation or modification context, and preview or download link when available. This is the fastest way to recover a recent upload whose result is no longer in the chat.
Do not choose an asset from its filename alone. Check the image itself, its account ownership, its approval status, and whether the landing-page offer and current creative brief still match.
3. Choose reuse or upload
Situation | Best action | Reason |
Approved asset exists and is AVAILABLE | Reuse the existing image URN | Avoids another upload and keeps asset history cleaner. |
Asset exists but the offer, crop, or brand treatment changed | Upload the new approved final file | A familiar filename is not proof that the visual is still correct. |
A recent upload result is missing | List recent active assets before retrying | The upload may have completed even if the client timed out. |
Asset is still processing | Wait and inspect again | A URN is not creative-ready until the status is AVAILABLE. |
Old Media Library clutter is no longer needed | Validate, then archive with approval | Archiving hides the entry from the active list without pretending it deletes ads. |
4. Upload once and register it in the Media Library
Use the interactive picker when the AI client supports MCP Apps. Supply the exact ad account, a useful asset name, and the approved JPG, PNG, or GIF. Keep Media Library registration enabled so the asset can be found, reused, archived, or restored later.
Use programmatic byte upload only when the client can read and encode the original file safely. Never paste base64 into chat, ask the model to invent it, or split it across messages. That turns a simple media job into a fragile data-handling exercise.
5. Wait for AVAILABLE and inspect the result
A returned image URN proves that LinkedIn created an asset record. It does not prove that processing succeeded. Inspect the asset until its status is AVAILABLE before using it in a creative. WAITING_UPLOAD, PROCESSING, or FAILED requires a different next step.
6. Validate the creative separately
Once the image is available, validate the proposed creative with its commentary, headline, destination, CTA, alt text, Page identity, and draft status. Validation checks HireOtto’s supported request rules, but LinkedIn still evaluates permissions, account state, lifecycle rules, and platform-side constraints during the real write.
7. Recover safely from an ambiguous upload
If an upload times out or the chat loses the result, list recent active images before retrying. A timeout can hide a successful upload. Retrying immediately may create another copy with a new URN.
8. Archive clutter without pretending it is deletion
Archive an unused Media Library entry when it is safe to hide it from the default active list. Archiving does not permanently delete the binary, remove creatives, pause ads, or rewrite the asset reference inside an existing ad. Restore it to ACTIVE when you need it again and LinkedIn permits the lifecycle change.
Copy this image-management prompt
For LinkedIn Ads account ACCOUNT_ID, first list the 20 most recent active Media Library images. Show each asset name, image URN, processing status, and available preview details. Compare them with the approved creative brief and tell me whether an existing asset is safe to reuse. Do not upload anything if a suitable approved asset already exists. If no suitable asset exists, stop and ask me to attach the final approved JPG, PNG, or GIF. After I attach it, upload it once, register it in the Media Library as ASSET_NAME, wait for AVAILABLE, and return the final image URN. If the upload times out, list recent assets before retrying. Do not create a creative, ad set, or campaign. Do not archive or restore anything without separate approval.From an available image to a draft ad
The next workflow begins only after the asset is AVAILABLE. Reference its exact image URN in a single-image creative, keep the creative in DRAFT, read the saved hierarchy back, and preview the ad in Campaign Manager.
Campaign Manager remains the final source for the crop, rendering, Page identity, policy warnings, billing or serving warnings, and activation state. An API response cannot prove that the design looks right in every placement or that the destination and conversion tracking work.
Common failures and the right recovery
Symptom | Likely cause | Next move |
A duplicate appears after a retry | The first upload completed but its response was lost | Keep the approved URN, then review whether the extra entry should be archived. |
The creative rejects a valid-looking URN | The asset is not AVAILABLE, belongs to another account context, or the Page identity is unresolved | Inspect the exact asset, account, advertiser identity, and processing status. |
The image is missing from the active list | It is archived, filtered out, or under another ad account | List ARCHIVED or all statuses and confirm the account ID. |
Archive or restore fails | The asset is still processing or does not meet LinkedIn’s lifecycle rules | Wait for processing to finish, inspect the asset, and validate again. |
The image processes but crops badly | Processing success does not prove final rendering | Preview the draft creative in Campaign Manager and revise the source file if needed. |
The upload picker does not appear | The current client does not support the interactive MCP App | Use ChatGPT or Claude web or Desktop, or a capable programmatic client. |
How HireOtto helps
HireOtto can confirm the connected LinkedIn Ads account and role, list recent active or archived Media Library assets, inspect one image by URN, upload an approved JPG, PNG, or GIF, wait for processing, and return the reusable image URN. It can also validate a supported single-image creative, create it as a draft, and read the saved hierarchy back for comparison.
The human still owns the creative brief, file approval, Page identity, naming convention, destination, alt text, visual QA, tracking test, and activation decision. HireOtto does not treat an upload as approval, does not prove the final crop, and does not turn archiving into deletion or ad pausing.
Use the LinkedIn Ads tools reference for image-management inputs and limits, the draft campaign guide for the image-to-creative workflow, and connect HireOtto to your AI client to get started.
Pre-launch review checklist
Correct ad account ID and advertiser or Page identity
Approved source file, aspect ratio, and file size
Clear asset name and Media Library registration
Processing status is AVAILABLE
Exact image URN retained with the creative brief
Approved copy, destination, CTA, and alt text
Creative created as DRAFT and read back
Crop and rendering checked in Campaign Manager
Destination and conversion tracking tested
Activation approved by the responsible human
Frequently asked questions
Does uploading an image create or launch a LinkedIn ad?
No. It creates an image asset. A separate creative must reference the image URN, and the campaign hierarchy still controls delivery and status.
Can I reuse one LinkedIn image in multiple ads?
Yes. LinkedIn image assets are designed for reuse. Confirm that the asset belongs to the intended account context, is still approved, and has reached AVAILABLE. HireOtto’s current first-class creative workflow uses the image in single-image Direct Sponsored Content ads.
What happens when I archive an image?
It disappears from the default active Media Library listing. It is not permanently deleted, and archiving does not pause or remove ads that already reference it.
Can I upload from Claude Code?
The interactive picker currently works in ChatGPT and Claude web or Desktop when MCP Apps are supported. It does not render in Claude Code CLI or the Claude Code VS Code extension. Programmatic upload is possible only when the client can read and encode the original file safely.
Why should I list recent images after a timeout?
Because the upload may have completed even when the client lost the response. Listing recent assets can recover the new URN and prevent a duplicate upload.
Does AVAILABLE mean the ad will render correctly?
No. AVAILABLE means the image finished platform processing. Preview the final creative in Campaign Manager to verify crop, text, Page identity, destination, policy state, and placement behavior.
About Me
I’m Suyash – badminton junkie, ex‑GroupM ad‑ops grunt, first marketer at a B2B SaaS startup, and creator of Hiretto: MCP servers for performance marketers.
My mission: less clicking, more thinking.
Let’s build leverage together.

