{"record":{"id":"d876e539ce88d8bd","repo":"vercel/ai","slug":"google-did-not-return-a-resumable-upload-url","errorCode":null,"errorMessage":"Google did not return a resumable upload URL.","messagePattern":"Google did not return a resumable upload URL\\.","errorType":"exception","errorClass":"InvalidResponseDataError","httpStatus":null,"severity":"error","filePath":"packages/google/src/google-batch.ts","lineNumber":663,"sourceCode":"}\n\nfunction convertGoogleRpcError(\n  error: InferSchema<typeof googleRpcStatusSchema>,\n  fallbackMessage: string,\n): BatchV4Error {\n  return {\n    message: error.message ?? fallbackMessage,\n    ...(error.status != null ? { type: error.status } : {}),\n    ...(error.code != null ? { code: String(error.code) } : {}),\n  };\n}\n\nconst googleUploadUrlResponseHandler: ResponseHandler<string> = async ({\n  response,\n}) => {\n  const uploadUrl = response.headers.get('x-goog-upload-url');\n  if (uploadUrl == null) {\n    throw new InvalidResponseDataError({\n      data: response.headers,\n      message: 'Google did not return a resumable upload URL.',\n    });\n  }\n\n  return { value: uploadUrl };\n};\n","sourceCodeStart":645,"sourceCodeEnd":671,"githubUrl":"https://github.com/vercel/ai/blob/69428b1f8b037e4d118fb4853428d5c4e620493c/packages/google/src/google-batch.ts#L645-L671","documentation":"Error \"Google did not return a resumable upload URL.\" thrown in vercel/ai.","triggerScenarios":"Thrown at packages/google/src/google-batch.ts:663 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"69428b1f8b037e4d118fb4853428d5c4e620493c","analyzedAt":"2026-08-30T12:32:21.016Z","schemaVersion":2},"datasetVersion":"2026-08-30T13:17:10.514Z"}