diff --git a/packages/backend/src/core/ClipService.ts b/packages/backend/src/core/ClipService.ts
index 59f213c00cb83f3a5a77477b85bf65e33895c72a..27f3013d4a1b093c36f8af3a687b2d6e9437707d 100644
--- a/packages/backend/src/core/ClipService.ts
+++ b/packages/backend/src/core/ClipService.ts
@@ -15,6 +15,7 @@ import type { MiLocalUser } from '@/models/entities/User.js';
 
 @Injectable()
 export class ClipService {
+	public static NoSuchNoteError = class extends Error {};
 	public static NoSuchClipError = class extends Error {};
 	public static AlreadyAddedError = class extends Error {};
 	public static TooManyClipNotesError = class extends Error {};
@@ -118,10 +119,14 @@ export class ClipService {
 				noteId: noteId,
 				clipId: clip.id,
 			});
-		} catch (e) {
+		} catch (e: any) {
 			if (isDuplicateKeyValueError(e)) {
 				throw new ClipService.AlreadyAddedError();
+			} else if (e.detail.includes('is not present in table "note".')) {
+				throw new ClipService.NoSuchNoteError();
 			}
+
+			throw e;
 		}
 
 		this.clipsRepository.update(clip.id, {
diff --git a/packages/backend/src/server/api/endpoints/clips/add-note.ts b/packages/backend/src/server/api/endpoints/clips/add-note.ts
index a3777e3ba6d84600af5578c05fd7e38e9cec7258..749593aa656da16bcd6a38bb6d554aed46e8a1fe 100644
--- a/packages/backend/src/server/api/endpoints/clips/add-note.ts
+++ b/packages/backend/src/server/api/endpoints/clips/add-note.ts
@@ -70,6 +70,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
 			} catch (e) {
 				if (e instanceof ClipService.NoSuchClipError) {
 					throw new ApiError(meta.errors.noSuchClip);
+				} else if (e instanceof ClipService.NoSuchNoteError) {
+					throw new ApiError(meta.errors.noSuchNote);
 				} else if (e instanceof ClipService.AlreadyAddedError) {
 					throw new ApiError(meta.errors.alreadyClipped);
 				} else if (e instanceof ClipService.TooManyClipNotesError) {