diff --git a/src/requests/form_builder.rs b/src/requests/form_builder.rs
index d14f0729..c7192446 100644
--- a/src/requests/form_builder.rs
+++ b/src/requests/form_builder.rs
@@ -57,7 +57,7 @@ impl FormBuilder {
         self,
         name: N,
         file_name: String,
-        data: Vec<u8>,
+        data: Cow<'static, [u8]>,
     ) -> Self
     where
         N: Into<Cow<'a, str>>,
@@ -77,7 +77,7 @@ impl FormBuilder {
 
 pub(crate) enum FormValue {
     File(PathBuf),
-    Memory { file_name: String, data: Vec<u8> },
+    Memory { file_name: String, data: Cow<'static, [u8]> },
     Str(String),
 }
 
@@ -176,7 +176,7 @@ impl IntoFormValue for InputFile {
             InputFile::File(path) => Some(FormValue::File(path.clone())),
             InputFile::Memory { file_name, data } => Some(FormValue::Memory {
                 file_name: file_name.clone(),
-                data: data.clone(),
+                data: data.clone().into(),
             }),
             InputFile::Url(url) => Some(FormValue::Str(url.clone())),
             InputFile::FileId(file_id) => Some(FormValue::Str(file_id.clone())),
diff --git a/src/requests/utils.rs b/src/requests/utils.rs
index 9ee2400d..25cc5926 100644
--- a/src/requests/utils.rs
+++ b/src/requests/utils.rs
@@ -1,4 +1,4 @@
-use std::path::PathBuf;
+use std::{borrow::Cow, path::PathBuf};
 
 use bytes::{Bytes, BytesMut};
 use reqwest::{multipart::Part, Body};
@@ -35,6 +35,9 @@ pub async fn file_to_part(path_to_file: PathBuf) -> Part {
     Part::stream(Body::wrap_stream(file)).file_name(file_name)
 }
 
-pub fn file_from_memory_to_part(data: Vec<u8>, name: String) -> Part {
+pub fn file_from_memory_to_part(
+    data: Cow<'static, [u8]>,
+    name: String,
+) -> Part {
     Part::bytes(data).file_name(name)
 }
diff --git a/src/types/input_file.rs b/src/types/input_file.rs
index 149f3d21..83b7fe9c 100644
--- a/src/types/input_file.rs
+++ b/src/types/input_file.rs
@@ -1,6 +1,6 @@
 use serde::{Deserialize, Serialize};
 
-use std::path::PathBuf;
+use std::{borrow::Cow, path::PathBuf};
 
 /// This object represents the contents of a file to be uploaded.
 ///
@@ -8,7 +8,7 @@ use std::path::PathBuf;
 #[derive(Clone, Debug, Eq, Hash, PartialEq, Deserialize)]
 pub enum InputFile {
     File(PathBuf),
-    Memory { file_name: String, data: Vec<u8> },
+    Memory { file_name: String, data: Cow<'static, [u8]> },
     Url(String),
     FileId(String),
 }
@@ -24,7 +24,7 @@ impl InputFile {
     pub fn memory<S, D>(file_name: S, data: D) -> Self
     where
         S: Into<String>,
-        D: Into<Vec<u8>>,
+        D: Into<Cow<'static, [u8]>>,
     {
         Self::Memory { file_name: file_name.into(), data: data.into() }
     }