diff --git a/langfuse/_task_manager/media_manager.py b/langfuse/_task_manager/media_manager.py index 13fa5f0c6..a36e3b8af 100644 --- a/langfuse/_task_manager/media_manager.py +++ b/langfuse/_task_manager/media_manager.py @@ -246,15 +246,20 @@ def _process_upload_media_job( return + headers = {"Content-Type": data["content_type"]} + + # In self-hosted setups with GCP, do not add unsupported headers that fail the upload + is_self_hosted_gcs_bucket = "storage.googleapis.com" in upload_url + + if not is_self_hosted_gcs_bucket: + headers["x-ms-blob-type"] = "BlockBlob" + headers["x-amz-checksum-sha256"] = data["content_sha256_hash"] + upload_start_time = time.time() upload_response = self._request_with_backoff( requests.put, upload_url, - headers={ - "Content-Type": data["content_type"], - "x-amz-checksum-sha256": data["content_sha256_hash"], - "x-ms-blob-type": "BlockBlob", - }, + headers=headers, data=data["content_bytes"], ) upload_time_ms = int((time.time() - upload_start_time) * 1000)