From 33bb389eeb171af7938f79fde10a70590f815e9c Mon Sep 17 00:00:00 2001 From: bigcat88 Date: Fri, 5 Dec 2025 20:46:04 +0200 Subject: [PATCH] feat(api-nodes): add pricing for seedream4.5 --- src/composables/node/useNodePricing.ts | 33 ++++++++++++++++++-------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/src/composables/node/useNodePricing.ts b/src/composables/node/useNodePricing.ts index 6a6bf08130..7a3a900561 100644 --- a/src/composables/node/useNodePricing.ts +++ b/src/composables/node/useNodePricing.ts @@ -1768,6 +1768,9 @@ const apiNodeCosts: Record = }, ByteDanceSeedreamNode: { displayPrice: (node: LGraphNode): string => { + const modelWidget = node.widgets?.find( + (w) => w.name === 'model' + ) as IComboWidget const sequentialGenerationWidget = node.widgets?.find( (w) => w.name === 'sequential_image_generation' ) as IComboWidget @@ -1775,21 +1778,31 @@ const apiNodeCosts: Record = (w) => w.name === 'max_images' ) as IComboWidget - if (!sequentialGenerationWidget || !maxImagesWidget) - return '$0.03/Run ($0.03 for one output image)' + const model = String(modelWidget?.value ?? '').toLowerCase() + let pricePerImage = 0.03 // default for seedream-4-0-250828 and fallback + if (model.includes('seedream-4-5-251128')) { + pricePerImage = 0.04 + } else if (model.includes('seedream-4-0-250828')) { + pricePerImage = 0.03 + } - if ( - String(sequentialGenerationWidget.value).toLowerCase() === 'disabled' - ) { - return '$0.03/Run' + if (!sequentialGenerationWidget || !maxImagesWidget) { + return `$${pricePerImage}/Run ($${pricePerImage} for one output image)` } - const maxImages = Number(maxImagesWidget.value) + const seqMode = String(sequentialGenerationWidget.value).toLowerCase() + if (seqMode === 'disabled') { + return `$${pricePerImage}/Run` + } + + const maxImagesRaw = Number(maxImagesWidget.value) + const maxImages = + Number.isFinite(maxImagesRaw) && maxImagesRaw > 0 ? maxImagesRaw : 1 if (maxImages === 1) { - return '$0.03/Run' + return `$${pricePerImage}/Run` } - const cost = (0.03 * maxImages).toFixed(2) - return `$${cost}/Run ($0.03 for one output image)` + const totalCost = (pricePerImage * maxImages).toFixed(2) + return `$${totalCost}/Run ($${pricePerImage} for one output image)` } }, ByteDanceTextToVideoNode: {