diff --git a/rbx_asset/src/cookie.rs b/rbx_asset/src/cookie.rs
index 14c677f..aa4b215 100644
--- a/rbx_asset/src/cookie.rs
+++ b/rbx_asset/src/cookie.rs
@@ -27,6 +27,10 @@ pub enum CreateError{
 	PostError(PostError),
 	Response(ResponseError),
 	Reqwest(reqwest::Error),
+	ParseInt{
+		response:String,
+		err:std::num::ParseIntError,
+	},
 }
 impl std::fmt::Display for CreateError{
 	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
@@ -51,6 +55,10 @@ pub enum UploadError{
 	Reqwest(reqwest::Error),
 	Response(ResponseError),
 	AssetIdIsZero,
+	ParseInt{
+		response:String,
+		err:std::num::ParseIntError,
+	},
 }
 impl std::fmt::Display for UploadError{
 	fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
@@ -58,7 +66,6 @@ impl std::fmt::Display for UploadError{
 	}
 }
 impl std::error::Error for UploadError{}
-type RobloxUploadResponse=u64;
 #[derive(Debug,serde::Deserialize,serde::Serialize)]
 #[allow(nonstandard_style,dead_code)]
 pub struct UploadResponse{
@@ -272,14 +279,20 @@ impl CookieContext{
 				query.append_pair("groupId",group_id.to_string().as_str());
 			}
 		}
-		let asset_id=crate::response_ok(
+		let response=crate::response_ok(
 			self.post(url,body).await.map_err(CreateError::PostError)?
 		).await.map_err(CreateError::Response)?
-		.json::<RobloxUploadResponse>().await.map_err(CreateError::Reqwest)?;
+		.text().await.map_err(CreateError::Reqwest)?;
 
-		Ok(UploadResponse{
-			AssetId:asset_id,
-		})
+		match response.parse(){
+			Ok(asset_id)=>Ok(UploadResponse{
+				AssetId:asset_id,
+			}),
+			Err(err)=>Err(CreateError::ParseInt{
+				response,
+				err,
+			})
+		}
 	}
 	pub async fn upload(&self,config:UploadRequest,body:impl Into<reqwest::Body>+Clone)->Result<UploadResponse,UploadError>{
 		let mut url=reqwest::Url::parse("https://data.roblox.com/Data/Upload.ashx?json=1&type=Model&genreTypeId=1").map_err(UploadError::ParseError)?;
@@ -307,14 +320,20 @@ impl CookieContext{
 				query.append_pair("groupId",group_id.to_string().as_str());
 			}
 		}
-		let asset_id=crate::response_ok(
+		let response=crate::response_ok(
 			self.post(url,body).await.map_err(UploadError::PostError)?
 		).await.map_err(UploadError::Response)?
-		.json::<RobloxUploadResponse>().await.map_err(UploadError::Reqwest)?;
+		.text().await.map_err(UploadError::Reqwest)?;
 
-		Ok(UploadResponse{
-			AssetId:asset_id,
-		})
+		match response.parse(){
+			Ok(asset_id)=>Ok(UploadResponse{
+				AssetId:asset_id,
+			}),
+			Err(err)=>Err(UploadError::ParseInt{
+				response,
+				err,
+			})
+		}
 	}
 	pub async fn get_asset(&self,config:GetAssetRequest)->Result<Vec<u8>,GetError>{
 		let mut url=reqwest::Url::parse("https://assetdelivery.roblox.com/v1/asset/").map_err(GetError::ParseError)?;