gitroomhq/postiz-app · error · BadBody
LinkedIn ${label} processing failed${status.processingFailur
Error message
LinkedIn ${label} processing failed${status.processingFailureReason ? `: ${status.processingFailureReason}` : ''} What it means
Thrown by LinkedinProvider.checkPostStatus when LinkedIn reports a processingStatus of FAILED for an uploaded media asset (image/video/document). The message includes the media kind and LinkedIn's processingFailureReason if provided. The post is never published because LinkedIn could not finish processing the media.
Source
Thrown at libraries/nestjs-libraries/src/integrations/social/linkedin.provider.ts:955
// Transient status-check error: the media may finish processing just
// fine, keep polling.
return {
status: 'pending',
pendingData: {
...pendingData,
statusStalls: (pendingData.statusStalls || 0) + 1,
},
};
}
if (status.status === 'PROCESSING_FAILED') {
const label =
media.endpoint === 'videos'
? 'video'
: media.endpoint === 'documents'
? 'document'
: 'image';
throw new BadBody(
this.identifier,
JSON.stringify(status),
'{}',
`LinkedIn ${label} processing failed${
status.processingFailureReason
? `: ${status.processingFailureReason}`
: ''
}`
);
}
if (status.status !== 'AVAILABLE') {
stillProcessing.push(media);
}
}
if (stillProcessing.length) {
// every media answered with a real status: the endpoint works, resetView on GitHub (pinned to 0f1647f749)
Solutions
- Check processingFailureReason in the message and fix the media accordingly (re-encode video as H.264/MP4, reduce size/duration)
- Re-upload a fresh copy of the media; transient transcode failures often succeed on retry
- Verify the media matches LinkedIn's documented specs for the endpoint used
- If persistent across files, check LinkedIn API status / re-authenticate the integration
Example fix
// before
const file = await uploadVideo('clip.avi');
// after
const file = await uploadVideo('clip.mp4'); // H.264/AAC in MP4 container Defensive patterns
Strategy: try-catch
Try / catch
try {
await provider.check(post);
} catch (e) {
if (e instanceof BadBody && /LinkedIn (video|document|image) processing failed/.test(e.message)) {
// re-encode/replace media and retry once
}
throw e;
} Prevention
- Validate video codec/size against LinkedIn specs before scheduling
- Keep a re-encode fallback (ffmpeg H.264 MP4) in the media pipeline
When it happens
Trigger: POSTing to LinkedIn's media upload endpoints (images/videos/documents) succeeds, but polling the asset status returns status='FAILED' (e.g. videos endpoint processing failed). Raised from check() during the post workflow.
Common situations: Unsupported video codec/container, media exceeding LinkedIn's duration/size limits, corrupt file, or LinkedIn transcode service hiccup. Intermittent LinkedIn-side transcoding failures also occur.
Related errors
- LinkedIn took too long to process the media, please try agai
- The media took too long to process, please try again
- The file is corrupted and cannot be uploaded
- The file took too long to process, please try again
- ${error_message || 'Threads could not process the media'}
AI-assisted analysis of gitroomhq/postiz-app@0f1647f749 (2026-08-27).
Data as JSON: /api/errors/55010866716ed14b.
Report an issue: GitHub.