diff --git a/services/identity/src/database.rs b/services/identity/src/database.rs
--- a/services/identity/src/database.rs
+++ b/services/identity/src/database.rs
@@ -497,7 +497,14 @@
         OlmAccountType::Notification,
         true,
       )
-      .await?;
+      .await
+      .unwrap_or_else(|e| {
+        error!(
+          errorType = error_types::OTK_DB_LOG,
+          "Error retrieving notification one-time key: {:?}", e
+        );
+        (None, true)
+      });
     let (content_one_time_key, _) = self
       .get_one_time_key(
         user_id,
@@ -505,7 +512,14 @@
         OlmAccountType::Content,
         !requested_more_keys,
       )
-      .await?;
+      .await
+      .unwrap_or_else(|e| {
+        error!(
+          errorType = error_types::OTK_DB_LOG,
+          "Error retrieving content one-time key: {:?}", e
+        );
+        (None, true)
+      });
 
     debug!(
       "Able to get notif one-time key for keyserver {}: {}",
@@ -787,7 +801,14 @@
             OlmAccountType::Notification,
             true,
           )
-          .await?;
+          .await
+          .unwrap_or_else(|e| {
+            error!(
+              errorType = error_types::OTK_DB_LOG,
+              "Error retrieving notification one-time key: {:?}", e
+            );
+            (None, true)
+          });
         (device_keys.content_one_time_key, _) = self
           .get_one_time_key(
             user_id,
@@ -795,7 +816,14 @@
             OlmAccountType::Content,
             !requested_more_keys,
           )
-          .await?;
+          .await
+          .unwrap_or_else(|e| {
+            error!(
+              errorType = error_types::OTK_DB_LOG,
+              "Error retrieving content one-time key: {:?}", e
+            );
+            (None, true)
+          });
       }
     }
 
diff --git a/services/identity/src/database/one_time_keys.rs b/services/identity/src/database/one_time_keys.rs
--- a/services/identity/src/database/one_time_keys.rs
+++ b/services/identity/src/database/one_time_keys.rs
@@ -14,7 +14,7 @@
     DBItemAttributeError, DBItemError,
   },
 };
-use tracing::{debug, error, info};
+use tracing::{debug, error, info, warn};
 
 use crate::{
   constants::{
@@ -94,7 +94,7 @@
         .await?
         .pop()
       else {
-        return Err(Error::NotEnoughOneTimeKeys);
+        return Ok((None, requested_more_keys));
       };
 
       let delete_otk_operation = otk_row.as_delete_request();
@@ -209,11 +209,7 @@
 
     if let Some(limit) = num_keys {
       if otk_rows.len() != limit {
-        error!(
-          errorType = error_types::OTK_DB_LOG,
-          "There are fewer one-time keys than the number requested"
-        );
-        return Err(Error::NotEnoughOneTimeKeys);
+        warn!("There are fewer one-time keys than the number requested");
       }
     }
 
diff --git a/services/identity/src/error.rs b/services/identity/src/error.rs
--- a/services/identity/src/error.rs
+++ b/services/identity/src/error.rs
@@ -34,8 +34,6 @@
   IllegalState,
   #[display(...)]
   InvalidFormat,
-  #[display(...)]
-  NotEnoughOneTimeKeys,
 }
 
 #[derive(Debug, derive_more::Display, derive_more::Error)]