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

Function generateWithFalAI

apps/sim/app/api/tools/video/route.ts:1171–1351  ·  view source on GitHub ↗
(
  apiKey: string,
  model: string,
  prompt: string,
  duration: number | undefined,
  aspectRatio: string | undefined,
  resolution: string | undefined,
  promptOptimizer: boolean | undefined,
  generateAudio: boolean | undefined,
  useHostedCostTracking: boolean,
  requestId: string,
  logger: ReturnType<typeof createLogger>
)

Source from the content-addressed store, hash-verified

1169}
1170
1171async function generateWithFalAI(
1172 apiKey: string,
1173 model: string,
1174 prompt: string,
1175 duration: number | undefined,
1176 aspectRatio: string | undefined,
1177 resolution: string | undefined,
1178 promptOptimizer: boolean | undefined,
1179 generateAudio: boolean | undefined,
1180 useHostedCostTracking: boolean,
1181 requestId: string,
1182 logger: ReturnType<typeof createLogger>
1183): Promise<{
1184 buffer: Buffer
1185 width: number
1186 height: number
1187 jobId: string
1188 duration: number
1189 falaiCost?: FalAICostMetadata
1190}> {
1191 logger.info(`[${requestId}] Starting Fal.ai generation with model: ${model}`)
1192
1193 const modelConfig = FALAI_MODEL_CONFIGS[model]
1194 if (!modelConfig) {
1195 throw new Error(`Unknown Fal.ai model: ${model}`)
1196 }
1197
1198 const requestBody: FalAIRequestBody = { prompt }
1199 const formattedDuration = formatFalAIDuration(modelConfig.durationFormat, duration)
1200
1201 if (formattedDuration !== undefined) {
1202 requestBody.duration = formattedDuration
1203 }
1204
1205 if (modelConfig.supportsAspectRatio && aspectRatio) {
1206 requestBody.aspect_ratio = aspectRatio
1207 }
1208
1209 if (modelConfig.supportsResolution && resolution) {
1210 requestBody.resolution = resolution
1211 }
1212
1213 if (modelConfig.supportsPromptOptimizer && promptOptimizer !== undefined) {
1214 requestBody.prompt_optimizer = promptOptimizer
1215 }
1216
1217 if (modelConfig.supportsGenerateAudio && generateAudio !== undefined) {
1218 requestBody.generate_audio = generateAudio
1219 }
1220
1221 const createResponse = await fetch(`https://queue.fal.run/${modelConfig.endpoint}`, {
1222 method: 'POST',
1223 headers: {
1224 Authorization: `Key ${apiKey}`,
1225 'Content-Type': 'application/json',
1226 },
1227 body: JSON.stringify(requestBody),
1228 })

Callers 1

route.tsFile · 0.70

Calls 13

isRecordLikeFunction · 0.90
getMaxExecutionTimeoutFunction · 0.90
sleepFunction · 0.90
getFalAICostMetadataFunction · 0.90
formatFalAIDurationFunction · 0.85
readVideoErrorTextFunction · 0.85
getVideoDimensionsFunction · 0.85
readVideoResponseBufferFunction · 0.85
infoMethod · 0.80
getStringPropertyFunction · 0.70
buildFalAIQueueUrlFunction · 0.70
getFalAIErrorMessageFunction · 0.70

Tested by

no test coverage detected