diff --git a/src/server/api/endpoints/i/notifications.ts b/src/server/api/endpoints/i/notifications.ts
index b1ddd40d13f983165cf06744c7762f034464edc3..028d67a0185f90cdd54e962aaf86e37200d59f00 100644
--- a/src/server/api/endpoints/i/notifications.ts
+++ b/src/server/api/endpoints/i/notifications.ts
@@ -40,6 +40,16 @@ export const meta = {
 		markAsRead: {
 			validator: $.bool.optional,
 			default: true
+		},
+
+		includeTypes: {
+			validator: $.arr($.str.or(['follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'poll_vote', 'receiveFollowRequest'])).optional,
+			default: [] as string[]
+		},
+
+		excludeTypes: {
+			validator: $.arr($.str.or(['follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'poll_vote', 'receiveFollowRequest'])).optional,
+			default: [] as string[]
 		}
 	}
 };
@@ -89,6 +99,16 @@ export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 		};
 	}
 
+	if (ps.includeTypes.length > 0) {
+		query.type = {
+			$in: ps.includeTypes
+		};
+	} else if (ps.excludeTypes.length > 0) {
+		query.type = {
+			$nin: ps.excludeTypes
+		};
+	}
+
 	const notifications = await Notification
 		.find(query, {
 			limit: ps.limit,