diff --git a/src/server/api/endpoints/admin/emoji/add.ts b/src/server/api/endpoints/admin/emoji/add.ts
index 8c21b1c73e..6a91c31a95 100644
--- a/src/server/api/endpoints/admin/emoji/add.ts
+++ b/src/server/api/endpoints/admin/emoji/add.ts
@@ -5,6 +5,7 @@ import { Emojis } from '../../../../../models';
 import { genId } from '../../../../../misc/gen-id';
 import { getConnection } from 'typeorm';
 import { insertModerationLog } from '../../../../../services/insert-moderation-log';
+import { ApiError } from '../../../error';
 
 export const meta = {
 	desc: {
@@ -29,12 +30,24 @@ export const meta = {
 			validator: $.optional.arr($.str.min(1)),
 			default: [] as string[]
 		}
+	},
+
+	errors: {
+		emojiAlredyExists: {
+			message: 'Emoji already exists.',
+			code: 'EMOJI_ALREADY_EXISTS',
+			id: 'fc46b5a4-6b92-4c33-ac66-b806659bb5cf'
+		}
 	}
 };
 
 export default define(meta, async (ps, me) => {
 	const type = await detectUrlMine(ps.url);
 
+	const exists = await Emojis.findOne({ name: ps.name });
+
+	if (exists != null) throw new ApiError(meta.errors.emojiAlredyExists);
+
 	const emoji = await Emojis.save({
 		id: genId(),
 		updatedAt: new Date(),
diff --git a/src/server/api/endpoints/admin/emoji/remove.ts b/src/server/api/endpoints/admin/emoji/remove.ts
index 92c5f5f8c6..a591d4c3dd 100644
--- a/src/server/api/endpoints/admin/emoji/remove.ts
+++ b/src/server/api/endpoints/admin/emoji/remove.ts
@@ -4,6 +4,7 @@ import { ID } from '../../../../../misc/cafy-id';
 import { Emojis } from '../../../../../models';
 import { getConnection } from 'typeorm';
 import { insertModerationLog } from '../../../../../services/insert-moderation-log';
+import { ApiError } from '../../../error';
 
 export const meta = {
 	desc: {
@@ -19,13 +20,21 @@ export const meta = {
 		id: {
 			validator: $.type(ID)
 		}
+	},
+
+	errors: {
+		noSuchEmoji: {
+			message: 'No such emoji.',
+			code: 'NO_SUCH_EMOJI',
+			id: 'be83669b-773a-44b7-b1f8-e5e5170ac3c2'
+		}
 	}
 };
 
 export default define(meta, async (ps, me) => {
 	const emoji = await Emojis.findOne(ps.id);
 
-	if (emoji == null) throw new Error('emoji not found');
+	if (emoji == null) throw new ApiError(meta.errors.noSuchEmoji);
 
 	await Emojis.delete(emoji.id);
 
diff --git a/src/server/api/endpoints/admin/emoji/update.ts b/src/server/api/endpoints/admin/emoji/update.ts
index f8bc638fcf..062a8d0fb8 100644
--- a/src/server/api/endpoints/admin/emoji/update.ts
+++ b/src/server/api/endpoints/admin/emoji/update.ts
@@ -4,6 +4,7 @@ import { detectUrlMine } from '../../../../../misc/detect-url-mine';
 import { ID } from '../../../../../misc/cafy-id';
 import { Emojis } from '../../../../../models';
 import { getConnection } from 'typeorm';
+import { ApiError } from '../../../error';
 
 export const meta = {
 	desc: {
@@ -31,13 +32,21 @@ export const meta = {
 		aliases: {
 			validator: $.arr($.str)
 		}
+	},
+
+	errors: {
+		noSuchEmoji: {
+			message: 'No such emoji.',
+			code: 'NO_SUCH_EMOJI',
+			id: '684dec9d-a8c2-4364-9aa8-456c49cb1dc8'
+		}
 	}
 };
 
 export default define(meta, async (ps) => {
 	const emoji = await Emojis.findOne(ps.id);
 
-	if (emoji == null) throw new Error('emoji not found');
+	if (emoji == null) throw new ApiError(meta.errors.noSuchEmoji);
 
 	const type = await detectUrlMine(ps.url);