MCPcopy Index your code
hub / github.com/simstudioai/sim / getApiKey

Function getApiKey

apps/sim/providers/utils.ts:862–917  ·  view source on GitHub ↗
(provider: string, model: string, userProvidedKey?: string)

Source from the content-addressed store, hash-verified

860 * For use server-side only
861 */
862export function getApiKey(provider: string, model: string, userProvidedKey?: string): string {
863 const hasUserKey = !!userProvidedKey
864
865 const isOllamaModel =
866 provider === 'ollama' || useProvidersStore.getState().providers.ollama.models.includes(model)
867 if (isOllamaModel) {
868 return 'empty'
869 }
870
871 const isVllmModel =
872 provider === 'vllm' || useProvidersStore.getState().providers.vllm.models.includes(model)
873 if (isVllmModel) {
874 return userProvidedKey || 'empty'
875 }
876
877 const isLitellmModel =
878 provider === 'litellm' || useProvidersStore.getState().providers.litellm.models.includes(model)
879 if (isLitellmModel) {
880 return userProvidedKey || 'empty'
881 }
882
883 // Bedrock uses its own credentials (bedrockAccessKeyId/bedrockSecretKey), not apiKey
884 const isBedrockModel = provider === 'bedrock' || model.startsWith('bedrock/')
885 if (isBedrockModel) {
886 return PROVIDER_PLACEHOLDER_KEY
887 }
888
889 const isOpenAIModel = provider === 'openai'
890 const isClaudeModel = provider === 'anthropic'
891 const isGeminiModel = provider === 'google'
892
893 if (isHosted && (isOpenAIModel || isClaudeModel || isGeminiModel)) {
894 const hostedModels = getHostedModels()
895 const isModelHosted = hostedModels.some((m) => m.toLowerCase() === model.toLowerCase())
896
897 if (isModelHosted) {
898 try {
899 const { getRotatingApiKey } = require('@/lib/core/config/api-keys')
900 const serverKey = getRotatingApiKey(isGeminiModel ? 'gemini' : provider)
901 return serverKey
902 } catch (_error) {
903 if (hasUserKey) {
904 return userProvidedKey!
905 }
906
907 throw new Error(`No API key available for ${provider} ${model}`)
908 }
909 }
910 }
911
912 if (!hasUserKey) {
913 throw new Error(`API key is required for ${provider} ${model}`)
914 }
915
916 return userProvidedKey!
917}
918
919/**

Callers 1

utils.test.tsFile · 0.90

Calls 2

getHostedModelsFunction · 0.90
getRotatingApiKeyFunction · 0.85

Tested by

no test coverage detected