diff --git a/packages/backend/src/server/api/endpoints/notes/create.test.ts b/packages/backend/src/server/api/endpoints/notes/create.test.ts
index 4e5ec361f9..6bff7fc0c9 100644
--- a/packages/backend/src/server/api/endpoints/notes/create.test.ts
+++ b/packages/backend/src/server/api/endpoints/notes/create.test.ts
@@ -235,6 +235,21 @@ describe('api:notes/create', () => {
 			});
 		});
 
+		describe('renote', () => {
+			test('just a renote', () => {
+				expect(v({ renoteId: '1' }))
+					.toBe(VALID);
+			});
+			test('just a quote', () => {
+				expect(v({ text: 'Hello, world!', renoteId: '1' }))
+					.toBe(VALID);
+			});
+			test('reject invalid renoteId', () => {
+				expect(v({ renoteId: 'あ' }))
+					.toBe(INVALID);
+			});
+		});
+
 		test('text, fileIds and poll', () => {
 			expect(v({ text: 'Hello, world!', fileIds: ['1', '2', '3'], poll: { choices: ['a', 'b', 'c'] } }))
 				.toBe(VALID);
diff --git a/packages/backend/src/server/api/endpoints/notes/create.ts b/packages/backend/src/server/api/endpoints/notes/create.ts
index 2848cd7df1..786ad103b0 100644
--- a/packages/backend/src/server/api/endpoints/notes/create.ts
+++ b/packages/backend/src/server/api/endpoints/notes/create.ts
@@ -147,6 +147,7 @@ export const paramDef = {
 	// (re)note with text, files and poll are optional
 	anyOf: [
 		{ required: ['text'] },
+		{ required: ['renoteId'] },
 		{ required: ['fileIds'] },
 		{ required: ['mediaIds'] },
 		{ required: ['poll'] },