diff --git a/frontend/src/metabase/actions/containers/ActionParametersInputForm/ActionParametersInputForm.tsx b/frontend/src/metabase/actions/containers/ActionParametersInputForm/ActionParametersInputForm.tsx
index 267c7ad430784940239e11072eb69e61ca46ce04..da6bfbee330fac16c4f6e95f1261925c32817667 100644
--- a/frontend/src/metabase/actions/containers/ActionParametersInputForm/ActionParametersInputForm.tsx
+++ b/frontend/src/metabase/actions/containers/ActionParametersInputForm/ActionParametersInputForm.tsx
@@ -18,11 +18,12 @@ import type {
   ActionFormSettings,
 } from "metabase-types/api";
 
-import { ActionsApi } from "metabase/services";
+import { ActionsApi, PublicApi } from "metabase/services";
 import {
   shouldPrefetchValues,
   generateFieldSettingsFromParameters,
 } from "metabase/actions/utils";
+import { getDashboardType } from "metabase/dashboard/utils";
 
 import type Field from "metabase-lib/metadata/Field";
 
@@ -56,8 +57,13 @@ function ActionParametersInputForm({
 
   const shouldPrefetch = useMemo(() => shouldPrefetchValues(action), [action]);
 
+  const prefetchEndpoint =
+    getDashboardType(dashboard?.id) === "public"
+      ? PublicApi.prefetchValues
+      : ActionsApi.prefetchValues;
+
   const fetchInitialValues = useCallback(async () => {
-    const fetchedValues = await ActionsApi.prefetchValues({
+    const fetchedValues = await prefetchEndpoint({
       dashboardId: dashboard?.id,
       dashcardId: dashcard?.id,
       parameters: JSON.stringify(dashcardParamValues),
@@ -66,7 +72,7 @@ function ActionParametersInputForm({
     if (fetchedValues) {
       setPrefetchValues(fetchedValues);
     }
-  }, [dashboard?.id, dashcard?.id, dashcardParamValues]);
+  }, [dashboard?.id, dashcard?.id, dashcardParamValues, prefetchEndpoint]);
 
   useEffect(() => {
     const hasValueFromDashboard = Object.keys(dashcardParamValues).length > 0;
diff --git a/frontend/src/metabase/dashboard/actions/actions.ts b/frontend/src/metabase/dashboard/actions/actions.ts
index dc59406addd0adc7e2e732b71043f2e073f976c9..bc90ff8e767175b0639e69ed6a8b891af54e7dfa 100644
--- a/frontend/src/metabase/dashboard/actions/actions.ts
+++ b/frontend/src/metabase/dashboard/actions/actions.ts
@@ -7,7 +7,7 @@ import {
 
 import { addUndo } from "metabase/redux/undo";
 
-import { ActionsApi } from "metabase/services";
+import { ActionsApi, PublicApi } from "metabase/services";
 
 import type {
   ActionDashboardCard,
@@ -21,6 +21,7 @@ import type {
 } from "metabase-types/api";
 import type { Dispatch } from "metabase-types/store";
 
+import { getDashboardType } from "../utils";
 import { setDashCardAttributes } from "./core";
 import { reloadDashboardCards } from "./data-fetching";
 
@@ -91,7 +92,10 @@ export const executeRowAction = async ({
   dispatch,
   shouldToast = true,
 }: ExecuteRowActionPayload): Promise<ActionFormSubmitResult> => {
-  const executeAction = ActionsApi.execute;
+  const executeAction =
+    getDashboardType(dashboard.id) === "public"
+      ? PublicApi.executeDashcardAction
+      : ActionsApi.execute;
 
   try {
     const result = await executeAction({
diff --git a/frontend/src/metabase/services.js b/frontend/src/metabase/services.js
index c6f4f2074cde929b03ec92f595345ae26e469a67..dbc2fcd266768bb4f1a813ee3e8e0773766be3c8 100644
--- a/frontend/src/metabase/services.js
+++ b/frontend/src/metabase/services.js
@@ -162,6 +162,9 @@ const PIVOT_PUBLIC_PREFIX = "/api/public/pivot/";
 
 export const PublicApi = {
   action: GET("/api/public/action/:uuid"),
+  executeDashcardAction: POST(
+    "/api/public/dashboard/:dashboardId/dashcard/:dashcardId/execute",
+  ),
   executeAction: POST("/api/public/action/:uuid/execute"),
   card: GET("/api/public/card/:uuid"),
   cardQuery: GET("/api/public/card/:uuid/query"),
@@ -173,6 +176,9 @@ export const PublicApi = {
   dashboardCardQueryPivot: GET(
     PIVOT_PUBLIC_PREFIX + "dashboard/:uuid/dashcard/:dashcardId/card/:cardId",
   ),
+  prefetchValues: GET(
+    "/api/public/dashboard/:dashboardId/dashcard/:dashcardId/execute",
+  ),
 };
 
 export const EmbedApi = {