@@ -110,15 +110,27 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
110
110
FluxProUltraImageNode : {
111
111
displayPrice : '$0.06/Run'
112
112
} ,
113
+ FluxProKontextProNode : {
114
+ displayPrice : '$0.04/Run'
115
+ } ,
116
+ FluxProKontextMaxNode : {
117
+ displayPrice : '$0.08/Run'
118
+ } ,
113
119
IdeogramV1 : {
114
120
displayPrice : ( node : LGraphNode ) : string => {
115
121
const numImagesWidget = node . widgets ?. find (
116
122
( w ) => w . name === 'num_images'
117
123
) as IComboWidget
118
- if ( ! numImagesWidget ) return '$0.06 x num_images/Run'
124
+ const turboWidget = node . widgets ?. find (
125
+ ( w ) => w . name === 'turbo'
126
+ ) as IComboWidget
127
+
128
+ if ( ! numImagesWidget ) return '$0.02-0.06 x num_images/Run'
119
129
120
130
const numImages = Number ( numImagesWidget . value ) || 1
121
- const cost = ( 0.06 * numImages ) . toFixed ( 2 )
131
+ const turbo = String ( turboWidget ?. value ) . toLowerCase ( ) === 'true'
132
+ const basePrice = turbo ? 0.02 : 0.06
133
+ const cost = ( basePrice * numImages ) . toFixed ( 2 )
122
134
return `$${ cost } /Run`
123
135
}
124
136
} ,
@@ -127,10 +139,16 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
127
139
const numImagesWidget = node . widgets ?. find (
128
140
( w ) => w . name === 'num_images'
129
141
) as IComboWidget
130
- if ( ! numImagesWidget ) return '$0.08 x num_images/Run'
142
+ const turboWidget = node . widgets ?. find (
143
+ ( w ) => w . name === 'turbo'
144
+ ) as IComboWidget
145
+
146
+ if ( ! numImagesWidget ) return '$0.05-0.08 x num_images/Run'
131
147
132
148
const numImages = Number ( numImagesWidget . value ) || 1
133
- const cost = ( 0.08 * numImages ) . toFixed ( 2 )
149
+ const turbo = String ( turboWidget ?. value ) . toLowerCase ( ) === 'true'
150
+ const basePrice = turbo ? 0.05 : 0.08
151
+ const cost = ( basePrice * numImages ) . toFixed ( 2 )
134
152
return `$${ cost } /Run`
135
153
}
136
154
} ,
@@ -651,10 +669,10 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
651
669
652
670
if ( duration . includes ( '5' ) ) {
653
671
if ( resolution . includes ( '720p' ) ) return '$0.3/Run'
654
- if ( resolution . includes ( '1080p' ) ) return '~ $0.3 /Run'
672
+ if ( resolution . includes ( '1080p' ) ) return '$0.5 /Run'
655
673
} else if ( duration . includes ( '10' ) ) {
656
- if ( resolution . includes ( '720p' ) ) return '$0.25 /Run'
657
- if ( resolution . includes ( '1080p' ) ) return '$1.0 /Run'
674
+ if ( resolution . includes ( '720p' ) ) return '$0.4 /Run'
675
+ if ( resolution . includes ( '1080p' ) ) return '$1.5 /Run'
658
676
}
659
677
660
678
return '$0.3/Run'
@@ -678,9 +696,9 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
678
696
679
697
if ( duration . includes ( '5' ) ) {
680
698
if ( resolution . includes ( '720p' ) ) return '$0.2/Run'
681
- if ( resolution . includes ( '1080p' ) ) return '~ $0.45 /Run'
699
+ if ( resolution . includes ( '1080p' ) ) return '$0.3 /Run'
682
700
} else if ( duration . includes ( '10' ) ) {
683
- if ( resolution . includes ( '720p' ) ) return '$0.6 /Run'
701
+ if ( resolution . includes ( '720p' ) ) return '$0.25 /Run'
684
702
if ( resolution . includes ( '1080p' ) ) return '$1.0/Run'
685
703
}
686
704
@@ -896,18 +914,11 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
896
914
}
897
915
898
916
const model = String ( modelWidget . value )
899
- const aspectRatio = String ( aspectRatioWidget . value )
900
917
901
918
if ( model . includes ( 'photon-flash-1' ) ) {
902
- if ( aspectRatio . includes ( '1:1' ) ) return '$0.0045/Run'
903
- if ( aspectRatio . includes ( '16:9' ) ) return '$0.0045/Run'
904
- if ( aspectRatio . includes ( '4:3' ) ) return '$0.0046/Run'
905
- if ( aspectRatio . includes ( '21:9' ) ) return '$0.0047/Run'
919
+ return '$0.0019/Run'
906
920
} else if ( model . includes ( 'photon-1' ) ) {
907
- if ( aspectRatio . includes ( '1:1' ) ) return '$0.0172/Run'
908
- if ( aspectRatio . includes ( '16:9' ) ) return '$0.0172/Run'
909
- if ( aspectRatio . includes ( '4:3' ) ) return '$0.0176/Run'
910
- if ( aspectRatio . includes ( '21:9' ) ) return '$0.0182/Run'
921
+ return '$0.0073/Run'
911
922
}
912
923
913
924
return '$0.0172/Run'
@@ -918,31 +929,17 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
918
929
const modelWidget = node . widgets ?. find (
919
930
( w ) => w . name === 'model'
920
931
) as IComboWidget
921
- const aspectRatioWidget = node . widgets ?. find (
922
- ( w ) => w . name === 'aspect_ratio'
923
- ) as IComboWidget
924
932
925
933
if ( ! modelWidget ) {
926
- return '$0.0045 -0.0182 /Run (varies with model & aspect ratio )'
934
+ return '$0.0019 -0.0073 /Run (varies with model)'
927
935
}
928
936
929
937
const model = String ( modelWidget . value )
930
- const aspectRatio = aspectRatioWidget
931
- ? String ( aspectRatioWidget . value )
932
- : null
933
938
934
939
if ( model . includes ( 'photon-flash-1' ) ) {
935
- if ( ! aspectRatio ) return '$0.0045/Run'
936
- if ( aspectRatio . includes ( '1:1' ) ) return '~$0.0045/Run'
937
- if ( aspectRatio . includes ( '16:9' ) ) return '~$0.0045/Run'
938
- if ( aspectRatio . includes ( '4:3' ) ) return '~$0.0046/Run'
939
- if ( aspectRatio . includes ( '21:9' ) ) return '~$0.0047/Run'
940
+ return '$0.0019/Run'
940
941
} else if ( model . includes ( 'photon-1' ) ) {
941
- if ( ! aspectRatio ) return '$0.0172/Run'
942
- if ( aspectRatio . includes ( '1:1' ) ) return '~$0.0172/Run'
943
- if ( aspectRatio . includes ( '16:9' ) ) return '~$0.0172/Run'
944
- if ( aspectRatio . includes ( '4:3' ) ) return '~$0.0176/Run'
945
- if ( aspectRatio . includes ( '21:9' ) ) return '~$0.0182/Run'
942
+ return '$0.0073/Run'
946
943
}
947
944
948
945
return '$0.0172/Run'
@@ -1053,10 +1050,10 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
1053
1050
displayPrice : '$0.4/Run'
1054
1051
} ,
1055
1052
Rodin3D_Detail : {
1056
- displayPrice : '$1.2 /Run'
1053
+ displayPrice : '$0.4 /Run'
1057
1054
} ,
1058
1055
Rodin3D_Smooth : {
1059
- displayPrice : '$1.2 /Run'
1056
+ displayPrice : '$0.4 /Run'
1060
1057
} ,
1061
1058
Rodin3D_Sketch : {
1062
1059
displayPrice : '$0.4/Run'
@@ -1151,9 +1148,9 @@ const apiNodeCosts: Record<string, { displayPrice: string | PricingFunction }> =
1151
1148
if ( model . includes ( 'veo-2.0' ) ) {
1152
1149
return '$0.5/second'
1153
1150
} else if ( model . includes ( 'gemini-2.5-pro-preview-05-06' ) ) {
1154
- return '$0.0035 /$0.0008 per 1K tokens'
1151
+ return '$0.00016 /$0.0006 per 1K tokens'
1155
1152
} else if ( model . includes ( 'gemini-2.5-flash-preview-04-17' ) ) {
1156
- return '$0.0015 /$0.0004 per 1K tokens'
1153
+ return '$0.00125 /$0.01 per 1K tokens'
1157
1154
}
1158
1155
// For other Gemini models, show token-based pricing info
1159
1156
return 'Token-based'
@@ -1233,9 +1230,11 @@ export const useNodePricing = () => {
1233
1230
OpenAIDalle3 : [ 'size' , 'quality' ] ,
1234
1231
OpenAIDalle2 : [ 'size' , 'n' ] ,
1235
1232
OpenAIGPTImage1 : [ 'quality' , 'n' ] ,
1236
- IdeogramV1 : [ 'num_images' ] ,
1237
- IdeogramV2 : [ 'num_images' ] ,
1233
+ IdeogramV1 : [ 'num_images' , 'turbo' ] ,
1234
+ IdeogramV2 : [ 'num_images' , 'turbo' ] ,
1238
1235
IdeogramV3 : [ 'rendering_speed' , 'num_images' ] ,
1236
+ FluxProKontextProNode : [ ] ,
1237
+ FluxProKontextMaxNode : [ ] ,
1239
1238
VeoVideoGenerationNode : [ 'duration_seconds' ] ,
1240
1239
LumaVideoNode : [ 'model' , 'resolution' , 'duration' ] ,
1241
1240
LumaImageToVideoNode : [ 'model' , 'resolution' , 'duration' ] ,
@@ -1269,8 +1268,8 @@ export const useNodePricing = () => {
1269
1268
RunwayImageToVideoNodeGen4 : [ 'duration' ] ,
1270
1269
RunwayFirstLastFrameNode : [ 'duration' ] ,
1271
1270
// Tripo nodes
1272
- TripoTextToModelNode : [ 'model ' , 'model_version ' , 'texture_quality' ] ,
1273
- TripoImageToModelNode : [ 'model ' , 'model_version ' , 'texture_quality' ] ,
1271
+ TripoTextToModelNode : [ 'quad ' , 'style' , 'texture ', 'texture_quality' ] ,
1272
+ TripoImageToModelNode : [ 'quad ' , 'style' , 'texture ', 'texture_quality' ] ,
1274
1273
TripoTextureNode : [ 'texture_quality' ] ,
1275
1274
// Google/Gemini nodes
1276
1275
GeminiNode : [ 'model' ] ,
0 commit comments