From 723bbb98eb74bd4a5f8312fd11fe979af9e54cee Mon Sep 17 00:00:00 2001 From: Alexander Piskun <13381981+bigcat88@users.noreply.github.com> Date: Wed, 24 Dec 2025 19:37:54 +0200 Subject: [PATCH] add prices for Kling Motion Control node (#7756) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-7756-add-prices-for-Kling-Motion-Control-node-2d36d73d3650814193f3c84f25624518) by [Unito](https://www.unito.io) --- src/composables/node/useNodePricing.ts | 29 ++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/composables/node/useNodePricing.ts b/src/composables/node/useNodePricing.ts index c6ad985c8..cf627b6f9 100644 --- a/src/composables/node/useNodePricing.ts +++ b/src/composables/node/useNodePricing.ts @@ -116,6 +116,31 @@ const makeOmniProDurationCalculator = return formatCreditsLabel(cost) } +const klingMotionControlPricingCalculator: PricingFunction = ( + node: LGraphNode +): string => { + const modeWidget = node.widgets?.find( + (w) => w.name === 'mode' + ) as IComboWidget + + if (!modeWidget) { + return formatCreditsListLabel([0.07, 0.112], { + suffix: '/second', + note: '(std/pro)' + }) + } + + const mode = String(modeWidget.value).toLowerCase() + + if (mode === 'pro') return formatCreditsLabel(0.112, { suffix: '/second' }) + if (mode === 'std') return formatCreditsLabel(0.07, { suffix: '/second' }) + + return formatCreditsListLabel([0.07, 0.112], { + suffix: '/second', + note: '(std/pro)' + }) +} + const pixversePricingCalculator = (node: LGraphNode): string => { const durationWidget = node.widgets?.find( (w) => w.name === 'duration_seconds' @@ -1034,6 +1059,9 @@ const apiNodeCosts: Record = KlingOmniProVideoToVideoNode: { displayPrice: makeOmniProDurationCalculator(0.168) }, + KlingMotionControl: { + displayPrice: klingMotionControlPricingCalculator + }, KlingOmniProEditVideoNode: { displayPrice: formatCreditsLabel(0.168, { suffix: '/second' }) }, @@ -2117,6 +2145,7 @@ export const useNodePricing = () => { KlingOmniProFirstLastFrameNode: ['duration'], KlingOmniProImageToVideoNode: ['duration'], KlingOmniProVideoToVideoNode: ['duration'], + KlingMotionControl: ['mode'], MinimaxHailuoVideoNode: ['resolution', 'duration'], OpenAIDalle3: ['size', 'quality'], OpenAIDalle2: ['size', 'n'],