diff --git a/src/api.ts b/src/api.ts
index 103aa5d890eaedba549b0c38d05baeeda98d8e09..3399d57e30e034ef4a865209264e3039828695f2 100644
--- a/src/api.ts
+++ b/src/api.ts
@@ -1,5 +1,7 @@
 import { Endpoints } from './endpoints';
 
+const MK_API_ERROR = Symbol();
+
 export type APIError = {
 	id: string;
 	code: string;
@@ -8,6 +10,10 @@ export type APIError = {
 	info: Record<string, any>;
 };
 
+export function isAPIError(reason: any): reason is APIError {
+	return reason[MK_API_ERROR] === true;
+}
+
 export function request<E extends keyof Endpoints>(
 	origin: string,
 	endpoint: E,
@@ -32,7 +38,10 @@ export function request<E extends keyof Endpoints>(
 			} else if (res.status === 204) {
 				resolve(null);
 			} else {
-				reject(body.error);
+				reject({
+					[MK_API_ERROR]: true,
+					...body.error
+				});
 			}
 		}).catch(reject);
 	});