diff --git a/CHANGELOG.md b/CHANGELOG.md
index bbcbdf58da0c35443f7460803c323dd3d2e166db..56c2552145e6d0d7fc95d8ae9d0389e284ca3f1b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -53,6 +53,7 @@
 - Playの操作を行うAPI TokenをAPIコンソールから発行できるように
 - リアクションの表示サイズをより大きくできるように
 - AiScriptを0.16.0に更新
+- Mk:apiが失敗した時にエラー型の値(AiScript 0.16.0で追加)を返すように
 - タイムラインでリスト/アンテナ選択時のパフォーマンスを改善
 - 「Moderation note」、「Add moderation note」をローカライズできるように
 - 新しい実績を追加
diff --git a/packages/frontend/src/scripts/aiscript/api.ts b/packages/frontend/src/scripts/aiscript/api.ts
index c3acb6d14598e1f1af464296fd83a060c9d37ae8..dcb4a9105c126d3c50b893b77a877c7e6b509aed 100644
--- a/packages/frontend/src/scripts/aiscript/api.ts
+++ b/packages/frontend/src/scripts/aiscript/api.ts
@@ -39,8 +39,11 @@ export function createAiScriptEnv(opts) {
 				// バグがあればundefinedもあり得るため念のため
 				if (typeof token.value !== 'string') throw new Error('invalid token');
 			}
-			const res = await os.api(ep.value, utils.valToJs(param), token ? token.value : (opts.token ?? null));
-			return utils.jsToVal(res);
+			return os.api(ep.value, utils.valToJs(param), token ? token.value : (opts.token ?? null)).then(res => {
+				return utils.jsToVal(res);
+			}, err => {
+				return values.ERROR('request_failed', utils.jsToVal(err));
+			});
 		}),
 		'Mk:save': values.FN_NATIVE(([key, value]) => {
 			utils.assertString(key);