MCPcopy
hub / github.com/simstudioai/sim / generateWithFalAI

Function generateWithFalAI

apps/sim/app/api/tools/image/route.ts:732–962  ·  view source on GitHub ↗
(
  apiKey: string,
  body: ImageToolBody,
  requestId: string,
  logger: ReturnType<typeof createLogger>
)

Source from the content-addressed store, hash-verified

730}
731
732async function generateWithFalAI(
733 apiKey: string,
734 body: ImageToolBody,
735 requestId: string,
736 logger: ReturnType<typeof createLogger>
737): Promise<GeneratedImageResult> {
738 const model = body.model || 'nano-banana-2'
739 const modelConfig = FALAI_IMAGE_MODEL_CONFIGS[model]
740 if (!modelConfig) {
741 throw new Error(`Unknown Fal.ai image model: ${model}`)
742 }
743
744 const requestBody: Record<string, string | number | boolean> = {
745 prompt: body.prompt,
746 sync_mode: false,
747 }
748
749 if (modelConfig.maxNumImages) {
750 requestBody.num_images = clampInteger(body.numImages, 1, modelConfig.maxNumImages, 1)
751 }
752 if (modelConfig.supportsSeed && body.seed !== undefined) {
753 requestBody.seed = body.seed
754 }
755 if (modelConfig.sizeOptions && modelConfig.defaultSize) {
756 requestBody.image_size = pickAllowed(
757 body.size,
758 modelConfig.sizeOptions,
759 modelConfig.defaultSize
760 )
761 }
762 if (modelConfig.aspectRatios && modelConfig.defaultAspectRatio) {
763 requestBody.aspect_ratio = pickAllowed(
764 body.aspectRatio,
765 modelConfig.aspectRatios,
766 modelConfig.defaultAspectRatio
767 )
768 }
769 if (modelConfig.resolutionOptions && modelConfig.defaultResolution) {
770 requestBody.resolution = pickAllowed(
771 body.resolution,
772 modelConfig.resolutionOptions,
773 modelConfig.defaultResolution
774 )
775 }
776 if (modelConfig.outputFormats && modelConfig.defaultOutputFormat) {
777 requestBody.output_format = pickAllowed(
778 body.outputFormat,
779 modelConfig.outputFormats,
780 modelConfig.defaultOutputFormat
781 )
782 }
783 if (modelConfig.qualityOptions && modelConfig.defaultQuality) {
784 requestBody.quality = pickAllowed(
785 body.quality,
786 modelConfig.qualityOptions,
787 modelConfig.defaultQuality
788 )
789 }

Callers 1

route.tsFile · 0.70

Calls 15

isRecordLikeFunction · 0.90
getMaxExecutionTimeoutFunction · 0.90
sleepFunction · 0.90
getFalAICostMetadataFunction · 0.90
clampIntegerFunction · 0.85
pickAllowedFunction · 0.85
firstRecordFunction · 0.85
bufferFromImageUrlFunction · 0.85
extensionFromContentTypeFunction · 0.85
infoMethod · 0.80

Tested by

no test coverage detected