Skip to content

Commit 8ba8b21

Browse files
bigcat88luke-mino-altherrhuntcsg
authored
increase some API nodes pricing (#7156)
## Summary Changes for Runway, Luma and Ideogram nodes. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-7156-increase-some-API-nodes-pricing-2bf6d73d3650818d96c7ce53b3d77ef1) by [Unito](https://www.unito.io) --------- Co-authored-by: Luke Mino-Altherr <luke@comfy.org> Co-authored-by: Hunter <huntcsg@users.noreply.github.com>
1 parent 1522622 commit 8ba8b21

File tree

2 files changed

+88
-88
lines changed

2 files changed

+88
-88
lines changed

src/composables/node/useNodePricing.ts

Lines changed: 62 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@ const calculateRunwayDurationPrice = (node: LGraphNode): string => {
4040
(w) => w.name === 'duration'
4141
) as IComboWidget
4242

43-
if (!durationWidget) return '$0.05/second'
43+
if (!durationWidget) return '$0.0715/second'
4444

4545
const duration = Number(durationWidget.value)
4646
// If duration is 0 or NaN, don't fall back to 5 seconds - just use 0
4747
const validDuration = isNaN(duration) ? 5 : duration
48-
const cost = (0.05 * validDuration).toFixed(2)
48+
const cost = (0.0715 * validDuration).toFixed(2)
4949
return `$${cost}/Run`
5050
}
5151

@@ -377,11 +377,11 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
377377
(w) => w.name === 'turbo'
378378
) as IComboWidget
379379

380-
if (!numImagesWidget) return '$0.02-0.06 x num_images/Run'
380+
if (!numImagesWidget) return '$0.03-0.09 x num_images/Run'
381381

382382
const numImages = Number(numImagesWidget.value) || 1
383383
const turbo = String(turboWidget?.value).toLowerCase() === 'true'
384-
const basePrice = turbo ? 0.02 : 0.06
384+
const basePrice = turbo ? 0.0286 : 0.0858
385385
const cost = (basePrice * numImages).toFixed(2)
386386
return `$${cost}/Run`
387387
}
@@ -395,11 +395,11 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
395395
(w) => w.name === 'turbo'
396396
) as IComboWidget
397397

398-
if (!numImagesWidget) return '$0.05-0.08 x num_images/Run'
398+
if (!numImagesWidget) return '$0.07-0.11 x num_images/Run'
399399

400400
const numImages = Number(numImagesWidget.value) || 1
401401
const turbo = String(turboWidget?.value).toLowerCase() === 'true'
402-
const basePrice = turbo ? 0.05 : 0.08
402+
const basePrice = turbo ? 0.0715 : 0.1144
403403
const cost = (basePrice * numImages).toFixed(2)
404404
return `$${cost}/Run`
405405
}
@@ -420,29 +420,29 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
420420
characterInput.link != null
421421

422422
if (!renderingSpeedWidget)
423-
return '$0.03-0.08 x num_images/Run (varies with rendering speed & num_images)'
423+
return '$0.04-0.11 x num_images/Run (varies with rendering speed & num_images)'
424424

425425
const numImages = Number(numImagesWidget?.value) || 1
426-
let basePrice = 0.06 // default balanced price
426+
let basePrice = 0.0858 // default balanced price
427427

428428
const renderingSpeed = String(renderingSpeedWidget.value)
429429
if (renderingSpeed.toLowerCase().includes('quality')) {
430430
if (hasCharacter) {
431-
basePrice = 0.2
431+
basePrice = 0.286
432432
} else {
433-
basePrice = 0.09
433+
basePrice = 0.1287
434434
}
435435
} else if (renderingSpeed.toLowerCase().includes('default')) {
436436
if (hasCharacter) {
437-
basePrice = 0.15
437+
basePrice = 0.2145
438438
} else {
439-
basePrice = 0.06
439+
basePrice = 0.0858
440440
}
441441
} else if (renderingSpeed.toLowerCase().includes('turbo')) {
442442
if (hasCharacter) {
443-
basePrice = 0.1
443+
basePrice = 0.143
444444
} else {
445-
basePrice = 0.03
445+
basePrice = 0.0429
446446
}
447447
}
448448

@@ -758,7 +758,7 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
758758
) as IComboWidget
759759

760760
if (!modelWidget || !resolutionWidget || !durationWidget) {
761-
return '$0.14-11.47/Run (varies with model, resolution & duration)'
761+
return '$0.20-16.40/Run (varies with model, resolution & duration)'
762762
}
763763

764764
const model = String(modelWidget.value)
@@ -767,33 +767,33 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
767767

768768
if (model.includes('ray-flash-2')) {
769769
if (duration.includes('5s')) {
770-
if (resolution.includes('4k')) return '$2.19/Run'
771-
if (resolution.includes('1080p')) return '$0.55/Run'
772-
if (resolution.includes('720p')) return '$0.24/Run'
773-
if (resolution.includes('540p')) return '$0.14/Run'
770+
if (resolution.includes('4k')) return '$3.13/Run'
771+
if (resolution.includes('1080p')) return '$0.79/Run'
772+
if (resolution.includes('720p')) return '$0.34/Run'
773+
if (resolution.includes('540p')) return '$0.20/Run'
774774
} else if (duration.includes('9s')) {
775-
if (resolution.includes('4k')) return '$3.95/Run'
776-
if (resolution.includes('1080p')) return '$0.99/Run'
777-
if (resolution.includes('720p')) return '$0.43/Run'
778-
if (resolution.includes('540p')) return '$0.252/Run'
775+
if (resolution.includes('4k')) return '$5.65/Run'
776+
if (resolution.includes('1080p')) return '$1.42/Run'
777+
if (resolution.includes('720p')) return '$0.61/Run'
778+
if (resolution.includes('540p')) return '$0.36/Run'
779779
}
780780
} else if (model.includes('ray-2')) {
781781
if (duration.includes('5s')) {
782-
if (resolution.includes('4k')) return '$6.37/Run'
783-
if (resolution.includes('1080p')) return '$1.59/Run'
784-
if (resolution.includes('720p')) return '$0.71/Run'
785-
if (resolution.includes('540p')) return '$0.40/Run'
782+
if (resolution.includes('4k')) return '$9.11/Run'
783+
if (resolution.includes('1080p')) return '$2.27/Run'
784+
if (resolution.includes('720p')) return '$1.02/Run'
785+
if (resolution.includes('540p')) return '$0.57/Run'
786786
} else if (duration.includes('9s')) {
787-
if (resolution.includes('4k')) return '$11.47/Run'
788-
if (resolution.includes('1080p')) return '$2.87/Run'
789-
if (resolution.includes('720p')) return '$1.28/Run'
790-
if (resolution.includes('540p')) return '$0.72/Run'
787+
if (resolution.includes('4k')) return '$16.40/Run'
788+
if (resolution.includes('1080p')) return '$4.10/Run'
789+
if (resolution.includes('720p')) return '$1.83/Run'
790+
if (resolution.includes('540p')) return '$1.03/Run'
791791
}
792-
} else if (model.includes('ray-1.6')) {
793-
return '$0.35/Run'
792+
} else if (model.includes('ray-1-6')) {
793+
return '$0.50/Run'
794794
}
795795

796-
return '$0.55/Run'
796+
return '$0.79/Run'
797797
}
798798
},
799799
LumaVideoNode: {
@@ -809,7 +809,7 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
809809
) as IComboWidget
810810

811811
if (!modelWidget || !resolutionWidget || !durationWidget) {
812-
return '$0.14-11.47/Run (varies with model, resolution & duration)'
812+
return '$0.20-16.40/Run (varies with model, resolution & duration)'
813813
}
814814

815815
const model = String(modelWidget.value)
@@ -818,33 +818,33 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
818818

819819
if (model.includes('ray-flash-2')) {
820820
if (duration.includes('5s')) {
821-
if (resolution.includes('4k')) return '$2.19/Run'
822-
if (resolution.includes('1080p')) return '$0.55/Run'
823-
if (resolution.includes('720p')) return '$0.24/Run'
824-
if (resolution.includes('540p')) return '$0.14/Run'
821+
if (resolution.includes('4k')) return '$3.13/Run'
822+
if (resolution.includes('1080p')) return '$0.79/Run'
823+
if (resolution.includes('720p')) return '$0.34/Run'
824+
if (resolution.includes('540p')) return '$0.20/Run'
825825
} else if (duration.includes('9s')) {
826-
if (resolution.includes('4k')) return '$3.95/Run'
827-
if (resolution.includes('1080p')) return '$0.99/Run'
828-
if (resolution.includes('720p')) return '$0.43/Run'
829-
if (resolution.includes('540p')) return '$0.252/Run'
826+
if (resolution.includes('4k')) return '$5.65/Run'
827+
if (resolution.includes('1080p')) return '$1.42/Run'
828+
if (resolution.includes('720p')) return '$0.61/Run'
829+
if (resolution.includes('540p')) return '$0.36/Run'
830830
}
831831
} else if (model.includes('ray-2')) {
832832
if (duration.includes('5s')) {
833-
if (resolution.includes('4k')) return '$6.37/Run'
834-
if (resolution.includes('1080p')) return '$1.59/Run'
835-
if (resolution.includes('720p')) return '$0.71/Run'
836-
if (resolution.includes('540p')) return '$0.40/Run'
833+
if (resolution.includes('4k')) return '$9.11/Run'
834+
if (resolution.includes('1080p')) return '$2.27/Run'
835+
if (resolution.includes('720p')) return '$1.02/Run'
836+
if (resolution.includes('540p')) return '$0.57/Run'
837837
} else if (duration.includes('9s')) {
838-
if (resolution.includes('4k')) return '$11.47/Run'
839-
if (resolution.includes('1080p')) return '$2.87/Run'
840-
if (resolution.includes('720p')) return '$1.28/Run'
841-
if (resolution.includes('540p')) return '$0.72/Run'
838+
if (resolution.includes('4k')) return '$16.40/Run'
839+
if (resolution.includes('1080p')) return '$4.10/Run'
840+
if (resolution.includes('720p')) return '$1.83/Run'
841+
if (resolution.includes('540p')) return '$1.03/Run'
842842
}
843843
} else if (model.includes('ray-1-6')) {
844-
return '$0.35/Run'
844+
return '$0.50/Run'
845845
}
846846

847-
return '$0.55/Run'
847+
return '$0.79/Run'
848848
}
849849
},
850850
MinimaxImageToVideoNode: {
@@ -1326,18 +1326,18 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
13261326
) as IComboWidget
13271327

13281328
if (!modelWidget || !aspectRatioWidget) {
1329-
return '$0.0045-0.0182/Run (varies with model & aspect ratio)'
1329+
return '$0.0064-0.026/Run (varies with model & aspect ratio)'
13301330
}
13311331

13321332
const model = String(modelWidget.value)
13331333

13341334
if (model.includes('photon-flash-1')) {
1335-
return '$0.0019/Run'
1335+
return '$0.0027/Run'
13361336
} else if (model.includes('photon-1')) {
1337-
return '$0.0073/Run'
1337+
return '$0.0104/Run'
13381338
}
13391339

1340-
return '$0.0172/Run'
1340+
return '$0.0246/Run'
13411341
}
13421342
},
13431343
LumaImageModifyNode: {
@@ -1347,18 +1347,18 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
13471347
) as IComboWidget
13481348

13491349
if (!modelWidget) {
1350-
return '$0.0019-0.0073/Run (varies with model)'
1350+
return '$0.0027-0.0104/Run (varies with model)'
13511351
}
13521352

13531353
const model = String(modelWidget.value)
13541354

13551355
if (model.includes('photon-flash-1')) {
1356-
return '$0.0019/Run'
1356+
return '$0.0027/Run'
13571357
} else if (model.includes('photon-1')) {
1358-
return '$0.0073/Run'
1358+
return '$0.0104/Run'
13591359
}
13601360

1361-
return '$0.0172/Run'
1361+
return '$0.0246/Run'
13621362
}
13631363
},
13641364
MoonvalleyTxt2VideoNode: {
@@ -1420,7 +1420,7 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
14201420
},
14211421
// Runway nodes - using actual node names from ComfyUI
14221422
RunwayTextToImageNode: {
1423-
displayPrice: '$0.08/Run'
1423+
displayPrice: '$0.11/Run'
14241424
},
14251425
RunwayImageToVideoNodeGen3a: {
14261426
displayPrice: calculateRunwayDurationPrice

0 commit comments

Comments
 (0)