{"record":{"id":"d767b8ac2ee1ffb7","repo":"vercel/ai","slug":"prodia-multipart-response-missing-job-part-d767b8","errorCode":null,"errorMessage":"Prodia multipart response missing job part","messagePattern":"Prodia multipart response missing job part","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/prodia/src/prodia-language-model.ts","lineNumber":418,"sourceCode":"          schema: zodSchema(prodiaJobResultSchema),\n        });\n      } else if (contentDisposition.includes('name=\"output\"')) {\n        if (\n          partContentType.startsWith('text/') ||\n          contentDisposition.includes('.txt')\n        ) {\n          textContent = new TextDecoder().decode(part.body);\n        } else if (partContentType.startsWith('image/')) {\n          fileContent.push({\n            mediaType: partContentType,\n            data: part.body,\n          });\n        }\n      }\n    }\n\n    if (!jobResult) {\n      throw new Error('Prodia multipart response missing job part');\n    }\n\n    return {\n      value: { jobResult, textContent, fileContent },\n      responseHeaders,\n    };\n  };\n}\n","sourceCodeStart":400,"sourceCodeEnd":427,"githubUrl":"https://github.com/vercel/ai/blob/69428b1f8b037e4d118fb4853428d5c4e620493c/packages/prodia/src/prodia-language-model.ts#L400-L427","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try {\n  const result = await generateText({ model: prodia.language(modelId), ... });\n} catch (error) {\n  if (error instanceof Error && error.message === 'Prodia multipart response missing job part') {\n    // capture raw response for bug report; check API contract/version\n  }\n  throw error;\n}","preventionTips":["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."],"tags":["network","multipart","provider-response","prodia"],"backgroundTag":"malformed-multipart-response","analyzedSha":"69428b1f8b037e4d118fb4853428d5c4e620493c","analyzedAt":"2026-08-30T12:32:21.016Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}