{"record":{"id":"995ce8849379bda9","repo":"vercel/ai","slug":"deepseek-image-urls-must-not-exceed-8192-character","errorCode":null,"errorMessage":"DeepSeek image URLs must not exceed 8192 characters.","messagePattern":"DeepSeek image URLs must not exceed 8192 characters\\.","errorType":"exception","errorClass":"InvalidPromptError","httpStatus":null,"severity":"error","filePath":"packages/deepseek/src/chat/convert-to-deepseek-chat-messages.ts","lineNumber":185,"sourceCode":"                  provider: 'deepseek',\n                }),\n              });\n            } else if (part.data.type === 'url' || part.data.type === 'data') {\n              const resolvedMediaType = resolveFullMediaType({ part });\n\n              if (!supportedImageMediaTypes.has(resolvedMediaType)) {\n                throw new UnsupportedFunctionalityError({\n                  functionality: `DeepSeek image media type ${resolvedMediaType}`,\n                  message:\n                    'DeepSeek supports JPEG, PNG, GIF, and WebP image inputs.',\n                });\n              }\n\n              if (part.data.type === 'url') {\n                const url = part.data.url.toString();\n\n                if (url.length > 8192) {\n                  throw new InvalidPromptError({\n                    prompt,\n                    message:\n                      'DeepSeek image URLs must not exceed 8192 characters.',\n                  });\n                }\n\n                if (filePartOptions?.fileData === true) {\n                  throw new InvalidPromptError({\n                    prompt,\n                    message:\n                      'DeepSeek `fileData` image parts require inline data, not a URL.',\n                  });\n                }\n\n                userContent.push({\n                  type: 'image_url',\n                  image_url: {\n                    url,","sourceCodeStart":167,"sourceCodeEnd":203,"githubUrl":"https://github.com/vercel/ai/blob/69428b1f8b037e4d118fb4853428d5c4e620493c/packages/deepseek/src/chat/convert-to-deepseek-chat-messages.ts#L167-L203","documentation":"DeepSeek rejects image URLs longer than 8192 characters. The SDK proactively validates URL-typed image parts in convertToDeepSeekChatMessages and throws InvalidPromptError before any network call when part.data.url.toString().length > 8192.","triggerScenarios":"Sending an image part of type 'url' whose URL string exceeds 8192 characters — typically data: URLs passed as URLs, or very long signed/CDN URLs with huge query strings.","commonSituations":"Encoding base64 data as a data: URL instead of passing Uint8Array data directly; presigned S3 URLs with long tokens; appending large transform parameters to image CDN URLs.","solutions":["Shorten the URL — host the image at a stable short URL","If the content is base64, pass it as inline data (a Uint8Array/binary data part) instead of a data: URL","Reduce query-string size (e.g. presign with fewer parameters or a shorter expiry encoding)"],"exampleFix":"// before\n{ type: 'image', image: 'data:image/png;base64,' + veryLongBase64 }\n// after\n{ type: 'image', image: await fetch(url).then(r => new Uint8Array(await r.arrayBuffer())) }","handlingStrategy":"validation","validationCode":"function assertImageUrlLength(part) {\n  const url = typeof part.image === 'string' || part.image instanceof URL ? part.image.toString() : null;\n  if (url && url.length > 8192) throw new Error('DeepSeek image URL exceeds 8192 chars; use inline data instead');\n}","typeGuard":null,"tryCatchPattern":"try { await generateText(...); } catch (e) { if (InvalidPromptError.isInstance(e) && /8192/.test(e.message)) { /* switch to binary data part */ } throw e; }","preventionTips":["Never pass data: URLs as image URLs to DeepSeek — use Uint8Array data parts","Keep presigned URLs short; strip unnecessary query params","Validate URL length in prompt-assembly code"],"tags":["deepseek","image","url-length-limit"],"backgroundTag":"url-too-long","analyzedSha":"69428b1f8b037e4d118fb4853428d5c4e620493c","analyzedAt":"2026-08-30T12:32:21.016Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}