vercel/ai · error · Error
Prodia multipart response missing job part
Error message
Prodia multipart response missing job part
What it means
After successfully splitting a multipart Prodia response into parts, the SDK requires one part named "job" carrying the JSON job result (parsed against prodiaJobResultSchema). If no part with content-disposition name="job" exists, the SDK cannot build its result and throws this error. It indicates the provider answered multipart but without the mandatory job metadata part.
Source
Thrown at packages/prodia/src/prodia-language-model.ts:418
schema: zodSchema(prodiaJobResultSchema),
});
} else if (contentDisposition.includes('name="output"')) {
if (
partContentType.startsWith('text/') ||
contentDisposition.includes('.txt')
) {
textContent = new TextDecoder().decode(part.body);
} else if (partContentType.startsWith('image/')) {
fileContent.push({
mediaType: partContentType,
data: part.body,
});
}
}
}
if (!jobResult) {
throw new Error('Prodia multipart response missing job part');
}
return {
value: { jobResult, textContent, fileContent },
responseHeaders,
};
};
}
View on GitHub (pinned to 69428b1f8b)
Solutions
- Inspect the raw response (responseHeaders and, if possible, the body) to see which parts the server actually sent.
- Pin/update the @ai-sdk/prodia package to match the Prodia API version you are calling.
- If you proxy or record Prodia responses (tests, mocks), regenerate fixtures from a real response including the name="job" part.
- Report a suspected API contract change to Prodia support if a real request reproducibly lacks the job part.
Defensive patterns
Strategy: try-catch
Try / catch
try {
const result = await generateText({ model: prodia.language(modelId), ... });
} catch (error) {
if (error instanceof Error && error.message === 'Prodia multipart response missing job part') {
// capture raw response for bug report; check API contract/version
}
throw error;
} Prevention
- Keep @ai-sdk/prodia and the provider API version in sync.
- Regenerate mocked/recorded fixtures from real responses including the name="job" part.
- Monitor Prodia changelogs for multipart response format changes.
- Never rewrite content-disposition headers in middleware.
When it happens
Trigger: A Prodia language-model doGenerate call received a valid multipart body (boundary found) but none of its parts had content-disposition name="job" — e.g. the response only contained an "output" part, or the job part used a different/renamed disposition.
Common situations: Prodia API contract change or beta endpoint returning a differently structured multipart payload; a mocking proxy or recorded fixture replaying an incomplete response; intermediary rewriting part headers.
Related errors
- Prodia response missing multipart boundary in content-type:
- Prodia response missing multipart boundary in content-type:
- Prodia multipart response missing job part
- Prodia multipart response missing output video
- No speech audio generated.
AI-assisted analysis of vercel/ai@69428b1f8b (2026-08-30).
Data as JSON: /api/errors/d767b8ac2ee1ffb7.
Report an issue: GitHub.