diff --git a/functions/api/reports/complete.ts b/functions/api/reports/complete.ts
index 3851140..8b1643e 100644
--- a/functions/api/reports/complete.ts
+++ b/functions/api/reports/complete.ts
@@ -29,9 +29,21 @@ export async function onRequestPost(context: RequestContext) {
 
   if (coconutData) {
     const responsePromises = [];
+    const contentTypes: { [k: string]: string } = {
+      gif: "image/gif",
+      m4v: "video/x-m4v",
+      mkv: "video/x-matroska",
+      mov: "video/mp4",
+      mp4: "video/mp4",
+      webm: "video/webm",
+      wmv: "video/x-ms-wmv",
+    };
 
     for (const attachment of coconutData.attachments) {
       const token = crypto.randomUUID();
+      const objectMeta = await context.env.R2.head(attachment);
+
+      if (!objectMeta) continue;
 
       responsePromises.push(
         fetch("https://api.coconut.co/v2/jobs", {
@@ -43,13 +55,13 @@ export async function onRequestPost(context: RequestContext) {
                 secret_access_key: context.env.R2_SECRET_KEY,
               },
               endpoint: `https://${context.env.R2_ZONE}.r2.cloudflarestorage.com`,
-              key: `/t/${attachment}`,
+              key: `/t/${attachment}.${contentTypes[objectMeta.httpMetadata?.contentType as string]}`,
               region: "us-east-1",
               service: "s3other",
             },
             notification: {
               params: {
-                attachment: attachment,
+                attachment,
                 token,
               },
               type: "http",
diff --git a/functions/api/reports/submit.ts b/functions/api/reports/submit.ts
index d06dd97..c9bb9ac 100644
--- a/functions/api/reports/submit.ts
+++ b/functions/api/reports/submit.ts
@@ -163,7 +163,9 @@ export async function onRequestPost(context: RequestContext) {
     uploadUrlPromises.push(
       upload(
         context.env,
-        `${["mp4", "m4v", "webm"].includes(fileExten) ? "" : "t/"}${fileUploadKey}`,
+        ["mp4", "m4v", "webm"].includes(fileExten)
+          ? fileUploadKey
+          : `t/${fileUploadKey}.${fileExten}`,
         file.size,
         fileExten,
       ),
@@ -206,7 +208,11 @@ export async function onRequestPost(context: RequestContext) {
 
   for (const urlResult of uploadUrlResults as PromiseFulfilledResult<string>[]) {
     uploadUrls.push(urlResult.value);
-    attachments.push(new URL(urlResult.value).pathname.replace(/^\/?t?\//, ""));
+    attachments.push(
+      new URL(urlResult.value).pathname
+        .replace(/^\/?t?\//, "")
+        .replace(/\.w*$/, ""),
+    );
   }
 
   await context.env.DATA.put(